Github:我可以查看回购的下载数量吗?


139

在Github中,有什么方法可以查看回购的下载数量吗?


克隆计数是提供给授权用户通过使用Github上的用户名/密码刮的是下载计数资源文件释放。似乎不可能从公共仓库获取克隆计数或下载非资产文件(即仓库tar.gzzip文件)的统计信息。
艾伦·卢斯

1
任何人阅读的答案,下面提供释放DOWNLOAD_COUNT给出的所有脚本是错误的,因为他们没有考虑到GitHub的分页系统,并且只给出总的最近30个版本,
Qiri

Answers:


116

更新2019:

Ustin答案指出:


更新2017

你仍然可以使用GitHub的API获取你的下载次数版本(这是不正是什么要求)
请参阅“ 得到一个版本 ”的download_count领域。

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

Git 2.14.2发布


2014年8月更新

GitHub还在其“流量图
”中提出了要回购的克隆数量:请参见“ 克隆图

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


2013年10月更新

下面andyberry88所述,正如我在去年7月所详述的那样,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 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

您只能看到它是否具有下载。


1
这包括ZIP下载还是克隆?
MarzSocks 2015年

1
@MarzSocks,如果您谈论download_count的是发布API 的领域,则应包括发布下载的数量(并非始终为zip,也不是克隆)
VonC 2015年

@MarzSocks,如果您谈论的是“克隆数量”,则不应包含zip下载。仅git clone实例。请与GitHub支持联系以进行确认。
VonC 2015年

@danielsp尚未正式记录在案:help.github.com/articles/viewing-traffic-to-a-repository。但是是的,我也看不到它了:github.com/docker/docker/graphs/contributors
VonC

