From 7b600cd4e1ad8900b7846cbfec07b7d48010c25f Mon Sep 17 00:00:00 2001 From: Daniel Diment Date: Wed, 12 Apr 2023 23:22:14 +0200 Subject: [PATCH 1/2] Added support for import and export of youtube playlists --- src/invidious/user/exports.cr | 11 +++++++++++ src/invidious/user/imports.cr | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/invidious/user/exports.cr b/src/invidious/user/exports.cr index b52503c9..1ff3eea1 100644 --- a/src/invidious/user/exports.cr +++ b/src/invidious/user/exports.cr @@ -4,6 +4,7 @@ struct Invidious::User def to_invidious(user : User) playlists = Invidious::Database::Playlists.select_like_iv(user.email) + youtube_playlists = Invidious::Database::Playlists.select_not_like_iv(user.email) return JSON.build do |json| json.object do @@ -28,6 +29,16 @@ struct Invidious::User end end end + json.field "youtube_playlists" do + json.array do + youtube_playlists.each do |playlist| + json.object do + json.field "title", playlist.title + json.field "id", playlist.id + end + end + end + end end end end diff --git a/src/invidious/user/imports.cr b/src/invidious/user/imports.cr index 20ae0d47..00cf9a28 100644 --- a/src/invidious/user/imports.cr +++ b/src/invidious/user/imports.cr @@ -101,6 +101,16 @@ struct Invidious::User end end end + + if youtube_playlists = data["youtube_playlists"]?.try &.as_a? + playlists.each do |item| + begin + playlist = get_playlist(item["id"]) + subscribe_playlist(user, playlist) + rescue ex + end + end + end end # ------------------- From bf1123682e68f2b7ed78e24752802df68ed2f92b Mon Sep 17 00:00:00 2001 From: Daniel Diment Date: Thu, 21 Sep 2023 23:31:12 +0200 Subject: [PATCH 2/2] Fix relay on get_playlist --- src/invidious/user/exports.cr | 2 ++ src/invidious/user/imports.cr | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/invidious/user/exports.cr b/src/invidious/user/exports.cr index 1ff3eea1..1c5aa2ec 100644 --- a/src/invidious/user/exports.cr +++ b/src/invidious/user/exports.cr @@ -35,6 +35,8 @@ struct Invidious::User json.object do json.field "title", playlist.title json.field "id", playlist.id + json.field "video_count", playlist.video_count + json.field "updated", playlist.updated end end end diff --git a/src/invidious/user/imports.cr b/src/invidious/user/imports.cr index 00cf9a28..01753d47 100644 --- a/src/invidious/user/imports.cr +++ b/src/invidious/user/imports.cr @@ -105,8 +105,7 @@ struct Invidious::User if youtube_playlists = data["youtube_playlists"]?.try &.as_a? playlists.each do |item| begin - playlist = get_playlist(item["id"]) - subscribe_playlist(user, playlist) + subscribe_playlist(user, item) rescue ex end end