diff options
| author | thtmnisamnstr <gavinj1984@gmail.com> | 2023-02-23 15:55:38 -0800 |
|---|---|---|
| committer | thtmnisamnstr <gavinj1984@gmail.com> | 2023-02-23 15:55:38 -0800 |
| commit | b3eea6ab3ebdb1618916b02041b22e0e238e8a7d (patch) | |
| tree | 7ee0846359b2c194c5bba388d5d8aa0536a08fbb /src | |
| parent | 6f01d6eacf0719e8569a338e5a44615f159c5120 (diff) | |
| download | invidious-b3eea6ab3ebdb1618916b02041b22e0e238e8a7d.tar.gz invidious-b3eea6ab3ebdb1618916b02041b22e0e238e8a7d.tar.bz2 invidious-b3eea6ab3ebdb1618916b02041b22e0e238e8a7d.zip | |
improved import algorithm, fixed a referer issue from the playlists page after deleting a playlist
Signed-off-by: thtmnisamnstr <gavinj1984@gmail.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/invidious/user/imports.cr | 57 | ||||
| -rw-r--r-- | src/invidious/views/feeds/playlists.ecr | 4 |
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> |
