我想从 GitHub 存储库的发布页面下载文件。我不知道该怎么做。目前我的代码是
#import libraries
import requests
import zipfile
import io
#define the link to the latest GTNH version
GTNHLink = "https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/releases/latest"
#get the path to the old file
OriginalFilePath = "C:\\Users\\********\\CurseforgeUtils\\GTNHAutoUpdate\\GTNHOld.zip"
#download and save the new file
NewFileContent = requests.get(GTNHLink)
NewFile = zipfile.ZipFile(io.BytesIO(NewFileContent.content))
NewFile.close
但是(我假设)因为页面上有多个文件,所以它没有给我我想要的 zip 文件。我该如何解决这个问题?我发现它的主要问题是文件名会随着新版本的发布而改变。
您可以获取
assets
字段中的文件列表,然后您可以迭代列表来查找 .zip
文件。
response = requests.get(api_url)
if response.status_code == 200:
release_data = response.json()
assets = release_data.get('assets', [])
for asset in assets:
if asset['name'].endswith('.zip'):
download_url = asset['browser_download_url']
file_response = requests.get(download_url)
print(file_response.content)
with open(OriginalFilePath, "wb") as file:
file.write(file_response.content)
break