diff --git a/jd-webgui/app.py b/jd-webgui/app.py index e1bd2e6..189a3c4 100644 --- a/jd-webgui/app.py +++ b/jd-webgui/app.py @@ -942,7 +942,7 @@ def worker(jobid: str): if not links: with lock: job.status = "collecting" - job.message = "Warte auf Link-Crawler\u2026" + job.message = "Warte auf Link-Crawler…" job.progress = 0.0 time.sleep(POLL_SECONDS) continue @@ -952,7 +952,7 @@ def worker(jobid: str): cancel_msg = cancel_job(dev, jobid) with lock: job.status = "failed" - base_msg = "JDownloader lieferte das Demo-Video Big Buck Bunny statt des gew\u00fcnschten Links." + base_msg = "JDownloader lieferte das Demo-Video Big Buck Bunny statt des gewünschten Links." job.message = f"{base_msg} {cancel_msg}" if cancel_msg else base_msg job.progress = 0.0 return @@ -963,7 +963,7 @@ def worker(jobid: str): with lock: job.status = "downloading" done = sum(1 for l in links if l.get("finished")) - job.message = f"Download l\u00e4uft\u2026 ({done}/{len(links)} fertig)" + job.message = f"Download läuft… ({done}/{len(links)} fertig)" job.progress = progress time.sleep(POLL_SECONDS) continue @@ -982,13 +982,28 @@ def worker(jobid: str): if not valid_videos: with lock: job.status = "failed" - job.message = "ffprobe: keine g\u00fcltige Video-Datei." + job.message = "ffprobe: keine gültige Video-Datei." job.progress = 0.0 return + # Rename local files to package name before upload + pkg_base = sanitize_name(job.package_name) if job.package_name and job.package_name != "WebGUI" else "" + if pkg_base: + renamed = [] + for idx, f in enumerate(valid_videos): + ext = os.path.splitext(f)[1] + suffix = f".part{idx + 1}" if len(valid_videos) > 1 else "" + new_path = os.path.join(os.path.dirname(f), f"{pkg_base}{suffix}{ext}") + try: + os.rename(f, new_path) + renamed.append(new_path) + except Exception: + renamed.append(f) + valid_videos = renamed + with lock: job.status = "upload" - job.message = f"Download fertig. MD5/Upload/Verify f\u00fcr {len(valid_videos)} Datei(en)\u2026" + job.message = f"Download fertig. MD5/Upload/Verify für {len(valid_videos)} Datei(en)…" job.progress = 100.0 ssh = ssh_connect() @@ -1104,7 +1119,7 @@ def render_page(error: str = "") -> str: - JD \u2192 Jellyfin + JD → Jellyfin -

JD \u2192 Jellyfin

+

JD → Jellyfin

{render_nav("downloads")} {err_html} @@ -1185,7 +1200,7 @@ def render_logs_page() -> str: - JD \u2192 Jellyfin (Logs) + JD → Jellyfin (Logs) -

JD \u2192 Jellyfin

+

JD → Jellyfin

{render_nav("logs")} -

Verbindungs-Debugger (Echtzeit). Letzte {LOG_BUFFER_LIMIT} Eintr\u00e4ge.

+

Verbindungs-Debugger (Echtzeit). Letzte {LOG_BUFFER_LIMIT} Einträge.

@@ -1229,10 +1244,10 @@ def render_proxies_page( - JD \u2192 Jellyfin (Proxies) + JD → Jellyfin (Proxies) -

JD \u2192 Jellyfin

+

JD → Jellyfin

{render_nav("proxies")} {err_html} {msg_html} @@ -1252,7 +1267,7 @@ def render_proxies_page(

JDownloader Import-Liste

-

Format: socks5://IP:PORT, socks4://IP:PORT. Keine Pr\u00fcfung/Validierung.

+

Format: socks5://IP:PORT, socks4://IP:PORT. Keine Prüfung/Validierung.

@@ -1260,8 +1275,8 @@ def render_proxies_page( -

Datei f\u00fcr Connection Manager

-

Speichert die Liste als .jdproxies im Container, z. B. zum Import in JDownloader \u2192 Verbindungsmanager \u2192 Importieren.

+

Datei für Connection Manager

+

Speichert die Liste als .jdproxies im Container, z. B. zum Import in JDownloader → Verbindungsmanager → Importieren.

@@ -1337,7 +1352,7 @@ def cancel(jobid: str): if job.status in {"finished", "failed", "canceled"}: return RedirectResponse(url="/", status_code=303) job.cancel_requested = True - job.message = "Abbruch angefordert\u2026" + job.message = "Abbruch angefordert…" return RedirectResponse(url="/", status_code=303) @app.post("/clear-finished")