Github: Bir repo için indirme sayısını görebilir miyim?


140

Github'da, bir repo için indirme sayısını görebilmemin bir yolu var mı?


Klon sayımları tarafından yetkilendirilmiş kullanıcılar tarafından kullanılabilir bir Github adı / şifre ile kazıma olarak indirilme sayıları olan varlık dosyalarının içinde bültenleri . Herkese açık depolardan klon sayımları almak veya varlık olmayan dosyalara (örneğin repo tar.gzve zipdosyalar) istatistik indirmek mümkün değildir .
Allen Luce

1
Yanıtları okuyan herkese, aşağıda verilen download_count sürümünü sağlayan tüm komut dosyaları,
GitHub'ın

Yanıtlar:


116

Güncelleme 2019:

Dustin bireyin cevabı işaret ettiği:


2017 Güncellemesi

Hala kullanabilirsiniz GitHub API için sizin için indirme sayısı elde bültenleri (değil tam isteneni)
"Bkz tek sürümü alın ," download_countalanını.

Artık repo klonlarının sayısını belirten bir trafik ekranı yok.
Bunun yerine, aşağıdaki gibi üçüncü taraf hizmetlerine güvenmelisiniz:

Git 2.14.2 sürümü


Ağustos 2014 Güncellemesi

GitHub ayrıca Trafik Grafiğinde repo için klon sayısı önermektedir:
Bkz. " Klon Grafikler "

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


Ekim 2013 Güncellemesi

