Github : 리포지토리의 다운로드 수를 볼 수 있습니까?


139

Github에서 리포지토리의 다운로드 수를 볼 수있는 방법이 있습니까?


복제 횟수는 릴리스자산 파일 다운로드 횟수 와 마찬가지로 Github 사용자 이름 / 암호스크랩 하여 인증 된 사용자가 사용할 수 있습니다 . 퍼블릭 리포지토리에서 클론 수를 얻거나 비 자산 파일 (예 : 리포 및 파일)에서 통계를 다운로드하는 것은 불가능 합니다. tar.gzzip
Allen Luce

1
답변을 읽는 사람에게는 GitHub의 페이지 매김 시스템을 고려하지 않고 가장 최근 30 개의 릴리스에 대해서만 전체를 제공하므로 릴리스 download_count를 제공하는 아래에 제공된 모든 스크립트가 잘못되었습니다.
Qiri

답변:


116

2019 업데이트 :

Ustin답변 은 다음과 같습니다.

  • API /repos/:owner/:repo/traffic/clones, 하루 또는 주당 총 클론 수 및 분석 수를 가져 오려면 지난 14 일 동안 만 사용하십시오.
  • 아래 언급 된 /repos/:owner/:repo/releases/:release_id필드의 자산 (릴리스에 첨부 된 파일)의 다운로드 수를 가져 오기위한 API download_count이지만, 주석 이 표시된대로 최신 30 개 릴리스에 대해서만 ..

2017 업데이트

여전히 GitHub API 를 사용 하여 릴리스 의 다운로드 수얻을 수 있습니다 ( 정확히 요청 된 것은 아님 ) . 필드의 " 단일 릴리스 가져 오기
"를 참조하십시오 .download_count

더 이상 리포 클론 수를 나타내는 트래픽 화면이 없습니다.
대신 다음과 같은 타사 서비스를 사용해야합니다.

힘내 2.14.2 릴리스


2014 년 8 월 업데이트

또한 GitHub는 트래픽 그래프에서 리포에 대한 클론 수를 제안합니다.
" 복제 그래프 "

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


2013 년 10 월 업데이트

andyberry88 에 의해 아래 에 언급 된 바와 같이 , 지난 7 월에 자세히 설명 했듯이 GitHub는 이제 필드가진 릴리스 ( API 참조)를 제안 합니다 .download_count

Michele Milidoni자신의 (공개 된) 답변 에서 파이썬 스크립트 에서 해당 필드를 사용합니다 .
( 매우 작은 추출물 )

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

다운로드가 있는지 여부 만 볼 수 있습니다.


1
여기에는 ZIP 다운로드 또는 복제본 만 포함됩니까?
MarzSocks

1
@MarzSocks download_count릴리스 API 의 필드에 대해 이야기하는 경우 릴리스 다운로드 수 (항상 압축되지 않고 복제되지는 않음)를 포함해야합니다.
VonC

@MarzSocks "복제본 수"에 대해 이야기하는 경우 zip 다운로드를 포함하지 않아야합니다. git clone인스턴스 만 . 확인을 위해 GitHub 지원에 문의하십시오.
VonC

@danielsp는 아직 공식적으로 문서화되어 있습니다 : help.github.com/articles/viewing-traffic-to-a-repository . 그러나 예, 더 이상 보이지 않습니다 : github.com/docker/docker/graphs/contributors
VonC

자동 생성 된 소스 아카이브 파일은 명백하게 자산 이 아닙니다 .. ( 이 의견 참조 )
olejorgenb

81

Github의 모든 프로젝트 릴리스에서 모든 자산의 다운로드 수를 보여주기 위해 자바 스크립트 로 작은 웹 응용 프로그램 을 작성했습니다 . 여기에서 응용 프로그램을 시험해 볼 수 있습니다 : http://somsubhra.github.io/github-release-stats/


5
'이 프로젝트에 대한 릴리스가 없습니다'또는 '프로젝트가 없습니다'메시지가 계속 나타납니다. 내가 뭐가 틀렸어?
Alex

같은 메시지가 나타납니다. 맞지 않아요
cryptic0

3
네. 나도. 이 앱이 오래 전에 작동을 멈춘 것 같습니다.
Daan van den Bergh

1
이 응용 프로그램은 API 응답에 GitHub에서 제공 한 최신 릴리스 30 개만 여기에 설명되어 있으므로 올바르지 않습니다. developer.github.com/v3/guides/traversing-with-pagination 다음 페이지를 반복해야합니다. 정확한 총계를 계산하기 위해 헤더에 제공된 "다음"링크. 예를 들어 repo는 slamdata / quasar입니다.이 방법에서는 총계가 잘못되었습니다.
Qiri

응용 프로그램은 릴리스 된 저장소 만 카운트
SM Pat

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자산에 필드를 더 이상 표시하지 않는다고 생각하는 것이 잘못 입니까 (적어도이 기술을 사용함)?
데미스

이 방법은 여전히 ​​저에게 효과적입니다. 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

감사! 내 태그는 일부 릴리스가 "릴리스"로 설정되어 있어도 해당 필드가없는 것 같습니다. 압축 / 타르볼 릴리스의 다운로드 수를 계산하지 않습니다 (또는 경우 필드는 생략 됨 count=0)? 아니면 복제 요청에 대한 필드 만 표시합니까? 아니오,이 참조 download_count: api.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으로 복제 또는 다운로드하거나 나중에 다운로드 할 수 있도록 파일 (예 : 바이너리)을 업로드합니다.

