diff --git a/addon/resolveurl_backend.py b/addon/resolveurl_backend.py index 20326f5..a1bd4ee 100644 --- a/addon/resolveurl_backend.py +++ b/addon/resolveurl_backend.py @@ -12,6 +12,31 @@ import sys _LAST_RESOLVE_ERROR = "" +def _append_kodi_dependency_paths() -> None: + """Ensure optional Kodi module dependencies are importable.""" + try: + import xbmcaddon # type: ignore + import xbmcvfs # type: ignore + except Exception: + return + for addon_id in ("script.module.resolveurl", "script.module.kodi-six", "script.module.six"): + try: + addon = xbmcaddon.Addon(addon_id) + addon_path = addon.getAddonInfo("path") or "" + except Exception: + addon_path = "" + if not addon_path: + continue + try: + addon_path = xbmcvfs.translatePath(addon_path) + except Exception: + pass + lib_path = f"{addon_path}/lib" + for candidate in (lib_path, addon_path): + if candidate and candidate not in sys.path: + sys.path.append(candidate) + + def get_last_error() -> str: return str(_LAST_RESOLVE_ERROR or "") @@ -26,21 +51,11 @@ def resolve(url: str) -> Optional[str]: import resolveurl as _resolveurl # type: ignore resolveurl = _resolveurl except Exception: - # Ohne harte addon.xml-Abhaengigkeit liegt resolveurl ggf. nicht im Python-Pfad. + # Ohne harte addon.xml-Abhaengigkeit liegen optionale libs ggf. nicht im Python-Pfad. + _append_kodi_dependency_paths() try: - import xbmcaddon # type: ignore - import xbmcvfs # type: ignore - - addon = xbmcaddon.Addon("script.module.resolveurl") - addon_path = addon.getAddonInfo("path") or "" - if addon_path: - lib_path = xbmcvfs.translatePath(f"{addon_path}/lib") - if lib_path and lib_path not in sys.path: - sys.path.append(lib_path) - if addon_path and addon_path not in sys.path: - sys.path.append(addon_path) - import resolveurl as _resolveurl # type: ignore - resolveurl = _resolveurl + import resolveurl as _resolveurl # type: ignore + resolveurl = _resolveurl except Exception: resolveurl = None if resolveurl is None: