3a4eb25392
Ampel / ampel (push) Successful in 29s
Volle Titel-Auswahl vor dem Rip (Etappe-12-Rest):
- worker.tasks.scan_tracks: makemkvcon info -> Titel-Liste (Dauer/Groesse/
Kapitel, apdefs-Attr 8/9/11) in die settings-Tabelle 'tracks:<device>';
API: POST /devices/{n}/scan-tracks + GET /devices/{n}/tracks (Polling).
- Rip-Dialog: 'Disc scannen' -> Tabelle mit Checkboxen, Vorauswahl ab
5 min, Groessen-Summe; gewaehlte Titel als meta.titles in den Job.
- rip_titel_auswahl: ein makemkvcon-Aufruf je Titel (mkv kann nur einen
Titel oder all), Fortschritt anteilig. Parser-Tests dabei.
Nativer Windows-Worker OHNE Docker (Commander-Wunsch):
- Die Rippy-Instanz versorgt sich selbst: GET /worker-setup/windows
liefert install.ps1, /worker-setup/paket den Worker-Code als Zip
(api-Dockerfile kopiert docker/worker/*.py als worker_dist/ ins Image).
- install.ps1: Python-Check, venv + requirements, HandBrakeCLI 1.9.2 vom
offiziellen GitHub-Release (URL per HEAD verifiziert), start-worker.bat
mit celery -Q transcode --pool=solo (Celery-Doku: Windows nur solo),
optional -Autostart via schtasks onlogon.
- tasks.py laedt jetzt auch ohne fcntl (Import-Guard) — rip_disc ist auf
solchen Workern hart verriegelt (Klartext-Fehler statt Crash).
- Einstellungen -> Worker: Varianten-Umschalter Linux(Docker)/Windows(nativ)
mit passenden Copy-Paste-Befehlen.
Anleitungs-Tab: Rippy erklaert sich selbst (Disc-Weg, Serien, NAS,
Media-Server, Benachrichtigungen, Key, Worker, Downloads, FAQ).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
27 lines
992 B
Docker
27 lines
992 B
Docker
FROM python:3.12-slim-bookworm
|
|
|
|
WORKDIR /app
|
|
|
|
# udev ist raus (23.07.): udevadm lieferte im Container nie Daten (kein udevd) —
|
|
# die Geräte-Erkennung läuft jetzt über /sys + ioctls.
|
|
# nfs-common/cifs-utils: Netzwerk-Speicherziele werden aus dem UI heraus
|
|
# eingehängt (mounts.py, braucht CAP_SYS_ADMIN aus dem Compose).
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
nfs-common \
|
|
cifs-utils \
|
|
smbclient \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY docker/api/requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
COPY docker/api/ .
|
|
|
|
# Worker-Selbstversorgung: die API liefert Installer + Worker-Code an
|
|
# native Worker aus (GET /worker-setup/windows bzw. /worker-setup/paket) —
|
|
# die Zielmaschine braucht weder git noch Docker.
|
|
COPY docker/worker/*.py docker/worker/requirements.txt worker_dist/
|
|
COPY deploy/worker-windows/install.ps1 worker_dist/
|
|
|
|
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--app-dir", "/app"]
|