Github: Czy mogę zobaczyć liczbę pobrań repozytorium?


139

Czy w serwisie Github można sprawdzić liczbę pobrań repozytorium?


Liczby klonów są dostępne dla autoryzowanych użytkowników poprzez skrobanie z nazwą użytkownika / hasłem Github, podobnie jak liczba pobrań plików zasobów w ramach wydań . Wydaje się, że nie jest możliwe uzyskanie liczby klonów z publicznych repozytoriów lub statystyk pobierania plików innych niż aktywa (tj. Repozytorium tar.gzi zippliki).
Allen Luce,

1
Każdemu, kto czyta odpowiedzi, wszystkie podane poniżej skrypty dostarczające wydania download_count są błędne, ponieważ nie uwzględniają systemu paginacji GitHub i podają sumę dla ostatnich 30 wydań,
Qiri

Odpowiedzi:


116

Aktualizacja 2019:

Ústín „s odpowiedź wskazuje na:


Zaktualizuj 2017

Nadal możesz używać interfejsu API GitHub, aby uzyskać liczbę pobrań dla swoich wydań (co nie jest dokładnie tym , o co pytano).
Zobacz pole „ Uzyskaj pojedyncze wydaniedownload_count.

Nie ma już ekranu ruchu wskazującego liczbę klonów repozytorium.
Zamiast tego musisz polegać na usługach innych firm, takich jak:

Wydanie Git 2.14.2


Aktualizacja sierpień 2014

GitHub proponuje również liczbę klonów do repozytorium na swoim wykresie ruchu:
Zobacz „ Clone Graphs

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


Aktualizacja październik 2013

Jak wspomniano poniżej przez andyberry88 i jak szczegółowo opisałem w lipcu zeszłego roku , GitHub proponuje teraz wydania (zobacz jego API ), które mają download_countpole .

Michele Milidoni , w swojej (zaopiniowanej) odpowiedzi , używa tego pola w swoim skrypcie Pythona .
( bardzo mały wyciąg )

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

Oryginalna odpowiedź (grudzień 2010)

Nie jestem pewien, czy widzisz te informacje (jeśli w ogóle są zapisywane), ponieważ nie widzę ich w API repozytorium 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

Możesz tylko sprawdzić, czy ma pliki do pobrania, czy nie.


1
Czy obejmuje to pobieranie ZIP, czy tylko klony?
MarzSocks

1
@MarzSocks, jeśli mówisz o download_countpolu Release API, które powinno zawierać liczbę pobrań wydania (które nie zawsze są zipem i nie są klonami)
VonC

@MarzSocks, jeśli mówisz o „liczbie klonów”, nie powinno to obejmować pobierania plików ZIP. Tylko git cloneinstancje. Skontaktuj się z obsługą GitHub, aby uzyskać potwierdzenie.
VonC

@danielsp, nadal jest oficjalnie udokumentowany: help.github.com/articles/viewing-traffic-to-a-repository . Ale tak, już tego nie widzę: github.com/docker/docker/graphs/contributors
VonC

Pliki archiwum źródłowego wygenerowane automatycznie nie są najwidoczniej zasobami ... ( zobacz ten komentarz )
olejorgenb

81

Napisałem małą aplikację internetową w javascript, aby pokazać liczbę pobrań wszystkich zasobów w dostępnych wersjach dowolnego projektu na Github. Możesz wypróbować aplikację tutaj: http://somsubhra.github.io/github-release-stats/


5
Wciąż otrzymuję komunikaty „Brak wydań dla tego projektu” lub „Projekt nie istnieje”. Co się mylę?
Alex

Otrzymuję tę samą wiadomość. To nie może być prawda.
cryptic0

3
Tak. Ja też. Wygląda na to, że ta aplikacja przestała działać dawno temu.
Daan van den Bergh

1
Ta aplikacja nie jest poprawna, ponieważ zawiera tylko 30 najnowszych wydań podanych przez GitHub w odpowiedzi API, jak szczegółowo opisano tutaj: developer.github.com/v3/guides/traversing-with-pagination Konieczne jest iterowanie stron z łącze „next” podane w nagłówku, aby obliczyć poprawną sumę. Przykładowym repozytorium jest slamdata / quasar, gdzie ta metoda daje bardzo niepoprawną sumę.
Qiri,

Aplikacja liczy tylko repozytoria z wydaniami
SM Pat

12

GitHub wycofał obsługę pobierania i obsługuje teraz „Wydania” - https://github.com/blog/1547-release-your-software . Aby utworzyć wydanie, użyj interfejsu użytkownika GitHub lub utwórz tag z adnotacjami (http: // git-scm.com/book/ch2-6.html) i dodaj do niego informacje o wersji w GitHub. Następnie możesz przesłać pliki binarne, czyli „zasoby”, do każdej wersji.

Gdy masz już kilka wydań, interfejs API GitHub obsługuje uzyskiwanie informacji o nich i ich zasobach.

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

Poszukaj wpisu „download_count”. Więcej informacji można znaleźć pod adresem http://developer.github.com/v3/repos/releases/ . Ta część interfejsu API jest nadal w wersji zapoznawczej ATM, więc może ulec zmianie.

Aktualizacja listopad 2013:

Interfejs API wydań GitHub jest teraz poza okresem podglądu, więc nagłówek „Accept” nie jest już potrzebny - http://developer.github.com/changes/2013-11-04-releases-api-is-official/

Jednak dalsze dodawanie nagłówka „Akceptuj” nie zaszkodzi.


Czy nie mylę się, sądząc, że github nie pokazuje już obecnie downloadspola w zasobach (przynajmniej przy użyciu tej techniki)?
Demis

Ta metoda nadal wydaje się działać. download_countto pole wskazujące liczbę pobrań - na przykład w api.github.com/repos/twbs/bootstrap/releases . Warto zauważyć, że na tej liście pojawią się tylko „wydania”, tagi, które pojawiają się na stronie wersji repozytorium, nie pojawiają się na liście API, patrz developer.github.com/v3/repos/releases . Na przykład github.com/jquery/jquery/releases wyświetla kilka tagów w sekcji release, ale zwracana jest pusta lista dla api.github.com/repos/jquery/jquery/releases .
andyberry88

Dzięki! Wydaje się, że Moje repozytorium nie ma takiego pola, nawet jeśli niektóre tagi są ustawione jako „wydania” - nie liczy to pobrań wydań spakowanych / spakowanych (lub pole jest pominięte, jeśli count=0)? Czy pokazuje tylko pole dla żądań klonowania? Zobacz to bez download_count: api.github.com/repos/demisjohn/pytrimsetup/releases . Strona github jest tutaj: github.com/demisjohn/pyTRIMSetup/releases
Demis

Liczniki pobrań są dostępne tylko dla zasobów wersji, a nie dla archiwów kodu źródłowego tagu. Jeśli spojrzysz na adresy URL ładowania początkowego, które podałem powyżej, mają one bootstrap-XYZ-dist.zipzasób, do którego download_countodnosi się pole. Jeśli chcesz zobaczyć, ile osób pobiera wydanie, musisz przesłać plik zip wydania. O ile mi wiadomo, nie ma możliwości sprawdzenia, ile osób sklonowało / pobrało archiwum za pośrednictwem interfejsu API. Widok wykresów (ze stackoverflow.com/a/4339085/2634854 powyżej) może jednak dać ci to, czego szukasz.
andyberry88

Dzięki za wytłumaczenie. Wykresy są rzeczywiście pomocne.
Demis

12

Liczba ODWIEDZAJĄCYCH powinna być dostępna w panelu> Ruch (lub statystyki lub statystyki):

wprowadź opis obrazu tutaj


7

Wcześniej istniały dwie metody pobierania kodu na Github: klonowanie lub pobieranie jako repozytorium .git zip lub przesyłanie pliku (na przykład binarnego) do późniejszego pobrania.

