diff options
| author | dirkf <fieldhouse@gmx.net> | 2025-11-04 20:52:15 +0000 |
|---|---|---|
| committer | dirkf <fieldhouse@gmx.net> | 2025-11-21 01:52:11 +0000 |
| commit | a1e2c7d90b2a5e67acf489483d5e583e588a272a (patch) | |
| tree | 48ce7f05e259025d166a34744a216891fce8183a | |
| parent | c55ace3c503c7bddb9c25112bd19bea282bbae59 (diff) | |
[YouTube] Add further InnerTube clients
FWIW: android-sdkless, tv_downgraded, web_creator
Thx yt-dlp passim
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index ce23b39bb..3d89d5319 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -90,6 +90,21 @@ class YoutubeBaseInfoExtractor(InfoExtractor): # priority order for now _INNERTUBE_CLIENTS = o_dict(( + # Doesn't require a PoToken for some reason: thx yt-dlp/yt-dlp#14693 + ('android_sdkless', { + 'INNERTUBE_CONTEXT': { + 'client': { + 'clientName': 'ANDROID', + 'clientVersion': '20.10.38', + 'userAgent': 'com.google.android.youtube/20.10.38 (Linux; U; Android 11) gzip', + 'osName': 'Android', + 'osVersion': '11', + }, + }, + 'INNERTUBE_CONTEXT_CLIENT_NAME': 3, + 'REQUIRE_JS_PLAYER': False, + 'WITH_COOKIES': False, + }), ('ios', { 'INNERTUBE_CONTEXT': { 'client': { @@ -120,6 +135,16 @@ class YoutubeBaseInfoExtractor(InfoExtractor): }, 'INNERTUBE_CONTEXT_CLIENT_NAME': 2, 'REQUIRE_PO_TOKEN': True, + }), + ('tv_downgraded', { + 'INNERTUBE_CONTEXT': { + 'client': { + 'clientName': 'TVHTML5', + 'clientVersion': '4', # avoids SABR formats, thx yt-dlp/yt-dlp#14887 + 'userAgent': 'Mozilla/5.0 (ChromiumStylePlatform) Cobalt/Version', + }, + }, + 'INNERTUBE_CONTEXT_CLIENT_NAME': 7, 'SUPPORTS_COOKIES': True, }), ('tv', { @@ -168,6 +193,19 @@ class YoutubeBaseInfoExtractor(InfoExtractor): 'SUPPORTS_COOKIES': True, 'REQUIRE_PO': True, }), + # This client now requires sign-in for every video + ('web_creator', { + 'INNERTUBE_CONTEXT': { + 'client': { + 'clientName': 'WEB_CREATOR', + 'clientVersion': '1.20250922.03.00', + }, + }, + 'INNERTUBE_CONTEXT_CLIENT_NAME': 62, + 'REQUIRE_AUTH': True, + 'SUPPORTS_COOKIES': True, + 'WITH_COOKIES': True, + }), )) def _login(self): |
