From 1fbc0cdd466eff4b79d2fe1959b407b791f040ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs?= Date: Mon, 30 May 2022 22:45:08 +0800 Subject: Fix preview_thumbnails use 'deep_get' for storyboard --- youtube/watch.py | 14 +++++++------- youtube/yt_data_extract/watch_extraction.py | 3 +-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/youtube/watch.py b/youtube/watch.py index 3533f30..97151e8 100644 --- a/youtube/watch.py +++ b/youtube/watch.py @@ -521,19 +521,19 @@ def get_storyboard_vtt(): """ spec_url = request.args.get('spec_url') - url, *l = spec_url.split('|') - url1, q = url.split('?') - q = parse_qs(q) + url, *boards = spec_url.split('|') + base_url, q = url.split('?') + q = parse_qs(q) # for url query storyboard = None wanted_height = 90 - for i, board in enumerate(l): + for i, board in enumerate(boards): *t, _, sigh = board.split("#") width, height, count, width_cnt, height_cnt, interval = map(int, t) if height != wanted_height: continue q['sigh'] = [sigh] - url = f"{url1}?{urlencode(q, doseq=True)}" + url = f"{base_url}?{urlencode(q, doseq=True)}" storyboard = SimpleNamespace( url = url.replace("$L", str(i)).replace("$N", "M$M"), width = width, @@ -553,8 +553,8 @@ def get_storyboard_vtt(): m, s = divmod(s, 60) return f"{h:02}:{m:02}:{s:02}.{ms:03}" - r = "WEBVTT" - ts = 0 + r = "WEBVTT" # result + ts = 0 # current timestamp for i in range(storyboard.storyboard_count): url = '/' + storyboard.url.replace("$M", str(i)) diff --git a/youtube/yt_data_extract/watch_extraction.py b/youtube/yt_data_extract/watch_extraction.py index 6b1b30d..a5ac0f5 100644 --- a/youtube/yt_data_extract/watch_extraction.py +++ b/youtube/yt_data_extract/watch_extraction.py @@ -669,8 +669,7 @@ def extract_watch_info(polymer_json): # other stuff info['author_url'] = 'https://www.youtube.com/channel/' + info['author_id'] if info['author_id'] else None - sb = player_response.get('storyboards') - info['storyboard_spec_url'] = sb['playerStoryboardSpecRenderer']['spec'] if sb else None + info['storyboard_spec_url'] = deep_get(player_response, 'storyboards', 'playerStoryboardSpecRenderer', 'spec') return info -- cgit v1.2.3