Files
streamrip-ui/README.md
T

2.1 KiB

streamrip-ui

Webapp für das CLI-Tool streamrip (nur Deezer, lokal Single-User ohne Login).

Struktur

  • backend/ — FastAPI (nutzt streamrip als Library, kein Subprocess)
    • GET /api/health, GET /api/sources
    • GET /api/search?type=track|album|artist|playlist&q=..&limit=..
    • POST /api/downloads {source, media_type, id, quality, codec, folder, no_db}
    • GET /api/downloads, GET /api/downloads/{id}, GET /api/downloads/{id}/events (SSE)
    • GET /api/history (downloads.db + failed_downloads.db, read-only)
    • GET/PUT /api/config (volle config.toml, mit .bak-Backup + TOML-Validierung)
    • GET /api/files?path=.. (Download-Root, Path-Traversal blockiert)
  • frontend/ — Next.js 14 (Suche mit 4 Tabs, Cover-Grid + Preview-Player, Download-Dialog, Queue, Verlauf mit Re-Download, Dateien, Einstellungen)

Start (lokal)

cd backend && python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/python -m uvicorn app.main:app --port 8000
cd ../frontend && npm install && npm run dev

Frontend: http://localhost:3002, Backend: http://localhost:8000 (/api/* wird per Rewrite proxied, lokal via 127.0.0.1:8000, in Docker via BACKEND_URL=http://backend:8000).

Start (Docker)

docker compose up --build

Volumes: ~/.config/streamrip:/config (enthält config.toml + DBs), ~/StreamripDownloads:/downloads.

ARL

Einstellungen-Seite → „Deezer ARL“-Feld (zeigt nur Status + letzte 4 Zeichen, nie den vollen Wert). Speichern schreibt nur die arl-Zeile mit Backup. Alternativ weiter unten im vollen config.toml-Editor.

Hinweise

  • ~/.local/bin/rip (pipx-Shim) ist auf diesem Rechner kaputt; das Backend importiert streamrip direkt als Library und braucht den Shim nicht.
  • Fortschritt v1: Job-Status + Logs via SSE (Polling 0.5s im Backend, 2s-Refresh in der Queue-Seite). Echte %-Werte pro Track erfordern Hooks in streamrips Downloadable-Layer (Follow-up).
  • Defaults (Qualität/Codec) liegen im Browser-LocalStorage (srip-defaults), Qualität Default 2 (FLAC) + Fallback laut config.