Github:我能看到回购的下载数量吗?

在Github中,是否有一种方法可以让我看到回购的下载数量?

147519 次浏览

2019年更新:

贾斯廷回答指向:


更新2017

你仍然可以使用GitHub API获取版本的下载计数(这不是被问到的完全)
参见&;__abc1 &;, download_count字段

不再有流量屏幕提到回购克隆的数量。
相反,您必须依赖第三方服务,例如:

Git 2.14.2 release


2014年8月更新

GitHub还在其流量图中提出了回购的克隆数量:
看到“克隆图" < / p >

http://i.stack.imgur.com/uycEZ.png


2013年10月更新

正如所提到的下面andyberry88,并作为我去年七月详述, GitHub现在提出了释放(见它的API),其中有一个download_count字段

米歇尔Milidoni,在他的回答(被点赞)中,在他的python脚本中使用该字段。
(非常小的提取) < / p >

c.setopt(c.URL, 'https://api.github.com/repos/' + full_name + '/releases')
for p in myobj:
if "assets" in p:
for asset in p['assets']:
print (asset['name'] + ": " + str(asset['download_count']) +
" downloads")

原答案(2010年12月)

我不确定你能看到这些信息(如果它被记录的话),因为我在GitHub Repository API中没有看到它:

$ curl http://github.com/api/v2/yaml/repos/show/schacon/grit
---
repository:
:name: grit
:owner: schacon
:source: mojombo/grit # The original repo at top of the pyramid
:parent: defunkt/grit # This repo's direct parent
:description: Grit is a Ruby library for extracting information from a
git repository in an object oriented manner - this fork tries to
intergrate as much pure-ruby functionality as possible
:forks: 4
:watchers: 67
:private: false
:url: http://github.com/schacon/grit
:fork: true
:homepage: http://grit.rubyforge.org/
:has_wiki: true
:has_issues: false
:has_downloads: true

你只能看到它是否有下载。


亚当Jagosz报告在评论中:

我用它来工作

 curl -H "Accept: application/vnd.github.v3+json"   https://api.github.com/repos/:user/:repo/releases

我做错了几件事:

  • 我需要一个实际的Github发布(不仅仅是git标签,即使Github确实显示这些下发布,额)。
  • 发行版需要一个资产文件,而不是自动添加的压缩源代码,以便获得下载计数。

以前,在Github中有两种下载代码的方法:克隆或作为zip下载一个.git repo,或上传一个文件(例如,二进制文件)供以后下载。

当下载一个回购(克隆或下载压缩),Github不计算下载数量的技术限制。克隆存储库是一个只读操作。不需要身份验证。这个操作可以通过许多协议来完成,包括HTTPS, web页面在浏览器中显示回购时使用的协议。很难数出来。

看:http://git-scm.com/book/en/Git-on-the-Server-The-Protocols

最近,Github弃用了下载功能。这是因为他们明白Github专注于构建软件,而不是分发二进制文件。

看:https://github.com/blog/1302-goodbye-uploads

GitHub已经弃用下载支持,现在支持“发布”- https://github.com/blog/1547-release-your-software。要创建一个版本,要么使用GitHub UI,要么创建一个带注释的标签(http:// git-scm.com/book/ch2-6.html),并在GitHub中添加发布说明。然后,您可以将二进制文件或“资产”上传到每个版本。

一旦你发布了一些版本,GitHub API支持获取关于它们及其资产的信息。

curl -i \
https://api.github.com/repos/:owner/:repo/releases \
-H "Accept: application/vnd.github.manifold-preview+json"

寻找‘download_count’条目。有更多的信息在http://developer.github.com/v3/repos/releases/。这部分API仍然处于预览期,所以可能会有变化。

2013年11月更新:

GitHub的发布API现在已经过了预览期,因此不再需要“Accept”标头- http://developer.github.com/changes/2013-11-04-releases-api-is-official/

不过,继续添加'Accept'标头不会造成任何伤害。

如前所述,GitHub API返回二进制文件发布的下载计数。我开发了一个小脚本,通过命令行轻松获得下载计数。

基于VonC和Michele Milidoni的答案,我创建了这个书签,显示github托管发布二进制文件的下载统计数据。

注意:由于与内容安全策略实现相关的浏览器问题, bookmarklet可能会暂时违反一些CSP指令,并且在启用CSP时在github上运行时基本上可能无法正常工作。

