diff --git a/jd-webgui/app.py b/jd-webgui/app.py index 545d743..595c89c 100644 --- a/jd-webgui/app.py +++ b/jd-webgui/app.py @@ -592,6 +592,31 @@ def local_paths_from_links(links: List[Dict[str, Any]], pkg_map: Dict[Any, Dict[ out.append(p) return out +def call_raw_jd_api(dev, endpoints: List[str], payloads: List[Dict[str, Any]]) -> bool: + method_candidates = ["action", "call", "api", "request"] + for method_name in method_candidates: + method = getattr(dev, method_name, None) + if method is None: + continue + for endpoint in endpoints: + for payload in payloads: + try: + method(endpoint, payload) + return True + except TypeError: + try: + method(endpoint, params=payload) + return True + except TypeError: + try: + method(endpoint, data=payload) + return True + except Exception: + continue + except Exception: + continue + return False + def try_remove_from_jd(dev, links: List[Dict[str, Any]], pkg_map: Dict[Any, Dict[str, Any]]) -> Optional[str]: link_ids = [l.get("uuid") for l in links if l.get("uuid") is not None] pkg_ids = list(pkg_map.keys()) @@ -626,6 +651,14 @@ def try_remove_from_jd(dev, links: List[Dict[str, Any]], pkg_map: Dict[Any, Dict except Exception: continue + endpoint_candidates = [ + "downloads/removeLinks", + "downloadsV2/removeLinks", + "downloadcontroller/removeLinks", + ] + if call_raw_jd_api(dev, endpoint_candidates, payloads): + return None + return "JDownloader-API: Paket/Links konnten nicht entfernt werden (Wrapper-Methoden nicht vorhanden)." def try_cancel_from_jd(dev, links: List[Dict[str, Any]], pkg_map: Dict[Any, Dict[str, Any]]) -> Optional[str]: @@ -664,6 +697,14 @@ def try_cancel_from_jd(dev, links: List[Dict[str, Any]], pkg_map: Dict[Any, Dict except Exception: continue + endpoint_candidates = [ + "downloads/removeLinks", + "downloadsV2/removeLinks", + "downloadcontroller/removeLinks", + ] + if call_raw_jd_api(dev, endpoint_candidates, payloads): + return None + return "JDownloader-API: Abbrechen fehlgeschlagen (Wrapper-Methoden nicht vorhanden)." def cancel_job(dev, jobid: str) -> Optional[str]: