diff options
author | Jesús <heckyel@hyperbola.info> | 2022-05-30 22:45:08 +0800 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2022-05-30 22:45:08 +0800 |
commit | 1fbc0cdd466eff4b79d2fe1959b407b791f040ae (patch) | |
tree | c27aaf38763d83b34c2c35967238df6d4d7d3d2e | |
parent | 263469cd30ce91b3ba2eb49a0ed5be281571e7c7 (diff) | |
download | yt-local-1fbc0cdd466eff4b79d2fe1959b407b791f040ae.tar.lz yt-local-1fbc0cdd466eff4b79d2fe1959b407b791f040ae.tar.xz yt-local-1fbc0cdd466eff4b79d2fe1959b407b791f040ae.zip |
Fix preview_thumbnails
use 'deep_get' for storyboard
-rw-r--r-- | youtube/watch.py | 14 | ||||
-rw-r--r-- | 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 |