From 510d85c0452a4a468062f53d84cfbe2f64e7ef41 Mon Sep 17 00:00:00 2001 From: broquemonsieur Date: Sat, 5 Aug 2023 17:42:10 -0700 Subject: [PATCH] Query DB for timestamps after current id --- assets/js/player.js | 15 ++++----------- assets/js/watch.js | 2 ++ src/invidious/database/compilations.cr | 2 +- src/invidious/routes/watch.cr | 25 ++++++++++++++++++++----- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/assets/js/player.js b/assets/js/player.js index 36dd3eea..44640402 100644 --- a/assets/js/player.js +++ b/assets/js/player.js @@ -200,19 +200,12 @@ if (!video_data.params.listen && video_data.vr && video_data.params.vr_mode) { // Add markers if (video_data.params.video_start > 0 || video_data.params.video_end > 0) { var markers = [{ time: video_data.params.video_start, text: 'Start' }]; - if (video_data.starting_timestamp_seconds) { - markers = [{ time: video_data.starting_timestamp_seconds, text: 'Start' }]; - } - if (!video_data.ending_timestamp_seconds) { - if (video_data.params.video_end < 0) { - markers.push({ time: video_data.length_seconds - 0.5, text: 'End' }); - } else { - markers.push({ time: video_data.params.video_end, text: 'End' }); - } + if (video_data.params.video_end < 0) { + markers.push({ time: video_data.length_seconds - 0.5, text: 'End' }); } else { - markers.push({ time: video_data.ending_timestamp_seconds, text: 'End' }); - } + markers.push({ time: video_data.params.video_end, text: 'End' }); + } player.markers({ onMarkerReached: function (marker) { diff --git a/assets/js/watch.js b/assets/js/watch.js index 4930d6a7..debf610b 100644 --- a/assets/js/watch.js +++ b/assets/js/watch.js @@ -111,6 +111,7 @@ function get_compilation(compid) { compid_url = '/api/v1/compilations/' + compid + '?index=' + video_data.index + '&continuation=' + video_data.id + + //'&t=' + video_data.video_data.starting_timestamp_seconds + '&format=html&hl=' + video_data.preferences.locale; console.log("Send "+compid_url); @@ -138,6 +139,7 @@ function get_compilation(compid) { url.searchParams.set('speed', video_data.params.speed); if (video_data.params.local !== video_data.preferences.local) url.searchParams.set('local', video_data.params.local); + url.searchParams.set('t',video_data.starting_timestamp_seconds); location.assign(url.pathname + url.search); }); diff --git a/src/invidious/database/compilations.cr b/src/invidious/database/compilations.cr index aa7a7341..1cdd1479 100644 --- a/src/invidious/database/compilations.cr +++ b/src/invidious/database/compilations.cr @@ -128,7 +128,7 @@ module Invidious::Database::Compilations LIMIT 1 SQL - PG_DB.query_one?(request, id, as: String) + PG_DB.query_one?(request, id, as: Array(Int64)) end # ------------------- diff --git a/src/invidious/routes/watch.cr b/src/invidious/routes/watch.cr index e5bf1668..d9582ec1 100644 --- a/src/invidious/routes/watch.cr +++ b/src/invidious/routes/watch.cr @@ -45,11 +45,26 @@ module Invidious::Routes::Watch elsif env.params.query["list"]?.try &.starts_with? "IVCMP" compid = env.params.query["list"]?.try &.gsub(/[^a-zA-Z0-9_-]/, "") if (!compid.nil?) - timestamps = Invidious::Database::CompilationVideos.select_timestamps(compid, id) - if (!timestamps.nil?) - starting_timestamp_seconds=timestamps[0] - ending_timestamp_seconds=timestamps[1] - end + index=Invidious::Database::CompilationVideos.select_index(compid,id) + indices_array=Invidious::Database::Compilations.select_index_array(compid) + if (!indices_array.nil?) + position_of_index=indices_array.index(index) + if (!position_of_index.nil? && position_of_index != indices_array.size - 1) + next_index=indices_array[position_of_index+1] + else + next_index=indices_array[0] + end + if (!next_index.nil?) + next_id=Invidious::Database::CompilationVideos.select_id_from_index(next_index) + if (!next_id.nil?) + timestamps = Invidious::Database::CompilationVideos.select_timestamps(compid, next_id) + if (!timestamps.nil?) + starting_timestamp_seconds=timestamps[0] + ending_timestamp_seconds=timestamps[1] + end + end + end + end end continuation = process_continuation(env.params.query, compid, id) end