Github: Tôi có thể xem số lượt tải xuống cho một repo không?


139

Trong Github, có cách nào tôi có thể thấy số lượt tải xuống cho một repo không?


Số lượng bản sao có sẵn cho người dùng được ủy quyền bằng cách sử dụng tên người dùng / mật khẩu Github cũng như số lượt tải xuống các tệp tài sản trong các bản phát hành . Dường như không thể có được số lượng bản sao từ repos công khai hoặc số liệu thống kê tải xuống trên các tệp không phải là tài sản (ví dụ như repo tar.gzzipcác tệp).
Allen Luce

1
Đối với bất kỳ ai đọc câu trả lời, tất cả các tập lệnh được cung cấp bên dưới cung cấp bản phát hành download_count đều sai, vì chúng không tính đến hệ thống phân trang của GitHub và chỉ đưa ra tổng số cho 30 bản phát hành gần đây nhất,
Qiri

Câu trả lời:


116

Cập nhật 2019:

Câu trả lời của Ustin chỉ ra:


Cập nhật 2017

Bạn vẫn có thể sử dụng API GitHub để lấy số lượt tải xuống cho các bản phát hành của mình (không chính xác những gì được yêu cầu)
Xem " Nhận một bản phát hành ", download_counttrường.

Không còn màn hình giao thông đề cập đến số lượng bản sao repo.
Thay vào đó, bạn phải dựa vào các dịch vụ của bên thứ ba như:

Phát hành Git 2.14.2


Cập nhật tháng 8 năm 2014

GitHub cũng đề xuất số lượng bản sao cho repo trong Biểu đồ lưu lượng truy cập của nó:
Xem " Đồ thị bản sao "

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


Cập nhật tháng 10 năm 2013

Như đã đề cập bên dưới bởi andyberry88 , và như tôi trình bày chi tiết tháng Bảy năm ngoái , GitHub tại đề nghị phát hành (xem API của nó ), trong đó download_countlĩnh vực .

Michele Milidoni , trong câu trả lời (nâng cao) của mình , không sử dụng trường đó trong kịch bản python của mình .
( trích xuất rất nhỏ )

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")

Câu trả lời gốc (tháng 12 năm 2010)

Tôi không chắc chắn bạn có thể thấy thông tin đó (nếu nó được ghi lại), vì tôi không thấy thông tin đó trong API Kho lưu trữ GitHub :

$ 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

Bạn chỉ có thể xem nó có tải xuống hay không.


1
Điều này bao gồm tải xuống ZIP hoặc chỉ nhân bản?
MarzSocks

1
@MarzSocks nếu bạn đang nói về download_countlĩnh vực API phát hành, bao gồm số lượt tải xuống bản phát hành (không phải lúc nào cũng là zip và không phải là bản sao)
VonC

@MarzSocks nếu bạn đang nói về "số lượng bản sao", thì không nên bao gồm các bản tải xuống zip. Chỉ các git clonetrường hợp. Kiểm tra với hỗ trợ GitHub để xác nhận.
VonC

@danielsp chưa, nó vẫn được ghi nhận chính thức: help.github.com/articles/viewing-traffic-to-a-reposeective . Nhưng vâng, tôi cũng không thấy nó nữa: github.com/docker/docker/graphs/contologists
VonC

Các tệp lưu trữ nguồn được tạo tự động rõ ràng không phải là tài sản .. ( xem nhận xét này )
olejorgenb

81

Tôi đã viết một ứng dụng web nhỏ bằng javascript để hiển thị số lượng tải xuống của tất cả các tài sản trong các bản phát hành có sẵn của bất kỳ dự án nào trên Github. Bạn có thể dùng thử ứng dụng tại đây: http://somsubhra.github.io/github-release-stats/


5
Tôi tiếp tục nhận được thông báo 'Không có bản phát hành nào cho dự án này' hoặc 'Dự án không tồn tại'. Tôi sai cái gì?
Alex

Tôi nhận được tin nhắn tương tự. Điều đó không thể đúng.
cryptic0

3
Vâng. Tôi cũng vậy. Có vẻ như ứng dụng này đã ngừng hoạt động từ lâu.
Daan van den Bergh

1
Ứng dụng này không đúng, vì nó chỉ bao gồm 30 bản phát hành gần đây nhất được GitHub đưa ra trong phản hồi API, như chi tiết ở đây: developer.github.com/v3/guides/traversing-with-pagination Cần phải lặp lại qua các trang từ liên kết "tiếp theo" được đưa ra trong tiêu đề để tính tổng chính xác. Một ví dụ repo là slamdata / quasar, trong đó phương thức này cho tổng số không chính xác.
Qiri

Ứng dụng chỉ tính các repos với các bản phát hành
SM Pat

12

GitHub đã từ chối hỗ trợ tải xuống và hiện hỗ trợ 'Phát hành' - https://github.com/blog/1547-release-your-software . Để tạo bản phát hành, hãy sử dụng Giao diện người dùng GitHub hoặc tạo thẻ chú thích (http: // git-scm.com/book/ch2-6.html) và thêm ghi chú phát hành vào GitHub. Sau đó, bạn có thể tải lên các tệp nhị phân hoặc 'tài sản' cho mỗi bản phát hành.

Khi bạn có một số bản phát hành, API GitHub hỗ trợ nhận thông tin về chúng và tài sản của chúng.

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

Tìm mục 'download_count'. Có thêm thông tin tại http://developer.github.com/v3/repose/release/ . Phần này của API vẫn còn trong giai đoạn xem trước ATM nên có thể thay đổi.

Cập nhật tháng 11 năm 2013:

API phát hành của GitHub hiện đã hết thời gian xem trước nên tiêu đề 'Chấp nhận' không còn cần thiết - http://developer.github.com/changes/2013-11-04-release-api-is-official/

Mặc dù vậy, việc tiếp tục thêm tiêu đề 'Chấp nhận' sẽ không gây hại gì.


Tôi có sai không khi nghĩ rằng github hiện không hiển thị một downloadstrường trong tài sản nữa (ít nhất là sử dụng kỹ thuật này)?
Demis

Phương pháp này dường như vẫn còn hiệu quả với tôi. download_countlà trường cho biết số lượt tải xuống - ví dụ như trong api.github.com/repose/twbs/bootstrap/release . Điều đáng chú ý là chỉ có 'bản phát hành' sẽ hiển thị trong danh sách này, các thẻ hiển thị trong trang phát hành của một repo không xuất hiện trong danh sách API, xem developer.github.com/v3/repose/release . Ví dụ: github.com/jquery/jquery/release liệt kê một số thẻ trong phần phát hành nhưng một danh sách trống được trả về cho api.github.com/repose/jquery/jquery/release .
andyberry88

Cảm ơn! Repo của tôi dường như không có trường như vậy, ngay cả với một số thẻ được đặt là "bản phát hành" - điều này không tính các bản tải xuống của bản phát hành được nén / tarball (hoặc trường bị bỏ qua nếu count=0)? Hoặc chỉ hiển thị trường cho các yêu cầu Clone? Xem cái này, không có download_count: api.github.com/repose/demisjohn/pytrimsetup/release . Trang github cho điều đó ở đây: github.com/demisjohn/pyTRIMSetup/release
Demis

Số lượt tải xuống chỉ khả dụng đối với tài sản phát hành, không dành cho kho lưu trữ mã nguồn cho thẻ. Nếu bạn nhìn vào các URL bootstrap tôi đã cung cấp ở trên, họ có một bootstrap-XYZ-dist.ziptài sản là download_countlĩnh vực liên quan đến. Nếu bạn muốn xem có bao nhiêu người đang tải xuống một bản phát hành, bạn cần tải lên một bản phát hành. Theo tôi biết, không có cách nào để xem có bao nhiêu người đã nhân bản / tải xuống một kho lưu trữ thông qua API. Chế độ xem biểu đồ (từ stackoverflow.com/a/4339085/2634854 ở trên) có thể cung cấp cho bạn những gì sau đó.
andyberry88

Cảm ơn đã làm rõ. Các biểu đồ thực sự hữu ích.
Demis

12

Số lượng VISITOR phải có sẵn trong bảng điều khiển của bạn> Lưu lượng truy cập (hoặc số liệu thống kê hoặc thông tin chi tiết):

nhập mô tả hình ảnh ở đây


7

Trước đây, có hai phương pháp mã tải xuống trong Github: sao chép hoặc tải xuống dưới dạng zip một .git repo hoặc tải lên một tệp (ví dụ: nhị phân) để tải xuống sau.

Khi tải xuống một repo (sao chép hoặc tải xuống dưới dạng zip), Github không tính số lần tải xuống cho các giới hạn kỹ thuật. Sao chép một kho lưu trữ là một hoạt động chỉ đọc. Không có xác thực cần thiết. Hoạt động này có thể được thực hiện thông qua nhiều giao thức, bao gồm HTTPS, cùng một giao thức mà trang web sử dụng để hiển thị repo trong trình duyệt. Rất khó để đếm nó.

