Github:我能看到一个仓库的下载次数吗?

211

在 Github 中,有没有一种方法可以查看存储库的下载次数?


授权用户可以通过使用Github用户名/密码爬取来获取克隆计数,以及在发布中下载资产文件的计数。似乎无法从公共存储库中获取克隆计数或非资产文件(即存储库tar.gzzip文件)的下载统计信息。 - Allen Luce
2
对于阅读答案的任何人,下面提供的所有脚本都是错误的,因为它们没有考虑GitHub的分页系统,仅提供最近30个版本的总计数。 - Qiri
是的,@Qiri,你说得对,我找到了另一种答案,我在这里发布它。 - Edison Pebojot
@Qiri 请查看我的回答 - 包括三种解决方案(Web,Node.js,Python),均支持分页。 - kefir500
21个回答

152

更新2019年:

Ustinanswer指向:


2017年更新

您仍然可以使用GitHub API获取您的发布版的下载次数(这不完全是所要求的)
请参阅 "获取单个版本",其中包含download_count字段。

不再有显示存储库克隆数量的流量屏幕。
相反,您必须依赖第三方服务,例如:

Git 2.14.2 release


2014年8月更新

GitHub在其Traffic图表中还提供了repo克隆的数量:
请参见 "Clone Graphs"。

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


2013年10月更新

下面所述,由andyberry88提到,并且如我去年七月详细说明的那样,GitHub现在提出发布(请参见其API),其中包含一个download_count字段

