Skip to content

Export saved albums - #240

Merged
watsonbox merged 3 commits into
masterfrom
saved-albums
Oct 20, 2026
Merged

watsonbox merged 3 commits into
masterfrom
saved-albums

Conversation

@watsonbox

Copy link
Copy Markdown
Owner

Users who save albums rather than build playlists couldn't export anything (#18). This adds a "Saved Albums" row directly under Liked Songs. It has a vinyl icon, and the Tracks column shows the album count, e.g. "312 albums". The row is hidden when the account has no saved albums, and it's on the first page only and not in search results, as Liked Songs is.

Builds on #216 by @ryliemn, which first exported saved albums as one line per album in saved_albums.csv.

The row's Export button downloads saved_albums.csv, one line per album in Spotify's order (most recently saved first), with these columns: Album URI, Album Name, Album Artist URI(s), Album Artist Name(s), Album Type, Album Release Date, Total Tracks, Label, UPC, Popularity, Album Image URL, Added At. Quoting and \, artist-name escaping match the track export, and the columns it shares with the track export use the same names. "Export All" adds saved_albums.csv to spotify_playlists.zip. The export settings (artists, audio features, album data) don't apply to it.

How it works:

  • PlaylistsData gets the count from GET /me/albums?limit=1 on load, as it does for Liked Songs, and adds a SavedAlbumsPlaylist entry after Liked Songs. Its albums field takes the place of tracks, so "albums" in playlist tells the two kinds apart in the type system rather than by another id check.
  • SavedAlbumsExporter pages through /me/albums?limit=50 with apiCall, so the limiter, retries and token refresh apply. The row and Export All use it for that entry, so progress and API errors are handled the same way as for playlists.
  • The track export code now takes TracksPlaylist (playlists and Liked Songs). Nothing else in it has changed.
  • No new scopes: user-library-read already covers /me/albums.
  • The new strings are translated into every locale.
  • The Export All progress bar now counts every exported file. It used to count only playlists, so it filled up before Liked Songs and Saved Albums were done.

🤖 Generated with Claude Code + hand edit

watsonbox and others added 3 commits October 20, 2026 20:43
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>
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>
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>
@watsonbox watsonbox self-assigned this Oct 20, 2026
@watsonbox
watsonbox merged commit b29aba4 into master Oct 20, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant