Skip to content

Commit 4de7a00

Browse files
authored
Update download_MAA_fw.py
新增选择版本的功能
1 parent f47d4e1 commit 4de7a00

1 file changed

Lines changed: 70 additions & 42 deletions

File tree

deps/tools/quick_update/download_MAA_fw.py

Lines changed: 70 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -171,39 +171,42 @@ def custum_ver_select(resource_list):
171171

172172

173173
def get_github_download_options():
174-
"""获取Github的最新版本下载列表
175-
176-
Returns:
177-
list -- 下载版本合集
178-
或者是None,说明下载出问题了
179-
"""
174+
"""获取Github的下载选项(前5个版本)"""
180175
try:
181176
response = requests.get(
182-
"https://api.github.com/repos/MaaXYZ/MaaFramework/releases/latest",
177+
"https://api.github.com/repos/MaaXYZ/MaaFramework/releases",
183178
timeout=10
184179
)
185-
response.raise_for_status() # 如果状态码不是200则抛出异常
186-
187-
assets = response.json().get("assets", [])
180+
response.raise_for_status()
188181

189-
if not assets:
190-
print("该发布版未包含任何可下载资源")
182+
releases = response.json()
183+
if not releases:
184+
print("未找到任何发布版本")
191185
return None
192186

193-
# 创建结构化资源列表
194-
resource_list = []
195-
print("\n可用的下载选项:")
196-
for idx, asset in enumerate(assets):
197-
size_mb = asset['size'] / (1024 * 1024)
198-
print(f"{idx}. {asset['name']} ({size_mb:.2f} MB)")
187+
# 只取前5个版本
188+
recent_releases = releases[:5]
199189

200-
# 将资源信息添加到列表
190+
resource_list = []
191+
print("\n可用的版本:")
192+
for idx, release in enumerate(recent_releases):
193+
version = release['tag_name']
194+
print(f"{idx}. {version}")
195+
# 收集该版本的资源
196+
assets = release.get("assets", [])
197+
asset_list = []
198+
for asset_idx, asset in enumerate(assets):
199+
size_mb = asset['size'] / (1024 * 1024)
200+
asset_list.append({
201+
"index": asset_idx,
202+
"name": asset['name'],
203+
"url": asset['browser_download_url'],
204+
"size": asset['size'],
205+
"size_mb": size_mb
206+
})
201207
resource_list.append({
202-
"index": idx, # 从0开始的索引
203-
"name": asset['name'],
204-
"url": asset['browser_download_url'],
205-
"size": asset['size'],
206-
"size_mb": size_mb
208+
"version": version,
209+
"assets": asset_list
207210
})
208211

209212
return resource_list
@@ -217,27 +220,51 @@ def get_github_download_options():
217220

218221

219222
def select_download_resource(resource_list, auto=False):
220-
"""选择下载包
221-
222-
Arguments:
223-
resource_list {list} -- 通过Release获取到的列表
224-
225-
Keyword Arguments:
226-
auto {bool} -- 是否自动选择下载包 (default: {False})
227-
228-
Returns:
229-
str -- 下载路径或者是False
230-
如果是False则不进行下载
231-
"""
232-
combo_key = None
223+
"""选择下载资源(先选版本,再选资源)"""
233224
if not resource_list:
234225
print("没有可用的下载资源")
235226
return None
236-
elif auto:
227+
228+
# 自动模式:使用最新版本
229+
if auto:
230+
latest_release = resource_list[0]
231+
assets = latest_release['assets']
237232
combo_key = get_local_platform()
238-
return auto_ver_select(resource_list, combo_key)
239-
else:
240-
return custum_ver_select(resource_list)
233+
return auto_ver_select(assets, combo_key)
234+
235+
# 手动模式:选择版本
236+
print("\n请选择版本:")
237+
for idx, release in enumerate(resource_list):
238+
print(f"{idx}. {release['version']}")
239+
240+
while True:
241+
try:
242+
choice = input("\n请输入版本编号 (输入 'q' 退出): ")
243+
if choice.lower() == 'q':
244+
return False
245+
246+
version_idx = int(choice)
247+
if 0 <= version_idx < len(resource_list):
248+
selected_release = resource_list[version_idx]
249+
print(f"\n已选择版本: {selected_release['version']}")
250+
251+
# 显示该版本的资源
252+
assets = selected_release['assets']
253+
# print(assets)
254+
if not assets:
255+
print("该版本没有可用的资源")
256+
return False
257+
258+
print("\n可用的资源:")
259+
for idx, asset in enumerate(assets):
260+
print(
261+
f"{idx}. {asset['name']} ({asset['size_mb']:.2f} MB)")
262+
263+
return custum_ver_select(assets)
264+
else:
265+
print(f"无效的选择,请输入 0-{len(resource_list)-1} 之间的数字")
266+
except ValueError:
267+
print("请输入有效的数字")
241268

242269

243270
def check_version(file_ver, url_ver):
@@ -402,7 +429,8 @@ def main(is_debug=False, is_delete=True):
402429
print("仅进行版本检查,不下载")
403430
file_ver = get_local_version_from_dll(dll_path)
404431
print(file_ver)
405-
url_ver = select_download_resource(get_github_download_options(), True)
432+
url_ver = select_download_resource(
433+
get_github_download_options(), False)
406434
print(url_ver)
407435
check_resalt = check_version(file_ver, url_ver)
408436
print(check_resalt)

0 commit comments

Comments
 (0)