dev: bump to 0.1.76.0-dev – aeltere Versionen im Update-Dialog, Release-Branch-Zuordnung, README ueberarbeitet

This commit is contained in:
2026-03-10 14:28:41 +01:00
parent 5564851d35
commit 649929ca5d
7 changed files with 178 additions and 49 deletions

View File

@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<addon id="plugin.video.viewit" name="ViewIt" version="0.1.74-dev" provider-name="ViewIt">
<addon id="plugin.video.viewit" name="ViewIt" version="0.1.76.0-dev" provider-name="ViewIt">
<requires>
<import addon="xbmc.python" version="3.0.0" />
<import addon="script.module.requests" />

View File

@@ -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)