✨ Able to retrieve latest release version information from GitHub.
This commit is contained in:
+47
-6
@@ -2,11 +2,13 @@
|
|||||||
import importlib.metadata
|
import importlib.metadata
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
import toml
|
import toml
|
||||||
|
|
||||||
from tidal_dl_ng.constants import REQUESTS_TIMEOUT_SEC
|
from tidal_dl_ng.constants import REQUESTS_TIMEOUT_SEC
|
||||||
|
from tidal_dl_ng.model.meta import ReleaseLatest
|
||||||
|
|
||||||
|
|
||||||
def metadata_project() -> dict:
|
def metadata_project() -> dict:
|
||||||
@@ -42,13 +44,42 @@ def version_app() -> str:
|
|||||||
return version
|
return version
|
||||||
|
|
||||||
|
|
||||||
def latest_version_available():
|
def repository_url() -> str:
|
||||||
response = requests.get(
|
metadata: dict = metadata_project()
|
||||||
"https://api.github.com/repos/v2ray/v2ray-core/releases/latest", timeout=REQUESTS_TIMEOUT_SEC
|
url_repo: str = metadata["tool"]["poetry"]["repository"]
|
||||||
)
|
|
||||||
|
|
||||||
a = response.json()["name"]
|
return url_repo
|
||||||
print(a)
|
|
||||||
|
|
||||||
|
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:
|
def name_package() -> str:
|
||||||
@@ -85,3 +116,13 @@ def name_app() -> str:
|
|||||||
|
|
||||||
__name_display__ = name_app()
|
__name_display__ = name_app()
|
||||||
__version__ = version_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
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class ReleaseLatest:
|
||||||
|
version: str
|
||||||
|
url: str
|
||||||
|
release_info: str
|
||||||
Reference in New Issue
Block a user