90b9a01872
fix(server): use .get() for title/artist in perform_url_fetch result
...
Defensive access guards against download_single returning ok=True
without title/artist keys, avoiding a KeyError in the job worker.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-09 00:00:45 -07:00
0f7ddd7697
feat(server): route URL/playlist /fetch to download jobs
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 23:58:37 -07:00
ca36d2bb27
feat(server): re-export URL helpers; callable job done_message
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 23:54:49 -07:00
425a973d85
fix: write single first-artist tag, not doubled/multi-artist
...
Live end-to-end test surfaced two bugs in youtube tagging:
- `--replace-in-metadata artist .* NAME` matched twice and doubled the
artist tag (e.g. "SLVMLORDSLVMLORD"). Anchor with ^.*$ to match once.
- Use only the first artist when several are present (SLVMLORD, not
"SLVMLORD, Travis Bradley, ...") for both the embedded tag and the
spoken/echoed API messages.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-08 20:39:03 -07:00
9984c162c6
fix(server): return {message} body for request validation errors
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-08 20:27:00 -07:00
eecf0836f7
fix(server): make .dockerignore effective at repo root, pin yt-dlp in requirements
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-08 20:23:37 -07:00
809de44e2e
feat(server): Dockerfile and compose for the Lidarr stack
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 20:21:14 -07:00
d4c1b18e58
feat(server): /fetch and /jobs endpoints with async download jobs
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-08 20:15:28 -07:00
49a45e6270
feat(server): FastAPI app with API-key auth and health check
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 20:09:50 -07:00
257ed5e0a5
fix(server): announce track title not album in messages; cover error paths
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-08 20:07:09 -07:00
9912eb48a4
feat(server): action dispatch with structured result and messages
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 20:02:18 -07:00
09a0d7e682
fix(server): harden job eviction and worker against missing job id
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-08 19:59:31 -07:00
35df01f08e
feat(server): in-memory async job store with thread-pool worker
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 19:55:57 -07:00
c46ff2ff1a
refactor(server): register loaded module in sys.modules, add __all__
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-08 19:54:37 -07:00
ad660afae3
feat(server): load musicfetch binary as importable module
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 19:49:18 -07:00