mirror of
https://github.com/aclist/dztui.git
synced 2026-10-25 12:12:31 +01:00
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
import logging
|
|
import requests
|
|
|
|
from packaging.version import Version
|
|
from typing import Any
|
|
|
|
from dzgui.const.constants import APP_NAME, REQUEST_TIMEOUT
|
|
from dzgui.const.endpoints import GITHUB_RELEASES, CODEBERG_RELEASES
|
|
|
|
logger = logging.getLogger(APP_NAME)
|
|
|
|
|
|
def get_latest_release() -> tuple[Any, Any] | tuple[None, None]:
|
|
tag = None
|
|
url = None
|
|
# TODO: check order; github often has gateway errors
|
|
for url in [GITHUB_RELEASES, CODEBERG_RELEASES]:
|
|
try:
|
|
res = requests.get(url, timeout=REQUEST_TIMEOUT)
|
|
if res.status_code == 200:
|
|
tag = res.json()["tag_name"]
|
|
url = res.json()["assets"][0]["browser_download_url"]
|
|
break
|
|
except Exception as e:
|
|
logger.critical(e)
|
|
continue
|
|
return tag, url
|
|
|
|
|
|
def check_updates(version: str) -> str | None:
|
|
try:
|
|
latest, url = get_latest_release()
|
|
if latest is None:
|
|
return None
|
|
if Version(version) >= Version(latest):
|
|
return None
|
|
return url
|
|
except Exception:
|
|
return None
|