繁体   English   中英

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

[英]How to upload tar.gz and jar files as GitHub assets using python requests?

在某个目录中,我有一个.tar.gz和一个.jar工件。 我想使用请求上传这些资产以进行发布。 不幸的是,我无法正常工作。

假设此.tar.gz文件名为peachs.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文档中 ,要上传资产,您需要upload_url

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

您将需要从get release API (列出版本,获取单个版本或获取最新版本)中提取该网址。 你可以在这里找到:

注意:这将返回与用于上载发行资产的端点相对应的upload_url键。 该密钥是超媒体资源。

上载网址是URI模板,例如:

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

要构建它,可以使用uritemplate模块并展开name属性(也在此处进行描述)

以下代码将获取最新版本,并将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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM