it-swarm.com.de

Wie kann ich die Liste aller github Repositories einer Person abrufen?

Wir arbeiten an einem Projekt, bei dem wir alle Projekte einer Person in seinem Repository auf dem GitHub-Konto anzeigen müssen. 

Kann jemand vorschlagen, wie ich die Namen aller Git-Repositories einer bestimmten Person mit seinem Git-Benutzernamen anzeigen kann?

49
user1127981

Verwenden Sie die Github API :

/users/:user/repos

Dadurch erhalten Sie alle öffentlichen Repositorys des Benutzers. Wenn Sie private Repositories herausfinden möchten, müssen Sie sich als bestimmter Benutzer authentifizieren. Sie können dann den Aufruf REST verwenden:

/user/repos

um all die Repos des Benutzers zu finden.

Um dies in Python zu tun, mache etwas wie:

USER='AUSER'
API_TOKEN='ATOKEN'
GIT_API_URL='https://api.github.com'

def get_api(url):
    try:
        request = urllib2.Request(GIT_API_URL + url)
        base64string = base64.encodestring('%s/token:%s' % (USER, API_TOKEN)).replace('\n', '')
        request.add_header("Authorization", "Basic %s" % base64string)
        result = urllib2.urlopen(request)
        result.close()
    except:
        print 'Failed to get api request from %s' % url

Bei der an die Funktion übergebenen URL handelt es sich um die URL REST wie in den obigen Beispielen. Wenn Sie sich nicht authentifizieren müssen, ändern Sie einfach die Methode, um das Hinzufügen des Authorization-Headers zu entfernen. Sie können dann mit einer einfachen GET-Anfrage eine beliebige öffentliche API-URL abrufen.

30
BeRecursive

Sie können dazu die github api verwenden. Durch Klicken auf https://api.github.com/users/username/repos werden die öffentlichen Repositorys dieses Benutzers aufgelistet. 

28

Versuchen Sie den folgenden curl-Befehl, um die Repositorys aufzulisten:

GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=100" | grep -o '[email protected][^"]*'

Um geklonte URLs aufzulisten, führen Sie Folgendes aus:

GHUSER=CHANGEME; curl -s "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -w clone_url | grep -o '[^"]\+://.\+.git'

Wenn es privat ist, müssen Sie Ihren API-Schlüssel (access_token=GITHUB_API_TOKEN) hinzufügen. Beispiel:

curl "https://api.github.com/users/$GHUSER/repos?access_token=$GITHUB_API_TOKEN" | grep -w clone_url

Um sie zu klonen, siehe: Wie alle Repos auf einmal aus GitHub klonen?

Siehe auch: So laden Sie GitHub Release über die Befehlszeile aus dem privaten Repo herunter

22
kenorb

Wenn Sie jq installiert haben, können Sie mit dem folgenden Befehl alle öffentlichen Repos eines Benutzers auflisten

curl -s https://api.github.com/users/<username>/repos | jq '.[]|.html_url'
4
vaibhav singhal

Sie benötigen wahrscheinlich eine Jsonp-Lösung: 

https://api.github.com/users/[user name]/repos?callback=abc

Wenn Sie jQuery verwenden:

$.ajax({
  url: "https://api.github.com/users/blackmiaool/repos",
  jsonp: true,
  method: "GET",
  dataType: "json",
  success: function(res) {
    console.log(res)
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

3
blackmiaool

Das NPM-Modul repos erfasst die JSON für alle öffentlichen Repos für einen Benutzer oder eine Gruppe. Sie können dies direkt von npx ausführen, sodass Sie nichts installieren müssen. Wählen Sie einfach eine Organisation oder einen Benutzer ("W3C" hier):

$ npx repos W3C W3Crepos.json

Dadurch wird eine Datei mit dem Namen W3Crepos.json erstellt. Grep ist gut genug, um z.B. Holen Sie sich die Liste der Repos:

$ grep full_name W3Crepos.json

profis:

  • Funktioniert mit mehr als 100 Repos (viele Antworten auf diese Frage nicht).
  • Nicht viel zu tippen.

nachteile:

  • Benötigt npx (oder npm, wenn Sie es wirklich installieren möchten).
1
ericP

Rufen Sie mit Python die Liste aller öffentlichen Repositorys eines GitHub-Benutzers ab:

import requests
username = input("Enter the github username:")
request = requests.get('https://api.github.com/users/'+username+'/reposper_page=1000')
json = request.json()
for i in range(0,len(json)):
  print("Project Number:",i+1)
  print("Project Name:",json[i]['name'])
  print("Project URL:",json[i]['svn_url'],"\n")

Referenz

0
Darshan Chheda

Die Antwort lautet "/ users /: user/repo", aber ich habe den gesamten Code, der dies in einem Open-Source-Projekt tut, mit dem Sie eine Webanwendung auf einem Server aufstellen können.

Ich stand ein GitHub-Projekt mit dem Namen Git-Captain auf, das mit der GitHub-API kommuniziert, die alle Repos auflistet.

Es handelt sich um eine Open-Source-Webanwendung, die mit Node.js erstellt wurde und die GitHub-API zum Suchen, Erstellen und Löschen eines Zweigs in zahlreichen GitHub-Repositorys verwendet. 

Es kann für Organisationen oder einen einzelnen Benutzer eingerichtet werden.

Ich habe eine Schritt-für-Schritt-Anleitung, wie ich es auch im Read-Me einrichten kann.

0
ConfusedDeer

Paging-JSON

Der folgende JS-Code soll in einer Konsole verwendet werden.

username = "mathieucaroff";

w = window;
Promise.all(Array.from(Array(Math.ceil(1+184/30)).keys()).map(p =>
    fetch(`//api.github.com/users/{username}/repos?page=${p}`).then(r => r.json())
)).then(all => {
    w.jo = [].concat(...all);
    // w.jo.sort();
    // w.jof = w.jo.map(x => x.forks);
    // w.jow = w.jo.map(x => x.watchers)
})
0
Mathieu CAROFF