soulsync/tests/exports
BoulderBadgeDad 42ff13d517 #903: persistent recording-MBID cache + export orchestrator
Phase 3. Additive backbone for the export job:
- mb_recording_cache table (IF NOT EXISTS) + core/exports/recording_mbid_cache.py: persistent
  (artist,title)->recording_mbid cache, mirrors album_mbid_cache (lazy DB, error-degrades to
  miss). The MusicBrainz tail is ~1 req/s, so a resolved MBID is remembered once and reused
  across every export/playlist.
- core/exports/playlist_export.py: resolve_playlist_tracks(tracks, resolve_fn) — walks tracks,
  dedups repeated songs within a run (resolve once), builds the ordered pseudo-playlist, tallies
  live stats (resolved/unmatched/deduped/by_source). Pure (I/O injected via resolve_fn + progress
  callback), so dedup + accounting are unit-tested with no DB/network. 5 tests.

No wiring into runtime yet; nothing existing touched except the additive table.
2026-06-22 20:31:35 -07:00
..
__init__.py #903: playlist export to ListenBrainz — pure cores (JSPF builder + MBID resolver) 2026-06-22 20:25:44 -07:00
test_jspf_export.py #903: playlist export to ListenBrainz — pure cores (JSPF builder + MBID resolver) 2026-06-22 20:25:44 -07:00
test_listenbrainz_create_playlist.py #903: ListenBrainz client create_playlist (create + batched item/add) 2026-06-22 20:28:31 -07:00
test_mbid_resolver.py #903: playlist export to ListenBrainz — pure cores (JSPF builder + MBID resolver) 2026-06-22 20:25:44 -07:00
test_playlist_export.py #903: persistent recording-MBID cache + export orchestrator 2026-06-22 20:31:35 -07:00