yt-dlp 2026.1.29.165626.dev0__tar.gz → 2026.1.31__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/AUTHORS +2 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/Changelog.md +15 -1
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/PKG-INFO +3 -3
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/README.md +2 -2
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/README.txt +13 -12
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/completions/fish/yt-dlp.fish +1 -1
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_jsc/test_ejs_integration.py +0 -1
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt-dlp.1 +14 -13
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/__init__.py +2 -0
- yt_dlp-2026.1.31/yt_dlp/downloader/soop.py +61 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/afreecatv.py +39 -1
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lazy_extractors.py +1 -1
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/unsupported.py +5 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/whyp.py +8 -2
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/_base.py +0 -42
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/_video.py +12 -9
- yt_dlp-2026.1.31/yt_dlp/version.py +15 -0
- yt_dlp-2026.1.29.165626.dev0/yt_dlp/version.py +0 -15
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/.gitignore +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/LICENSE +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/completions/bash/yt-dlp +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/completions/zsh/_yt-dlp +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/bash-completion.in +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/bash-completion.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/changelog_override.json +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/changelog_override.schema.json +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/check-porn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/cli_to_api.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/fish-completion.in +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/fish-completion.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/generate_aes_testdata.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/generate_third_party_licenses.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/install_deps.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/lazy_load_template.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/logo.ico +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/make_changelog.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/make_contributing.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/make_issue_template.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/make_lazy_extractors.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/make_readme.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/make_supportedsites.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/prepare_manpage.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/run_tests.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/set-variant.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/setup_variables.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/setup_variables_tests.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/tomlparse.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/update-version.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/update_changelog.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/update_ejs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/utils.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/zsh-completion.in +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/zsh-completion.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/pyproject.toml +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/supportedsites.md +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/conftest.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/helper.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/parameters.json +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_InfoExtractor.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_YoutubeDL.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_YoutubeDLCookieJar.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_aes.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_age_restriction.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_all_urls.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_cache.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_compat.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_config.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_cookies.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_devalue.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_download.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_downloader_external.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_downloader_http.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_execution.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_http_proxy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_jsc/conftest.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_jsc/test_provider.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_jsinterp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_netrc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_networking.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_networking_utils.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_overwrites.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_plugins.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_post_hooks.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_postprocessors.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_pot/conftest.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_pot/test_pot_builtin_memorycache.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_pot/test_pot_builtin_utils.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_pot/test_pot_builtin_webpospec.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_pot/test_pot_director.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_pot/test_pot_framework.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_socks.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_subtitles.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_traversal.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_update.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_utils.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_verbose_output.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_websockets.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_youtube_lists.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/test_youtube_misc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testcert.pem +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/certificate/ca.crt +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/certificate/ca.key +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/certificate/ca.srl +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/certificate/client.crt +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/certificate/client.csr +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/certificate/client.key +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/certificate/clientencrypted.key +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/certificate/clientwithencryptedkey.crt +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/certificate/clientwithkey.crt +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/certificate/instructions.md +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/cookies/httponly_cookies.txt +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/cookies/malformed_cookies.txt +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/cookies/session_cookies.txt +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/f4m/custom_base_url.f4m +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/ism/ec-3_test.Manifest +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/ism/sintel.Manifest +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/m3u8/bipbop_16x9.m3u8 +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/m3u8/img_bipbop_adv_example_fmp4.m3u8 +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/mpd/float_duration.mpd +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/mpd/subtitles.mpd +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/mpd/unfragmented.mpd +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/mpd/urls_only.mpd +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/netrc/netrc +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/netrc/print_netrc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/plugin_packages/testpackage/yt_dlp_plugins/extractor/package.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/reload_plugins/yt_dlp_plugins/extractor/normal.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/reload_plugins/yt_dlp_plugins/postprocessor/normal.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/thumbnails/foo %d bar/placeholder +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/xspf/foo_xspf.xspf +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/yt_dlp_plugins/extractor/_ignore.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/yt_dlp_plugins/extractor/ignore.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/yt_dlp_plugins/extractor/normal.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/yt_dlp_plugins/extractor/override.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/yt_dlp_plugins/extractor/overridetwo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/yt_dlp_plugins/postprocessor/normal.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/zipped_plugins/yt_dlp_plugins/extractor/zipped.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/test/testdata/zipped_plugins/yt_dlp_plugins/postprocessor/zipped.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/YoutubeDL.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/__main__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/__pyinstaller/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/__pyinstaller/hook-yt_dlp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/aes.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/cache.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/compat/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/compat/_deprecated.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/compat/_legacy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/compat/compat_utils.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/compat/imghdr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/compat/shutil.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/compat/urllib/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/compat/urllib/request.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/cookies.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/dependencies/Cryptodome.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/dependencies/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/bunnycdn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/common.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/dash.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/external.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/f4m.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/fc2.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/fragment.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/hls.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/http.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/ism.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/mhtml.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/niconico.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/rtmp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/rtsp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/websocket.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/downloader/youtube_live_chat.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/_extractors.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/abc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/abcnews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/abcotvs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/abematv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/academicearth.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/acast.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/acfun.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/adn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/adobeconnect.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/adobepass.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/adobetv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/adultswim.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/aenetworks.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/aeonco.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/agalega.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/agora.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/airtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/aitube.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/alibaba.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/aliexpress.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/aljazeera.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/allocine.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/allstar.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/alphaporno.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/alsace20tv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/altcensored.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/alura.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/amadeustv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/amara.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/amazon.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/amazonminitv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/amcnetworks.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/americastestkitchen.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/amp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/anchorfm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/angel.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/antenna.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/anvato.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/aol.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/apa.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/aparat.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/appleconnect.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/applepodcasts.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/appletrailers.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/archiveorg.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/arcpublishing.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ard.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/arnes.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/art19.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/arte.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/asobichannel.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/asobistage.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/atresplayer.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/atscaleconf.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/atvat.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/audimedia.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/audioboom.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/audiodraft.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/audiomack.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/audius.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/awaan.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/aws.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/axs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/azmedien.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/baidu.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/banbye.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bandcamp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bandlab.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bannedvideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bbc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/beacon.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/beatbump.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/beatport.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/beeg.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/behindkink.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/berufetv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bet.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bfi.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bfmtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bibeltv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bigflix.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bigo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bild.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bilibili.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/biobiochiletv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bitchute.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bitmovin.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/blackboardcollaborate.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bleacherreport.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/blerp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/blogger.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bloomberg.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bluesky.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bokecc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bongacams.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/boosty.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bostonglobe.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/box.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/boxcast.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bpb.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/br.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/brainpop.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/breitbart.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/brightcove.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/brilliantpala.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/btvplus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bundesliga.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bundestag.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/bunnycdn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/businessinsider.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/buzzfeed.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/byutv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/c56.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/caffeinetv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/callin.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/caltrans.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cam4.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/camdemy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/camfm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cammodels.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/camsoda.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/camtasia.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/canal1.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/canalalpha.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/canalc2.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/canalplus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/canalsurmas.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/caracoltv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cbc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cbs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cbsnews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cbssports.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ccc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ccma.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cctv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cda.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cellebrite.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ceskatelevize.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cgtn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/charlierose.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/chaturbate.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/chilloutzone.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/chzzk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cinemax.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cinetecamilano.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cineverse.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ciscolive.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ciscowebex.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cjsw.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/clipchamp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/clippit.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cliprs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/closertotruth.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cloudflarestream.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cloudycdn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/clubic.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/clyp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cnbc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cnn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/comedycentral.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/common.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/commonmistakes.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/commonprotocols.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/condenast.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/contv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/corus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/coub.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cozytv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cpac.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cracked.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/craftsy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/croatianfilm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/crooksandliars.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/crowdbunker.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/crtvg.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cspan.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ctsnews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ctvnews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cultureunplugged.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/curiositystream.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/cybrary.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dacast.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dailymail.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dailymotion.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dailywire.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/damtomo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dangalplay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/daum.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/daystar.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dbtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dctp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/democracynow.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/detik.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/deuxm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dfb.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dhm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/digitalconcerthall.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/digiteka.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/digiview.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/discogs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/disney.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dispeak.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dlf.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dlive.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/douyutv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dplay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/drbonanza.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dreisat.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/drooble.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dropbox.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dropout.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/drtalks.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/drtuber.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/drtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dtube.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/duboku.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dumpert.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/duoplay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dvtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/dw.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ebaumsworld.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ebay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/egghead.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/eggs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/eighttracks.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/eitb.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/elementorembed.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/elonet.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/elpais.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/eltrecetv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/embedly.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/epicon.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/epidemicsound.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/eplus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/epoch.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/eporner.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/erocast.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/eroprofile.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/err.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ertgr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/espn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ettutv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/europa.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/europeantour.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/eurosport.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/euscreen.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/expressen.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/extractors.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/eyedotv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/facebook.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fancode.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fathom.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/faulio.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/faz.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fc2.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fczenit.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fifa.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/filmarchiv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/filmon.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/filmweb.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/firsttv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fivetv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/flextv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/flickr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/floatplane.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/folketinget.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/footyroom.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/formula1.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fourtube.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fox.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fox9.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/foxnews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/foxsports.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fptplay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/francaisfacile.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/franceinter.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/francetv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/freesound.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/freespeech.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/freetv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/frontendmasters.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/frontro.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fujitv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/funk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/funker530.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/fuyintv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gab.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gaia.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gamedevtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gamejolt.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gamespot.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gamestar.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gaskrank.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gazeta.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gbnews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gdcvault.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gedidigital.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/generic.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/genericembeds.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/genius.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/germanupa.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/getcourseru.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gettr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/giantbomb.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/glide.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/globalplayer.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/globo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/glomex.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gmanetwork.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/go.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/godresource.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/godtube.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gofile.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/golem.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/goodgame.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/googledrive.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/googlepodcasts.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/googlesearch.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/goplay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gopro.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/goshgay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gotostage.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gputechconf.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/graspop.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/gronkh.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/groupon.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/harpodeon.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hbo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hearthisat.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/heise.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hellporno.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hgtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hidive.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/historicfilms.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hitrecord.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hketv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hollywoodreporter.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/holodex.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hotnewhiphop.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hotstar.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hrefli.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hrfensehen.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hrti.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hse.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/huajiao.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/huffpost.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hungama.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/huya.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hypem.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hypergryph.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/hytale.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/icareus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ichinanalive.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/idagio.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/idolplus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ign.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/iheart.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ilpost.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/iltalehti.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/imdb.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/imggaming.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/imgur.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ina.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/inc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/indavideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/infoq.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/instagram.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/internazionale.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/internetvideoarchive.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/iprima.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/iqiyi.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/islamchannel.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/israelnationalnews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/itprotv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/itv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ivi.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ivideon.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ivoox.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/iwara.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ixigua.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/izlesene.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/jamendo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/japandiet.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/jeuxvideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/jiosaavn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/jixie.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/joj.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/jove.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/jstream.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/jtbc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/jwplatform.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kakao.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kaltura.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kankanews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/karaoketv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kelbyone.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kenh14.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/khanacademy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kick.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kicker.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kickstarter.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kika.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kinja.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kinopoisk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kommunetv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kompas.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/koo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/krasview.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kth.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ku6.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kukululive.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/kuwo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/la7.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/laracasts.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lastfm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/laxarxames.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lbry.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lci.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lcp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/learningonscreen.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lecture2go.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lecturio.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/leeco.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lefigaro.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lego.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lemonde.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lenta.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/libraryofcongress.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/libsyn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lifenews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/likee.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/linkedin.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/liputan6.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/listennotes.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/litv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/livejournal.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/livestream.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/livestreamfails.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lnk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/loco.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/loom.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lovehomeporn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lrt.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lsm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lumni.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/lynda.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/maariv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/magellantv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/magentamusik.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mailru.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mainstreaming.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mangomolo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/manyvids.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/maoritv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/markiza.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/massengeschmacktv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/masters.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/matchtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mave.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mbn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mdr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/medaltv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mediaite.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mediaklikk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/medialaan.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mediaset.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mediasite.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mediastream.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mediaworksnz.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/medici.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/megaphone.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/megatvcom.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/meipai.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/melonvod.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/metacritic.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mgtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/microsoftembed.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/microsoftstream.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/minds.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/minoto.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mir24tv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mirrativ.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mirrorcouk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mit.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mixch.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mixcloud.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mixlr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mlb.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mlssoccer.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mocha.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mojevideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mojvideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/monstercat.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/motherless.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/motorsport.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/moviepilot.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/moview.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/moviezine.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/movingimage.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/msn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/muenchentv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/murrtube.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/museai.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/musescore.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/musicdex.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mux.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mx3.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mxplayer.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/myspace.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/myspass.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/myvideoge.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/myvidster.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/mzaalo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/n1.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nascar.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nate.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nationalgeographic.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/naver.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nba.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nbc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ndr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ndtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nebula.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nekohacker.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nerdcubed.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nest.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/netapp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/neteasemusic.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/netverse.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/netzkino.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/newgrounds.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/newspicks.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/newsy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nexx.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nfb.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nfhsnetwork.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nfl.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nhk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nhl.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nick.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/niconico.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/niconicochannelplus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ninaprotocol.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ninecninemedia.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ninegag.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ninenews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ninenow.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nintendo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nitter.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nobelprize.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/noice.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nonktube.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/noodlemagazine.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nosnl.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nova.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/novaplay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nowcanal.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nowness.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/noz.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/npo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/npr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nrk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nrl.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nts.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ntvcojp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ntvde.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ntvru.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nubilesporn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nuevo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nuum.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nuvid.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nytimes.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nzherald.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nzonscreen.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/nzz.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/odkmedia.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/odnoklassniki.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/oftv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/oktoberfesttv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/olympics.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/on24.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ondemandkorea.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/onefootball.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/onenewsnz.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/oneplace.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/onet.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/onionstudios.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/onsen.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/opencast.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/openload.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/openrec.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ora.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/orf.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/outsidetv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/owncloud.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/packtpub.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/palcomp3.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pandatv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/panopto.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/parler.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/parlview.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/parti.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/patreon.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pbs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pearvideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/peekvids.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/peertube.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/peertv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/peloton.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/performgroup.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/periscope.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pgatour.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/philharmoniedeparis.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/phoenix.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/photobucket.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pialive.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/piapro.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/picarto.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/piksel.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pinkbike.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pinterest.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/piramidetv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/planetmarathi.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/platzi.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/playerfm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/playplustv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/playsuisse.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/playtvak.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/playwire.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pluralsight.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/plutotv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/plvideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/plyr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/podbayfm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/podchaser.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/podomatic.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pokergo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/polsatgo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/polskieradio.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/popcorntimes.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/popcorntv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pornbox.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pornflip.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pornhub.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pornotube.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pornovoisines.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pornoxo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pr0gramm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/prankcast.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/premiershiprugby.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/presstv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/projectveritas.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/prosiebensat1.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/prx.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/puhutv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/puls4.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/pyvideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/qdance.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/qingting.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/qqmusic.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/r7.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/radiko.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/radiocanada.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/radiocomercial.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/radiode.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/radiofrance.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/radiojavan.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/radiokapital.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/radioradicale.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/radiozet.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/radlive.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rai.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/raywenderlich.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rbgtum.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rcs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rcti.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rds.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/redbee.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/redbulltv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/reddit.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/redge.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/redgifs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/redtube.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rentv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/restudy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/reuters.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/reverbnation.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rheinmaintv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ridehome.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rinsefm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rmcdecouverte.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rockstargames.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rokfin.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/roosterteeth.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rottentomatoes.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/roya.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rozhlas.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rte.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rtl2.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rtlnl.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rtnews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rtp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rtrfm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rts.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rtvcplay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rtve.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rtvs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rtvslo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rudovideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rule34video.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rumble.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/rutube.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ruutu.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ruv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/s4c.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/safari.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/saitosan.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/samplefocus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sapo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sauceplus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sbs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sbscokr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/screen9.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/screencast.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/screencastify.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/screencastomatic.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/screenrec.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/scrippsnetworks.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/scrolller.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sejmpl.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sen.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/senalcolombia.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/senategov.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sendtonews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/servus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sevenplus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sexu.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/seznamzpravy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/shahid.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sharepoint.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sharevideos.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/shemaroome.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/shiey.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/showroomlive.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sibnet.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/simplecast.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sina.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/skeb.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sky.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/skyit.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/skylinewebcams.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/skynewsarabia.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/skynewsau.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/slideshare.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/slideslive.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/slutload.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/smotrim.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/snapchat.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/snotr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/softwhiteunderbelly.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sohu.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sonyliv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/soundcloud.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/soundgasm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/southpark.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sovietscloset.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/spankbang.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/spiegel.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sport5.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sportbox.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sportdeutschland.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/spreaker.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/springboardplatform.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sproutvideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/srgssr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/srmediathek.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/stacommu.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/stageplus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/stanfordoc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/startrek.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/startv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/steam.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/stitcher.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/storyfire.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/streaks.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/streamable.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/streamcz.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/streetvoice.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/stretchinternet.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/stripchat.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/stv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/subsplash.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/substack.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sunporno.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sverigesradio.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/svt.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/swearnet.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/syvdk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/sztvhu.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tagesschau.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/taptap.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tarangplus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tass.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tbs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tbsjp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/teachable.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/teachertube.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/teachingchannel.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/teamcoco.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/teamtreehouse.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ted.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tele13.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tele5.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/telebruxelles.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/telecaribe.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/telecinco.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/telegraaf.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/telegram.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/telemb.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/telemundo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/telequebec.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/teletask.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/telewebion.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tempo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tencent.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tennistv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tenplay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/testurl.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tf1.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tfo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/theguardian.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/thehighwire.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/theholetv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/theintercept.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/theplatform.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/thestar.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/thesun.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/theweatherchannel.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/thisamericanlife.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/thisoldhouse.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/thisvid.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/threeqsdn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/threespeak.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tiktok.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tmz.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tnaflix.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/toggle.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/toggo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tonline.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/toongoggles.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/toutiao.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/toutv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/toypics.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/traileraddict.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/triller.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/trovo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/trtcocuk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/trtworld.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/trueid.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/trunews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/truth.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tube8.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tubetugraz.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tubitv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tumblr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tunein.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/turner.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tv2.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tv24ua.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tv2dk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tv2hu.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tv4.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tv5mondeplus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tv5unis.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tva.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tvanouvelles.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tvc.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tver.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tvigle.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tviplayer.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tvn24.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tvnoe.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tvopengr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tvp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tvplay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tvplayer.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tvw.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/tweakers.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/twentymin.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/twentythreevideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/twitcasting.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/twitch.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/twitter.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/txxx.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/udemy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/udn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ufctv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ukcolumn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/uktvplay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/uliza.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/umg.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/unistra.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/unitednations.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/unity.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/uol.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/uplynk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/urort.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/urplay.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/usanetwork.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/usatoday.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ustream.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ustudio.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/utreon.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/varzesh3.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vbox7.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/veo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vevo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vgtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vh1.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vice.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/viddler.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/videa.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/videocampus_sachsen.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/videodetective.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/videofyme.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/videoken.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/videomore.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/videopress.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vidflex.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vidio.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vidlii.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vidly.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vidyard.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/viewlift.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/viidea.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vimeo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vimm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/viously.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/viqeo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/viu.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vocaroo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vodpl.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vodplatform.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/voicy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/volejtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/voxmedia.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vrsquare.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vrt.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vtm.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vuclip.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/vvvvid.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/walla.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/washingtonpost.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wat.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wdr.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/webcamerapl.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/webcaster.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/webofstories.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/weibo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/weiqitv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/weverse.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wevidi.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/weyyak.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/whowatch.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wikimedia.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wimbledon.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wimtv.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wistia.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wordpress.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/worldstarhiphop.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wppilot.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wrestleuniverse.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wsj.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wwe.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/wykop.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/xboxclips.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/xhamster.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/xiaohongshu.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/ximalaya.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/xinpianchang.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/xminus.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/xnxx.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/xstream.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/xvideos.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/xxxymovies.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/yahoo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/yandexdisk.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/yandexmusic.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/yandexvideo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/yapfiles.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/yappy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/yfanefa.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/yle_areena.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youjizz.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youku.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/younow.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youporn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/_clip.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/_mistakes.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/_notifications.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/_redirect.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/_search.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/_tab.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/README.md +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_builtin/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_builtin/bun.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_builtin/deno.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_builtin/ejs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_builtin/node.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_builtin/quickjs.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_builtin/vendor/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_builtin/vendor/_info.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_builtin/vendor/yt.solver.bun.lib.js +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_builtin/vendor/yt.solver.core.js +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_builtin/vendor/yt.solver.deno.lib.js +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_director.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/_registry.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/jsc/provider.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/pot/README.md +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/pot/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/pot/_builtin/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/pot/_builtin/memory_cache.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/pot/_builtin/webpo_cachespec.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/pot/_director.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/pot/_provider.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/pot/_registry.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/pot/cache.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/pot/provider.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/youtube/pot/utils.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zaiko.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zapiks.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zattoo.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zdf.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zee5.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zeenews.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zenporn.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zetland.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zhihu.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zingmp3.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zoom.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/extractor/zype.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/globals.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/jsinterp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/minicurses.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/networking/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/networking/_curlcffi.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/networking/_helper.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/networking/_requests.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/networking/_urllib.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/networking/_websockets.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/networking/common.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/networking/exceptions.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/networking/impersonate.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/networking/websocket.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/options.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/plugins.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/postprocessor/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/postprocessor/common.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/postprocessor/embedthumbnail.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/postprocessor/exec.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/postprocessor/ffmpeg.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/postprocessor/metadataparser.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/postprocessor/modify_chapters.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/postprocessor/movefilesafterdownload.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/postprocessor/sponsorblock.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/postprocessor/xattrpp.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/socks.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/update.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/utils/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/utils/_deprecated.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/utils/_jsruntime.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/utils/_legacy.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/utils/_utils.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/utils/jslib/__init__.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/utils/jslib/devalue.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/utils/networking.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/utils/progress.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/utils/traversal.py +0 -0
- {yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/yt_dlp/webvtt.py +0 -0
|
@@ -1171,6 +1171,7 @@ atomizer
|
|
|
1171
1171
|
aviperes
|
|
1172
1172
|
axelerometer
|
|
1173
1173
|
aystroganov@gmail.com
|
|
1174
|
+
azdlonky
|
|
1174
1175
|
azeem
|
|
1175
1176
|
barsnick
|
|
1176
1177
|
bashonly
|
|
@@ -1613,6 +1614,7 @@ thc202
|
|
|
1613
1614
|
theGeekPirate
|
|
1614
1615
|
thedenv
|
|
1615
1616
|
thegymguy
|
|
1617
|
+
thematuu
|
|
1616
1618
|
theychx
|
|
1617
1619
|
thomasmllt
|
|
1618
1620
|
tiktok
|
|
@@ -4,7 +4,21 @@
|
|
|
4
4
|
# To create a release, dispatch the https://github.com/yt-dlp/yt-dlp/actions/workflows/release.yml workflow on master
|
|
5
5
|
-->
|
|
6
6
|
|
|
7
|
-
### 2026.01.
|
|
7
|
+
### 2026.01.31
|
|
8
|
+
|
|
9
|
+
#### Extractor changes
|
|
10
|
+
- **soop**: [Support subscription-only VODs](https://github.com/yt-dlp/yt-dlp/commit/d0bf3d0fc3455d411ae44c0a5dc974dd1481e3aa) ([#15523](https://github.com/yt-dlp/yt-dlp/issues/15523)) by [thematuu](https://github.com/thematuu)
|
|
11
|
+
- **unsupported**: [Update unsupported URLs](https://github.com/yt-dlp/yt-dlp/commit/bf5d8c2a663ac690711262aebc733c1b06a54b26) ([#15410](https://github.com/yt-dlp/yt-dlp/issues/15410)) by [bashonly](https://github.com/bashonly)
|
|
12
|
+
- **whyp**: [Extract more metadata](https://github.com/yt-dlp/yt-dlp/commit/0d8ee637e83d62edaf22aa85833a51c70d560389) ([#15757](https://github.com/yt-dlp/yt-dlp/issues/15757)) by [azdlonky](https://github.com/azdlonky)
|
|
13
|
+
- **youtube**
|
|
14
|
+
- [Add `web_embedded` fallback for `android_vr` client](https://github.com/yt-dlp/yt-dlp/commit/bb1c05752c288a81e0e281f1caf5395411936376) ([#15785](https://github.com/yt-dlp/yt-dlp/issues/15785)) by [bashonly](https://github.com/bashonly)
|
|
15
|
+
- [Remove broken `ios_downgraded` player client](https://github.com/yt-dlp/yt-dlp/commit/c3674575faa23b20e97be8b73f68b9f7b4cea9ab) ([#15786](https://github.com/yt-dlp/yt-dlp/issues/15786)) by [bashonly](https://github.com/bashonly)
|
|
16
|
+
- [Remove broken `tv_embedded` player client](https://github.com/yt-dlp/yt-dlp/commit/8eb794366eb69e7377ff88eed7929c00195c8d74) ([#15787](https://github.com/yt-dlp/yt-dlp/issues/15787)) by [bashonly](https://github.com/bashonly)
|
|
17
|
+
|
|
18
|
+
#### Misc. changes
|
|
19
|
+
- **cleanup**: Miscellaneous: [9a9a6b6](https://github.com/yt-dlp/yt-dlp/commit/9a9a6b6fe44a30458c1754ef064f354f04a84004) by [bashonly](https://github.com/bashonly)
|
|
20
|
+
|
|
21
|
+
### 2026.01.29
|
|
8
22
|
|
|
9
23
|
#### Core changes
|
|
10
24
|
- [Accept float values for `--sleep-subtitles`](https://github.com/yt-dlp/yt-dlp/commit/f6dc7d5279bcb7f29839c700d54ac148b332d208) ([#15282](https://github.com/yt-dlp/yt-dlp/issues/15282)) by [0xvd](https://github.com/0xvd)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: yt-dlp
|
|
3
|
-
Version: 2026.1.
|
|
3
|
+
Version: 2026.1.31
|
|
4
4
|
Summary: A feature-rich command-line audio/video downloader
|
|
5
5
|
Project-URL: Documentation, https://github.com/yt-dlp/yt-dlp#readme
|
|
6
6
|
Project-URL: Repository, https://github.com/yt-dlp/yt-dlp
|
|
@@ -388,7 +388,7 @@ Tip: Use `CTRL`+`F` (or `Command`+`F`) to search by keywords
|
|
|
388
388
|
--no-update Do not check for updates (default)
|
|
389
389
|
--update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version.
|
|
390
390
|
CHANNEL can be a repository as well. CHANNEL
|
|
391
|
-
and TAG default to "
|
|
391
|
+
and TAG default to "stable" and "latest"
|
|
392
392
|
respectively if omitted; See "UPDATE" for
|
|
393
393
|
details. Supported channels: stable,
|
|
394
394
|
nightly, master
|
|
@@ -1934,7 +1934,7 @@ The following extractors use this feature:
|
|
|
1934
1934
|
#### youtube
|
|
1935
1935
|
* `lang`: Prefer translated metadata (`title`, `description` etc) of this language code (case-sensitive). By default, the video primary language metadata is preferred, with a fallback to `en` translated. See [youtube/_base.py](https://github.com/yt-dlp/yt-dlp/blob/415b4c9f955b1a0391204bd24a7132590e7b3bdb/yt_dlp/extractor/youtube/_base.py#L402-L409) for the list of supported content language codes
|
|
1936
1936
|
* `skip`: One or more of `hls`, `dash` or `translated_subs` to skip extraction of the m3u8 manifests, dash manifests and [auto-translated subtitles](https://github.com/yt-dlp/yt-dlp/issues/4090#issuecomment-1158102032) respectively
|
|
1937
|
-
* `player_client`: Clients to extract video data from. The currently available clients are `web`, `web_safari`, `web_embedded`, `web_music`, `web_creator`, `mweb`, `ios`, `
|
|
1937
|
+
* `player_client`: Clients to extract video data from. The currently available clients are `web`, `web_safari`, `web_embedded`, `web_music`, `web_creator`, `mweb`, `ios`, `android`, `android_vr`, `tv`, `tv_downgraded`, and `tv_simply`. By default, `android_vr,web,web_safari` is used. If no JavaScript runtime/engine is available, then only `android_vr` is used. If logged-in cookies are passed to yt-dlp, then `tv_downgraded,web,web_safari` is used for free accounts and `tv_downgraded,web_creator,web` is used for premium accounts. The `web_music` client is added for `music.youtube.com` URLs when logged-in cookies are used. The `web_embedded` client is added for age-restricted videos but only successfully works around the age-restriction sometimes (e.g. if the video is embeddable), and may be added as a fallback if `android_vr` is unable to access a video. The `web_creator` client is added for age-restricted videos if account age-verification is required. Some clients, such as `web_creator` and `web_music`, require a `po_token` for their formats to be downloadable. Some clients, such as `web_creator`, will only work with authentication. Not all clients support authentication via cookies. You can use `default` for the default clients, or you can use `all` for all clients (not recommended). You can prefix a client with `-` to exclude it, e.g. `youtube:player_client=default,-web`
|
|
1938
1938
|
* `player_skip`: Skip some network requests that are generally needed for robust extraction. One or more of `configs` (skip client configs), `webpage` (skip initial webpage), `js` (skip js player), `initial_data` (skip initial data/next ep request). While these options can help reduce the number of requests needed or avoid some rate-limiting, they could cause issues such as missing formats or metadata. See [#860](https://github.com/yt-dlp/yt-dlp/pull/860) and [#12826](https://github.com/yt-dlp/yt-dlp/issues/12826) for more details
|
|
1939
1939
|
* `webpage_skip`: Skip extraction of embedded webpage data. One or both of `player_response`, `initial_data`. These options are for testing purposes and don't skip any network requests
|
|
1940
1940
|
* `player_params`: YouTube player parameters to use for player requests. Will overwrite any default ones set by yt-dlp.
|
|
@@ -318,7 +318,7 @@ Tip: Use `CTRL`+`F` (or `Command`+`F`) to search by keywords
|
|
|
318
318
|
--no-update Do not check for updates (default)
|
|
319
319
|
--update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version.
|
|
320
320
|
CHANNEL can be a repository as well. CHANNEL
|
|
321
|
-
and TAG default to "
|
|
321
|
+
and TAG default to "stable" and "latest"
|
|
322
322
|
respectively if omitted; See "UPDATE" for
|
|
323
323
|
details. Supported channels: stable,
|
|
324
324
|
nightly, master
|
|
@@ -1864,7 +1864,7 @@ The following extractors use this feature:
|
|
|
1864
1864
|
#### youtube
|
|
1865
1865
|
* `lang`: Prefer translated metadata (`title`, `description` etc) of this language code (case-sensitive). By default, the video primary language metadata is preferred, with a fallback to `en` translated. See [youtube/_base.py](https://github.com/yt-dlp/yt-dlp/blob/415b4c9f955b1a0391204bd24a7132590e7b3bdb/yt_dlp/extractor/youtube/_base.py#L402-L409) for the list of supported content language codes
|
|
1866
1866
|
* `skip`: One or more of `hls`, `dash` or `translated_subs` to skip extraction of the m3u8 manifests, dash manifests and [auto-translated subtitles](https://github.com/yt-dlp/yt-dlp/issues/4090#issuecomment-1158102032) respectively
|
|
1867
|
-
* `player_client`: Clients to extract video data from. The currently available clients are `web`, `web_safari`, `web_embedded`, `web_music`, `web_creator`, `mweb`, `ios`, `
|
|
1867
|
+
* `player_client`: Clients to extract video data from. The currently available clients are `web`, `web_safari`, `web_embedded`, `web_music`, `web_creator`, `mweb`, `ios`, `android`, `android_vr`, `tv`, `tv_downgraded`, and `tv_simply`. By default, `android_vr,web,web_safari` is used. If no JavaScript runtime/engine is available, then only `android_vr` is used. If logged-in cookies are passed to yt-dlp, then `tv_downgraded,web,web_safari` is used for free accounts and `tv_downgraded,web_creator,web` is used for premium accounts. The `web_music` client is added for `music.youtube.com` URLs when logged-in cookies are used. The `web_embedded` client is added for age-restricted videos but only successfully works around the age-restriction sometimes (e.g. if the video is embeddable), and may be added as a fallback if `android_vr` is unable to access a video. The `web_creator` client is added for age-restricted videos if account age-verification is required. Some clients, such as `web_creator` and `web_music`, require a `po_token` for their formats to be downloadable. Some clients, such as `web_creator`, will only work with authentication. Not all clients support authentication via cookies. You can use `default` for the default clients, or you can use `all` for all clients (not recommended). You can prefix a client with `-` to exclude it, e.g. `youtube:player_client=default,-web`
|
|
1868
1868
|
* `player_skip`: Skip some network requests that are generally needed for robust extraction. One or more of `configs` (skip client configs), `webpage` (skip initial webpage), `js` (skip js player), `initial_data` (skip initial data/next ep request). While these options can help reduce the number of requests needed or avoid some rate-limiting, they could cause issues such as missing formats or metadata. See [#860](https://github.com/yt-dlp/yt-dlp/pull/860) and [#12826](https://github.com/yt-dlp/yt-dlp/issues/12826) for more details
|
|
1869
1869
|
* `webpage_skip`: Skip extraction of embedded webpage data. One or both of `player_response`, `initial_data`. These options are for testing purposes and don't skip any network requests
|
|
1870
1870
|
* `player_params`: YouTube player parameters to use for player requests. Will overwrite any default ones set by yt-dlp.
|
|
@@ -409,7 +409,7 @@ General Options:
|
|
|
409
409
|
--no-update Do not check for updates (default)
|
|
410
410
|
--update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version.
|
|
411
411
|
CHANNEL can be a repository as well. CHANNEL
|
|
412
|
-
and TAG default to "
|
|
412
|
+
and TAG default to "stable" and "latest"
|
|
413
413
|
respectively if omitted; See "UPDATE" for
|
|
414
414
|
details. Supported channels: stable,
|
|
415
415
|
nightly, master
|
|
@@ -2312,24 +2312,25 @@ youtube
|
|
|
2312
2312
|
respectively
|
|
2313
2313
|
- player_client: Clients to extract video data from. The currently
|
|
2314
2314
|
available clients are web, web_safari, web_embedded, web_music,
|
|
2315
|
-
web_creator, mweb, ios,
|
|
2316
|
-
tv_simply,
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
If logged-in cookies are passed to yt-dlp, then
|
|
2315
|
+
web_creator, mweb, ios, android, android_vr, tv, tv_downgraded, and
|
|
2316
|
+
tv_simply. By default, android_vr,web,web_safari is used. If no
|
|
2317
|
+
JavaScript runtime/engine is available, then only android_vr is
|
|
2318
|
+
used. If logged-in cookies are passed to yt-dlp, then
|
|
2320
2319
|
tv_downgraded,web,web_safari is used for free accounts and
|
|
2321
2320
|
tv_downgraded,web_creator,web is used for premium accounts. The
|
|
2322
2321
|
web_music client is added for music.youtube.com URLs when logged-in
|
|
2323
2322
|
cookies are used. The web_embedded client is added for
|
|
2324
|
-
age-restricted videos but only works
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2323
|
+
age-restricted videos but only successfully works around the
|
|
2324
|
+
age-restriction sometimes (e.g. if the video is embeddable), and may
|
|
2325
|
+
be added as a fallback if android_vr is unable to access a video.
|
|
2326
|
+
The web_creator client is added for age-restricted videos if account
|
|
2327
|
+
age-verification is required. Some clients, such as web_creator and
|
|
2328
|
+
web_music, require a po_token for their formats to be downloadable.
|
|
2329
|
+
Some clients, such as web_creator, will only work with
|
|
2329
2330
|
authentication. Not all clients support authentication via cookies.
|
|
2330
2331
|
You can use default for the default clients, or you can use all for
|
|
2331
2332
|
all clients (not recommended). You can prefix a client with - to
|
|
2332
|
-
exclude it, e.g. youtube:player_client=default,-
|
|
2333
|
+
exclude it, e.g. youtube:player_client=default,-web
|
|
2333
2334
|
- player_skip: Skip some network requests that are generally needed
|
|
2334
2335
|
for robust extraction. One or more of configs (skip client configs),
|
|
2335
2336
|
webpage (skip initial webpage), js (skip js player), initial_data
|
|
@@ -3,7 +3,7 @@ complete --command yt-dlp --long-option help --short-option h --description 'Pri
|
|
|
3
3
|
complete --command yt-dlp --long-option version --description 'Print program version and exit'
|
|
4
4
|
complete --command yt-dlp --long-option update --short-option U --description 'Check if updates are available. You installed yt-dlp from a manual build or with a package manager; Use that to update'
|
|
5
5
|
complete --command yt-dlp --long-option no-update --description 'Do not check for updates (default)'
|
|
6
|
-
complete --command yt-dlp --long-option update-to --description 'Upgrade/downgrade to a specific version. CHANNEL can be a repository as well. CHANNEL and TAG default to "
|
|
6
|
+
complete --command yt-dlp --long-option update-to --description 'Upgrade/downgrade to a specific version. CHANNEL can be a repository as well. CHANNEL and TAG default to "stable" and "latest" respectively if omitted; See "UPDATE" for details. Supported channels: stable, nightly, master'
|
|
7
7
|
complete --command yt-dlp --long-option ignore-errors --short-option i --description 'Ignore download and postprocessing errors. The download will be considered successful even if the postprocessing fails'
|
|
8
8
|
complete --command yt-dlp --long-option no-abort-on-error --description 'Continue with next video on download errors; e.g. to skip unavailable videos in a playlist (default)'
|
|
9
9
|
complete --command yt-dlp --long-option abort-on-error --description 'Abort downloading of further videos if an error occurs (Alias: --no-ignore-errors)'
|
|
@@ -36,7 +36,6 @@ class Variant(enum.Enum):
|
|
|
36
36
|
tv = 'tv-player-ias.vflset/tv-player-ias.js'
|
|
37
37
|
tv_es6 = 'tv-player-es6.vflset/tv-player-es6.js'
|
|
38
38
|
phone = 'player-plasma-ias-phone-en_US.vflset/base.js'
|
|
39
|
-
tablet = 'player-plasma-ias-tablet-en_US.vflset/base.js'
|
|
40
39
|
|
|
41
40
|
|
|
42
41
|
@dataclasses.dataclass
|
|
@@ -48,7 +48,7 @@ Do not check for updates (default)
|
|
|
48
48
|
--update-to \f[I][CHANNEL]\[at][TAG]\f[R]
|
|
49
49
|
Upgrade/downgrade to a specific version.
|
|
50
50
|
CHANNEL can be a repository as well.
|
|
51
|
-
CHANNEL and TAG default to \[dq]
|
|
51
|
+
CHANNEL and TAG default to \[dq]stable\[dq] and \[dq]latest\[dq]
|
|
52
52
|
respectively if omitted; See \[dq]UPDATE\[dq] for details.
|
|
53
53
|
Supported channels: stable, nightly, master
|
|
54
54
|
.TP
|
|
@@ -2713,30 +2713,31 @@ respectively
|
|
|
2713
2713
|
\f[V]player_client\f[R]: Clients to extract video data from.
|
|
2714
2714
|
The currently available clients are \f[V]web\f[R], \f[V]web_safari\f[R],
|
|
2715
2715
|
\f[V]web_embedded\f[R], \f[V]web_music\f[R], \f[V]web_creator\f[R],
|
|
2716
|
-
\f[V]mweb\f[R], \f[V]ios\f[R], \f[V]
|
|
2717
|
-
\f[V]
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
\f[V]android_vr,ios_downgraded\f[R] is used.
|
|
2716
|
+
\f[V]mweb\f[R], \f[V]ios\f[R], \f[V]android\f[R], \f[V]android_vr\f[R],
|
|
2717
|
+
\f[V]tv\f[R], \f[V]tv_downgraded\f[R], and \f[V]tv_simply\f[R].
|
|
2718
|
+
By default, \f[V]android_vr,web,web_safari\f[R] is used.
|
|
2719
|
+
If no JavaScript runtime/engine is available, then only
|
|
2720
|
+
\f[V]android_vr\f[R] is used.
|
|
2722
2721
|
If logged-in cookies are passed to yt-dlp, then
|
|
2723
2722
|
\f[V]tv_downgraded,web,web_safari\f[R] is used for free accounts and
|
|
2724
2723
|
\f[V]tv_downgraded,web_creator,web\f[R] is used for premium accounts.
|
|
2725
2724
|
The \f[V]web_music\f[R] client is added for \f[V]music.youtube.com\f[R]
|
|
2726
2725
|
URLs when logged-in cookies are used.
|
|
2727
2726
|
The \f[V]web_embedded\f[R] client is added for age-restricted videos but
|
|
2728
|
-
only works
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2727
|
+
only successfully works around the age-restriction sometimes (e.g.
|
|
2728
|
+
if the video is embeddable), and may be added as a fallback if
|
|
2729
|
+
\f[V]android_vr\f[R] is unable to access a video.
|
|
2730
|
+
The \f[V]web_creator\f[R] client is added for age-restricted videos if
|
|
2731
|
+
account age-verification is required.
|
|
2732
|
+
Some clients, such as \f[V]web_creator\f[R] and \f[V]web_music\f[R],
|
|
2733
|
+
require a \f[V]po_token\f[R] for their formats to be downloadable.
|
|
2733
2734
|
Some clients, such as \f[V]web_creator\f[R], will only work with
|
|
2734
2735
|
authentication.
|
|
2735
2736
|
Not all clients support authentication via cookies.
|
|
2736
2737
|
You can use \f[V]default\f[R] for the default clients, or you can use
|
|
2737
2738
|
\f[V]all\f[R] for all clients (not recommended).
|
|
2738
2739
|
You can prefix a client with \f[V]-\f[R] to exclude it, e.g.
|
|
2739
|
-
\f[V]youtube:player_client=default,-
|
|
2740
|
+
\f[V]youtube:player_client=default,-web\f[R]
|
|
2740
2741
|
.IP \[bu] 2
|
|
2741
2742
|
\f[V]player_skip\f[R]: Skip some network requests that are generally
|
|
2742
2743
|
needed for robust extraction.
|
|
@@ -36,6 +36,7 @@ from .rtsp import RtspFD
|
|
|
36
36
|
from .websocket import WebSocketFragmentFD
|
|
37
37
|
from .youtube_live_chat import YoutubeLiveChatFD
|
|
38
38
|
from .bunnycdn import BunnyCdnFD
|
|
39
|
+
from .soop import SoopVodFD
|
|
39
40
|
|
|
40
41
|
PROTOCOL_MAP = {
|
|
41
42
|
'rtmp': RtmpFD,
|
|
@@ -56,6 +57,7 @@ PROTOCOL_MAP = {
|
|
|
56
57
|
'youtube_live_chat': YoutubeLiveChatFD,
|
|
57
58
|
'youtube_live_chat_replay': YoutubeLiveChatFD,
|
|
58
59
|
'bunnycdn': BunnyCdnFD,
|
|
60
|
+
'soopvod': SoopVodFD,
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import threading
|
|
2
|
+
import time
|
|
3
|
+
|
|
4
|
+
from .common import FileDownloader
|
|
5
|
+
from . import HlsFD
|
|
6
|
+
from ..extractor.afreecatv import _cloudfront_auth_request
|
|
7
|
+
from ..networking.exceptions import network_exceptions
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SoopVodFD(FileDownloader):
|
|
11
|
+
"""
|
|
12
|
+
Downloads Soop subscription VODs with required cookie refresh requests
|
|
13
|
+
Note, this is not a part of public API, and will be removed without notice.
|
|
14
|
+
DO NOT USE
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
def real_download(self, filename, info_dict):
|
|
18
|
+
self.to_screen(f'[{self.FD_NAME}] Downloading Soop subscription VOD HLS')
|
|
19
|
+
fd = HlsFD(self.ydl, self.params)
|
|
20
|
+
refresh_params = info_dict['_cookie_refresh_params']
|
|
21
|
+
referer_url = info_dict['webpage_url']
|
|
22
|
+
|
|
23
|
+
stop_event = threading.Event()
|
|
24
|
+
refresh_thread = threading.Thread(
|
|
25
|
+
target=self._cookie_refresh_thread,
|
|
26
|
+
args=(stop_event, refresh_params, referer_url),
|
|
27
|
+
)
|
|
28
|
+
refresh_thread.start()
|
|
29
|
+
|
|
30
|
+
try:
|
|
31
|
+
return fd.real_download(filename, info_dict)
|
|
32
|
+
finally:
|
|
33
|
+
stop_event.set()
|
|
34
|
+
|
|
35
|
+
def _cookie_refresh_thread(self, stop_event, refresh_params, referer_url):
|
|
36
|
+
m3u8_url = refresh_params['m3u8_url']
|
|
37
|
+
strm_id = refresh_params['strm_id']
|
|
38
|
+
video_id = refresh_params['video_id']
|
|
39
|
+
|
|
40
|
+
def _get_cloudfront_cookie_expiration(m3u8_url):
|
|
41
|
+
cookies = self.ydl.cookiejar.get_cookies_for_url(m3u8_url)
|
|
42
|
+
return min((cookie.expires for cookie in cookies if 'CloudFront' in cookie.name and cookie.expires), default=0)
|
|
43
|
+
|
|
44
|
+
while not stop_event.wait(5):
|
|
45
|
+
current_time = time.time()
|
|
46
|
+
expiration_time = _get_cloudfront_cookie_expiration(m3u8_url)
|
|
47
|
+
last_refresh_check = refresh_params.get('_last_refresh', 0)
|
|
48
|
+
|
|
49
|
+
# Cookie TTL is 90 seconds, but let's give ourselves a 15-second cushion
|
|
50
|
+
should_refresh = (
|
|
51
|
+
(expiration_time and current_time >= expiration_time - 15)
|
|
52
|
+
or (not expiration_time and current_time - last_refresh_check >= 75)
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
if should_refresh:
|
|
56
|
+
try:
|
|
57
|
+
self.ydl.urlopen(_cloudfront_auth_request(
|
|
58
|
+
m3u8_url, strm_id, video_id, referer_url)).read()
|
|
59
|
+
refresh_params['_last_refresh'] = current_time
|
|
60
|
+
except network_exceptions as e:
|
|
61
|
+
self.to_screen(f'[{self.FD_NAME}] Cookie refresh attempt failed: {e}')
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import datetime as dt
|
|
2
2
|
import functools
|
|
3
|
+
import time
|
|
3
4
|
|
|
4
5
|
from .common import InfoExtractor
|
|
5
6
|
from ..networking import Request
|
|
@@ -16,7 +17,23 @@ from ..utils import (
|
|
|
16
17
|
urlencode_postdata,
|
|
17
18
|
urljoin,
|
|
18
19
|
)
|
|
19
|
-
from ..utils.traversal import traverse_obj
|
|
20
|
+
from ..utils.traversal import require, traverse_obj
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _cloudfront_auth_request(m3u8_url, strm_id, video_id, referer_url):
|
|
24
|
+
return Request(
|
|
25
|
+
'https://live.sooplive.co.kr/api/private_auth.php',
|
|
26
|
+
method='POST',
|
|
27
|
+
headers={
|
|
28
|
+
'Referer': referer_url,
|
|
29
|
+
'Origin': 'https://vod.sooplive.co.kr',
|
|
30
|
+
},
|
|
31
|
+
data=urlencode_postdata({
|
|
32
|
+
'type': 'vod',
|
|
33
|
+
'strm_id': strm_id,
|
|
34
|
+
'title_no': video_id,
|
|
35
|
+
'url': m3u8_url,
|
|
36
|
+
}))
|
|
20
37
|
|
|
21
38
|
|
|
22
39
|
class AfreecaTVBaseIE(InfoExtractor):
|
|
@@ -153,6 +170,13 @@ class AfreecaTVIE(AfreecaTVBaseIE):
|
|
|
153
170
|
'nApiLevel': 10,
|
|
154
171
|
}))['data']
|
|
155
172
|
|
|
173
|
+
initial_refresh_time = 0
|
|
174
|
+
strm_id = None
|
|
175
|
+
# For subscriber-only VODs, we need to call private_auth.php to get CloudFront cookies
|
|
176
|
+
needs_private_auth = traverse_obj(data, ('sub_upload_type', {str}))
|
|
177
|
+
if needs_private_auth:
|
|
178
|
+
strm_id = traverse_obj(data, ('bj_id', {str}, {require('stream ID')}))
|
|
179
|
+
|
|
156
180
|
error_code = traverse_obj(data, ('code', {int}))
|
|
157
181
|
if error_code == -6221:
|
|
158
182
|
raise ExtractorError('The VOD does not exist', expected=True)
|
|
@@ -172,9 +196,23 @@ class AfreecaTVIE(AfreecaTVBaseIE):
|
|
|
172
196
|
traverse_obj(data, ('files', lambda _, v: url_or_none(v['file']))), start=1):
|
|
173
197
|
file_url = file_element['file']
|
|
174
198
|
if determine_ext(file_url) == 'm3u8':
|
|
199
|
+
if needs_private_auth:
|
|
200
|
+
self._request_webpage(
|
|
201
|
+
_cloudfront_auth_request(file_url, strm_id, video_id, url),
|
|
202
|
+
video_id, 'Requesting CloudFront cookies', 'Failed to get CloudFront cookies')
|
|
203
|
+
initial_refresh_time = time.time()
|
|
175
204
|
formats = self._extract_m3u8_formats(
|
|
176
205
|
file_url, video_id, 'mp4', m3u8_id='hls',
|
|
177
206
|
note=f'Downloading part {file_num} m3u8 information')
|
|
207
|
+
if needs_private_auth:
|
|
208
|
+
for fmt in formats:
|
|
209
|
+
fmt['protocol'] = 'soopvod'
|
|
210
|
+
fmt['_cookie_refresh_params'] = {
|
|
211
|
+
'm3u8_url': file_url,
|
|
212
|
+
'strm_id': strm_id,
|
|
213
|
+
'video_id': video_id,
|
|
214
|
+
'_last_refresh': initial_refresh_time,
|
|
215
|
+
}
|
|
178
216
|
else:
|
|
179
217
|
formats = [{
|
|
180
218
|
'url': file_url,
|
|
@@ -5862,7 +5862,7 @@ class UnsupportedInfoExtractor(LazyLoadExtractor):
|
|
|
5862
5862
|
class KnownDRMIE(UnsupportedInfoExtractor):
|
|
5863
5863
|
_module = 'yt_dlp.extractor.unsupported'
|
|
5864
5864
|
IE_NAME = 'DRM'
|
|
5865
|
-
_VALID_URL = 'https?://(?:www\\.)?(?:play\\.hbomax\\.com|channel(?:4|5)\\.com|peacocktv\\.com|(?:[\\w.]+\\.)?disneyplus\\.com|open\\.spotify\\.com|tvnz\\.co\\.nz|oneplus\\.ch|artstation\\.com/learning/courses|philo\\.com|(?:[\\w.]+\\.)?mech-plus\\.com|aha\\.video|mubi\\.com|vootkids\\.com|nowtv\\.it/watch|tv\\.apple\\.com|primevideo\\.com|hulu\\.com|resource\\.inkryptvideos\\.com|joyn\\.de|amazon\\.(?:\\w{2}\\.)?\\w+/gp/video|music\\.amazon\\.(?:\\w{2}\\.)?\\w+|(?:watch|front)\\.njpwworld\\.com|qub\\.ca/vrai|(?:beta\\.)?crunchyroll\\.com|viki\\.com|deezer\\.com|b-ch\\.com|ctv\\.ca|noovo\\.ca|tsn\\.ca|paramountplus\\.com|(?:m\\.)?(?:sony)?crackle\\.com|cw(?:tv(?:pr)?|seed)\\.com|6play\\.fr|rtlplay\\.be|play\\.rtl\\.hr|rtlmost\\.hu|plus\\.rtl\\.de(?!/podcast/)|mediasetinfinity\\.es)'
|
|
5865
|
+
_VALID_URL = 'https?://(?:www\\.)?(?:play\\.hbomax\\.com|channel(?:4|5)\\.com|peacocktv\\.com|(?:[\\w.]+\\.)?disneyplus\\.com|open\\.spotify\\.com|tvnz\\.co\\.nz|oneplus\\.ch|artstation\\.com/learning/courses|philo\\.com|(?:[\\w.]+\\.)?mech-plus\\.com|aha\\.video|mubi\\.com|vootkids\\.com|nowtv\\.it/watch|tv\\.apple\\.com|primevideo\\.com|hulu\\.com|resource\\.inkryptvideos\\.com|joyn\\.de|amazon\\.(?:\\w{2}\\.)?\\w+/gp/video|music\\.amazon\\.(?:\\w{2}\\.)?\\w+|(?:watch|front)\\.njpwworld\\.com|qub\\.ca/vrai|(?:beta\\.)?crunchyroll\\.com|viki\\.com|deezer\\.com|b-ch\\.com|ctv\\.ca|noovo\\.ca|tsn\\.ca|paramountplus\\.com|(?:m\\.)?(?:sony)?crackle\\.com|cw(?:tv(?:pr)?|seed)\\.com|6play\\.fr|rtlplay\\.be|play\\.rtl\\.hr|rtlmost\\.hu|plus\\.rtl\\.de(?!/podcast/)|mediasetinfinity\\.es|tv5mondeplus\\.com)'
|
|
5866
5866
|
IE_DESC = False
|
|
5867
5867
|
|
|
5868
5868
|
|
|
@@ -66,6 +66,7 @@ class KnownDRMIE(UnsupportedInfoExtractor):
|
|
|
66
66
|
r'rtlmost\.hu',
|
|
67
67
|
r'plus\.rtl\.de(?!/podcast/)',
|
|
68
68
|
r'mediasetinfinity\.es',
|
|
69
|
+
r'tv5mondeplus\.com',
|
|
69
70
|
)
|
|
70
71
|
|
|
71
72
|
_TESTS = [{
|
|
@@ -226,6 +227,10 @@ class KnownDRMIE(UnsupportedInfoExtractor):
|
|
|
226
227
|
}, {
|
|
227
228
|
'url': 'https://www.mediasetinfinity.es/',
|
|
228
229
|
'only_matching': True,
|
|
230
|
+
}, {
|
|
231
|
+
# https://github.com/yt-dlp/yt-dlp/issues/14743
|
|
232
|
+
'url': 'https://www.tv5mondeplus.com/',
|
|
233
|
+
'only_matching': True,
|
|
229
234
|
}]
|
|
230
235
|
|
|
231
236
|
def _real_extract(self, url):
|
|
@@ -2,6 +2,7 @@ from .common import InfoExtractor
|
|
|
2
2
|
from ..utils import (
|
|
3
3
|
float_or_none,
|
|
4
4
|
int_or_none,
|
|
5
|
+
parse_iso8601,
|
|
5
6
|
str_or_none,
|
|
6
7
|
traverse_obj,
|
|
7
8
|
url_or_none,
|
|
@@ -16,9 +17,12 @@ class WhypIE(InfoExtractor):
|
|
|
16
17
|
'info_dict': {
|
|
17
18
|
'id': '18337',
|
|
18
19
|
'title': 'Example Track',
|
|
20
|
+
'display_id': 'example-track',
|
|
19
21
|
'description': 'md5:e0b1bcf1d267dc1a0f15efff09c8f297',
|
|
20
22
|
'ext': 'flac',
|
|
21
23
|
'duration': 135.63,
|
|
24
|
+
'timestamp': 1643216583,
|
|
25
|
+
'upload_date': '20220126',
|
|
22
26
|
'uploader': 'Brad',
|
|
23
27
|
'uploader_id': '1',
|
|
24
28
|
'thumbnail': 'https://cdn.whyp.it/6ad0bbd9-577d-42bb-9b61-2a4f57f647eb.jpg',
|
|
@@ -44,10 +48,12 @@ class WhypIE(InfoExtractor):
|
|
|
44
48
|
'http_headers': {'Referer': 'https://whyp.it/'},
|
|
45
49
|
} for prefix in ('audio', 'lossy', 'lossless') if url_or_none(data.get(f'{prefix}_url'))],
|
|
46
50
|
**traverse_obj(data, {
|
|
47
|
-
'title': 'title',
|
|
51
|
+
'title': ('title', {str}),
|
|
52
|
+
'display_id': ('slug', {str}),
|
|
48
53
|
'description': 'description',
|
|
49
54
|
'duration': ('duration', {float_or_none}),
|
|
50
|
-
'
|
|
55
|
+
'timestamp': ('created_at', {parse_iso8601}),
|
|
56
|
+
'uploader': ('user', 'username', {str}),
|
|
51
57
|
'uploader_id': ('user', 'id', {str_or_none}),
|
|
52
58
|
'thumbnail': ('artwork_url', {url_or_none}),
|
|
53
59
|
}),
|
|
@@ -271,34 +271,6 @@ INNERTUBE_CLIENTS = {
|
|
|
271
271
|
'PLAYER_PO_TOKEN_POLICY': PlayerPoTokenPolicy(required=False, recommended=True),
|
|
272
272
|
'REQUIRE_JS_PLAYER': False,
|
|
273
273
|
},
|
|
274
|
-
'ios_downgraded': {
|
|
275
|
-
'INNERTUBE_CONTEXT': {
|
|
276
|
-
'client': {
|
|
277
|
-
'clientName': 'IOS',
|
|
278
|
-
'clientVersion': '19.49.7',
|
|
279
|
-
'deviceMake': 'Apple',
|
|
280
|
-
'deviceModel': 'iPhone16,2',
|
|
281
|
-
'userAgent': 'com.google.ios.youtube/19.49.7 (iPhone16,2; U; CPU iOS 17_5_1 like Mac OS X;)',
|
|
282
|
-
'osName': 'iPhone',
|
|
283
|
-
'osVersion': '17.5.1.21F90',
|
|
284
|
-
},
|
|
285
|
-
},
|
|
286
|
-
'INNERTUBE_CONTEXT_CLIENT_NAME': 5,
|
|
287
|
-
'GVS_PO_TOKEN_POLICY': {
|
|
288
|
-
StreamingProtocol.HTTPS: GvsPoTokenPolicy(
|
|
289
|
-
required=True,
|
|
290
|
-
recommended=True,
|
|
291
|
-
not_required_with_player_token=True,
|
|
292
|
-
),
|
|
293
|
-
StreamingProtocol.HLS: GvsPoTokenPolicy(
|
|
294
|
-
required=False,
|
|
295
|
-
recommended=True,
|
|
296
|
-
not_required_with_player_token=True,
|
|
297
|
-
),
|
|
298
|
-
},
|
|
299
|
-
'PLAYER_PO_TOKEN_POLICY': PlayerPoTokenPolicy(required=False, recommended=True),
|
|
300
|
-
'REQUIRE_JS_PLAYER': False,
|
|
301
|
-
},
|
|
302
274
|
# mweb has 'ultralow' formats
|
|
303
275
|
# See: https://github.com/yt-dlp/yt-dlp/pull/557
|
|
304
276
|
'mweb': {
|
|
@@ -379,20 +351,6 @@ INNERTUBE_CLIENTS = {
|
|
|
379
351
|
},
|
|
380
352
|
'INNERTUBE_CONTEXT_CLIENT_NAME': 75,
|
|
381
353
|
},
|
|
382
|
-
# This client now requires sign-in for every video
|
|
383
|
-
# It was previously an age-gate workaround for videos that were `playable_in_embed`
|
|
384
|
-
# It may still be useful if signed into an EU account that is not age-verified
|
|
385
|
-
'tv_embedded': {
|
|
386
|
-
'INNERTUBE_CONTEXT': {
|
|
387
|
-
'client': {
|
|
388
|
-
'clientName': 'TVHTML5_SIMPLY_EMBEDDED_PLAYER',
|
|
389
|
-
'clientVersion': '2.0',
|
|
390
|
-
},
|
|
391
|
-
},
|
|
392
|
-
'INNERTUBE_CONTEXT_CLIENT_NAME': 85,
|
|
393
|
-
'REQUIRE_AUTH': True,
|
|
394
|
-
'SUPPORTS_COOKIES': True,
|
|
395
|
-
},
|
|
396
354
|
}
|
|
397
355
|
|
|
398
356
|
|
|
@@ -145,8 +145,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
145
145
|
r'\b(?P<id>vfl[a-zA-Z0-9_-]+)\b.*?\.js$',
|
|
146
146
|
)
|
|
147
147
|
_SUBTITLE_FORMATS = ('json3', 'srv1', 'srv2', 'srv3', 'ttml', 'srt', 'vtt')
|
|
148
|
-
_DEFAULT_CLIENTS = ('android_vr', '
|
|
149
|
-
_DEFAULT_JSLESS_CLIENTS = ('android_vr',
|
|
148
|
+
_DEFAULT_CLIENTS = ('android_vr', 'web', 'web_safari')
|
|
149
|
+
_DEFAULT_JSLESS_CLIENTS = ('android_vr',)
|
|
150
150
|
_DEFAULT_AUTHED_CLIENTS = ('tv_downgraded', 'web', 'web_safari')
|
|
151
151
|
# Premium does not require POT (except for subtitles)
|
|
152
152
|
_DEFAULT_PREMIUM_CLIENTS = ('tv_downgraded', 'web_creator', 'web')
|
|
@@ -1443,7 +1443,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
1443
1443
|
'view_count': int,
|
|
1444
1444
|
},
|
|
1445
1445
|
'params': {
|
|
1446
|
-
'extractor_args': {'youtube': {'player_client': ['tv_embedded']}},
|
|
1447
1446
|
'format': '251-drc',
|
|
1448
1447
|
'skip_download': True,
|
|
1449
1448
|
},
|
|
@@ -3118,6 +3117,15 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
3118
3117
|
else:
|
|
3119
3118
|
prs.append(pr)
|
|
3120
3119
|
|
|
3120
|
+
if (
|
|
3121
|
+
# Is this a "made for kids" video that can't be downloaded with android_vr?
|
|
3122
|
+
client == 'android_vr' and self._is_unplayable(pr)
|
|
3123
|
+
and webpage and 'made for kids' in webpage
|
|
3124
|
+
# ...and is a JS runtime is available?
|
|
3125
|
+
and any(p.is_available() for p in self._jsc_director.providers.values())
|
|
3126
|
+
):
|
|
3127
|
+
append_client('web_embedded')
|
|
3128
|
+
|
|
3121
3129
|
# web_embedded can work around age-gate and age-verification for some embeddable videos
|
|
3122
3130
|
if self._is_agegated(pr) and variant != 'web_embedded':
|
|
3123
3131
|
append_client(f'web_embedded.{base_client}')
|
|
@@ -3134,9 +3142,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
3134
3142
|
self.to_screen(
|
|
3135
3143
|
f'{video_id}: This video is age-restricted and YouTube is requiring '
|
|
3136
3144
|
'account age-verification; some formats may be missing', only_once=True)
|
|
3137
|
-
# tv_embedded can work around the age-verification requirement for embeddable videos
|
|
3138
3145
|
# web_creator may work around age-verification for all videos but requires PO token
|
|
3139
|
-
append_client('
|
|
3146
|
+
append_client('web_creator')
|
|
3140
3147
|
|
|
3141
3148
|
status = traverse_obj(pr, ('playabilityStatus', 'status', {str}))
|
|
3142
3149
|
if status not in ('OK', 'LIVE_STREAM_OFFLINE', 'AGE_CHECK_REQUIRED', 'AGE_VERIFICATION_REQUIRED'):
|
|
@@ -3595,10 +3602,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
3595
3602
|
if client_name == 'web_safari' and proto == 'hls' and live_status != 'is_live':
|
|
3596
3603
|
f['source_preference'] -= 1
|
|
3597
3604
|
|
|
3598
|
-
# Safeguard against inevitable ios_downgraded client breakage
|
|
3599
|
-
if client_name == 'ios_downgraded' and proto == 'hls' and live_status != 'is_live':
|
|
3600
|
-
f['__needs_testing'] = True
|
|
3601
|
-
|
|
3602
3605
|
if missing_pot:
|
|
3603
3606
|
f['format_note'] = join_nonempty(f.get('format_note'), 'MISSING POT', delim=' ')
|
|
3604
3607
|
f['source_preference'] -= 20
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Autogenerated by devscripts/update-version.py
|
|
2
|
+
|
|
3
|
+
__version__ = '2026.01.31'
|
|
4
|
+
|
|
5
|
+
RELEASE_GIT_HEAD = '9a9a6b6fe44a30458c1754ef064f354f04a84004'
|
|
6
|
+
|
|
7
|
+
VARIANT = 'pip'
|
|
8
|
+
|
|
9
|
+
UPDATE_HINT = 'You installed yt-dlp with pip or using the wheel from PyPi; Use that to update'
|
|
10
|
+
|
|
11
|
+
CHANNEL = 'stable'
|
|
12
|
+
|
|
13
|
+
ORIGIN = 'yt-dlp/yt-dlp'
|
|
14
|
+
|
|
15
|
+
_pkg_version = '2026.01.31'
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# Autogenerated by devscripts/update-version.py
|
|
2
|
-
|
|
3
|
-
__version__ = '2026.01.29.165626'
|
|
4
|
-
|
|
5
|
-
RELEASE_GIT_HEAD = '8b275536d945c4b3d07b6c520677922c67a7c10f'
|
|
6
|
-
|
|
7
|
-
VARIANT = 'pip'
|
|
8
|
-
|
|
9
|
-
UPDATE_HINT = 'You installed yt-dlp with pip or using the wheel from PyPi; Use that to update'
|
|
10
|
-
|
|
11
|
-
CHANNEL = 'nightly'
|
|
12
|
-
|
|
13
|
-
ORIGIN = 'yt-dlp/yt-dlp-nightly-builds'
|
|
14
|
-
|
|
15
|
-
_pkg_version = '2026.01.29.165626dev'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yt_dlp-2026.1.29.165626.dev0 → yt_dlp-2026.1.31}/devscripts/generate_third_party_licenses.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|