soulsync/core/metadata
Broque Thomas 4892baf8d4 Skip already-owned tracks during download discography
- new track_already_owned helper wraps db.check_track_exists at
  the same confidence threshold the discography backfill repair job
  uses (0.7) — name+artist+album, format-agnostic so blasphemy-mode
  libraries (flac → mp3 + delete original) match correctly
- endpoint runs the check after the artist + content-type filters and
  before add_to_wishlist, so a second discography click on the same
  artist no longer re-queues every track that already downloaded
- per-album response carries a new tracks_skipped_owned counter
  alongside the existing artist/content/wishlist skip categories

Discord report (Skowl).
2026-05-12 15:10:41 -07:00
..
__init__.py Move image URL normalization into metadata helpers 2026-05-02 22:02:36 +03:00
album_mbid_cache.py Final silent-exception sweep + ruff S110 lint guardrail — ~45 sites 2026-05-07 11:16:06 -07:00
album_tracks.py Auto-import: MBID/ISRC fast paths + duration sanity gate 2026-05-09 09:57:33 -07:00
artist_image.py Move metadata helpers into package modules 2026-04-29 11:28:42 +03:00
artwork.py Deezer cover-art download: fallback to original URL on CDN refusal 2026-05-10 18:29:36 -07:00
cache.py Surface silent exceptions across remaining modules — ~70 sites 2026-05-07 10:28:58 -07:00
common.py Surface silent exceptions across remaining modules — ~70 sites 2026-05-07 10:28:58 -07:00
completion.py Move metadata helpers into package modules 2026-04-29 11:28:42 +03:00
discography.py Migrate discography + quality scanner to typed Album path 2026-05-04 08:12:40 -07:00
discography_filters.py Skip already-owned tracks during download discography 2026-05-12 15:10:41 -07:00
enrichment.py Multi-artist tag settings: implement artist_separator + feat_in_title + populate _artists_list 2026-05-11 15:16:42 -07:00
lookup.py Move metadata API into package 2026-04-29 08:10:18 +03:00
lyrics.py Move shared metadata helpers into package 2026-04-27 19:54:44 +03:00
multi_source_search.py Fix Download Discography pulling wrong artist + log routing 2026-05-06 13:03:43 -07:00
registry.py Surface silent exceptions across remaining modules — ~70 sites 2026-05-07 10:28:58 -07:00
relevance.py Deezer search: drop advanced-syntax at endpoint, free-text + rerank wins 2026-05-10 09:36:48 -07:00
service.py Move metadata API into package 2026-04-29 08:10:18 +03:00
similar_artists.py Move metadata helpers into package modules 2026-04-29 11:28:42 +03:00
source.py Multi-artist Deezer upgrade + double-append guard hardening 2026-05-11 15:30:23 -07:00
status.py Make Spotify status updates event-driven 2026-05-02 22:02:01 +03:00
types.py Add Qobuz + Tidal album converters 2026-05-03 22:30:19 -07:00