From 7789bf9f160dc19a67fe34fc926faacc5429f060 Mon Sep 17 00:00:00 2001 From: Robert Honz Date: Wed, 27 Mar 2024 06:49:20 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Able=20to=20retrieve=20latest=20rel?= =?UTF-8?q?ease=20version=20information=20from=20GitHub.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tidal_dl_ng/__init__.py | 53 ++++++++++++++++++++++++++++++++++----- tidal_dl_ng/model/meta.py | 8 ++++++ 2 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 tidal_dl_ng/model/meta.py diff --git a/tidal_dl_ng/__init__.py b/tidal_dl_ng/__init__.py index 8669c23..35c8515 100644 --- a/tidal_dl_ng/__init__.py +++ b/tidal_dl_ng/__init__.py @@ -2,11 +2,13 @@ import importlib.metadata import sys from pathlib import Path +from urllib.parse import urlparse import requests import toml from tidal_dl_ng.constants import REQUESTS_TIMEOUT_SEC +from tidal_dl_ng.model.meta import ReleaseLatest def metadata_project() -> dict: @@ -42,13 +44,42 @@ def version_app() -> str: return version -def latest_version_available(): - response = requests.get( - "https://api.github.com/repos/v2ray/v2ray-core/releases/latest", timeout=REQUESTS_TIMEOUT_SEC - ) +def repository_url() -> str: + metadata: dict = metadata_project() + url_repo: str = metadata["tool"]["poetry"]["repository"] - a = response.json()["name"] - print(a) + return url_repo + + +def repository_path() -> str: + url_repo: str = repository_url() + url_path: str = urlparse(url_repo).path + + return url_path + + +def latest_version_information() -> ReleaseLatest: + release_info: ReleaseLatest + repo_path: str = repository_path() + + try: + response = requests.get( + f"https://api.github.com/repos{repo_path}/releases/latest", timeout=REQUESTS_TIMEOUT_SEC + ) + release_info: str = response.json() + + release_info = ReleaseLatest( + version=release_info["tag_name"], url=release_info["html_url"], release_info=release_info["body"] + ) + except: + url: str = repository_url() + release_info = ReleaseLatest( + version="v0.0.0", + url=url, + release_info=f"Something went wrong calling {url}. Check your internet connection.", + ) + + return release_info def name_package() -> str: @@ -85,3 +116,13 @@ def name_app() -> str: __name_display__ = name_app() __version__ = version_app() + + +def update_available() -> (bool, ReleaseLatest): + latest_info: ReleaseLatest = latest_version_information() + result: bool = False + + if "v" + __version__ != latest_info.version: + result = True + + return result, latest_info diff --git a/tidal_dl_ng/model/meta.py b/tidal_dl_ng/model/meta.py new file mode 100644 index 0000000..a18c60b --- /dev/null +++ b/tidal_dl_ng/model/meta.py @@ -0,0 +1,8 @@ +from dataclasses import dataclass + + +@dataclass +class ReleaseLatest: + version: str + url: str + release_info: str