Liste des projets Github (java) + téléchargement
Résolu
mikis69
Messages postés
168
Date d'inscription
Statut
Membre
Dernière intervention
-
mikis69 Messages postés 168 Date d'inscription Statut Membre Dernière intervention -
mikis69 Messages postés 168 Date d'inscription Statut Membre Dernière intervention -
Bonjour à toutes et à tous,
Après quelques recherches infructueuses sur google, je viens vers vous ^^
En fait, je cherche un moyen assez efficace de télécharger quelques milliers de projets github (java).. Existe-t-il une liste des projets existants que l'on peut trier selon le langage ? Et à partir de cette liste, avoir le nom du projet et avoir le moyen de le télécharger (pour récupérer un zip).
Toutes les apis que je trouve ne permettent pas d'avoir un tel résultat. Je ne sais pas si quelqu'un s'est déjà penché sur le sujet.. ?
Merci à tous pour votre réponse,
Mikis
Après quelques recherches infructueuses sur google, je viens vers vous ^^
En fait, je cherche un moyen assez efficace de télécharger quelques milliers de projets github (java).. Existe-t-il une liste des projets existants que l'on peut trier selon le langage ? Et à partir de cette liste, avoir le nom du projet et avoir le moyen de le télécharger (pour récupérer un zip).
Toutes les apis que je trouve ne permettent pas d'avoir un tel résultat. Je ne sais pas si quelqu'un s'est déjà penché sur le sujet.. ?
Merci à tous pour votre réponse,
Mikis
A voir également:
- Liste des projets Github (java) + téléchargement
- Liste déroulante excel - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Telechargement direct - Accueil - Outils
- Eclipse java - Télécharger - Langages
1 réponse
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
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 ?
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
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..
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...
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 !