From ce6e5f6eb748c2b170524c0f585156bd1bcfee4f Mon Sep 17 00:00:00 2001 From: "Casper V. Kristensen" Date: Wed, 26 May 2021 18:28:11 +0200 Subject: [PATCH] CurseForge, GitHub: Update for TBCC. --- wau/providers/curseforge.py | 3 ++- wau/providers/github.py | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/wau/providers/curseforge.py b/wau/providers/curseforge.py index 90561a9..415d185 100644 --- a/wau/providers/curseforge.py +++ b/wau/providers/curseforge.py @@ -67,6 +67,7 @@ class CurseForge(Web): def _get_latest_file_url(cls, addon: Addon) -> str: info = cls._get_curse_addon_info(addon) for file in info["latestFiles"]: - if file["gameVersionFlavor"] == "wow_classic" and file["releaseType"] == 1: # 1: release, 2: beta, 3: alpha + # releaseTypes: 1: release, 2: beta, 3: alpha + if file["gameVersionFlavor"] == "wow_burning_crusade" and file["releaseType"] == 1: return file["downloadUrl"] raise FileNotFoundError("No file found") diff --git a/wau/providers/github.py b/wau/providers/github.py index 635dc80..a4acf65 100644 --- a/wau/providers/github.py +++ b/wau/providers/github.py @@ -28,7 +28,22 @@ class GitHub(Web): latest_release = http.open( url=f"{cls.api_url}/repos/{repo_owner}/{repo_name}/releases/latest" ).json() - for asset in sorted(latest_release["assets"], key=lambda a: "classic" in a["name"].lower(), reverse=True): + + asset_priorities = [ + r"[._-]bcc[._-]", + r"[._-]bc[._-]", + r"[._-]tbc[._-]", + r"[._-]classic[._-]", + r".*", + ] + for asset in sorted( + latest_release["assets"], + key=lambda a: next( + i + for i, ap in enumerate(asset_priorities) + if re.search(ap, a["name"], flags=re.IGNORECASE) + ) + ): if Path(asset["name"]).suffix == ".zip": return super().download(addon, asset["browser_download_url"]) raise FileNotFoundError("No zip file found for latest release")