虽然这是非常不鼓励的,你可以禁用CSP在Firefox作为一个 临时的解决方案。打开about:config并设置security.csp.enable 假的。< / p >

我用javascript写了一个小型web应用程序,用于显示Github上任何项目可用版本中所有资产的下载数量。你可以在这里试试这个应用:http://somsubhra.github.io/github-release-stats/

访问者数量应该可以在你的仪表板>流量(或统计数据或见解):

enter image description here

为了让这个更清楚:
对于这个github项目:stant/ mdcsvimportter2015
https://github.com/stant/mdcsvimporter2015 < br > 在
发布 https://github.com/stant/mdcsvimporter2015/releases < / p >

转到HTTP或https:(注意添加了“api.”和“/repos”)
https://api.github.com/repos/stant/mdcsvimporter2015/releases < / p >

你会得到这个json输出,你可以搜索"download_count":

    "download_count": 2,
"created_at": "2015-02-24T18:20:06Z",
"updated_at": "2015-02-24T18:20:07Z",
"browser_download_url": "https://github.com/stant/mdcsvimporter2015/releases/download/v18/mdcsvimporter-beta-18.zip"

或在命令行do:
https://api.github.com/repos/stant/mdcsvimporter2015/releases

. wget——no-check-certificate

如前所述,你可以获得关于通过API发布的信息。

对于那些使用WordPress的人,我开发了这个插件:GitHub Release Downloads。它可以让你获得下载计数,链接和更多的信息发布GitHub存储库。

为了解决最初的问题,短代码[grd_count user="User" repo="MyRepo"]将返回存储库的下载数。这个数字对应于一个GitHub存储库的所有版本的所有下载计数值的总和。

示例:Example

Github API不再提供所需的信息。看一看发布页面,在Stan Towianski的回答中提到。正如我们在回答的评论中讨论的那样,Github API只报告他每次发布的三个文件中的一个的下载量。

我已经检查了解决方案,在这个问题的其他一些答案。Vonc的回答给出了Michele Milidoni的解决方案的基本部分。我安装了他的gdc脚本,结果如下

# ./gdc stant
mdcsvimporter.mxt: 37 downloads
mdcsvimporter.mxt: 80 downloads
How-to-use-mdcsvimporter-beta-16.zip: 12 downloads

正如您可以清楚地看到的,gdc没有报告tar.gz和zip文件的下载计数。

如果你想在不安装任何东西的情况下进行检查,请尝试Somsubhra安装解决方案的网页,在他的回答中提到。填写“stant”作为Github用户名和“mdcsvimportter2015”作为存储库名称,你会看到如下内容:

Download Info:
mdcsvimporter.mxt(0.20MB) - Downloaded 37 times.
Last updated on 2015-03-26

唉,还是只有一个没有下载tar.gz和zip文件的报告。我仔细检查了Github的API返回的信息,但它没有提供任何地方。目前,API返回的download_count还远远不够完整。

我创建了三个解决方案来获取GitHub版本的下载计数和其他统计数据。这些实现中的每一个都能够累积GitHub API分页结果,这意味着计算下载总数不是问题。

Web应用程序

.

Node.js实现

.js实现

Python Implementation

.

我最终写了一个scraper脚本来查找我的克隆计数:

#!/bin/sh
#
# This script requires:
#   apt-get install html-xml-utils
#   apt-get install jq
#
USERNAME=dougluce
PASSWORD="PASSWORD GOES HERE, BE CAREFUL!"
REPO="dougluce/node-autovivify"


TOKEN=`curl https://github.com/login -s -c /tmp/cookies.txt | \
hxnormalize | \
hxselect 'input[name=authenticity_token]' 2>/dev/null | \
perl -lne 'print $1 if /value=\"(\S+)\"/'`


curl -X POST https://github.com/session \
-s -b /tmp/cookies.txt -c /tmp/cookies2.txt \
--data-urlencode commit="Sign in" \
--data-urlencode authenticity_token="$TOKEN" \
--data-urlencode login="$USERNAME" \
--data-urlencode password="$PASSWORD" > /dev/null


curl "https://github.com/$REPO/graphs/clone-activity-data" \
-s -b /tmp/cookies2.txt \
-H "x-requested-with: XMLHttpRequest" | jq '.summary'

