Liste des projets Github (java) + téléchargement
Résolu/Fermé
mikis69
Messages postés
168
Date d'inscription
mardi 26 novembre 2013
Statut
Membre
Dernière intervention
11 février 2019
-
1 mai 2017 à 14:50
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019 - 1 mai 2017 à 18:02
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019 - 1 mai 2017 à 18:02
A voir également:
- Liste des projets Github (java) + téléchargement
- Liste déroulante excel - Guide
- Zone telechargement - Guide
- Telecharger java - Télécharger - Langages
- Téléchargement video youtube - Guide
- Annuaire inversé gratuit liste rouge - Forum Internet / Réseaux sociaux
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
Modifié le 1 mai 2017 à 16:22
Modifié le 1 mai 2017 à 16:22
Bonjour,
L'API Github te permet de récupérer la liste des projets d'une organisation.
Dans le flux JSON renvoyé tu devrais considérer l'attribut "language" pour filtrer ceux qui ont pour valeur "Java" et l'attribut "clone_url" avec lequel tu peux ensuite faire un git clone pour récupérer le projet.
Exemple avec https://api.github.com/orgs/twitter/repos
La confiance n'exclut pas le contrôle
L'API Github te permet de récupérer la liste des projets d'une organisation.
Dans le flux JSON renvoyé tu devrais considérer l'attribut "language" pour filtrer ceux qui ont pour valeur "Java" et l'attribut "clone_url" avec lequel tu peux ensuite faire un git clone pour récupérer le projet.
Exemple avec https://api.github.com/orgs/twitter/repos
[
...
{
id: 578435,
name: "elephant-bird",
full_name: "twitter/elephant-bird",
...
created_at: "2010-03-25T01:49:40Z",
updated_at: "2017-05-01T03:28:32Z",
pushed_at: "2017-04-15T02:44:16Z",
git_url: "git://github.com/twitter/elephant-bird.git",
ssh_url: "git@github.com:twitter/elephant-bird.git",
clone_url: "https://github.com/twitter/elephant-bird.git",
svn_url: "https://github.com/twitter/elephant-bird",
...
language: "Java",
...
},
...
{
id: 1175517,
name: "joauth",
full_name: "twitter/joauth",
...
created_at: "2010-12-16T22:21:23Z",
updated_at: "2017-04-30T02:00:39Z",
pushed_at: "2017-02-16T06:31:32Z",
git_url: "git://github.com/twitter/joauth.git",
ssh_url: "git@github.com:twitter/joauth.git",
clone_url: "https://github.com/twitter/joauth.git",
svn_url: "https://github.com/twitter/joauth",
...
language: "Java",
...
}
...
]
git clone https://github.com/twitter/elephant-birdRemarque : si tu veux faire régulièrement des mises à jours de projets que tu as déjà cloné il faudra ensuite faire des
git clone https://github.com/twitter/joauth
git pull.
La confiance n'exclut pas le contrôle
Modifié le 1 mai 2017 à 17:05
J'avais trouvé cette partie là mais le problème c'est que j'aimerai récupérer les projets "au hasard". En fait, je ne connais pas l'organisation et en faisant
https://api.github.com/organizations
Il ne me donne que 29 organisations (qui ont peut-être des dizaines de projets) mais j'en ai besoin de plus.. (pareil pour la liste des projets de twitter par exemple, je ne vois pas pourquoi il ne m'en donne que 29 alors qu'il y en a beaucoup plus)..
Edit :
avec ?per_page=100 je peux en avoir plus..
Le soucis reste quand même le fait que : pour avoir quelques milliers de projets, je dois récupérer le nom de combien d'organisations par exemple ?
1 mai 2017 à 17:21
En fait tu en as 30 car c'est la valeur par défaut de la pagination.
Tu peux augmenter la pagination et te déplacer d'une page à l'autre en fournissant des paramètres en plus :
https://api.github.com/orgs/twitter/repos?per_page=100&page=1
https://api.github.com/orgs/twitter/repos?per_page=100&page=2
https://api.github.com/orgs/twitter/repos?per_page=100&page=3
Remarque : Twitter a 135 projets donc la page 1 renvoie 100 éléments, la page 2 en renvoie 35 et la page 3 renvoie 0 élément.
Pour la liste des organisations c'est un peu différent, comme expliqué dans la documentation : https://developer.github.com/v3/orgs/#list-all-organizations
Au début tu fais :
https://api.github.com/organizations?per_page=100
Comme le dernier élément a pour identifiant 8085 tu continues avec :
https://api.github.com/organizations?per_page=100&since=8085
1 mai 2017 à 17:34
Penses-tu que "List all public repositories" serait une meilleure alternative pour récupérer quelques milliers de projets d'un coup ?
L'avantage serait de ne pas avoir à faire une recherche sur les organisations avant..
1 mai 2017 à 17:55
Exemple : https://api.github.com/repositories?since=578434
Et on retombe sur l'id 578435 qui correspondait au premier projet Twitter en Java
Cependant, je pense que quand on fait de l'aléatoire, avoir une hiérarchie plus importante est meilleure qu'une liste à plat.
Si tu cherche directement par repo, tu vas devoir faire tes pages 100 par 100 pour lister les id qui vont de 1 à 90 millions (environ)
Alors que par organisation tu auras une profondeur moins importante puisque les id vont de 1 à 28 millions (environ).
Donc il vaut mieux taper une organisation au hasard, puis un projet au hasard au sein de cette organisation, plutôt que de taper directement un projet au hasard.
Remarque : tu peux aussi être malin et tirer aléatoirement un nombre entier pour aller chercher l'identifiant de projet correspondant, mais dans ce cas tu n'as même plus besoin de lister ni les organisations, ni les repositories.
Exemple : je tires au hasard 1234567 et je prends le projet correspondant.
https://api.github.com/repositories/1234567
Evidemment il faut un peu de chance pour que ce soit un projet Java...
1 mai 2017 à 18:02
Il faut également qu'il ne tire pas deux fois le même nombre ^^
Merci pour l'idée en tout cas, j'espère que je pourrai faire de cette manière !