Fix MB-hit path: poll scanner for backcover photo at disc insert prompt
If Cover Art Archive has no backcover, the scanner server (already running since EAN prompt) is now also monitored at each disc insert prompt via _input_or_scan. On photo upload, Vision-LLM starts in the background and the photo is saved as backcover.jpg after ripping. Phone photo takes priority over any CAA cover. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
7135e681f8
commit
2490293dcf
1 changed files with 26 additions and 3 deletions
|
|
@ -695,8 +695,9 @@ def interactive_rip(config: RipperConfig) -> None:
|
|||
if mb_mbid:
|
||||
download_caa_covers(mb_mbid, album_root)
|
||||
|
||||
# Vision-LLM im Hintergrund starten, falls Back-Cover vorhanden
|
||||
# Vision-LLM im Hintergrund starten, falls CAA-Backcover vorhanden
|
||||
vision_queue = None
|
||||
uploaded_photo: Path | None = None
|
||||
backcover = album_root / "backcover.jpg"
|
||||
if backcover.exists():
|
||||
print(
|
||||
|
|
@ -706,14 +707,30 @@ def interactive_rip(config: RipperConfig) -> None:
|
|||
vision_queue = _start_vision_thread(
|
||||
backcover, config.vision_model, config.vision_url
|
||||
)
|
||||
else:
|
||||
print(
|
||||
" Kein Backcover in Cover Art Archive."
|
||||
f" Optional: Backcover hochladen — {scanner_url}",
|
||||
flush=True,
|
||||
)
|
||||
|
||||
for disc in mb_album.discs:
|
||||
disc_num = disc.disc_number
|
||||
disc_dir = album_root / f"CD{disc_num}"
|
||||
|
||||
input(
|
||||
_, disc_photo = _input_or_scan(
|
||||
f"\n CD {disc_num}/{total_discs} einlegen und Enter drücken "
|
||||
f"({len(disc.tracks)} Tracks) ..."
|
||||
f"({len(disc.tracks)} Tracks) ...",
|
||||
scanner,
|
||||
)
|
||||
if disc_photo and vision_queue is None:
|
||||
uploaded_photo = disc_photo
|
||||
print(
|
||||
" Backcover-Foto empfangen → Vision-LLM-Analyse gestartet...",
|
||||
flush=True,
|
||||
)
|
||||
vision_queue = _start_vision_thread(
|
||||
disc_photo, config.vision_model, config.vision_url
|
||||
)
|
||||
|
||||
print(f" Ripping to: {disc_dir}")
|
||||
|
|
@ -766,6 +783,12 @@ def interactive_rip(config: RipperConfig) -> None:
|
|||
flush=True,
|
||||
)
|
||||
|
||||
# Hochgeladenes Backcover speichern (Handy-Foto hat Vorrang vor CAA)
|
||||
if uploaded_photo and uploaded_photo.exists():
|
||||
dest = album_root / "backcover.jpg"
|
||||
prepare_cover(uploaded_photo, dest)
|
||||
print(f" backcover.jpg gespeichert: {dest}", flush=True)
|
||||
|
||||
json_path = album_root / "album.json"
|
||||
json_path.write_text(
|
||||
final_album.model_dump_json(indent=2), encoding="utf-8"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue