Albumize

Active

Albumize takes a Spotify playlist and replaces every track with that track's entire album, saved as a new playlist — because algorithmic playlists like Discover Weekly are great at finding artists and terrible at letting you actually listen to them.

Repository: https://gitlab.com/KirboDev/agentic-coding/albumize.

It's the desktop conversion of my old Spotify-Playlist-Expander web app, rebuilt as a Tauri 2 app for three concrete reasons the website could never fix:

  • Automation — scheduled expansions (Discover Weekly every Monday, Release Radar every Friday) run unattended from the tray, with no window open
  • Durable settings — the old SPA (Single-Page Application) kept ignored keywords in localStorage behind a modal that silently discarded edits on Cancel
  • A real app — autostart, self-updating, and a log of what the automations actually did

The engine lives in Rust: Spotify auth via PKCE (Proof Key for Code Exchange) loopback (no client secret anywhere), a rate-limited API (Application Programming Interface) client with token-bucket + Retry-After backoff, and a scheduler whose idempotency needs no server and no state file — "did this week's run happen?" is answered by whether a playlist with the exact rendered name (like ALB-202634-Discover Weekly) already exists. Playlists are created under a work name and renamed only after all tracks land, so a crash mid-run can never leave a half-filled playlist that counts as done.

The date-format tokenizer behind those names is implemented twice — Rust for real, TypeScript for live preview — and both run the same JSON (JavaScript Object Notation) test vectors, so the two can't drift apart silently. The default format is GGGGWW (ISO (International Organization for Standardization) week-year), not YYYYWW, for a reason worth a blog post of its own: calendar-year week numbers collide across New Year and quietly break weekly idempotency.

The war stories — AppImage packaging, OAuth (Open Authorization) port squatting, the three silent weekly-loss bugs — are in the Albumize blog post.

Status: functionally complete and in personal use; end-to-end verification against a real Spotify account is the remaining milestone.