Track-Auswahl-Tabelle, nativer Windows-Worker (via UI angeboten), Anleitungs-Tab
Ampel / ampel (push) Successful in 29s
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>
This commit is contained in:
@@ -5,6 +5,7 @@ from ripping import (
|
||||
laengster_titel,
|
||||
parse_scan_dauer,
|
||||
parse_tinfo_dauern,
|
||||
parse_titel_info,
|
||||
)
|
||||
|
||||
# Echte Robot-Mode-Zeilenform laut makemkv.com/developers/usage.txt:
|
||||
@@ -39,6 +40,22 @@ def test_makemkv_cmd_default_bleibt_all():
|
||||
assert cmd[-2:] == ["all", "/out"]
|
||||
|
||||
|
||||
def test_parse_titel_info_volle_tabelle():
|
||||
"""Attr 8=Kapitel, 9=Dauer, 11=Bytes (MakeMKV apdefs.h) → Auswahl-Tabelle."""
|
||||
ausgabe = """
|
||||
TINFO:0,8,0,"24"
|
||||
TINFO:0,9,0,"1:52:29"
|
||||
TINFO:0,11,0,"31234567890"
|
||||
TINFO:1,9,0,"0:03:12"
|
||||
TINFO:1,11,0,"98765432"
|
||||
"""
|
||||
titel = parse_titel_info(ausgabe)
|
||||
assert titel == [
|
||||
{"nr": 0, "dauer_s": 6749, "groesse_bytes": 31234567890, "kapitel": 24},
|
||||
{"nr": 1, "dauer_s": 192, "groesse_bytes": 98765432, "kapitel": 0},
|
||||
]
|
||||
|
||||
|
||||
def test_parse_scan_dauer():
|
||||
ausgabe = "…\n + duration: 01:52:29\n…"
|
||||
assert parse_scan_dauer(ausgabe) == 6749
|
||||
|
||||
Reference in New Issue
Block a user