Skip to content

Implement saved album exporting - #216

Closed
ryliemn wants to merge 4 commits into
watsonbox:masterfrom
ryliemn:album-export
Closed

ryliemn wants to merge 4 commits into
watsonbox:masterfrom
ryliemn:album-export

Conversation

@ryliemn

@ryliemn ryliemn commented Nov 25, 2025 •

Copy link
Copy Markdown
Contributor

I've seen this feature requested several times over the years. I'm in the camp of people who don't use playlists much, but would greatly benefit from having my saved album data be portable, so I decided to take a stab at contributing onto this project.

This PR adds an extra section to the bottom of the page, showing the user their count of saved albums. An export button is provided that will allow the user to download a CSV data dump of the saved albums
image
image

From a UI perspective I did my best to give it continuity with the rest of the page. The row has a soft highlight when you mouse over it, the button disables and the icon spins when an export is in progress, and a progress bar shows the user how far along the export is:
image

I tried to avoid touching existing pieces if possible, but I did make a minor change to the behavior of the spinner while initialization of the first page of playlists is in progress. Previously, the spinner was an absolutely positioned element outside the flow of the page. My new component has no awareness of the state of the playlist component, so it would often finish loading first and appear under the playlist spinner, which seemed not ideal. I changed the spinner to appear inline within its container, and also gave a spinner to the new album component, and they load in independently when they are ready.
image
image

There is also some duplication with the translation strings. Many of the column headers could re-use column headers from the track object, but it also seemed reasonable to treat 'album' as its own new object and give it its own strings. Past experience made me lean this way, as the different context might result in different translations in other languages, despite being the same in english. If you prefer to optimize for re-use, let me know and I will do so.

Thanks in advance for your review!

@ryliemn
ryliemn marked this pull request as ready for review November 25, 2025 21:46
@ryliemn

ryliemn commented Feb 28, 2026

Copy link
Copy Markdown
Contributor Author

hey @watsonbox ! Was curious if you might be able to get a chance to take a look at this soonish

@keetonatrange

Copy link
Copy Markdown

Would love to see this get merged!

watsonbox added a commit that referenced this pull request Oct 20, 2026
Add a Saved Albums row under Liked Songs, hidden when there are none, whose
export downloads saved_albums.csv with one line per album. Export All
includes it in the zip. Strings are English only for now.

Builds on #216.

Co-authored-by: Rylie Nelson <5449165+ryliemn@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@watsonbox watsonbox mentioned this pull request Oct 20, 2026
@watsonbox

Copy link
Copy Markdown
Owner

Thanks a lot for this @ryliemn, and sorry it sat for so long.

I've built on what you did in #240 and credited you as a co-author, so I'm going to close this one. The main change is where it lives. Instead of a separate section under the table, saved albums is now a row under "Liked Songs". That way it's on the first page even for people with lots of playlists, it's included in "Export All", and it reuses the existing export button, progress bar and error handling.

Thanks again for getting this going!

@watsonbox watsonbox closed this Oct 20, 2026
watsonbox added a commit that referenced this pull request Oct 20, 2026
* Export saved albums

Add a Saved Albums row under Liked Songs, hidden when there are none, whose
export downloads saved_albums.csv with one line per album. Export All
includes it in the zip. Strings are English only for now.

Builds on #216.

Co-authored-by: Rylie Nelson <5449165+ryliemn@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Translate saved albums strings

The album count is the app's first plural key, so the locale test compares
keys without their plural suffix: Arabic needs six forms, Japanese one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Count every exported file in the Export All progress bar

The bar's maximum was the playlist count, which leaves out Liked Songs and
Saved Albums, so it filled up and stopped animating before the last files
were exported.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Rylie Nelson <5449165+ryliemn@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants