Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过API下载Github发行版_Python_Github_Python Requests_Github Api - Fatal编程技术网

Python 通过API下载Github发行版

Python 通过API下载Github发行版,python,github,python-requests,github-api,Python,Github,Python Requests,Github Api,我正试图在我公司的企业github服务器上下载一个repo版本。我有一个带有OAuth令牌的适当授权头,并且能够获得发布端点的响应。这个特殊的repo具有zip和tarball源代码以及编译的可执行文件。构建的可执行文件就是我试图下载的。发布请求的响应与所关注的assets键中的browser\u download\u url键类似 { "url": "***/releases/1491", "assets_url": "***/releases/1491/assets",

我正试图在我公司的企业github服务器上下载一个repo版本。我有一个带有OAuth令牌的适当授权头,并且能够获得发布端点的响应。这个特殊的repo具有zip和tarball源代码以及编译的可执行文件。构建的可执行文件就是我试图下载的。发布请求的响应与所关注的
assets
键中的
browser\u download\u url
键类似

{
    "url": "***/releases/1491",
    "assets_url": "***/releases/1491/assets",
    "upload_url": "***/releases/1491/assets{?name,label}",
    "html_url": "***/releases/tag/1.0.6",
    "id": 1491,
    "tag_name": "1.0.6",
    "target_commitish": "release-1.0.6",
    "name": "1.0.6",
    "draft": false,
    "prerelease": true,
    "created_at": "2017-10-03T15:51:25Z",
    "published_at": "2017-10-10T16:54:16Z",
    "assets": [
        {
            "url": "***/releases/assets/53",
            "id": 53,
            "name": "<program>.exe",
            "label": null,
            "content_type": "application/x-msdownload",
            "state": "uploaded",
            "size": 36023208,
            "download_count": 10,
            "created_at": "2017-10-10T17:40:32Z",
            "updated_at": "2017-10-10T17:40:32Z",
            "browser_download_url": "***/1.0.6/<program>.exe"
        }
    ],
    "tarball_url": "***/tarball/1.0.6",
    "zipball_url": "***/zipball/1.0.6",
    "body": "<description of release>"
}
我的问题是,是否有任何方法可以从该链接下载,而无需显式登录并仅使用令牌和标题?
最好的办法是什么? 是否有任何包装器或库可以帮助我以不同的方式实现这一点? 非常感谢


编辑:此外,应该注意的是,当请求tarball和zip URL时,压缩的源代码文件可以很好地下载。这里的问题是我有一个不合适的构建环境,所以我希望下载可执行文件。有趣的是,我没有像使用build exe那样在ZIP中遇到身份验证问题。

我相信已经找到了解决方案。本质上,我需要获取所需版本的资产id,然后将Accept头作为应用程序/八位字节流包含在内。只需在发布端点中获取所需版本的资产id,设置标题,然后点击此端点:
/repos/:owner/:repo/releases/assets/:id

编辑:这是工作和功能为我。要标记为答案=)

response = session.get(release_endpoint_response.json()['assets'][0]['browser_download_url'], headers={'Authorization': 'token <personal_access_token>'})