From 07e6d5baa46534bed1a33fe7101516c0134da42c Mon Sep 17 00:00:00 2001 From: Howard Wu <40033067+Howard20181@users.noreply.github.com> Date: Thu, 17 Jul 2025 15:36:20 +0800 Subject: [PATCH] Simplify GApps and Magisk link generation scripts Removed GitHub API authentication and asset parsing logic from generateGappsLink.py and generateMagiskLink.py. Now, download links are constructed directly using static URLs for the latest release assets, improving reliability and reducing complexity. --- scripts/generateGappsLink.py | 58 +++++--------------------- scripts/generateMagiskLink.py | 78 +++++++++++------------------------ 2 files changed, 33 insertions(+), 103 deletions(-) diff --git a/scripts/generateGappsLink.py b/scripts/generateGappsLink.py index ecb7779..cdf3cdf 100644 --- a/scripts/generateGappsLink.py +++ b/scripts/generateGappsLink.py @@ -15,32 +15,11 @@ # You should have received a copy of the GNU Affero General Public License # along with MagiskOnWSALocal. If not, see . # -# Copyright (C) 2024 LSPosed Contributors +# Copyright (C) 2025 LSPosed Contributors # - -from datetime import datetime import sys - -import requests -import json -import re from pathlib import Path - -class BearerAuth(requests.auth.AuthBase): - def __init__(self, token): - self.token = token - - def __call__(self, r): - r.headers["authorization"] = "Bearer " + self.token - return r - - -github_auth = None -if Path.cwd().joinpath('token').exists(): - with open(Path.cwd().joinpath('token'), 'r') as token_file: - github_auth = BearerAuth(token_file.read()) - print("Using token file for authentication", flush=True) arch = sys.argv[1] arg2 = sys.argv[2] download_dir = Path.cwd().parent / "download" if arg2 == "" else Path(arg2) @@ -51,29 +30,12 @@ print(f"Generating GApps download link: arch={arch}", flush=True) abi_map = {"x64": "x86_64", "arm64": "arm64"} android_api_map = {"30": "11.0", "32": "12.1", "33": "13.0"} release = android_api_map[android_api] -res = requests.get(f"https://api.github.com/repos/LSPosed/WSA-Addon/releases/latest", auth=github_auth) -json_data = json.loads(res.content) -headers = res.headers -x_ratelimit_remaining = headers["x-ratelimit-remaining"] -if res.status_code == 200: - download_files = {} - assets = json_data["assets"] - for asset in assets: - if re.match(rf'gapps.*{release}.*\.rc$', asset["name"]): - download_files[asset["name"]] = asset["browser_download_url"] - elif re.match(rf'gapps.*{release}.*{abi_map[arch]}.*\.img$', asset["name"]): - download_files[asset["name"]] = asset["browser_download_url"] - with open(download_dir/tempScript, 'a') as f: - for key, value in download_files.items(): - print(f"download link: {value}\npath: {download_dir / key}\n", flush=True) - f.writelines(value + '\n') - f.writelines(f' dir={download_dir}\n') - f.writelines(f' out={key}\n') -elif res.status_code == 403 and x_ratelimit_remaining == '0': - message = json_data["message"] - print(f"Github API Error: {message}", flush=True) - ratelimit_reset = headers["x-ratelimit-reset"] - ratelimit_reset = datetime.fromtimestamp(int(ratelimit_reset)) - print( - f"The current rate limit window resets in {ratelimit_reset}", flush=True) - exit(1) +download_files = {} +download_files[f"gapps-{release}.rc"] = f"https://github.com/LSPosed/WSA-Addon/releases/latest/download/gapps-{release}.rc" +download_files[f"gapps-{release}-{abi_map[arch]}.img"] = f"https://github.com/LSPosed/WSA-Addon/releases/latest/download/gapps-{release}-{abi_map[arch]}.img" +with open(download_dir / tempScript, "a") as f: + for key, value in download_files.items(): + print(f"download link: {value}\npath: {download_dir / key}\n", flush=True) + f.writelines(value + "\n") + f.writelines(f" dir={download_dir}\n") + f.writelines(f" out={key}\n") diff --git a/scripts/generateMagiskLink.py b/scripts/generateMagiskLink.py index 29c2d6f..f8cd663 100644 --- a/scripts/generateMagiskLink.py +++ b/scripts/generateMagiskLink.py @@ -15,55 +15,42 @@ # You should have received a copy of the GNU Affero General Public License # along with MagiskOnWSALocal. If not, see . # -# Copyright (C) 2023 LSPosed Contributors +# Copyright (C) 2025 LSPosed Contributors # - -from datetime import datetime -import re import sys import json import requests from pathlib import Path - -class BearerAuth(requests.auth.AuthBase): - def __init__(self, token): - self.token = token - - def __call__(self, r): - r.headers["authorization"] = "Bearer " + self.token - return r - - -github_auth = None -if Path.cwd().joinpath('token').exists(): - with open(Path.cwd().joinpath('token'), 'r') as token_file: - github_auth = BearerAuth(token_file.read()) - print("Using token file for authentication", flush=True) - magisk_ver = sys.argv[1] -download_dir = Path.cwd().parent / \ - "download" if sys.argv[2] == "" else Path(sys.argv[2]) +download_dir = (Path.cwd().parent / "download" if sys.argv[2] == "" else Path(sys.argv[2])) tempScript = sys.argv[3] download_files = {} -cdn_hosts=["cdn.jsdelivr.net", "fastly.jsdelivr.net", "testingcf.jsdelivr.net", "gcore.jsdelivr.net"] -print( - f"Generating Magisk download link: release type={magisk_ver}", flush=True) +cdn_hosts = [ + "cdn.jsdelivr.net", + "fastly.jsdelivr.net", + "testingcf.jsdelivr.net", + "gcore.jsdelivr.net", +] +print(f"Generating Magisk download link: release type={magisk_ver}", flush=True) magisk_link = None if not magisk_ver: magisk_ver = "stable" -if magisk_ver == "stable" or magisk_ver == "beta" or magisk_ver == "canary" or magisk_ver == "debug": +if ( + magisk_ver == "stable" + or magisk_ver == "beta" + or magisk_ver == "canary" + or magisk_ver == "debug" +): try: - magisk_link = json.loads(requests.get( - f"https://topjohnwu.github.io/magisk-files/{magisk_ver}.json").content)['magisk']['link'] + magisk_link = json.loads(requests.get(f"https://topjohnwu.github.io/magisk-files/{magisk_ver}.json").content)["magisk"]["link"] download_files[f"magisk-{magisk_ver}.zip"] = magisk_link except Exception: print("Failed to fetch from GitHub API, fallbacking to jsdelivr...") for host in cdn_hosts: try: - magisk_link = json.loads(requests.get( - f"https://{host}/gh/topjohnwu/magisk-files@master/{magisk_ver}.json").content)['magisk']['link'] + magisk_link = json.loads(requests.get(f"https://{host}/gh/topjohnwu/magisk-files@master/{magisk_ver}.json").content)["magisk"]["link"] download_files[f"magisk-{magisk_ver}.zip"] = magisk_link break except Exception: @@ -73,30 +60,11 @@ if magisk_ver == "stable" or magisk_ver == "beta" or magisk_ver == "canary" or m if magisk_link is None: print("Failed to fetch Magisk download link", flush=True) exit(1) -res = requests.get( - f"https://api.github.com/repos/LSPosed/WSA-Addon/releases/latest", auth=github_auth) -json_data = json.loads(res.content) -headers = res.headers -x_ratelimit_remaining = headers["x-ratelimit-remaining"] -if res.status_code == 200: - assets = json_data["assets"] - for asset in assets: - if re.match(f'cust.img$', asset["name"]): - download_files[asset["name"]] = asset["browser_download_url"] - break -elif res.status_code == 403 and x_ratelimit_remaining == '0': - message = json_data["message"] - print(f"Github API Error: {message}", flush=True) - ratelimit_reset = headers["x-ratelimit-reset"] - ratelimit_reset = datetime.fromtimestamp(int(ratelimit_reset)) - print( - f"The current rate limit window resets in {ratelimit_reset}", flush=True) - exit(1) -with open(download_dir/tempScript, 'a') as f: +download_files["cust.img"] = "https://github.com/LSPosed/WSA-Addon/releases/latest/download/cust.img" +with open(download_dir / tempScript, "a") as f: for key, value in download_files.items(): - print( - f"download link: {value}\npath: {download_dir / key}\n", flush=True) - f.writelines(value + '\n') - f.writelines(f' dir={download_dir}\n') - f.writelines(f' out={key}\n') + print(f"download link: {value}\npath: {download_dir / key}\n", flush=True) + f.writelines(value + "\n") + f.writelines(f" dir={download_dir}\n") + f.writelines(f" out={key}\n")