aboutsummaryrefslogtreecommitdiffstats
path: root/youtube
diff options
context:
space:
mode:
authorJesús <heckyel@hyperbola.info>2022-05-30 22:45:08 +0800
committerJesús <heckyel@hyperbola.info>2022-05-30 22:45:08 +0800
commit1fbc0cdd466eff4b79d2fe1959b407b791f040ae (patch)
treec27aaf38763d83b34c2c35967238df6d4d7d3d2e /youtube
parent263469cd30ce91b3ba2eb49a0ed5be281571e7c7 (diff)
downloadyt-local-1fbc0cdd466eff4b79d2fe1959b407b791f040ae.tar.lz
yt-local-1fbc0cdd466eff4b79d2fe1959b407b791f040ae.tar.xz
yt-local-1fbc0cdd466eff4b79d2fe1959b407b791f040ae.zip
Fix preview_thumbnails
use 'deep_get' for storyboard
Diffstat (limited to 'youtube')
-rw-r--r--youtube/watch.py14
-rw-r--r--youtube/yt_data_extract/watch_extraction.py3
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