Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion config/sql/playlists.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module Invidious::Database::Migrations
Comment thread
shiny-comic marked this conversation as resolved.
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
40 changes: 21 additions & 19 deletions src/invidious/playlists.cr
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -256,15 +255,16 @@ 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,
})

Invidious::Database::Playlists.insert(playlist)
Expand All @@ -273,16 +273,18 @@ 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,
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,
})

Invidious::Database::Playlists.insert(playlist)
Expand Down
Loading