web-dev-qa-db-fra.com

Comment récupérer la liste de tous les dépôts de github d'une personne?

Nous travaillons sur un projet où nous devons afficher tous les projets d'une personne dans son référentiel sur le compte GitHub. 

Quelqu'un peut-il suggérer, comment puis-je afficher les noms de tous les référentiels git d'une personne utilisant son nom d'utilisateur git?

49
user1127981

Utilisez l'API Github :

/users/:user/repos

Cela vous donnera tous les référentiels publics de l'utilisateur. Si vous devez trouver des référentiels privés, vous devez vous authentifier en tant qu'utilisateur particulier. Vous pouvez ensuite utiliser l'appel REST:

/user/repos

pour trouver all le dépôt de l'utilisateur.

Pour faire cela en Python, faites quelque chose comme:

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

Où l'URL transmis à la fonction est l'URL REST comme dans les exemples ci-dessus. Si vous n'avez pas besoin de vous authentifier, il vous suffit de modifier la méthode pour supprimer l'ajout de l'en-tête Authorization. Vous pouvez ensuite obtenir n'importe quelle URL publique à l'aide d'une simple requête GET.

30
BeRecursive

Vous pouvez utiliser le github api pour cela. Frapper https://api.github.com/users/username/repos listera les référentiels publics de cet utilisateur. 

28
Frederick Cheung

Essayez la commande curl suivante pour répertorier les référentiels:

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

Pour répertorier les URL clonées, exécutez:

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

Si c'est privé, vous devez ajouter votre clé API (access_token=GITHUB_API_TOKEN), par exemple:

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

Pour les cloner, voir: Comment cloner toutes les mises en pension à la fois depuis GitHub?

Voir aussi: Comment télécharger GitHub Release à partir d’un dépôt privé en ligne de commande

22
kenorb

Si vous avez jq installé, vous pouvez utiliser la commande suivante pour lister tous les dépôts publics d'un utilisateur

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

Vous avez probablement besoin d'une solution jsonp: 

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

Si vous utilisez jQuery:

$.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

Le module NPM repos saisit le JSON pour tous les repos publics d'un utilisateur ou d'un groupe. Vous pouvez exécuter ceci directement à partir de npx afin de ne rien installer, il suffit de choisir une organisation ou un utilisateur ("W3C" ici):

$ npx repos W3C W3Crepos.json

Cela créera un fichier appelé W3Crepos.json. Grep est assez bon pour par exemple aller chercher la liste des pensions:

$ grep full_name W3Crepos.json

avantages:

  • Fonctionne avec plus de 100 repos (beaucoup de réponses à cette question ne le font pas).
  • Pas grand chose à écrire.

les inconvénients:

  • Nécessite npx (ou npm si vous voulez l’installer réellement).
1
ericP

Récupérez la liste de tous les référentiels publics d'un utilisateur GitHub utilisant Python:

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

référence

0
Darshan Chheda

La réponse est "/ users /: user/repo", mais j'ai tout le code qui le fait dans un projet open source que vous pouvez utiliser pour mettre en place une application Web sur un serveur.

J'ai mis en place un projet GitHub appelé Git-Captain qui communique avec l'API GitHub qui répertorie tous les dépôts.

C'est une application Web open-source construite avec Node.js utilisant l'API GitHub pour rechercher, créer et supprimer une branche dans de nombreux référentiels GitHub. 

Il peut être configuré pour des organisations ou un seul utilisateur.

J'ai étape par étape comment l'installer dans le read-me.

0
ConfusedDeer

JSON de pagination

Le code JS ci-dessous est destiné à être utilisé dans une console.

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