fix: support PDS-backed audio playback for gated and public tracks (#1071)
* fix: support PDS-backed audio playback for gated and public tracks
audio streaming endpoint now resolves PDS blob URLs for tracks stored
on PDS (audio_storage='pds' or 'both'):
- public PDS-only tracks redirect to com.atproto.sync.getBlob
- gated PDS-backed tracks redirect to PDS blob after auth validation
(previously fell through to presigned R2 URL, which 404'd)
- adds _resolve_pds_url() to look up cached PDS endpoint per artist
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: create artist inline in PDS audio redirect tests
the test_audio.py conftest doesn't provide an artist fixture — create
artist records inline like other tests in the file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
authored by