리포지토리 (복제 또는 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

언급 한 바와 같이, GitHub API는 바이너리 파일 릴리즈의 다운로드 횟수를 반환합니다. 명령 줄별로 다운로드를 쉽게 얻을 수 있는 작은 스크립트 를 개발했습니다 .


어디에서 나이 예제를 볼 수 있습니까? Github 배지에 추가 할 수 있습니까? 그렇지 않다면 Google 애널리틱스를 사용하여 Github 배지의 다운로드 수를 어떻게 얻을 수 있습니까?
eonist

6

매우 늦었지만 여기에 원하는 대답이 있습니다.

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라는 필드가 답입니다.

편집 : 사용자 이름 및 프로젝트 이름의 대문자 문제


내 자산에 내용이없고 "[]"만 표시하는 방법
Griffan

모든 것을 올바르게 입력 했습니까? 릴리스가 있고 올바른 프로젝트를 확인하고 있는지 확인하십시오.
LeChosenOne

소스 코드 tarball 또는 zip이 아닌 릴리스 된 바이너리 파일 만 추적한다는 사실을
알았습니다.

예. 릴리스는 개발자를위한 소스 코드가 아닌 다른 사람에게 배포 할 바이너리입니다.
LeChosenOne

5
여전히 작동합니까? 임 점점 :{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
eonist

5

Github API는 더 이상 필요한 정보를 제공하지 않습니다. Stan Towianski의 답변 에서 언급 된 릴리스 페이지를 살펴보십시오 . 해당 답변에 대한 의견에서 논의한 바와 같이 Github API는 릴리스 당 3 가지 파일 중 하나의 다운로드 만보고합니다.

이 질문에 대한 다른 답변으로 제공된 솔루션을 확인했습니다. 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'를 입력하고 리포지토리 이름으로 'mdcsvimporter2015'를 입력하면 다음과 같은 내용이 표시됩니다.

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

아아, 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 호스팅 릴리스 바이너리의 다운로드 통계를 표시하는 이 책갈피 를 작성 했습니다.

참고 : Content Security Policy 구현과 관련된 브라우저 문제로 인해 책갈피가 일부 CSP 지시문을 일시적으로 위반할 수 있으며 CSP가 활성화 된 상태에서 github에서 실행할 때 기본적으로 제대로 작동하지 않을 수 있습니다.

권장하지는 않지만 Firefox에서 임시 해결 방법으로 CSP를 비활성화 할 수 있습니다. about : config를 열고 security.csp.enable을 false로 설정하십시오.


2

더 명확하게
하기 위해이 github 프로젝트의 경우 :
https://github.com/stant/mdcsvimporter2015/releases
에 릴리스 된 stant / mdcsvimporter2015
https://github.com/stant/mdcsvimporter2015

http 또는 https로 이동 : ( "api."및 "/ repos"추가)
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과 같은 download_count를 얻는 방법을 찾은 적이 있습니까?
Jan Ehrhardt

나는 md2015에 대한 3 개의 릴리스 만 가지고 있으며 v19가 첫 번째 릴리스입니다. v19는이 게시물 뒤에 왔으므로 여기에 표시되지 않습니다. 당신은 URL에 갔습니까 :-)? "download_count": 31, "created_at": "2015-03-26T04 : 22 : 13Z", "updated_at": "2015-03-26T04 : 22 : 13Z", "browser_download_url":
Stan Towianski


안녕하세요. 나는 당신이 그 다운로드 URL을 어디에서 생각해 냈는지조차 확실하지 않지만, 그것은 github에 대한 질문입니다. 그것은 내가 릴리스 한 파일 (3) 만 계산하는 것으로 보이며 생성 한 소스 zip 파일 (내 릴리스 당 다른 2 개)조차도 계산하지 않습니다. 나는이 전화를하고 json을 다시 가져 와서 파싱하고 다운로드 횟수 만 표시하기 위해 실행되는 Java 응용 프로그램을 직접 작성했습니다.
Stan Towianski

너무 나쁘다. 분명히 Github은 우리가 필요로하는 정보를 더 이상 제공하지 않습니다 (더 이상?). github.com/stant/mdcsvimporter2015/releases에 있는 3 * 3 파일 중 * .tar.gz 및 * .zip 파일이 아니라 릴리스 파일의 doenload_count 만보고합니다. 다른 모든 솔루션에 영향을 미치기 때문에 별도의 답변을 드리겠습니다.
Jan Ehrhardt

1

이미 언급했듯이 API를 통해 릴리스 에 대한 정보를 얻을 수 있습니다 .

WordPress를 사용하는 사람들을 위해이 플러그인을 개발했습니다 : GitHub Release Downloads . GitHub 리포지토리 릴리스에 대한 다운로드 수, 링크 및 추가 정보를 얻을 수 있습니다.

원래 질문을 해결하기 위해 단축 코드 [grd_count user="User" repo="MyRepo"]는 리포지토리의 다운로드 수를 반환합니다. 이 숫자는 하나의 GitHub 리포지토리에 대한 모든 릴리스의 모든 다운로드 횟수 값의 합계에 해당합니다.

예: 예




0

파이썬에서 솔루션이 필요한 사람들을 위해 간단한 스크립트를 작성했습니다.


파이썬 스크립트 :


용법:

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


지원하다:

  • 기본적으로 Python 2Python 3을 모두 지원합니다 .
  • 독립형 모듈과 Python 모듈 모두로 사용할 수 있습니다.

0

다음은 pip install PyGithub패키지를 사용하는 파이썬 솔루션입니다

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))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.