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?
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.
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.
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
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'
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>
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:
les inconvénients:
npx
(ou npm
si vous voulez l’installer réellement).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")
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.
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)
})