summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/invidious/playlists.cr19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr
index 20128462..b17ff9ef 100644
--- a/src/invidious/playlists.cr
+++ b/src/invidious/playlists.cr
@@ -437,6 +437,12 @@ def get_playlist_videos(db, playlist, offset, locale = nil, continuation = nil)
db.query_all("SELECT * FROM playlist_videos WHERE plid = $1 ORDER BY array_position($2, index) LIMIT 100 OFFSET $3",
playlist.id, playlist.index, offset, as: PlaylistVideo)
else
+
+ if continuation
+ initial_data = request_youtube_api_next(continuation, playlist.id)
+ offset = initial_data["contents"]["twoColumnWatchNextResults"]["playlist"]["playlist"]["currentIndex"].as_i
+ end
+
videos = [] of PlaylistVideo
until videos.size >= 100 || videos.size == playlist.video_count || offset >= playlist.video_count
@@ -445,19 +451,6 @@ def get_playlist_videos(db, playlist, offset, locale = nil, continuation = nil)
initial_data = request_youtube_api_browse(ctoken)
videos += extract_playlist_videos(initial_data)
- if continuation
- until videos[0].id == continuation
- videos.shift
- if videos.size == 0
- break
- end
- end
- end
-
- if videos.size > 0 && offset == 0
- offset = videos[0].index
- end
-
offset += 100
end