summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/invidious/user/imports.cr57
-rw-r--r--src/invidious/views/feeds/playlists.ecr4
2 files changed, 31 insertions, 30 deletions
diff --git a/src/invidious/user/imports.cr b/src/invidious/user/imports.cr
index aa87ca99..7fddcc4c 100644
--- a/src/invidious/user/imports.cr
+++ b/src/invidious/user/imports.cr
@@ -30,43 +30,44 @@ struct Invidious::User
return subscriptions
end
- def parse_playlist_export_csv(user : User, csv_content : String)
- rows = CSV.new(csv_content, headers: true)
- row_counter = 0
+ def parse_playlist_export_csv(user : User, raw_input : String)
playlist = uninitialized InvidiousPlaylist
title = uninitialized String
description = uninitialized String
visibility = uninitialized String
- rows.each do |row|
- if row_counter == 0
- title = row[4]
- description = row[5]
- visibility = row[6]
-
- if visibility.compare("Public", case_insensitive: true) == 0
- privacy = PlaylistPrivacy::Public
- else
- privacy = PlaylistPrivacy::Private
- end
+ privacy = uninitialized PlaylistPrivacy
+
+ # Split the input into head and body content
+ raw_head, raw_body = raw_input.split("\n\n", limit: 2, remove_empty: true)
+
+ # Create the playlist from the head content
+ csv_head = CSV.new(raw_head, headers: true)
+ csv_head.next
+ title = csv_head[4]
+ description = csv_head[5]
+ visibility = csv_head[6]
+
+ if visibility.compare("Public", case_insensitive: true) == 0
+ privacy = PlaylistPrivacy::Public
+ else
+ privacy = PlaylistPrivacy::Private
+ end
- if title && privacy && user
- playlist = create_playlist(title, privacy, user)
- end
+ if title && privacy && user
+ playlist = create_playlist(title, privacy, user)
+ end
- if playlist && description
- Invidious::Database::Playlists.update_description(playlist.id, description)
- end
+ if playlist && description
+ Invidious::Database::Playlists.update_description(playlist.id, description)
+ end
- row_counter += 1
- end
- if row_counter > 0 && row_counter < 3
- row_counter += 1
- end
- if row_counter >= 3
+ # Add each video to the playlist from the body content
+ CSV.each_row(raw_body) do |row|
+ if row.size >= 1
+ video_id = row[0]
if playlist
- video_id = row[0]
- row_counter += 1
next if !video_id
+ next if video_id == "Video Id"
begin
video = get_video(video_id)
diff --git a/src/invidious/views/feeds/playlists.ecr b/src/invidious/views/feeds/playlists.ecr
index 05a48ce3..43173355 100644
--- a/src/invidious/views/feeds/playlists.ecr
+++ b/src/invidious/views/feeds/playlists.ecr
@@ -10,12 +10,12 @@
</div>
<div class="pure-u-1-3">
<h3 style="text-align:center">
- <a href="/create_playlist?referer=<%= URI.encode_www_form(referer) %>"><%= translate(locale, "Create playlist") %></a>
+ <a href="/create_playlist?referer=<%= URI.encode_www_form("/feed/playlists") %>"><%= translate(locale, "Create playlist") %></a>
</h3>
</div>
<div class="pure-u-1-3">
<h3 style="text-align:right">
- <a href="/data_control?referer=<%= URI.encode_www_form(referer) %>">
+ <a href="/data_control?referer=<%= URI.encode_www_form("/feed/playlists") %>">
<%= translate(locale, "Import/export") %>
</a>
</h3>