Jonathan
caa0d542ea
fix: MD5-hash Qobuz password and never log credential-bearing login errors
...
streamrip's email/password login expects the MD5 digest, not plaintext
(caused 'Invalid credentials'). Also wrap login() so streamrip's exception —
which embeds the email/password/app_id — can never reach the worker logs;
re-raise a clean credential-free RuntimeError instead.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-11 00:30:34 +02:00
Jonathan
ec1fc568ba
fix: scope slskd download polling to enqueued files and raise on timeout
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-10 22:52:03 +02:00
Jonathan
7b4b7ef1aa
feat: add real slskd Soulseek client and opt-in live test
2026-07-10 22:45:36 +02:00
Jonathan
b5931a7b66
feat: add SoulseekAdapter with injectable client seam
2026-07-10 22:40:53 +02:00
Jonathan
085193aa82
fix: run Qobuz login inside try/finally and reuse a single streamrip config
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-10 22:11:25 +02:00
Jonathan
707038da64
feat: add real streamrip Qobuz client and opt-in live test
2026-07-10 22:05:36 +02:00
Jonathan
0091c4f5e7
feat: add QobuzAdapter with injectable client seam
2026-07-10 21:59:57 +02:00
Jonathan
a93c248aaf
feat: add real yt-dlp client and opt-in live test; ffmpeg in worker image
2026-07-10 21:24:05 +02:00
Jonathan
5a3e64b057
feat: add YouTubeAdapter with injectable client seam
2026-07-10 21:19:27 +02:00
Jonathan
d3bec2ee10
refactor: make adapter .tier the single source of truth for ranking
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-10 19:07:58 +02:00
Jonathan
991365e746
feat: add SourceAdapter contract and fake adapters
2026-07-10 18:35:52 +02:00