diff options
author | James Taylor <user234683@users.noreply.github.com> | 2020-10-19 13:53:57 -0700 |
---|---|---|
committer | James Taylor <user234683@users.noreply.github.com> | 2020-10-19 13:53:57 -0700 |
commit | c9d0f685a43d95d653db56a00efe520e3a04d0d2 (patch) | |
tree | edbed96a759abe84a4f62b34a5d3fcb5eeb25553 /youtube/watch.py | |
parent | b35afb7cf6c7640380c650ca60c8150bb743eb4b (diff) | |
download | yt-local-c9d0f685a43d95d653db56a00efe520e3a04d0d2.tar.lz yt-local-c9d0f685a43d95d653db56a00efe520e3a04d0d2.tar.xz yt-local-c9d0f685a43d95d653db56a00efe520e3a04d0d2.zip |
Use get_video_info to get video urls if player response missing
Fixes failure mode 1 in #22
Diffstat (limited to 'youtube/watch.py')
-rw-r--r-- | youtube/watch.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/youtube/watch.py b/youtube/watch.py index 1a9e6c4..b1d4665 100644 --- a/youtube/watch.py +++ b/youtube/watch.py @@ -226,15 +226,19 @@ def extract_info(video_id, use_invidious, playlist_id=None, index=None): return {'error': 'Failed to parse json response'} info = yt_data_extract.extract_watch_info(polymer_json) - # age restriction bypass - if info['age_restricted']: - print('Fetching age restriction bypass page') + # request player if it's missing + # see https://github.com/user234683/youtube-local/issues/22#issuecomment-706395160 + if info['age_restricted'] or info['player_response_missing']: + if info['age_restricted']: + print('Age restricted video. Fetching get_video_info page') + else: + print('Missing player. Fetching get_video_info page') data = { 'video_id': video_id, 'eurl': 'https://youtube.googleapis.com/v/' + video_id, } url = 'https://www.youtube.com/get_video_info?' + urllib.parse.urlencode(data) - video_info_page = util.fetch_url(url, debug_name='get_video_info', report_text='Fetched age restriction bypass page').decode('utf-8') + video_info_page = util.fetch_url(url, debug_name='get_video_info', report_text='Fetched get_video_info page').decode('utf-8') yt_data_extract.update_with_age_restricted_info(info, video_info_page) # signature decryption |