Python 如何使用 github api 从 GitHub 下载存储库 zip 文件

Python How to download repository zip file from GitHub using github api

我正在尝试使用 api 下载我的存储库的 zip 文件,但无法这样做。

GitHub 文档:github-download-zip-ref

我的代码有什么问题?感谢您的帮助。

我只有404: not found error

import requests
import wget

from requests.api import request
headers = {"Authorization" : 'token ***', "Accept": 'application/vnd.github.v3+json'}
parameters = {"owner": 'enestekerlek', "repo": 'Hello-World', "ref": 'ref'}

r =requests.get('https://api.github.com/user/repos', headers = headers)
if (r.status_code == 200) : 
    x = requests.get('https://api.github.com/repos/enestekerlek/Hello-World/zipball/ref', headers = headers, params = parameters)

    print(x.content)
    print(type(x))
else :
    print("can not connect")

您的第一个问题可能是您在 url.

中使用了单词 ref

master/main 分支必须(可能)branch nameempty string

其他问题可能是您的存储库为空,因此没有可下载的内容。但是我无法检查它,因为我没有空的回购协议,而且我使用私有令牌只访问我的回购协议。


我用于测试的最小工作代码。

import requests

headers = {
    "Authorization" : 'token ghp_r5***',
    "Accept": 'application/vnd.github.v3+json'
#    "Accept": '*.*',
}

OWNER = 'enestekerlek'
REPO  = 'Hello-World'

OWNER = 'furas'
#REPO = 'python-examples'  # it is downloading too long
REPO  = 'AutoDraw'

REF  = 'main'  # branch name
REF  = ''      # master/main branch 

EXT  = 'zip'
#EXT  = 'tar'  # it also works

url = f'https://api.github.com/repos/{OWNER}/{REPO}/{EXT}ball/{REF}'
print('url:', url)

r = requests.get(url, headers=headers)

if r.status_code == 200:
    print('size:', len(r.content))
    with open(f'output.{EXT}', 'wb') as fh:
        fh.write(r.content)
    print(r.content[:10])  # display only some part
else:
    print(r.text)    

结果:

url: https://api.github.com/repos/furas/AutoDraw/zipball/
size: 663179
b'PK\x03\x04\n\x00\x00\x00\x00\x00'