media-rip/backend/app/services
xpltd 3931e71af5 Fix playlist support, session persistence, audio detection, progress errors
Playlist handling:
- Playlists are split into individual jobs at enqueue time
- Each entry downloads independently with its own progress tracking
- Private/unavailable playlist entries detected and reported in preview
- Individual jobs use noplaylist=True to prevent re-expansion

Session persistence:
- App.vue now calls fetchJobs() on mount to reload history from backend
- Download history survives page refresh via session cookie

Audio detection:
- Domain-based detection for known audio sources (bandcamp, soundcloud)
- Bandcamp albums now correctly trigger audio-only mode

Bug fixes:
- ProgressEvent accepts float for downloaded_bytes/total_bytes (fixes
  pydantic int_from_float validation errors from some extractors)
- SSE job_update events now include error_message for failed jobs
- Fixed test_health_queue_depth test to use direct DB insertion instead
  of POST endpoint (avoids yt-dlp side effects in test env)
2026-03-19 02:53:45 -05:00
..
__init__.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
download.py Fix playlist support, session persistence, audio detection, progress errors 2026-03-19 02:53:45 -05:00
output_template.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
purge.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
theme_loader.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00