From 204bfe2587441702e27d30609914e38de10900f1 Mon Sep 17 00:00:00 2001 From: 706f6f7079646f6f646f6f <92154455+706f6f7079646f6f646f6f@users.noreply.github.com> Date: Fri, 8 Oct 2021 11:40:35 +0200 Subject: [PATCH] unfuck playlists --- src/invidious/playlists.cr | 14 ++++++++++---- src/invidious/views/components/item.ecr | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr index f56cc2ea..203a6a9a 100644 --- a/src/invidious/playlists.cr +++ b/src/invidious/playlists.cr @@ -439,15 +439,21 @@ def get_playlist_videos(db, playlist, offset, locale = nil, continuation = nil) else if offset >= 100 # Normalize offset to match youtube's behavior (100 videos chunck per request) - offset = (offset / 100).to_i64 * 100_i64 + normalized_offset = (offset / 100).to_i64 * 100_i64 - ctoken = produce_playlist_continuation(playlist.id, offset) + ctoken = produce_playlist_continuation(playlist.id, normalized_offset) initial_data = YoutubeAPI.browse(ctoken) else initial_data = YoutubeAPI.browse("VL" + playlist.id, params: "") end - return extract_playlist_videos(initial_data) + videos = extract_playlist_videos(initial_data) + + until videos.empty? || videos[0].index == offset + videos.shift + end + + return videos end end @@ -524,7 +530,7 @@ def template_playlist(playlist) playlist["videos"].as_a.each do |video| html += <<-END_HTML
#{recode_length_seconds(video["lengthSeconds"].as_i)}
diff --git a/src/invidious/views/components/item.ecr b/src/invidious/views/components/item.ecr index 84da1091..6945c3cd 100644 --- a/src/invidious/views/components/item.ecr +++ b/src/invidious/views/components/item.ecr @@ -48,7 +48,7 @@<%= HTML.escape(item.author) %>
<% when PlaylistVideo %> - + <% if !env.get("preferences").as(Preferences).thin_mode %>