Podczas pobierania repozytorium (klonowania lub pobierania jako zip) Github nie liczy liczby pobrań ze względu na ograniczenia techniczne. Klonowanie repozytorium jest operacją tylko do odczytu. Nie jest wymagane uwierzytelnienie. Operację tę można wykonać za pomocą wielu protokołów, w tym HTTPS, tego samego protokołu, którego używa strona internetowa do wyświetlania repozytorium w przeglądarce. Bardzo trudno to policzyć.

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

Ostatnio Github wycofał funkcję pobierania. To dlatego, że rozumieją, że Github koncentruje się na tworzeniu oprogramowania, a nie na dystrybucji plików binarnych.

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


7

Jak wspomniano, GitHub API zwraca liczbę pobrań wydań plików binarnych. Opracowałem mały skrypt, aby łatwo uzyskać liczbę pobrań z wiersza poleceń.


Gdziekolwiek mogę zobaczyć przykład tego w użyciu? Czy można go dodać do odznaki Github? Jeśli nie, czy byłoby możliwe użycie Google Analytics, aby w jakiś sposób uzyskać liczbę pobrań do plakietki Github?
eonista

6

Bardzo późno, ale oto odpowiedź, której potrzebujesz:

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

Następnie znajdź w danych identyfikator projektu, którego szukasz. Powinien znajdować się u góry, obok adresów URL. Następnie przejdź do

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

Pole o nazwie download_count to Twoja odpowiedź.

EDYCJA: W nazwie użytkownika i nazwie projektu duże znaczenie mają wielkie litery


dlaczego moje zasoby nie mają treści, wyświetlają się tylko „[]”
Griffan

Czy wpisałeś wszystko poprawnie? Upewnij się, że masz wersje i sprawdzasz właściwy projekt.
LeChosenOne


Tak. Wydanie to plik binarny, który należy przekazać innym, a nie kod źródłowy dla programistów.
LeChosenOne

5
Czy to nadal działa? Dostaję:{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
eonista

5

Github API nie dostarcza już potrzebnych informacji. Spójrz na stronę z wydaniami , wspomnianą w odpowiedzi Stana Towiańskiego . Jak omówiliśmy w komentarzach do tej odpowiedzi, interfejs API Github zgłasza tylko pobranie 1 z trzech plików, które oferuje na wydanie.

Sprawdziłem rozwiązania podane w kilku innych odpowiedziach na to pytanie. Odpowiedź Vonc przedstawia zasadniczą część rozwiązania Michele Milidoni . Zainstalowałem jego skrypt gdc z następującym wynikiem

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

Jak widać wyraźnie, gdc nie zgłasza liczby pobrań plików tar.gz i zip.

Jeśli chcesz sprawdzić bez instalowania czegokolwiek, wejdź na stronę internetową, na której Somsubhra zainstalował rozwiązanie wymienione w jego odpowiedzi . Wpisz „stant” jako nazwę użytkownika Github i „mdcsvimporter2015” jako nazwę repozytorium, a zobaczysz takie rzeczy, jak:

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

Niestety, ponownie tylko raport bez pobierania plików tar.gz i zip. Dokładnie przeanalizowałem informacje zwracane przez API Githuba, ale nigdzie ich nie podano. Liczba pobierania, którą zwraca API, jest obecnie daleka od ukończenia.


5

Aby sprawdzić, ile razy plik / pakiet wersji został pobrany, przejdź do https://githubstats0.firebaseapp.com

Daje całkowitą liczbę pobrań i podział wszystkich pobrań na tag wydania.


Zauważ, że działa to tylko w przypadku plików binarnych w wersji, a nie samego kodu źródłowego, co oznacza, że ​​jeśli nie prześlesz żadnych innych plików do pobrania, to się nie liczy. Prawdopodobnie używa API Github z odpowiedzi LeChosenOne.
JoniVR

3

Skończyło się na napisaniu skryptu skrobaka, aby znaleźć liczbę klonów:

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

Spowoduje to pobranie danych z tego samego punktu końcowego, którego używa wykres klonów Githuba, i wypluje z niego sumy. Dane obejmują również liczby dzienne, zamień na .summarytylko .po to, aby zobaczyć te ładnie wydrukowane.


2

Na podstawie odpowiedzi VonC i Michele Milidoni stworzyłem tę bookmarklet, która wyświetla statystyki pobrań wydanych plików binarnych udostępnianych na githubie.

Uwaga: Ze względu na problemy z przeglądarkami związane z implementacją polityki bezpieczeństwa treści, bookmarklety mogą tymczasowo naruszać niektóre dyrektywy CSP i zasadniczo mogą nie działać poprawnie podczas uruchamiania na github, gdy CSP jest włączony.

Chociaż jest to wysoce odradzane, możesz wyłączyć CSP w Firefoksie jako tymczasowe obejście. Otwórz about: config i ustaw security.csp.enable na false.


2

Aby to wyjaśnić:
dla tego projektu github: stant / mdcsvimporter2015
https://github.com/stant/mdcsvimporter2015
z wydaniami na
https://github.com/stant/mdcsvimporter2015/releases

przejdź do http lub https: (dodano uwagę „api.” i „/ repos”)
https://api.github.com/repos/stant/mdcsvimporter2015/releases

otrzymasz to wyjście json i możesz wyszukać „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"

lub w wierszu poleceń wykonaj:
wget --no-check-certificate https://api.github.com/repos/stant/mdcsvimporter2015/releases


O ile widzę, github liczy tylko pierwszy z trzech plików, które oferujesz do pobrania, np. Mdcsvimporter-beta-18.zip. Czy kiedykolwiek znalazłeś sposób, aby pobrać liczbę plików do pobrania, takich jak v19.zip?
Jan Ehrhardt

Mam tylko 3 wydania dla md2015, a v19 jest pierwszą, która się wyświetla. Wersja 19 pojawiła się po tym poście, więc nie jest tutaj pokazana. Czy trafiłeś na adres URL :-)? "download_count": 31, "created_at": "2015-03-26T04: 22: 13Z", "updated_at": "2015-03-26T04: 22: 13Z", "browser_download_url":
Stan Towianski