Xem: http://git-scm.com/book/en/Git-on-the-Server-The-Prot Protocol

Gần đây, Github không dùng chức năng tải xuống. Điều này là do họ hiểu rằng Github tập trung vào việc xây dựng phần mềm và không phân phối nhị phân.

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


7

Như đã đề cập, API GitHub trả về số lượt tải xuống của các bản phát hành tệp nhị phân. Tôi đã phát triển một tập lệnh nhỏ để dễ dàng lấy số lượt tải xuống theo dòng lệnh.


Bất cứ nơi nào tôi có thể thấy một ví dụ về điều này được sử dụng? Nó có thể được thêm vào một huy hiệu Github không? Nếu không, có thể sử dụng Google Analytics để lấy số lượt tải xuống huy hiệu Github bằng cách nào đó?
eonist

6

Rất muộn, nhưng đây là câu trả lời bạn muốn:

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

Tiếp theo, tìm id của dự án bạn đang tìm kiếm trong dữ liệu. Nó nên ở gần đỉnh, bên cạnh các url. Sau đó, điều hướng đến

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

Trường có tên download_count là câu trả lời của bạn.

EDIT: Thủ đô quan trọng trong tên người dùng và tên dự án của bạn


tại sao tài sản của tôi không có nội dung, chỉ hiển thị "[]"
Griffan

Bạn đã gõ mọi thứ chính xác? Hãy chắc chắn rằng bạn có bản phát hành và đang kiểm tra dự án chính xác.
LeChosenOne

Tôi phát hiện ra rằng họ chỉ theo dõi các tệp nhị phân được phát hành, chứ không phải tarball hoặc mã nguồn, điều này thật tệ
Griffan

Vâng Một bản phát hành là một nhị phân để trao cho người khác, không phải mã nguồn cho các nhà phát triển.
LeChosenOne

5
Điều này vẫn còn hoạt động? Tôi nhận được:{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
eonist

5

API Github không cung cấp thông tin cần thiết nữa. Hãy xem trang phát hành , được đề cập trong câu trả lời của Stan Towianski . Như chúng ta đã thảo luận trong các nhận xét cho câu trả lời đó, API Github chỉ báo cáo các bản tải xuống của 1 trong ba tệp mà anh ta cung cấp cho mỗi bản phát hành.

Tôi đã kiểm tra các giải pháp, được cung cấp trong một số câu trả lời khác cho câu hỏi này. Câu trả lời của Vonc trình bày phần thiết yếu của giải pháp của Michele Milidoni . Tôi đã cài đặt tập lệnh gdc của anh ấy với kết quả như sau

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

Như bạn có thể thấy rõ, gdc không báo cáo số lượt tải xuống của các tệp tar.gz và zip.

Nếu bạn muốn kiểm tra mà không cài đặt bất cứ thứ gì, hãy thử trang web nơi Somsubhra đã cài đặt giải pháp, được đề cập trong câu trả lời của anh ấy . Điền vào 'stant' làm tên người dùng Github và 'mdcsvimporter2015' làm tên Kho lưu trữ và bạn sẽ thấy những thứ như:

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

Than ôi, một lần nữa chỉ là một báo cáo mà không cần tải xuống các tệp tar.gz và zip. Tôi đã kiểm tra cẩn thận thông tin mà API của Github trả về, nhưng nó không được cung cấp ở bất cứ đâu. Hiện tại download_count mà API không trả lại còn lâu mới hoàn thành.


5

Để kiểm tra số lần tệp / gói phát hành được tải xuống, bạn có thể truy cập https://githubstats0.firebasản.com

Nó cung cấp cho bạn tổng số lượt tải xuống và chia nhỏ tổng số lượt tải xuống cho mỗi thẻ phát hành.


Lưu ý rằng điều này chỉ hoạt động đối với các tệp nhị phân được phát hành, không phải bản thân mã nguồn, điều đó có nghĩa là nếu bạn không tải lên bất kỳ tệp nào khác để tải xuống thì nó sẽ không được tính. Có lẽ nó đang sử dụng API Github từ câu trả lời của LeChosenOne.
JoniVR

3

Cuối cùng tôi đã viết một kịch bản cạp để tìm số lượng bản sao của mình:

#!/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'

Điều này sẽ lấy dữ liệu từ cùng một điểm cuối mà biểu đồ nhân bản của Github sử dụng và nhổ ra tổng số từ nó. Dữ liệu cũng bao gồm số lượng mỗi ngày, thay thế .summarychỉ .để xem những số được in đẹp.


2

Dựa trên câu trả lời của VonC và Michele Milidoni, tôi đã tạo ra bookmarklet này hiển thị số liệu thống kê tải xuống của github được lưu trữ nhị phân được phát hành.

Lưu ý: Do các sự cố với trình duyệt liên quan đến triển khai Chính sách bảo mật nội dung, bookmarklets có thể tạm thời vi phạm một số chỉ thị CSP và về cơ bản có thể không hoạt động đúng khi chạy trên github trong khi CSP được bật.

Mặc dù nó rất nản lòng, bạn có thể vô hiệu hóa CSP trong Firefox như một cách giải quyết tạm thời. Mở về: config và đặt security.csp.enable thành false.


2

Để cố gắng làm rõ hơn:
cho dự án github này: stant / mdcsvimporter2015
https://github.com/stant/mdcsvimporter2015
với các bản phát hành tại
https://github.com/stant/mdcsvimporter2015/release

truy cập http hoặc https: (ghi chú đã thêm "api." và "/ repos")
https://api.github.com/repose/stant/mdcsvimporter2015/release

bạn sẽ nhận được đầu ra json này và bạn có thể tìm kiếm "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"

hoặc trên dòng lệnh do:
wget --no-check-cert https://api.github.com/repose/stant/mdcsvimporter2015/release


Theo như tôi có thể thấy github chỉ đếm đầu tiên trong ba tệp bạn cung cấp để tải xuống, như mdcsvimporter-beta-18.zip. Bạn đã bao giờ tìm cách tải xuống_count những thứ như v19.zip chưa?
Jan Ehrhardt

Tôi chỉ có 3 bản phát hành cho md2015 và v19 là bản phát hành đầu tiên. v19 đến sau bài viết này vì vậy nó không được hiển thị ở đây. Bạn đã đi đến url :-)? "download_count": 31, "created_at": "2015-03-26T04: 22: 13Z", "update_at": "2015-03-26T04: 22: 13Z", "browser_doad_url":
Stan Towianski

