Wir arbeiten an einem Projekt, bei dem wir alle Projekte einer Person in ihrem Repository auf dem GitHub-Konto anzeigen müssen.
Kann jemand vorschlagen, wie ich die Namen aller Git-Repositorys einer bestimmten Person unter Verwendung ihres Git-Benutzernamens anzeigen kann?
github
github-api
user1127981
quelle
quelle
?per_page=
Verwenden Sie die Github-API :
/users/:user/repos
Dadurch erhalten Sie alle öffentlichen Repositorys des Benutzers. Wenn Sie private Repositorys herausfinden möchten, müssen Sie sich als bestimmter Benutzer authentifizieren. Sie können dann den REST-Aufruf verwenden:
/user/repos
um alle Repos des Benutzers zu finden .
Um dies in Python zu tun, gehen Sie wie folgt vor:
Wo die an die Funktion übergebene URL die REST-URL ist, wie in den obigen Beispielen. Wenn Sie sich nicht authentifizieren müssen, ändern Sie einfach die Methode, um das Hinzufügen des Autorisierungsheaders zu entfernen. Sie können dann jede öffentliche API-URL mit einer einfachen GET-Anfrage erhalten.
quelle
?per_page=100
, um die maximale Menge zu erhalten. Wenn ein Benutzer jedoch mehr als hundert Repos hat, müssen Sie mehrerennext
URLs im HTTP-Link
Header folgen , die mit der Antwort gesendet werden .Versuchen Sie den folgenden
curl
Befehl, um die Repositorys aufzulisten:Führen Sie Folgendes aus, um geklonte URLs aufzulisten:
Wenn es privat ist, müssen Sie Ihren API-Schlüssel (
access_token=GITHUB_API_TOKEN
) hinzufügen , zum Beispiel:Wenn der Benutzer eine Organisation ist, verwenden Sie
/orgs/:username/repos
stattdessen, um alle Repositorys zurückzugeben.Informationen zum Klonen finden Sie unter: Wie werden alle Repos gleichzeitig von GitHub geklont?
Siehe auch: So laden Sie GitHub Release über die Befehlszeile von einem privaten Repo herunter
quelle
per_page=1000
.-s
Ihremcurl
Befehl die Option hinzu , um diese unschönen Fortschrittsbalken zucurl -s ...
/orgs/:username/repos
alle Repos zurück, gib einen/users/...
Teil von ihnen zurück, das ist in der Tat komisch. Der Benutzername kann sowohl als Benutzer als auch als Organisation behandelt werden.Wenn Sie jq installiert haben, können Sie mit dem folgenden Befehl alle öffentlichen Repos eines Benutzers auflisten
quelle
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>
quelle
Das NPM-Modul- Repos erfasst den JSON für alle öffentlichen Repos für einen Benutzer oder eine Gruppe. Sie können dies direkt ausführen,
npx
sodass Sie nichts installieren müssen. Wählen Sie einfach eine Organisation oder einen Benutzer aus ("W3C" hier):Dadurch wird eine Datei mit dem Namen W3Crepos.json erstellt. Grep ist gut genug, um zB die Liste der Repos abzurufen:
Profis:
Nachteile:
npx
(odernpm
wenn Sie es wirklich installieren möchten).quelle
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+'/repos') 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
quelle
Es gibt jetzt eine Option, um den fantastischen GraphQL API Explorer zu verwenden .
Ich wollte eine Liste aller aktiven Repos meiner Organisation mit ihren jeweiligen Sprachen. Diese Abfrage macht genau das:
quelle
Wenn Sie nach Repos einer Organisation suchen -
api.github.com/orgs/$NAMEOFORG/repos
Beispiel:
Sie können auch den Parameter per_page hinzufügen, um alle Namen abzurufen, falls ein Paginierungsproblem vorliegt.
quelle
Hier ist eine vollständige Spezifikation für die Repos-API:
https://developer.github.com/v3/repos/#list-repositories-for-a-user
GET /users/:username/repos
Parameter für Abfragezeichenfolgen:
Die ersten 5 sind im obigen API-Link dokumentiert. Die Parameter für
page
und,per_page
die an anderer Stelle dokumentiert sind und in einer vollständigen Beschreibung nützlich sind.type
(string): Kann einer der folgenden seinall
,owner
,member
. Standard:owner
sort
(string): Kann einer der folgenden seincreated
,updated
,pushed
,full_name
. Standard:full_name
direction
(Zeichenfolge): Kann eine vonasc
oder seindesc
. Standard: sonstasc
bei Verwendungfull_name
desc
page
(Ganzzahl): Aktuelle Seiteper_page
(Ganzzahl): Anzahl der Datensätze pro SeiteDa es sich neben cURL um eine HTTP-GET-API handelt, können Sie dies einfach im Browser ausprobieren. Zum Beispiel:
https://api.github.com/users/grokify/repos?per_page=1&page=2
quelle
HTML
JavaScript
// Github Repos
Wenn Sie die Liste der Repositorys einschränken möchten, können Sie sie einfach
?per_page=3
nachher hinzufügenusername/repos
.z.B
username/repos?per_page=3
Anstelle von /
username
/ können Sie den Benutzernamen jeder Person auf Github setzen.quelle
Paging JSON
Der folgende JS-Code soll in einer Konsole verwendet werden.
quelle
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 starten können.
Ich habe ein GitHub-Projekt namens Git-Captain ins Leben gerufen , das mit der GitHub-API kommuniziert, in der alle Repos aufgelistet sind.
Es ist eine Open-Source-Webanwendung, die mit Node.js unter Verwendung der GitHub-API erstellt wurde, um einen Zweig in zahlreichen GitHub-Repositorys zu finden, zu erstellen und zu löschen.
Es kann für Organisationen oder einen einzelnen Benutzer eingerichtet werden.
Ich habe eine Schritt-für-Schritt-Anleitung zum Einrichten.
quelle
So rufen Sie die URL des 100 öffentlichen Repositorys des Benutzers ab:
$.getJSON("https://api.github.com/users/suhailvs/repos?per_page=100", function(json) { var resp = ''; $.each(json, function(index, value) { resp=resp+index + ' ' + value['html_url']+ ' -'; console.log(resp); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
quelle
quelle