diff options
-rw-r--r-- | youtube/templates/watch.html | 5 | ||||
-rw-r--r-- | youtube/watch.py | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/youtube/templates/watch.html b/youtube/templates/watch.html index 4041144..01ae8cb 100644 --- a/youtube/templates/watch.html +++ b/youtube/templates/watch.html @@ -341,6 +341,11 @@ Reload without invidious (for usage of new identity button).</a> {% endfor %} </video> + {% if time_start != 0 %} + <script> + document.querySelector('video').currentTime = {{ time_start|tojson }}; + </script> + {% endif %} {% endif %} <div class="video-info"> diff --git a/youtube/watch.py b/youtube/watch.py index d65bd8c..0a48653 100644 --- a/youtube/watch.py +++ b/youtube/watch.py @@ -366,6 +366,7 @@ def format_bytes(bytes): return '%.2f%s' % (converted, suffix) +time_table = {'h': 3600, 'm': 60, 's': 1} @yt_app.route('/watch') @yt_app.route('/embed') @yt_app.route('/embed/<video_id>') @@ -376,6 +377,12 @@ def get_watch_page(video_id=None): if len(video_id) < 11: return flask.render_template('error.html', error_message='Incomplete video id (too short): ' + video_id), 404 + time_start_str = request.args.get('t', '0s') + time_start = 0 + if re.fullmatch(r'(\d+(h|m|s))+', time_start_str): + for match in re.finditer(r'(\d+)(h|m|s)', time_start_str): + time_start += int(match.group(1))*time_table[match.group(2)] + lc = request.args.get('lc', '') playlist_id = request.args.get('list') index = request.args.get('index') @@ -511,6 +518,7 @@ def get_watch_page(video_id=None): invidious_used = info['invidious_used'], invidious_reload_button = info['invidious_reload_button'], video_url = util.URL_ORIGIN + '/watch?v=' + video_id, + time_start = time_start, ) |