download latest web client as fallback

This commit is contained in:
wanji
2025-12-08 10:38:02 +03:00
parent 32420f8dfe
commit 9122244880
+31 -14
View File
@@ -98,21 +98,11 @@ class AssetHandler:
return True
@staticmethod
def download_client_from_github():
def process_release(release: dict, path: Path):
"""
Downloads the latest supported client from Github
and places it in the swingmusic client folder.
Processes a release from the GitHub API.
"""
log.error("Default client not found. Downloading from GitHub ...")
path = Paths().client_path
try:
# INFO: downlaod the current version of the client from GitHub
releases = requests.get(AssetHandler.RELEASES_URL).json()
# INFO: find the release for the current version
for release in releases:
if release["tag_name"] == f"v{Metadata.version}":
# INFO: find the client.zip asset
for asset in release["assets"]:
if asset["name"] == "client.zip":
@@ -133,8 +123,35 @@ class AssetHandler:
)
log.info("Client downloaded successfully.")
break
break
return True
return False
@staticmethod
def download_client_from_github():
"""
Downloads the latest supported client from Github
and places it in the swingmusic client folder.
"""
log.error("Default client not found. Downloading from GitHub ...")
path = Paths().client_path
try:
# INFO: downlaod the current version of the client from GitHub
releases = requests.get(AssetHandler.RELEASES_URL).json()
# INFO: find the release for the current version
for release in releases:
if release["tag_name"] == f"v{Metadata.version}":
if AssetHandler.process_release(release, path):
return True
pass
# INFO: if no release is found, download the latest release
log.error(
f"No release found for the v{Metadata.version}. Downloading latest version ..."
)
return AssetHandler.process_release(releases[0], path)
except (
requests.exceptions.RequestException,