Project overview: Apple Music sync (gateway + beets plugin) #18

Closed
opened 2026-08-09 21:57:57 +00:00 by hermes · 1 comment
Owner

Superseded by SPEC.md (commit 361d65f), which is now the source of truth for the project. The architecture recorded here predates the spec and contradicts it in several settled decisions:

  • the plugin keeps login/logout → spec removes both (§2, §12); Apple-session management belongs to the gateway UI
  • MusicBrainz ISRC work stays in the plugin → spec removes it entirely (§12)
  • playlists are upserted by uuid5 + "Apple Music playlist" description sentinel → spec maps by configured Apple playlist ID → local playlist name, existing playlists only, no create/rename/delete (§4, §5)
  • the repo layout note (/opt/data/git/...) is also stale.

The replacement plan is tracked in #19-#34 (gateway contract work #19-#21 lands in coop/apple-music-gateway per convention), with #34 as the end-to-end acceptance gate. Closing this overview in favor of that set.

Superseded by SPEC.md (commit 361d65f), which is now the source of truth for the project. The architecture recorded here predates the spec and contradicts it in several settled decisions: - the plugin keeps `login`/`logout` → spec removes both (§2, §12); Apple-session management belongs to the gateway UI - MusicBrainz ISRC work stays in the plugin → spec removes it entirely (§12) - playlists are upserted by uuid5 + "Apple Music playlist" description sentinel → spec maps by configured Apple playlist ID → local playlist name, existing playlists only, no create/rename/delete (§4, §5) - the repo layout note (`/opt/data/git/...`) is also stale. The replacement plan is tracked in #19-#34 (gateway contract work #19-#21 lands in coop/apple-music-gateway per convention), with #34 as the end-to-end acceptance gate. Closing this overview in favor of that set.
Author
Owner

Implemented the gateway side of the ISRC fix in coop/apple-music-gateway#1.

The gateway now requests include=catalog for playlist tracks and extracts ISRCs from related catalog songs, handling both inline relationships and top-level included resources. Tracks without a catalog match remain null.

Validation: 66 tests passed, Python bytecode compilation passed, and git diff --check passed. The production deployment has not been changed yet.

Implemented the gateway side of the ISRC fix in [coop/apple-music-gateway#1](https://git.sams.wtf/coop/apple-music-gateway/pulls/1). The gateway now requests `include=catalog` for playlist tracks and extracts ISRCs from related catalog songs, handling both inline relationships and top-level `included` resources. Tracks without a catalog match remain `null`. Validation: 66 tests passed, Python bytecode compilation passed, and `git diff --check` passed. The production deployment has not been changed yet.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coop/beets-appleplaylists#18
No description provided.