自动生成的源归档文件显然不是资产。(请参阅此评论
olejorgenb

81

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


5
我不断收到“此项目没有发布”或“该项目不存在”的消息。我在做什么错?
亚历克斯2015年

我收到相同的消息。那是不对的。
cryptic0 '16

3
是的 我也是。似乎这个应用程式很久以前就停止运作。
Daan van den Bergh,

1
此应用程序是不正确的,因为它仅包含GitHub在API响应中给出的30个最新版本,详细信息如下:developer.github.com/v3/guides/traversing-with-pagination 必须从标头中提供的“下一个”链接以计算正确的总数。一个回购示例是slamdata / quasar,其中此方法给出了非常错误的总数。
Qiri

申请数仅与发行回购协议
SM帕特

12

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的这一部分仍处于预览期ATM中,因此可能会更改。

2013年11月更新:

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

继续添加'Accept'标头不会有任何危害。


我是否认为github当前不再downloads在资产中显示字段(至少使用此技术)是不对的?
Demis,2015年

这种方法似乎仍然对我有用。download_count是指示下载次数的字段-例如在api.github.com/repos/twbs/bootstrap/releases中。值得注意的是,此列表中仅显示“发行版”,显示在存储库发行版页面中的标签未出现在API列表中,请参阅developer.github.com/v3/repos/releases。例如github.com/jquery/jquery/releases在releases部分下列出了几个标签,但是api.github.com/repos/jquery/jquery/releases返回了一个空列表。
andyberry88

谢谢!即使某些标签设置为“ releases”,我的Repo似乎也没有这样的字段-这不算压缩/压缩发行版的下载量(如果,则省略该字段count=0)?还是仅显示克隆请求的字段?看到这个,没有download_countapi.github.com/repos/demisjohn/pytrimsetup/releases。相应的github页面在这里:github.com/demisjohn/pyTRIMSetup/releases
Demis

下载计数仅适用于发布资产,不适用于该标记的源代码档案。如果您看一下我在上面提供的引导URL,则它们具有bootstrap-XYZ-dist.zip与该download_count字段相关的资产。如果要查看有多少人正在下载发行版,则需要上载发行版zip。据我所知,无法看到有多少人通过API克隆/下载了档案。图形视图(来自上面的stackoverflow.com/a/4339085/2634854)可能会为您提供所需的信息。
andyberry88

感谢您的澄清。这些图确实很有帮助。
Demis

12

访客计数应该在您的信息中心>流量(或统计信息或见解)下可用:

在此处输入图片说明


7

以前,Github中有两种下载代码的方法:克隆或以.git存储库的形式下载,或上传文件(例如,二进制文件)供以后下载。

下载软件库(克隆或以zip下载)时,Github不会因为技术限制而将下载次数计算在内。克隆存储库是只读操作。无需身份验证。可以通过许多协议(包括HTTPS)完成此操作,HTTPS是网页在浏览器中显示存储库所使用的协议。很难计数。

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

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

参见:https : //github.com/blog/1302-goodbye-uploads


7

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


我在任何地方都能看到使用此示例的示例?可以将其添加到Github徽章吗?如果不能,是否可以使用Google Analytics(分析)以某种方式将下载计数计入Github徽章?
eonist

6

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

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

接下来,在数据中找到您要查找的项目的ID。它应该在网址附近的顶部附近。然后,导航至

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

名为download_count的字段就是您的答案。

编辑:大写与您的用户名和项目名称有关


为什么我的资产没有内容,只显示“ []”
Griffan

您输入的所有内容都正确吗?确保您已经发布并正在检查正确的项目。
LeChosenOne

我发现它们仅跟踪发行中的二进制文件,而不跟踪源代码的tarball或zip,这很糟糕
Griffan

对。发布是要分发给他人的二进制文件,而不是开发人员的源代码。
LeChosenOne

5
这仍然有效吗?我得到:{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
eonist

5

Github API不再提供所需的信息。看看Stan Towianski的回答中提到的发行页面。正如我们在对该答案的评论中讨论的那样,Github API仅报告每个版本他提供的三个文件中的1个文件的下载。

我已经检查了解决方案,并在此问题的其他一些答案中提供了该解决方案。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用户名,填写'mdcsvimporter2015'作为存储库名称,您将看到类似以下内容:

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

las,再次只有一个报告,没有下载tar.gz和zip文件。我已经仔细检查了Github API返回的信息,但未在任何地方提供。如今,API确实返回的download_count远未完成。


5

要检查下载发行文件/软件包的次数,可以访问 https://githubstats0.firebaseapp.com

它为您提供了总下载数量以及每个版本标签的总下载量的细分。


请注意,这仅适用于发行版中的二进制文件,不适用于源代码本身,这意味着如果您不上传任何其他要下载的文件,则该文件将不会计入。它可能使用了LeChosenOne的答案中的Github API。
JoniVR

3

我最终写了一个刮板脚本来查找克隆数量:

#!/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为仅.看得到漂亮的那些。


2

基于VonC和Michele Milidoni的答案,我创建了此小书签该小书签显示github托管发行的二进制文件的下载统计信息。

注意:由于浏览器存在与内容安全策略实施相关的问题,因此书签小册可能会暂时违反某些CSP指令,并且在启用CSP的情况下在github上运行时,基本上可能无法正常运行。

尽管不建议使用它,但是您可以在Firefox中禁用CSP作为一种临时解决方法。打开about:config并将security.csp.enable设置为false。


2

为了使这一点更加清楚:
对于这个github项目:stant / mdcsvimporter2015
https://github.com/stant/mdcsvimporter2015
,其发行版位于
https://github.com/stant/mdcsvimporter2015/releases

去HTTP或HTTPS(注意:添加了“API”和“/回购”)
https://api.github.com/repos/stant/mdcsvimporter2015/releases

您将获得此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"

或在命令行上执行:
wget --no-check-certificate https://api.github.com/repos/stant/mdcsvimporter2015/releases


据我所知,github只计算您提供的三个下载文件中的第一个,例如mdcsvimporter-beta-18.zip。您是否找到一种方法来下载诸如v19.zip之类的东西?
Jan Ehrhardt

我只有md2015的3个版本,而v19是第一个显示的版本。v19出现在此帖子之后,因此此处未显示。您是否访问了网址:-)?“ download_count”:31,“ created_at”:“ 2015-03-26T04:22:13Z”,“ updated_at”:“ 2015-03-26T04:22:13Z”,“ browser_download_url”:
Stan Towianski


你好 我什至不知道您在哪里想出这些下载网址,但这是github的问题。它似乎只计算我发布的文件(3),甚至不计算它创建的源zip文件(每个发布中另外2个)。我为自己编写了一个Java应用程序,我运行该应用程序进行此调用,返回json,然后解析并仅显示下载计数。
Stan Towianski

太糟糕了。显然Github没有提供我们需要的信息(是吗?)。在github.com/stant/mdcsvimporter2015/releases上的3 * 3文件中,它仅报告其自身发布文件的doenload_count,而不报告* .tar.gz和* .zip文件。我将单独回答,因为它会影响所有其他解决方案。
Jan Ehrhardt

1

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

对于使用WordPress的用户,我开发了此插件:GitHub Release Downloads。它使您可以获得GitHub存储库的下载数量,链接和更多信息。

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

例: 例




0

对于那些需要使用Python解决方案的人,我编写了一个简单的脚本。


Python脚本:


用法:

ghstats.py [user] [repo] [tag] [options]


支持:

  • 开箱即用地支持Python 2Python 3
  • 既可以用作独立模块,也可以用作Python模块。

0

这是使用该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))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.