Michele Milidoni他的(得到赞同的)答案中使用了该字段在他的Python脚本中。(非常小的摘录

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存储库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

您只能看到它是否已经下载。


亚当·贾戈什评论中报告说:

I got it to work with

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

A couple of things that I had wrong:

  • I needed an actual Github release (not just git tag, even though Github does display those under releases, ugh).
  • And the release needs an asset file other than the zipped source that is added automatically in order to get the download count.

2
这是否包括ZIP下载还是只有克隆? - MarzSocks
1
@MarzSocks 如果你在谈论发布 API 的 download_count 字段,那应该包括发布下载次数(这些下载不总是 zip 格式,也不是克隆)。 - VonC
@MarzSocks,如果你在谈论“克隆数量”,那不应该包括zip下载。只计算git clone的实例。请向GitHub支持团队确认。 - VonC
1
@danielsp 目前它仍然是官方文档:https://help.github.com/articles/viewing-traffic-to-a-repository/。但是,我也没有看到它了:https://github.com/docker/docker/graphs/contributors - VonC
@truf 谢谢。我已经相应地更新了链接。 - VonC
显示剩余7条评论

111

5
我不断收到“该项目没有发布”或“该项目不存在”的消息。我做错了什么? - Alex
3
好的,我会尽力进行翻译:是的,我也是。看起来这个应用程序很久以前就停止工作了。 - Daan van den Bergh
2
这个应用程序不正确,因为它只包括GitHub API响应中最近的30个版本,详见:https://developer.github.com/v3/guides/traversing-with-pagination/。需要通过在头部给出的“next”链接迭代页面来计算正确的总数。一个示例repo是slamdata/quasar,使用这种方法会得到一个极其不准确的总数。 - Qiri
1
它运行了相当长的一段时间(与这里的评论相反),但又停止工作了。有没有再次让它工作的机会? - hugo der hungrige
1
目前对我来说正在工作..显然你需要在“Github用户名”字段中放置存储库作者的用户名,而不一定是你自己的。 - velkoon
显示剩余4条评论

13

在你的仪表板>流量(或统计信息或见解)下应该提供访问者计数:

输入图像描述


13

GitHub已经弃用了下载支持,现在支持'Releases' - 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目前不再在资产中显示“下载”字段(至少使用这种技术)? - Demis
这种方法对我仍然有效。download_count是指示下载次数的字段 - 例如在 https://api.github.com/repos/twbs/bootstrap/releases 中。 值得注意的是,只有“发布”才会显示在此列表中,出现在存储库发布页面中的标签不会出现在API列表中,请参见https://developer.github.com/v3/repos/releases/。例如,https://github.com/jquery/jquery/releases 在发布部分下列出了几个标签,但是在 https://api.github.com/repos/jquery/jquery/releases 中返回了一个空列表。 - andyberry88
谢谢!我的仓库似乎没有这样一个字段,即使一些标签设置为“发布” - 这并不包括已下载的压缩/ tarballed 发布(或者如果 count=0 就省略了该字段)?还是只显示 Clone 请求的字段?请参见此处,其中没有 download_count:https://api.github.com/repos/demisjohn/pytrimsetup/releases。该页面的 GitHub 页面在此处:https://github.com/demisjohn/pyTRIMSetup/releases。 - Demis
下载计数仅适用于发布资产,而不适用于标记的源代码存档。如果您查看我上面提供的引导程序URL,它们具有与download_count字段相关的bootstrap-XYZ-dist.zip资产。如果您想查看有多少人正在下载发布版,则需要上传发布版zip文件。据我所知,没有办法通过API查看有多少人克隆/下载了存档。但是,从上面的https://dev59.com/c2855IYBdhLWcg3wcz5h#4339085中的图形视图可能会给您想要的结果。 - andyberry88
感谢您的澄清。这些图确实很有帮助。 - Demis

9

8

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


有没有任何地方可以看到这个的使用示例?它能添加到 Github 徽章中吗?如果不能,是否可能通过 Google Analytics 来获取下载计数并将其显示在 Github 徽章上? - Sentry.co

7
以前在Github上下载代码有两种方法:克隆或下载.zip格式的.git仓库,或上传文件(例如二进制文件)以备后续下载。
当下载仓库(克隆或下载.zip)时,由于技术限制,Github不会计算下载次数。克隆存储库是只读操作,不需要身份验证。此操作可以通过多种协议完成,包括HTTPS,与网页用于在浏览器中显示存储库的协议相同。这很难统计。
参见:http://git-scm.com/book/en/Git-on-the-Server-The-Protocols 最近,Github弃用了下载功能。这是因为他们认识到Github专注于构建软件,而不是分发二进制文件。
参见:https://github.com/blog/1302-goodbye-uploads

7
要查看一个发布文件/软件包被下载的次数,您可以访问https://githubstats0.firebaseapp.com。它会给出总下载次数以及每个发布标签的下载次数分布。请注意保留HTML标记。

请注意,这仅适用于发布的二进制文件,而不是源代码本身,这意味着如果您没有上传任何其他要下载的文件,则不会计入统计。它可能使用了LeChosenOne答案中的Github API。 - JoniVR
同时它不会计算 ghcr.io 镜像。 - akostadinov

7
很晚了,但这是你想要的答案:
非常晚,但这里是您想要的答案:
https://api.github.com/repos/ [git username] / [git project] /releases

接下来,在数据中找到你要查找的项目的id。它应该在靠近顶部的位置,紧挨着urls旁边。然后,导航到

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

下载次数字段就是你要找的答案。

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


我的资产为什么没有内容,只显示“[ ]”? - Griffan
你是否输入了正确的内容?请确保已经发布并检查了正确的项目。 - voice
我发现他们只跟踪发布的二进制文件,而不是源代码tarball或zip文件,这太糟糕了。 - Griffan
是的。发布版是要分发给其他人的二进制文件,而不是开发者使用的源代码。 - voice
6
这还有效吗?我收到了以下的信息:{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3" } - Sentry.co
我回到家后会稍后检查。现在正在上课。 - voice

5
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在其中安装了解决方案,如他的回答中所提到的。在Github用户名中填入'stant',在Repository名称中填入'mdcsvimporter2015',您将看到以下信息:

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

哎呀,又是一份没有tar.gz和zip文件下载的报告。我仔细研究了Github API返回的信息,但它并没有提供这些文件的下载链接。现在API返回的download_count也远远不完整。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接