Honey and Claude Sonnet 4.6
3a8b879abf
feat: use ; as artist separator in downloads, add & handling
...
navidromeArtist() now writes ; instead of / so Navidrome splits
correctly with the updated Tags.Artist.Split config.
Also handles & (e.g. "Artist A & Artist B" → "Artist A;Artist B").
Add fix-artist-separators.sh — one-time Debian script to update
existing library files from " / " to ";" in artist tags.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-23 14:26:19 +02:00
Honey and Claude Sonnet 4.6
0f1e6ff531
refactor: remove dead code from backend and lib
...
- Remove unused spotifyClientId/spotifyClientSecret from config
- Remove AUDIO_EXTS from metadata exports (internal-only)
- Remove tryYtdlp wrapper in ytdlp.js (direct spawnYtdlp calls)
- Remove _spArtistName wrapper in server (direct _spAllArtists calls)
- Fix stale comment: primary resolver is SpotipyFree, not curl_cffi
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-12 18:18:50 +02:00
Honey and Claude Sonnet 4.6
ac8d26bf9d
feat: split backend into lib/ modules + add squid.wtf (Qobuz) download backend
...
- backend/lib/config.js — CONFIG from env (adds DOWNLOAD_BACKEND, SQUID_QUALITY)
- backend/lib/jobs.js — jobs Map, updateJob(), log()
- backend/lib/metadata.js — iTunes, artwork, lyrics, sanitize helpers
- backend/lib/ytdlp.js — yt-dlp download cascade + shared embedMetadata()
- backend/lib/squid.js — ALTCHA PoW solver, Qobuz search/download via squid.wtf
- backend/lib/downloader.js — backend selector: ytdlp | squid | auto (squid-first + fallback)
- novasonic-server.js thinned to Express routes only, imports from lib/
- docker-compose: mount full backend/ dir, install deps outside read-only volume
- .env.example: document DOWNLOAD_BACKEND and SQUID_QUALITY
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-02 20:44:26 +02:00