63 lines
1.5 KiB
Python
63 lines
1.5 KiB
Python
|
import json
|
|||
|
|
|||
|
import requests, os
|
|||
|
|
|||
|
|
|||
|
folder = 'forge'
|
|||
|
|
|||
|
if not os.path.exists(folder):
|
|||
|
os.mkdir(folder)
|
|||
|
|
|||
|
# 获取 Forge 版本
|
|||
|
forge_versions = requests.get('https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json')\
|
|||
|
.json()['promos']
|
|||
|
|
|||
|
new_versions = {}
|
|||
|
|
|||
|
|
|||
|
# 遍历所有,如果文件名不包含 -recommended,就跳过
|
|||
|
for version in forge_versions:
|
|||
|
# 如果不包含 -recommended,就跳过
|
|||
|
if '-recommended' not in version:
|
|||
|
continue
|
|||
|
|
|||
|
# print(version)
|
|||
|
|
|||
|
# version 是 value
|
|||
|
# version = forge_versions[version]
|
|||
|
|
|||
|
# 包含的话,就去除 -recommended
|
|||
|
new_versions[version.replace('-recommended', '')] = forge_versions[version]
|
|||
|
|
|||
|
|
|||
|
# pretty print
|
|||
|
|
|||
|
# 计算要下载多少
|
|||
|
print('Total ' + str(len(new_versions)) + ' versions')
|
|||
|
|
|||
|
# 遍历所有版本
|
|||
|
for version in new_versions:
|
|||
|
# https://maven.minecraftforge.net/net/minecraftforge/forge/1.19.3-44.1.0/forge-1.19.3-44.1.0-installer.jar
|
|||
|
|
|||
|
full_version = version + '-' + new_versions[version]
|
|||
|
|
|||
|
# 获取下载链接
|
|||
|
url = 'https://maven.minecraftforge.net/net/minecraftforge/forge/' + full_version + '/forge-' + full_version + \
|
|||
|
'-installer.jar'
|
|||
|
|
|||
|
head = requests.head(url)
|
|||
|
|
|||
|
if not head.ok:
|
|||
|
print('Skip ' + version + ' (not found)')
|
|||
|
continue
|
|||
|
# print file size mb
|
|||
|
print(str(int(head.headers['Content-Length']) / 1024 / 1024) + 'MB')
|
|||
|
|
|||
|
# 保存到文件
|
|||
|
with open(folder + '/' + version + '.jar', 'wb') as f:
|
|||
|
f.write(requests.get(url).content)
|
|||
|
|
|||
|
print('Downloaded ' + version)
|
|||
|
|
|||
|
|