Track Spotify origin (liked/playlist/top); make top tracks opt-in; clean Ctrl+C
- Tag each Spotify track with its origin (liked / from_playlist / from_top, combinable) so genuinely-saved tracks are distinguishable from ones only surfaced by the top-tracks endpoint. - Top tracks are no longer added by default (they inflated "missing" with unowned listening stats). --include-top pulls them as full objects so they carry an ISRC for real ID matching. - On --spotify-full, prune Spotify rows that are neither liked nor in a playlist (top-only / orphaned), cleaning an existing DB in one pass. - Cached-ingest fallback honours include_top and prunes too. - In-place SQLite migration adds the new columns (no DB rebuild needed). - Ctrl+C exits cleanly (130) with a message instead of a traceback; incremental progress is already committed, so re-run to continue. - Surface origin breakdown in the fetch log, match summary, and GUI. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
6920b634c4
commit
48bf84bcb7
9 changed files with 177 additions and 34 deletions
|
|
@ -84,6 +84,15 @@ because each source only touches what changed:
|
|||
liked songs are paged newest-first and stop at the newest one already stored;
|
||||
cover art downloads only when missing or its URL changed (`--spotify-full`
|
||||
forces a complete resync).
|
||||
- Your library is **liked songs + playlist tracks**. The *top-tracks* endpoint
|
||||
is **not** pulled by default (those are just listening stats, not saved
|
||||
music, and would inflate "missing"). Add `--include-top` to pull them too —
|
||||
they're fetched as full Spotify objects, so they carry an ISRC for real ID
|
||||
matching like everything else.
|
||||
- Each Spotify track records its **origin** (`liked` / `playlist` / `top`,
|
||||
combinable). On a `--spotify-full` run, rows that are *only* there because
|
||||
the top endpoint listed them (neither liked nor in a playlist) are pruned —
|
||||
run `python main.py fetch --spotify-full` once to clean up an existing DB.
|
||||
- **Local** — only files whose mtime/size changed; deleted files are pruned.
|
||||
- **iTunes** — skipped entirely if the export's mtime is unchanged.
|
||||
- **MBID enrichment** — only still-unresolved tracks.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue