gpt4 book ai didi

python - 如何使用 python 请求将 tar.gz 和 jar 文件作为 GitHub Assets 上传?

转载 作者:行者123 更新时间:2023-12-01 02:24:01 25 4
gpt4 key购买 nike

在某个目录中,我有一个 .tar.gz 和一个 .jar 工件。我想使用请求上传这些 Assets 以供发布。不幸的是,我无法让它工作。

假设这个 .tar.gz 文件被称为peaches.tar.gz,这是我尝试做的:

headers = {'Content-Type': 'application/gzip'}
myAuth = {'MyGithubName', 'myToken'}
requests.post('https://api.github.com/repos/MyGithubName/MyRepo/releases/SomeIDNumber/assets?name=peaches.tar.gz, auth= myAuth, headers= headers, data= open('peaches.tar.gz', 'rb'))

最佳答案

来自Github documentation ,要上传 Assets ,您需要 upload_url :

POST https://<upload_url>/repos/:owner/:repo/releases/:id/assets?name=foo.zip

您需要从 get release API 中提取此网址(列出版本、获取单个版本或获取最新版本)。您可以找到here :

Note: This returns an upload_url key corresponding to the endpoint foruploading release assets. This key is a hypermedia resource.

上传网址是 URI template例如:

https://uploads.github.com/repos/bertrandmartel/ustream-dl/releases/8727946/assets{?name,label}

要构建它,您可以使用 uritemplate模块并展开 name 属性(也有描述 here )

以下内容将获取最新版本并向其上传 peaches.tar.gz 资源(名称为 peaches.tar.gz):

import requests 
from uritemplate import URITemplate

repo = 'bertrandmartel/ustream-dl'
access_token = 'YOUR_ACCESS_TOKEN'

r = requests.get('https://api.github.com/repos/{0}/releases/latest'.format(repo))

upload_url = r.json()["upload_url"]

t = URITemplate(upload_url)
asset_url = t.expand(name = 'peaches.tar.gz')

headers = {
'Content-Type': 'application/gzip',
'Authorization': 'Token {0}'.format(access_token)
}
r = requests.post(
asset_url,
headers = headers,
data = open('peaches.tar.gz', 'rb').read()
)
print(r.status_code)
print(r.text)

关于python - 如何使用 python 请求将 tar.gz 和 jar 文件作为 GitHub Assets 上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47584988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com