Cześć. Nie jestem nawet pewien, gdzie wymyśliłeś te adresy URL pobierania, ale to jest pytanie do github. Wydaje się, że liczy tylko udostępnione przeze mnie pliki (3), a nawet nie tworzy źródłowych plików ZIP, które tworzy (kolejne 2 na moje wydanie). Napisałem dla siebie aplikację java, którą uruchamiam, aby wykonać to wywołanie, odzyskać plik json, przeanalizować i wyświetlić tylko liczbę pobrań.
Stan Towianski

Szkoda. Najwyraźniej Github nie udostępnia potrzebnych nam informacji (już?). Z plików 3 * 3, które masz na github.com/stant/mdcsvimporter2015/releases , zgłasza tylko doenload_count pliku wydania, a nie plików * .tar.gz i * .zip. Podam osobną odpowiedź, ponieważ dotyczy ona wszystkich innych rozwiązań.
Jan Ehrhardt

1

Jak już wspomniano, możesz uzyskać informacje o swoich wydaniach za pośrednictwem interfejsu API .

Dla tych, którzy używają WordPress, opracowałem tę wtyczkę: GitHub Release Downloads . Pozwala uzyskać liczbę pobrań, linki i więcej informacji o wydaniach repozytoriów GitHub.

Aby odpowiedzieć na pierwotne pytanie, krótki kod [grd_count user="User" repo="MyRepo"]zwróci liczbę pobrań dla repozytorium. Ta liczba odpowiada sumie wszystkich wartości liczby pobrań wszystkich wydań dla jednego repozytorium GitHub.

Przykład: Przykład




0

Dla tych, którzy potrzebują rozwiązania w Pythonie, napisałem prosty skrypt.


Skrypt w Pythonie:


Stosowanie:

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


Wsparcie:

  • Obsługuje zarówno Python 2, jak i Python 3 po wyjęciu z pudełka.
  • Może być używany zarówno jako samodzielny moduł, jak i moduł Pythona.

0

Oto rozwiązanie w języku Python korzystające z pip install PyGithubpakietu

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))
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.