From 5a1fc62b41a6bd8a19bcf48dabee2ddc8e2d04e4 Mon Sep 17 00:00:00 2001 From: coletdjnz Date: Mon, 26 Jul 2021 10:18:36 +1200 Subject: [PATCH] [youtube] Add `mobile_web` client (#557) Authored by: colethedj --- README.md | 2 +- yt_dlp/extractor/youtube.py | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 52852f341..3d9edf590 100644 --- a/README.md +++ b/README.md @@ -1354,7 +1354,7 @@ # EXTRACTOR ARGUMENTS The following extractors use this feature: * **youtube** * `skip`: `hls` or `dash` (or both) to skip download of the respective manifests - * `player_client`: Clients to extract video data from - one or more of `web`, `android`, `ios`, `web_music`, `android_music`, `ios_music` or `all`. By default, `android,web` is used. If the URL is from `music.youtube.com`, `android,web,android_music,web_music` is used + * `player_client`: Clients to extract video data from - one or more of `web`, `android`, `ios`, `mobile_web`, `web_music`, `android_music`, `ios_music` or `all`. By default, `android,web` is used. If the URL is from `music.youtube.com`, `android,web,android_music,web_music` is used * `player_skip`: `configs` - skip any requests for client configs and use defaults * `comment_sort`: `top` or `new` (default) - choose comment sorting mode (on YouTube's side). * `max_comments`: maximum amount of comments to download (default all). diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py index fe0e7f38d..6e34dc25d 100644 --- a/yt_dlp/extractor/youtube.py +++ b/yt_dlp/extractor/youtube.py @@ -439,7 +439,21 @@ def _real_initialize(self): } }, 'INNERTUBE_CONTEXT_CLIENT_NAME': 66 - } + }, + 'MWEB': { + 'INNERTUBE_API_VERSION': 'v1', + 'INNERTUBE_CLIENT_NAME': 'MWEB', + 'INNERTUBE_CLIENT_VERSION': '2.20210721.07.00', + 'INNERTUBE_API_KEY': 'AIzaSyDCU8hByM-4DrUqRUYnGn-3llEO78bcxq8', + 'INNERTUBE_CONTEXT': { + 'client': { + 'clientName': 'MWEB', + 'clientVersion': '2.20210721.07.00', + 'hl': 'en', + } + }, + 'INNERTUBE_CONTEXT_CLIENT_NAME': 2 + }, } _YT_DEFAULT_INNERTUBE_HOSTS = { @@ -463,6 +477,7 @@ def _real_initialize(self): 'web_music': 'WEB_REMIX', '_web_embedded': 'WEB_EMBEDDED_PLAYER', '_web_agegate': 'TVHTML5', + 'mobile_web': 'MWEB', } def _get_default_ytcfg(self, client='WEB'):