dev: bump to 0.1.76.0-dev – aeltere Versionen im Update-Dialog, Release-Branch-Zuordnung, README ueberarbeitet
This commit is contained in:
@@ -1383,6 +1383,25 @@ def _fetch_repo_versions(info_url: str) -> list[str]:
|
||||
version = match.group(1).strip()
|
||||
if version:
|
||||
versions.append(version)
|
||||
|
||||
# Zusaetzlich Gitea Releases API abfragen (aeltere Versionen)
|
||||
try:
|
||||
source_repo = repo.replace("ViewIT-Kodi-Repo", "ViewIT").replace("-Kodi-Repo", "")
|
||||
releases_api = f"{scheme}://{host}/api/v1/repos/{owner}/{source_repo}/releases?limit=50"
|
||||
releases_payload = _read_text_url(releases_api)
|
||||
releases_data = json.loads(releases_payload)
|
||||
if isinstance(releases_data, list):
|
||||
for release in releases_data:
|
||||
for asset in release.get("assets", []):
|
||||
aname = str(asset.get("name") or "")
|
||||
m = re.match(rf"^{re.escape(UPDATE_ADDON_ID)}-(.+)\.zip$", aname)
|
||||
if m:
|
||||
v = m.group(1).strip()
|
||||
if v:
|
||||
versions.append(v)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
unique = sorted(set(versions), key=_version_sort_key, reverse=True)
|
||||
return unique
|
||||
|
||||
@@ -1462,9 +1481,33 @@ def _install_addon_version_manual(info_url: str, version: str) -> bool:
|
||||
return True
|
||||
|
||||
|
||||
def _install_addon_version(info_url: str, version: str) -> bool:
|
||||
def _resolve_zip_url(info_url: str, version: str) -> str:
|
||||
"""Gibt die Download-URL fuer eine bestimmte Version zurueck.
|
||||
|
||||
Prueft zuerst das Kodi-Repo, dann den Gitea-Release-Download.
|
||||
"""
|
||||
base = info_url[: -len("/addons.xml")] if info_url.endswith("/addons.xml") else info_url.rstrip("/")
|
||||
zip_url = f"{base}/{UPDATE_ADDON_ID}/{UPDATE_ADDON_ID}-{version}.zip"
|
||||
repo_url = f"{base}/{UPDATE_ADDON_ID}/{UPDATE_ADDON_ID}-{version}.zip"
|
||||
# Pruefen ob die ZIP im Kodi-Repo existiert
|
||||
try:
|
||||
req = Request(repo_url, method="HEAD", headers={"User-Agent": "ViewIT/1.0"})
|
||||
resp = urlopen(req, timeout=UPDATE_HTTP_TIMEOUT_SEC)
|
||||
if resp.status == 200:
|
||||
return repo_url
|
||||
except Exception:
|
||||
pass
|
||||
# Fallback: Gitea Release Asset
|
||||
identity = _extract_repo_identity(info_url)
|
||||
if identity:
|
||||
scheme, host, owner, repo_branch = identity
|
||||
repo = repo_branch.split("|", 1)[0]
|
||||
source_repo = repo.replace("ViewIT-Kodi-Repo", "ViewIT").replace("-Kodi-Repo", "")
|
||||
return f"{scheme}://{host}/{owner}/{source_repo}/releases/download/v{version}/{UPDATE_ADDON_ID}-{version}.zip"
|
||||
return repo_url
|
||||
|
||||
|
||||
def _install_addon_version(info_url: str, version: str) -> bool:
|
||||
zip_url = _resolve_zip_url(info_url, version)
|
||||
|
||||
# Prefer Kodi's own installer to get proper install flow and dependency handling.
|
||||
builtin = getattr(xbmc, "executebuiltin", None)
|
||||
|
||||
Reference in New Issue
Block a user