正在下载Github通过API发布

正在下载Github通过API发布

问题描述:

我正试图在我公司的企业github服务器上下载回购版本。我有适当的授权标题与OAuth令牌,并能够获得发布端点的响应。这个特殊的回购有源代码的zip和tarball以及一个编译的可执行文件。构建的可执行文件就是我正在尝试下载的文件。释放请求的响应如下所示,assets密钥中的browser_download_url密钥是感兴趣的。正在下载Github通过API发布

{ 
    "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>" 
} 

然而,当我试图要求browser_download_url我得到的HTML登录页面的响应的内容,因为它正在寻求进一步的验证。

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

我的问题是有没有办法从这个链接下载,而无需显式登录并简单地使用令牌和标题?
什么是最好的方式去做这件事? 是否有任何包装或库可以帮助我以不同的方式实现这一目标? 非常感谢!

编辑:此外,应该指出的是,当请求tarball和zip网址时,压缩的源代码文件可以正常下载。这里的问题是我有一个不适合的编译环境,所以我想下载可执行文件。有趣的是,我没有与zip一样的身份验证问题,因为我使用build exe。

我相信已经找到了解决方案here。基本上我需要获取所需版本的资产ID,然后将Accept头作为application/octet-stream包含。只需在发布端点获取资源的ID,然后点击该端点:/repos/:owner/:repo/releases/assets/:id

编辑:这对我来说是工作和功能。被标记为答案=)