Aşağıda andyberry88 tarafından belirtildiği gibi ve geçen Temmuz ayında ayrıntılı olarak belirttiğim gibi GitHub şimdi bir alanı olan sürümleri ( API'sine bakın ) öneriyor .download_count

Michele Milidoni , (oylanan) cevabında , bu alanı python senaryosunda kullanıyor .
( çok küçük ekstrakt )

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

Orijinal cevap (Aralık 2010)

GitHub Depo API'sında görmediğim için bu bilgileri (hiç kaydedilmişse) görebildiğinizden emin değilim :

$ 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

Sadece indirilip indirilmediğini görebilirsiniz.


1
Bu ZIP indirme veya sadece klonları içerir mi?
MarzSocks

1
@MarzSocks download_count, yayın API'sının alanı hakkında konuşuyorsanız , yayın indirme sayısını (her zaman zip olmayan ve klon olmayan) içermelidir
VonC

@MarzSocks "klon sayısı" hakkında konuşuyorsanız, zip indirmelerini içermemelidir. Sadece git cloneörnekler. Onay için GitHub desteğine başvurun.
VonC

@danielsp henüz resmi olarak belgelenmiştir: help.github.com/articles/viewing-traffic-to-a-repository . Ama evet, artık da görmüyorum: github.com/docker/docker/graphs/contributors
VonC

Otomatik oluşturulan kaynak arşiv dosyaları görünüşte varlık değildir .. ( bu yoruma bakınız )
olejorgenb

81

Github'daki herhangi bir projenin mevcut sürümlerindeki tüm varlıkların indirme sayısını göstermek için javascript'te küçük bir web uygulaması yazdım . Uygulamayı buradan deneyebilirsiniz: http://somsubhra.github.io/github-release-stats/


5
'Bu proje için sürüm yok' veya 'Proje mevcut değil' mesajları alıyorum. Yanlış olan ne?
Alex

Aynı mesajı alıyorum. Bu doğru olamaz.
cryptic0

3
Evet. Ben de. Bu uygulama uzun zaman önce çalışmayı durdurdu.
Daan van den Bergh

1
Bu uygulama burada ayrıntılı olarak sadece, bir API yanıtta GitHub'dan tarafından verilen en son 30 bültenleri içerdiğinden, doğru değil: developer.github.com/v3/guides/traversing-with-pagination Bu sayfalara yineleme yapmak için gerekli doğru toplamı hesaplamak için başlıkta verilen "sonraki" bağlantı. Örnek bir repo slamdata / quasar'dır, burada bu yöntem çılgınca yanlış bir toplam verir.
Qiri

Uygulama yalnızca sürümleri olan depoları sayar
SM Pat

12

GitHub indirme desteğini kullanımdan kaldırmıştır ve artık 'Bültenleri' desteklemektedir - https://github.com/blog/1547-release-your-software . Bir sürüm oluşturmak için GitHub kullanıcı arayüzünü kullanın veya açıklamalı bir etiket oluşturun (http: // git-scm.com/book/ch2-6.html) ve buna GitHub'da sürüm notları ekleyin. Daha sonra her bir sürüme ikili dosyalar veya 'öğeler' yükleyebilirsiniz.

Bazı sürümleriniz olduğunda, GitHub API onlar ve varlıkları hakkında bilgi almayı destekler.

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

'Download_count' girişini arayın. Daha fazla bilgi için http://developer.github.com/v3/repos/releases/ . API'nın bu kısmı hala ATM önizleme döneminde olduğundan değişebilir.

Kasım 2013 Güncellemesi:

GitHub'ın yayınlama API'sı artık önizleme süresinin dışında olduğundan 'Kabul' başlığına artık gerek yok - http://developer.github.com/changes/2013-11-04-releases-api-is-official/

Yine de 'Accept' başlığını eklemeye devam etmek hiçbir zararı olmaz.


Github'un şu anda downloadsvarlıklarda bir alan göstermediğini düşünmek yanlış mıyım (en azından bu tekniği kullanarak)?
Demis

Bu yöntem hala benim için çalışıyor gibi görünüyor. download_countindirme sayısını gösteren alandır - örneğin api.github.com/repos/twbs/bootstrap/releases . Bu listede yalnızca 'sürümlerin' görüneceğini belirtmek gerekir, bir repo'nun sürümler sayfasında gösterilen etiketler API listesinde görünmez, bkz. Developer.github.com/v3/repos/releases . Örneğin github.com/jquery/jquery/releases , sürümler bölümünde birkaç etiketi listeler, ancak api.github.com/repos/jquery/jquery/releases için boş bir liste döndürülür .
andyberry88

Teşekkürler! Repo'mun bazı etiketler "sürümler" olarak ayarlanmış olsa bile böyle bir alana sahip görünmüyor - bu, sıkıştırılmış / tarball'lanmış sürümlerin indirmelerini saymıyor (veya alan atlanmışsa count=0)? Veya yalnızca Klon istekleri için alan gösterir? Şuna bakın, no download_count: api.github.com/repos/demisjohn/pytrimsetup/releases . Bunun için github sayfası burada: github.com/demisjohn/pyTRIMSetup/releases
Demis

İndirme sayıları, etiketin kaynak kodu arşivleri için değil, yalnızca yayın öğeleri için kullanılabilir. Yukarıda verdiğim bootstrap URL'lerine bakarsanız bootstrap-XYZ-dist.zip, download_countalanla ilgili olan bir varlığı vardır . Bir sürümü kaç kişinin indirdiğini görmek istiyorsanız bir sürüm zip'i yüklemeniz gerekir. Bildiğim kadarıyla, kaç kişinin API aracılığıyla bir arşivi klonladığını / indirdiğini görmenin bir yolu yok. Grafik görünümü ( yukarıdaki stackoverflow.com/a/4339085/2634854 adresinden) size neyin peşinde olduğunuzu verebilir.
andyberry88

Açıkladığınız için teşekkürler. Grafikler gerçekten faydalıdır.
Demis

12

ZİYARETÇİ sayısı gösterge tablonuzda> Trafik (veya istatistikler veya bilgiler) altında bulunmalıdır:

resim açıklamasını buraya girin


7

Eskiden, Github'da iki indirme kodu yöntemi vardı: daha sonra indirmek için bir dosya (örneğin, bir ikili) yükleyin veya zip olarak .git repo olarak indirin.

Bir repo indirirken (klonla veya zip olarak indir), Github teknik sınırlamalar için indirme sayısını saymaz. Bir havuzu klonlamak salt okunur bir işlemdir. Kimlik doğrulaması gerekmez. Bu işlem, web sayfasının repo'yu tarayıcıda göstermek için kullandığı protokol olan HTTPS dahil olmak üzere birçok protokol aracılığıyla yapılabilir. Saymak çok zor.

Bkz. Http://git-scm.com/book/en/Git-on-the-Server-The-Protocols

Son zamanlarda, Github indirme işlevini kullanımdan kaldırıyor. Bunun nedeni, Github'un dağıtım ikili dosyalarına değil, yazılım oluşturmaya odaklandığını anlamalarıydı.

Bkz. Https://github.com/blog/1302-goodbye-uploads


7

Belirtildiği gibi, GitHub API ikili dosya sürümlerinin indirme sayısını döndürür. Komut satırına göre indirme sayısını kolayca almak için küçük bir komut dosyası geliştirdim .


Kullanımda bunun bir örneğini görebildiğim herhangi bir yer var mı? Bir Github rozetine eklenebilir mi? Değilse, bir şekilde Github rozetine indirme sayısını almak için Google Analytics'i kullanmak mümkün olabilir mi?
eonist

6

Çok geç, ama burada istediğiniz cevap var:

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

Ardından, verilerde aradığınız projenin kimliğini bulun. URL'lerin yanında, üste yakın olmalıdır. Ardından, şuraya gidin:

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

Download_count adlı alan cevabınızdır.

EDIT: Başkentler kullanıcı adınız ve proje adınız için önemlidir


nasıl gelir var içerik yok, sadece "[]" gösteren
Griffan

Her şeyi doğru yazdınız mı? Sürümlerin olduğundan ve doğru projeyi kontrol ettiğinizden emin olun.
LeChosenOne

Ben berbat kaynak kod
tarball

Evet. Bir sürüm, geliştiricilere kaynak kodu değil, başkalarına dağıtılacak bir ikili dosyadır.
LeChosenOne

5
Bu hala çalışıyor mu? Im getting:{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
eonist 07

5

Github API artık gerekli bilgileri sağlamıyor. Stan Towianski'nin cevabında belirtilen yayınlar sayfasına göz atın . Bu cevabın yorumlarında tartıştığımız gibi, Github API yalnızca yayın başına sunduğu üç dosyadan 1'inin indirilmesini bildiriyor.

Bu soruların diğer cevaplarında verilen çözümleri kontrol ettim. Vonc'un cevabı Michele Milidoni'nin çözümünün önemli bir bölümünü sunuyor . Onun gdc betiğini aşağıdaki sonuçla yükledim

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

Gördüğünüz gibi, gdc tar.gz ve zip dosyalarının indirme sayısını bildirmez.

Hiçbir şey yüklemeden kontrol etmek istiyorsanız, deneyin web sayfasını Somsubhra belirtilen çözüm, yüklediği onun cevabını . Github kullanıcı adı olarak 'stant' ve Depo adı olarak 'mdcsvimporter2015' yazın ve şöyle bir şey göreceksiniz:

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

Ne yazık ki, bir kez daha tar.gz ve zip dosyalarının indirilmediği bir rapor. Github'ın API'sinin döndürdüğü bilgileri dikkatlice inceledim, ancak hiçbir yerde sağlanmadı. API'nın döndürdüğü download_count bugünlerde tamamlanmaktan çok uzak.


5

Bir sürüm dosyasının / paketin kaç kez indirildiğini kontrol etmek için https://githubstats0.firebaseapp.com adresine gidebilirsiniz.

Her bir indirme etiketi için toplam indirme sayısı ve toplam indirme sayısının dökümünü verir.


Bunun, kaynak kodun kendisi için değil, yalnızca sürümdeki ikili dosyalar için çalıştığını unutmayın; bu, indirilecek başka bir dosya yüklemezseniz sayılmayacağı anlamına gelir. Muhtemelen LeChosenOne'un cevabındaki Github API'sını kullanıyor.
JoniVR

3

Klon sayımı bulmak için bir kazıyıcı komut dosyası yazdım:

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

Bu, Github'un klon grafiğinin kullandığı aynı uç noktadan verileri alır ve toplamları ondan verir. Veriler ayrıca günlük sayımları da içerir, .summaryyalnızca .güzel yazdırılanları görmek için ile değiştirin .


2

VonC ve Michele Milidoni cevaplarına dayanarak, github tarafından barındırılan yayınlanan ikili dosyaların indirme istatistiklerini gösteren bu yer imini oluşturdum .

Not: İçerik Güvenliği İlkesi uygulamasına ilişkin tarayıcılarla ilgili sorunlar nedeniyle yer işaretleri, bazı CSP yönergelerini geçici olarak ihlal edebilir ve CSP etkinken github üzerinde çalışırken temel olarak düzgün çalışmayabilir.

Cesareti kırılmış olsa da, Firefox'taki CSP'yi geçici bir çözüm olarak devre dışı bırakabilirsiniz. About: config.csp.enable öğesini false olarak ayarlayın.


2

Bunu daha açık hale getirmek
için : bu github projesi için: stant / mdcsvimporter2015
https://github.com/stant/mdcsvimporter2015
, https://github.com/stant/mdcsvimporter2015/releases adresindeki sürümlerle

http veya https'ye gidin: (not "api" ve "/ repos" eklendi)
https://api.github.com/repos/stant/mdcsvimporter2015/releases

bu json çıktısını alırsınız ve "download_count" için arama yapabilirsiniz:

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

veya komut satırında şunları yapın:
wget --no-check-certificate https://api.github.com/repos/stant/mdcsvimporter2015/releases


Görebildiğim kadarıyla github sadece indirmek için sunduğunuz mdcsvimporter-beta-18.zip gibi üç dosyadan ilkini sayar. Hiç v19.zip gibi şeyleri indirmek için bir yol buldunuz mu?
Jan Ehrhardt

Md2015 için sadece 3 sürümüm var ve v19 ilk gösteren. v19 bu yazının ardından geldi, burada gösterilmiyor. URL'ye gittin mi :-)? "download_count": 31, "created_at": "2015-03-26T04: 22: 13Z", "updated_at": "2015-03-26T04: 22: 13Z", "browser_download_url":
Stan Towianski


Selam. Bu indirme URL'lerini nereden bulduğunuzdan bile emin değilim, ama bu github için bir soru. Sadece serbest bıraktığım dosyaları (3) sayıyor gibi görünüyor, hatta oluşturduğu kaynak zip dosyalarını bile değil (yayınım başına başka bir 2). Bu aramayı yapmak, json'u geri almak ve ayrıştırmak ve sadece indirme sayısını göstermek için kendim için bir java uygulaması yazdım.
Stan Towianski

Çok kötü. Görünüşe göre Github ihtiyacımız olan bilgiyi vermiyor (artık?). Github.com/stant/mdcsvimporter2015/releases adresinde bulunan 3 * 3 dosyadan yalnızca * .tar.gz ve * .zip dosyalarının değil, serbest bırakma dosyasının doenload_count'unu rapor eder. Diğer tüm çözümleri etkilediği için ayrı bir cevap vereceğim.
Jan Ehrhardt

1

Daha önce belirtildiği gibi, Bültenleriniz hakkında API aracılığıyla bilgi alabilirsiniz .

WordPress kullananlar için şu eklentiyi geliştirdim: GitHub Release Downloads . GitHub depolarının sürümleri için indirme sayısını, bağlantıları ve daha fazla bilgi edinmenizi sağlar.

Orijinal soruyu ele almak için, kısa kod [grd_count user="User" repo="MyRepo"]bir havuz için indirme sayısını döndürür. Bu sayı, bir GitHub deposu için tüm sürümlerin tüm indirme sayısı değerlerinin toplamına karşılık gelir.

Misal: Misal




0

Python'da çözüme ihtiyaç duyanlar için basit bir senaryo yazdım.


Python Komut Dosyası:


Kullanımı:

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


Destek:

  • Destekler hem Python 2 ve Python 3 kutudan.
  • Hem bağımsız hem de Python modülü olarak kullanılabilir.

0

İşte pip install PyGithubpaketi kullanarak bir python çözümü

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))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.