- _discogs_cover_url(): searches Discogs database/search API by artist+album,
returns primary image URL; uses DISCOGS_TOKEN if set, else anonymous
- download_discogs_cover(): downloads and saves as folder.jpg (PNG→JPEG via PIL)
- resolve_cover() priority: local → MusicBrainz → Discogs
- music_enricher: pass artist/album to resolve_cover() for Discogs lookup
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add normalize_cover_to_folder_jpg(): renames/converts any local cover
(Front.jpg, front.webp, cover.jpg, …) to folder.jpg in-place; WebP/PNG
are converted to JPEG via PIL
- resolve_cover() now calls normalize_cover_to_folder_jpg() automatically
after finding a local cover, so future enrichment runs always produce folder.jpg
- One-time batch: 38 existing library covers renamed/converted to folder.jpg
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- download_cover() now writes folder.jpg instead of _cover_download{ext}
- PNG responses are converted to JPEG via PIL during download (avoids PNG
in the album directory entirely)
- find_local_cover() priority: folder > front > cover > album (folder.jpg
is now the canonical name for both downloaded and manually placed covers)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
AI-powered per-album pipeline: scan → local hints → MusicBrainz/Discogs/Claude
resolve → cover art → interactive or auto review → tag write + rename + report.
All external dependencies optional; 17/17 unit tests passing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>