From 13d1cec2b6dc3a51ac28c13fca88737c525e1940 Mon Sep 17 00:00:00 2001 From: sepro Date: Tue, 1 Jul 2025 13:30:37 +0200 Subject: [PATCH 01/11] Add mtime changelog override --- devscripts/changelog_override.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/devscripts/changelog_override.json b/devscripts/changelog_override.json index d7296bf309..3a3b6c6046 100644 --- a/devscripts/changelog_override.json +++ b/devscripts/changelog_override.json @@ -262,5 +262,10 @@ { "action": "remove", "when": "500761e41acb96953a5064e951d41d190c287e46" + }, + { + "action": "add", + "when": "f3008bc5f89d2691f2f8dfc51b406ef4e25281c3", + "short": "[priority] **Default behaviour changed from `--mtime` to `--no-mtime`**\nyt-dlp no longer applies the server modified time to downloaded files by default. [Read more](https://github.com/yt-dlp/yt-dlp/issues/12780)" } ] From 84583cc72b46e581cd1230206c6a494c95d8693e Mon Sep 17 00:00:00 2001 From: sepro Date: Tue, 1 Jul 2025 21:32:39 +0200 Subject: [PATCH 02/11] Remove link to password generator site --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fd7b0f1210..2c58cdfc94 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -126,7 +126,7 @@ ### Are you willing to share account details if needed? While these steps won't necessarily ensure that no misuse of the account takes place, these are still some good practices to follow. - Look for people with `Member` (maintainers of the project) or `Contributor` (people who have previously contributed code) tag on their messages. -- Change the password before sharing the account to something random (use [this](https://passwordsgenerator.net/) if you don't have a random password generator). +- Change the password before sharing the account to something random. - Change the password after receiving the account back. ### Is the website primarily used for piracy? From 11101c16cdddb7cdea4fdd607ad4c02009ab75d0 Mon Sep 17 00:00:00 2001 From: bashonly Date: Wed, 9 Jul 2025 17:42:15 -0500 Subject: [PATCH 03/11] [ie/newspicks] Tests cleanup Authored by: bashonly --- yt_dlp/extractor/newspicks.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/yt_dlp/extractor/newspicks.py b/yt_dlp/extractor/newspicks.py index 5f19eed984..25be3c7203 100644 --- a/yt_dlp/extractor/newspicks.py +++ b/yt_dlp/extractor/newspicks.py @@ -18,7 +18,6 @@ class NewsPicksIE(InfoExtractor): 'title': '日本の課題を破壊せよ【ゲスト:成田悠輔】', 'cast': 'count:4', 'description': 'md5:09397aad46d6ded6487ff13f138acadf', - 'duration': 2940, 'release_date': '20220117', 'release_timestamp': 1642424400, 'series': 'HORIE ONE', @@ -35,7 +34,6 @@ class NewsPicksIE(InfoExtractor): 'title': '【検証】専門家は、KADOKAWAをどう見るか', 'cast': 'count:3', 'description': 'md5:2c2d4bf77484a4333ec995d676f9a91d', - 'duration': 1320, 'release_date': '20240622', 'release_timestamp': 1719088080, 'series': 'NPレポート', From f69c29c511998975ff1d3867e62b05d02c97888f Mon Sep 17 00:00:00 2001 From: InvalidUsernameException Date: Wed, 9 Jul 2025 17:52:39 -0500 Subject: [PATCH 04/11] [ie] Improve InfoExtractor docstring Authored by: InvalidUsernameException --- yt_dlp/extractor/common.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yt_dlp/extractor/common.py b/yt_dlp/extractor/common.py index b75e806233..01fecdf572 100644 --- a/yt_dlp/extractor/common.py +++ b/yt_dlp/extractor/common.py @@ -392,6 +392,8 @@ class InfoExtractor: chapters: A list of dictionaries, with the following entries: * "start_time" - The start time of the chapter in seconds * "end_time" - The end time of the chapter in seconds + (optional: core code can determine this value from + the next chapter's start_time or the video's duration) * "title" (optional, string) heatmap: A list of dictionaries, with the following entries: * "start_time" - The start time of the data point in seconds @@ -406,7 +408,8 @@ class InfoExtractor: 'unlisted' or 'public'. Use 'InfoExtractor._availability' to set it media_type: The type of media as classified by the site, e.g. "episode", "clip", "trailer" - _old_archive_ids: A list of old archive ids needed for backward compatibility + _old_archive_ids: A list of old archive ids needed for backward + compatibility. Use yt_dlp.utils.make_archive_id to generate ids _format_sort_fields: A list of fields to use for sorting formats __post_extractor: A function to be called just before the metadata is written to either disk, logger or console. The function From 0336db4cdf13810a265b1d3433d7a857f51ad22a Mon Sep 17 00:00:00 2001 From: gesh Date: Wed, 2 Jul 2025 16:10:32 +0300 Subject: [PATCH 05/11] Remove last remnant of nosetests TestDownload was setting a custom nosetest flag, remove it as we no longer use nose --- test/test_download.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/test_download.py b/test/test_download.py index c7842735c2..1714cb52ec 100755 --- a/test/test_download.py +++ b/test/test_download.py @@ -66,10 +66,6 @@ def _file_md5(fn): @is_download_test class TestDownload(unittest.TestCase): - # Parallel testing in nosetests. See - # http://nose.readthedocs.org/en/latest/doc_tests/test_multiprocess/multiprocess.html - _multiprocess_shared_ = True - maxDiff = None COMPLETED_TESTS = {} From a34df1f7535d1f22209314ba3c1bdaa9ccafa57c Mon Sep 17 00:00:00 2001 From: bashonly Date: Wed, 9 Jul 2025 18:06:33 -0500 Subject: [PATCH 06/11] [docs] Clarify `extractor_args` type Closes #12436 Authored by: bashonly --- yt_dlp/YoutubeDL.py | 1 + 1 file changed, 1 insertion(+) diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 44a6696c02..ea6c802068 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -529,6 +529,7 @@ class YoutubeDL: discontinuities such as ad breaks (default: False) extractor_args: A dictionary of arguments to be passed to the extractors. See "EXTRACTOR ARGUMENTS" for details. + Argument values must always be a list of string(s). E.g. {'youtube': {'skip': ['dash', 'hls']}} mark_watched: Mark videos watched (even with --simulate). Only for YouTube From 34d65ce40c33855e81af486d04cf3f8ea8d945d6 Mon Sep 17 00:00:00 2001 From: Adam Ralph Date: Wed, 9 Jul 2025 18:11:23 -0500 Subject: [PATCH 07/11] [docs] Be more inclusive of macOS users Closes #10853 Authored by: adamralph --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e476c0084b..04cccecd6e 100644 --- a/README.md +++ b/README.md @@ -277,7 +277,7 @@ # USAGE AND OPTIONS yt-dlp [OPTIONS] [--] URL [URL...] -`Ctrl+F` is your friend :D +Tip: Use `CTRL`+`F` (or `Command`+`F`) to search by keywords From b3eb7e0e95df59a94665ec2ffdc6a57fd53d1f6b Mon Sep 17 00:00:00 2001 From: bashonly Date: Wed, 9 Jul 2025 18:16:05 -0500 Subject: [PATCH 08/11] [ie/youtube] Bump minimum version for cached player JS Authored by: bashonly --- yt_dlp/extractor/youtube/_video.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yt_dlp/extractor/youtube/_video.py b/yt_dlp/extractor/youtube/_video.py index 208abee937..f87b8f12f4 100644 --- a/yt_dlp/extractor/youtube/_video.py +++ b/yt_dlp/extractor/youtube/_video.py @@ -2068,7 +2068,7 @@ def _extract_signature_function(self, video_id, player_url, example_sig): assert os.path.basename(func_id) == func_id self.write_debug(f'Extracting signature function {func_id}') - cache_spec, code = self.cache.load('youtube-sigfuncs', func_id, min_ver='2025.03.31'), None + cache_spec, code = self.cache.load('youtube-sigfuncs', func_id, min_ver='2025.07.10'), None if not cache_spec: code = self._load_player(video_id, player_url) @@ -2172,7 +2172,7 @@ def _load_player_data_from_cache(self, name, player_url): if data := self._player_cache.get(cache_id): return data - data = self.cache.load(*cache_id, min_ver='2025.03.31') + data = self.cache.load(*cache_id, min_ver='2025.07.10') if data: self._player_cache[cache_id] = data From 0acad0eb993df729d65c130cfa65058098f96b97 Mon Sep 17 00:00:00 2001 From: sepro Date: Sun, 13 Jul 2025 01:16:29 +0200 Subject: [PATCH 09/11] [ie/mirrativ] Fix tests --- yt_dlp/extractor/mirrativ.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yt_dlp/extractor/mirrativ.py b/yt_dlp/extractor/mirrativ.py index 4e24371a22..36a736a21d 100644 --- a/yt_dlp/extractor/mirrativ.py +++ b/yt_dlp/extractor/mirrativ.py @@ -18,7 +18,7 @@ class MirrativIE(MirrativBaseIE): IE_NAME = 'mirrativ' _VALID_URL = r'https?://(?:www\.)?mirrativ\.com/live/(?P[^/?#&]+)' - TESTS = [{ + _TESTS = [{ 'url': 'https://mirrativ.com/live/UQomuS7EMgHoxRHjEhNiHw', 'info_dict': { 'id': 'UQomuS7EMgHoxRHjEhNiHw', From 04dae29fea1cae54e75121a41c36cc707b4b67ed Mon Sep 17 00:00:00 2001 From: bashonly Date: Sun, 13 Jul 2025 16:47:19 -0500 Subject: [PATCH 10/11] [docs] Update `vimeo` extractor-arg documentation Authored by: bashonly --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1be820915a..8a76ef12f7 100644 --- a/README.md +++ b/README.md @@ -1902,8 +1902,8 @@ #### tver * `backend`: Backend API to use for extraction - one of `streaks` (default) or `brightcove` (deprecated) #### vimeo -* `client`: Client to extract video data from. One of `android` (default), `ios` or `web`. The `ios` client only works with previously cached OAuth tokens. The `web` client only works when authenticated with credentials or account cookies -* `original_format_policy`: Policy for when to try extracting original formats. One of `always`, `never`, or `auto`. The default `auto` policy tries to avoid exceeding the API rate-limit by only making an extra request when Vimeo publicizes the video's downloadability +* `client`: Client to extract video data from. The currently available clients are `android`, `ios` and `web`. Only one client can be used. The `android` client is used by default. If account cookies or credentials are used for authentication, then the `web` client is used by default. The `web` client only works with account cookies or credentials. The `ios` client only works with previously cached OAuth tokens +* `original_format_policy`: Policy for when to try extracting original formats. One of `always`, `never`, or `auto`. The default `auto` policy tries to avoid exceeding the web client's API rate-limit by only making an extra request when Vimeo publicizes the video's downloadability **Note**: These options may be changed/removed in the future without concern for backward compatibility From 75f3107d4b22a16a5b2fea31bf4ec8f25d58a8b2 Mon Sep 17 00:00:00 2001 From: bashonly Date: Sun, 13 Jul 2025 16:50:25 -0500 Subject: [PATCH 11/11] [docs] simplify `vimeo` extractor-arg docs Authored by: bashonly --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8a76ef12f7..7a6d1073f4 100644 --- a/README.md +++ b/README.md @@ -1902,7 +1902,7 @@ #### tver * `backend`: Backend API to use for extraction - one of `streaks` (default) or `brightcove` (deprecated) #### vimeo -* `client`: Client to extract video data from. The currently available clients are `android`, `ios` and `web`. Only one client can be used. The `android` client is used by default. If account cookies or credentials are used for authentication, then the `web` client is used by default. The `web` client only works with account cookies or credentials. The `ios` client only works with previously cached OAuth tokens +* `client`: Client to extract video data from. The currently available clients are `android`, `ios`, and `web`. Only one client can be used. The `android` client is used by default. If account cookies or credentials are used for authentication, then the `web` client is used by default. The `web` client only works with authentication. The `ios` client only works with previously cached OAuth tokens * `original_format_policy`: Policy for when to try extracting original formats. One of `always`, `never`, or `auto`. The default `auto` policy tries to avoid exceeding the web client's API rate-limit by only making an extra request when Vimeo publicizes the video's downloadability **Note**: These options may be changed/removed in the future without concern for backward compatibility