From 93e26438aef077a906b05a86bdfa397a80e8fbc4 Mon Sep 17 00:00:00 2001 From: shiny-comic Date: Sat, 14 Mar 2026 19:48:19 +0900 Subject: [PATCH 1/3] fix: Generate thumbnails of subbed playlists This fix #4015. --- config/sql/playlists.sql | 3 ++- .../migrations/0011_add_thumnail_id_to_playlists.cr | 12 ++++++++++++ src/invidious/playlists.cr | 4 +++- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 src/invidious/database/migrations/0011_add_thumnail_id_to_playlists.cr diff --git a/config/sql/playlists.sql b/config/sql/playlists.sql index 83efce48..47f0742b 100644 --- a/config/sql/playlists.sql +++ b/config/sql/playlists.sql @@ -23,7 +23,8 @@ CREATE TABLE IF NOT EXISTS public.playlists created timestamptz, updated timestamptz, privacy privacy, - index int8[] + index int8[], + thumbnail_id text ); GRANT ALL ON public.playlists TO current_user; diff --git a/src/invidious/database/migrations/0011_add_thumnail_id_to_playlists.cr b/src/invidious/database/migrations/0011_add_thumnail_id_to_playlists.cr new file mode 100644 index 00000000..fc0f8c62 --- /dev/null +++ b/src/invidious/database/migrations/0011_add_thumnail_id_to_playlists.cr @@ -0,0 +1,12 @@ +module Invidious::Database::Migrations + class AddThumbnailIdToPlaylists < Migration + version 11 + + def up(conn : DB::Connection) + conn.exec <<-SQL + ALTER TABLE public.playlists + ADD COLUMN IF NOT EXISTS thumbnail_id TEXT; + SQL + end + end +end diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr index eb084331..30da92c7 100644 --- a/src/invidious/playlists.cr +++ b/src/invidious/playlists.cr @@ -179,7 +179,6 @@ struct InvidiousPlaylist property privacy : PlaylistPrivacy = PlaylistPrivacy::Private property index : Array(Int64) - @[DB::Field(ignore: true)] property thumbnail_id : String? module PlaylistPrivacyConverter @@ -265,6 +264,7 @@ def create_playlist(title, privacy, user) updated: Time.utc, privacy: privacy, index: [] of Int64, + thumbnail_id: nil, }) Invidious::Database::Playlists.insert(playlist) @@ -273,6 +273,7 @@ def create_playlist(title, privacy, user) end def subscribe_playlist(user, playlist) + thumbnail_id = playlist.thumbnail.try &.match(/vi\/([a-zA-Z0-9_-]{11})/).try &.[1] playlist = InvidiousPlaylist.new({ title: playlist.title[..150], id: playlist.id, @@ -283,6 +284,7 @@ def subscribe_playlist(user, playlist) updated: playlist.updated, privacy: PlaylistPrivacy::Private, index: [] of Int64, + thumbnail_id: thumbnail_id, }) Invidious::Database::Playlists.insert(playlist) From 8519caf571efe9dc2c1bd71fe7a2923bf1c63288 Mon Sep 17 00:00:00 2001 From: shiny-comic Date: Mon, 16 Mar 2026 04:20:51 +0900 Subject: [PATCH 2/3] style: adjust align --- src/invidious/playlists.cr | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr index 30da92c7..9cffdacb 100644 --- a/src/invidious/playlists.cr +++ b/src/invidious/playlists.cr @@ -255,15 +255,15 @@ def create_playlist(title, privacy, user) plid = "IVPL#{Random::Secure.urlsafe_base64(24)[0, 31]}" playlist = InvidiousPlaylist.new({ - title: title.byte_slice(0, 150), - id: plid, - author: user.email, - description: "", # Max 5000 characters - video_count: 0, - created: Time.utc, - updated: Time.utc, - privacy: privacy, - index: [] of Int64, + title: title.byte_slice(0, 150), + id: plid, + author: user.email, + description: "", # Max 5000 characters + video_count: 0, + created: Time.utc, + updated: Time.utc, + privacy: privacy, + index: [] of Int64, thumbnail_id: nil, }) @@ -275,15 +275,15 @@ end def subscribe_playlist(user, playlist) thumbnail_id = playlist.thumbnail.try &.match(/vi\/([a-zA-Z0-9_-]{11})/).try &.[1] playlist = InvidiousPlaylist.new({ - title: playlist.title[..150], - id: playlist.id, - author: user.email, - description: "", # Max 5000 characters - video_count: playlist.video_count, - created: Time.utc, - updated: playlist.updated, - privacy: PlaylistPrivacy::Private, - index: [] of Int64, + title: playlist.title[..150], + id: playlist.id, + author: user.email, + description: "", # Max 5000 characters + video_count: playlist.video_count, + created: Time.utc, + updated: playlist.updated, + privacy: PlaylistPrivacy::Private, + index: [] of Int64, thumbnail_id: thumbnail_id, }) From f00a727c7d389dc28ddc744a3f75f49e05ebf16b Mon Sep 17 00:00:00 2001 From: shiny-comic Date: Mon, 16 Mar 2026 11:24:10 +0900 Subject: [PATCH 3/3] Fix typo --- ...l_id_to_playlists.cr => 0011_add_thumbnail_id_to_playlists.cr} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/invidious/database/migrations/{0011_add_thumnail_id_to_playlists.cr => 0011_add_thumbnail_id_to_playlists.cr} (100%) diff --git a/src/invidious/database/migrations/0011_add_thumnail_id_to_playlists.cr b/src/invidious/database/migrations/0011_add_thumbnail_id_to_playlists.cr similarity index 100% rename from src/invidious/database/migrations/0011_add_thumnail_id_to_playlists.cr rename to src/invidious/database/migrations/0011_add_thumbnail_id_to_playlists.cr