diff options
-rw-r--r-- | youtube/util.py | 16 | ||||
-rw-r--r-- | youtube/watch.py | 12 |
2 files changed, 17 insertions, 11 deletions
diff --git a/youtube/util.py b/youtube/util.py index 1dfdf7b..6e501bc 100644 --- a/youtube/util.py +++ b/youtube/util.py @@ -709,6 +709,22 @@ INNERTUBE_CLIENTS = { 'REQUIRE_JS_PLAYER': False, }, + 'ios': { + 'INNERTUBE_API_KEY': 'AIzaSyB-63vPrdThhKuerbB2N_l7Kwwcxj6yUAc', + 'INNERTUBE_CONTEXT': { + 'client': { + 'hl': 'en', + 'gl': 'US', + 'clientName': 'IOS', + 'clientVersion': '19.12.3', + 'deviceModel': 'iPhone14,3', + 'userAgent': 'com.google.ios.youtube/19.12.3 (iPhone14,3; U; CPU iOS 15_6 like Mac OS X)' + } + }, + 'INNERTUBE_CONTEXT_CLIENT_NAME': 5, + 'REQUIRE_JS_PLAYER': False + }, + # This client can access age restricted videos (unless the uploader has disabled the 'allow embedding' option) # See: https://github.com/zerodytrash/YouTube-Internal-Clients 'tv_embedded': { diff --git a/youtube/watch.py b/youtube/watch.py index cd0eb53..33b2742 100644 --- a/youtube/watch.py +++ b/youtube/watch.py @@ -372,17 +372,7 @@ def extract_info(video_id, use_invidious, playlist_id=None, index=None): tasks = ( # Get video metadata from here gevent.spawn(fetch_watch_page_info, video_id, playlist_id, index), - - # Get video URLs by spoofing as android client because its urls don't - # require decryption - # The URLs returned with WEB for videos requiring decryption - # couldn't be decrypted with the base.js from the web page for some - # reason - # https://github.com/yt-dlp/yt-dlp/issues/574#issuecomment-887171136 - - # Update 4/26/23, these URLs will randomly start returning 403 - # mid-playback and I'm not sure why - gevent.spawn(fetch_player_response, 'android_music', video_id) + gevent.spawn(fetch_player_response, 'ios', video_id) ) gevent.joinall(tasks) util.check_gevent_exceptions(*tasks) |