这将从相同的端点获取数据,Github的克隆图使用,并从它吐出总数。该数据还包括每天的计数,将.summary替换为.以查看这些漂亮的打印。

很晚了,但这是你想要的答案:

https://api.github.com/repos/ [git username] / [git project] /releases

接下来,在数据中找到您要查找的项目的id。它应该在顶部附近,在url旁边。然后,导航到

https://api.github.com/repos/ [git username] / [git project] /releases/ [id] / assets

名为download_count的字段就是答案。

编辑:在你的用户名和项目名中大写字母很重要

要检查一个发布文件/包被下载的次数,你可以去https://githubstats0.firebaseapp.com

它会给你一个总下载计数和每个发布标签的总下载的细分。

2019年的答案:

  1. 对于克隆的数量,您可以使用https://developer.github.com/v3/repos/traffic/#clones(但请注意,它只返回最近14天的计数)
  2. 为了获取你的资产(附加到发行版的文件)的下载数量,你可以使用https://developer.github.com/v3/repos/releases/#get-a-single-release(正好是资产列表项的"download_count"属性作为响应)

下面是一个使用pip install PyGithub包的python解决方案

from github import Github
g = Github("youroauth key") #create token from settings page




for repo in g.get_user().get_repos():
if repo.name == "yourreponame":
releases = repo.get_releases()
for i in releases:
if i.tag_name == "yourtagname":
for j in i.get_assets():
print("{} date: {} download count: {}".format(j.name, j.updated_at, j._download_count.value))
我做了一个web应用程序,以干净的格式显示GitHub发布统计数据: https://hanadigital.github.io/grev/ < / p >

下面是一个小的python3代码片段,用于检索最后100个版本资产的下载计数

import requests


owner = "twbs"
repo = "bootstrap"
h = {"Accept": "application/vnd.github.v3+json"}
u = f"https://api.github.com/repos/{owner}/{repo}/releases?per_page=100"
r = requests.get(u, headers=h).json()
r.reverse() # older tags first
for rel in r:
if rel['assets']:
tag = rel['tag_name']
dls = rel['assets'][0]['download_count']
pub = rel['published_at']
print(f"Pub: {pub} | Tag: {tag} | Dls: {dls} ")

Pub: 2013-07-18T00:03:17Z | Tag: v1.2.0 | Dls: 1193
Pub: 2013-08-19T21:20:59Z | Tag: v3.0.0 | Dls: 387786
Pub: 2013-10-30T17:07:16Z | Tag: v3.0.1 | Dls: 102278
Pub: 2013-11-06T21:58:55Z | Tag: v3.0.2 | Dls: 381136
...
Pub: 2020-12-07T16:24:37Z | Tag: v5.0.0-beta1 | Dls: 93943

< a href = " https://paiza.io/projects/Kr7TfIWJwK97UlF6I9iRJQ?language=python3" rel="nofollow noreferrer">Demo .

新的实现:

移植到GitHub组合动作重用工作流代码基。

https://github.com/andry81-devops/github-accum-stats

附加功能:

  1. 可以计数流量克隆或/和视图。
  2. 可以使用GitHub组合动作重用工作流代码基:https://docs.github.com/en/actions/creating-actions/creating-a-composite-action

GitHub工作流文件示例:

.github/workflows/ aac - h-clone-stats.yml .github .github/workflows/ aac - h-clone-stats.yml


以前的实现(标记为obsolete):

此实现基于GitHub动作+统计累加到单独的存储库:https://github.com/andry81-devops/github-clone-count-badge

基于:https://github.com/MShawon/github-clone-count-badge

有一些优点:

  1. 存储库跟踪和存储库存储流量统计数据是不同的,你可以直接将统计数据指向提交列表:https://github.com/\{\{REPO_OWNER}}/\{\{REPO}}--gh-stats/commits/master/traffic/clones
  2. 工作流使用accum-traffic-clones.sh bash脚本积累流量克隆
  3. 脚本将统计数据累加到单个文件和一组按年分组并每天分配的文件中:traffic/clones/by_year/YYYY/YYYY-MM-DD.json

GitHub工作流文件示例:

.github/workflows/myrepo-gh-clone-stats.yml

有一个很好的Chrome扩展,它确实是你想要的: GitHub发布下载 < / p >

enter image description here