diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-06 17:14:58 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-06 17:14:58 -0500 |
| commit | e74bb871ac0aa7ab6e63cd39759b8850f1181ffe (patch) | |
| tree | b974964c460dbba843ad2a8f891e360b9e31824e /tests/test-dirvish-config--quantize-thumb-size.el | |
| parent | 0a7afa70fa9c2c20771696b303c9cae4aa7c58a2 (diff) | |
| download | dotemacs-e74bb871ac0aa7ab6e63cd39759b8850f1181ffe.tar.gz dotemacs-e74bb871ac0aa7ab6e63cd39759b8850f1181ffe.zip | |
feat(music): cover-art fetch and cache for the player (fancy UI phase 2)
Phase 2 gives each track a local cover-image path so phase 3's GUI has art to draw. A radio station uses its logo, a local file a sibling cover image, and anything without either falls back to a shipped vinyl placeholder.
I consolidated the .m3u parse into one richer cj/music--m3u-entries that reads :name, :uuid, and :favicon per station. Phase 1's cj/music--m3u-labels is now a thin projection of it, so names and art share a single cached disk read. New stations capture their favicon into a #RADIOBROWSERFAVICON line at creation, so most need no lookup later. A legacy station with only a UUID resolves its favicon through a byuuid call.
The render path never touches the network. cj/music-art--for-track reads only the cache and returns the placeholder until art exists. cj/music-art--ensure does the blocking fetch off that path. A fetched response is validated as an actual image before it's cached, so an HTML error page or an empty body becomes the placeholder, not a poisoned cache entry. Only http and https URLs are fetched, so an external favicon field can't reach a file:// resource. Art lands under data/music-art/, keyed by UUID or a file hash. cj/music-clear-art-cache empties it, with no automatic expiry.
The pure helpers carry the tests: the parser, the cache key, the favicon URL, and the image validation, each with Normal, Boundary, and Error cases. The fetch, the byuuid lookup, and the placeholder fallback are verified live against a real station. Local files use a sibling cover image for now. Embedded-tag extraction is deferred. The full suite is green.
Diffstat (limited to 'tests/test-dirvish-config--quantize-thumb-size.el')
0 files changed, 0 insertions, 0 deletions