Nhưng như xa như tôi có thể nhìn thấy Github không tính tải của github.com/stant/mdcsvimporter2015/archive/v19.zipgithub.com/stant/mdcsvimporter2015/archive/v18-alpha.tar.gz
Jan Ehrhardt

Chào. Tôi thậm chí không chắc chắn nơi bạn đã đưa ra các url tải xuống đó, nhưng đó là một câu hỏi cho github. Nó dường như chỉ đếm các tệp tôi phát hành (3), và thậm chí không phải các tệp zip nguồn mà nó tạo ra (2 cái khác cho mỗi bản phát hành của tôi). Tôi đã viết một ứng dụng java cho chính mình rằng tôi chạy để thực hiện cuộc gọi này, lấy lại json và phân tích cú pháp và chỉ hiển thị số lượt tải xuống.
Stan Towianski

Quá tệ. Rõ ràng Github không cung cấp thông tin chúng tôi cần (nữa?). Trong số 3 * 3 tệp bạn có tại github.com/stant/mdcsvimporter2015/release, nó chỉ báo cáo doenload_count của tệp phát hành mà không phải là tệp * .tar.gz và * .zip. Tôi sẽ đưa ra một câu trả lời riêng vì nó ảnh hưởng đến tất cả các giải pháp khác.
Jan Ehrhardt

1

Như đã nêu, bạn có thể nhận thông tin về các Bản phát hành của mình thông qua API .

Đối với những người sử dụng WordPress, tôi đã phát triển plugin này: Tải xuống bản phát hành GitHub . Nó cho phép bạn có được số lượt tải xuống, các liên kết và nhiều thông tin hơn cho các bản phát hành của kho GitHub.

Để giải quyết câu hỏi ban đầu, shortcode [grd_count user="User" repo="MyRepo"]sẽ trả về số lượt tải xuống cho một kho lưu trữ. Con số này tương ứng với tổng của tất cả các giá trị đếm tải xuống của tất cả các bản phát hành cho một kho lưu trữ GitHub.

Thí dụ: Thí dụ


1

Trả lời từ năm 2019:

  1. Đối với số lượng bản sao, bạn có thể sử dụng https://developer.github.com/v3/repose/traffic/#clones (nhưng lưu ý rằng nó chỉ trả về số lượng trong 14 ngày qua)
  2. Để có được số lượt tải xuống tài sản của bạn (các tệp được đính kèm với bản phát hành), bạn có thể sử dụng https://developer.github.com/v3/repose/release/#get-a-single-release (chính xác là thuộc tính "download_count" của mục của danh sách tài sản trong phản ứng)



0

Đây là một giải pháp python sử dụng pip install PyGithubgói

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))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.