2016-06-02 26 views
5

Ho bisogno di fare una ricerca molto ampia su Github per una statistica nella mia tesi.risultati del limite di ricerca github

Ad esempio, ho bisogno di esplorare un gran numero di progetti Android su GitHub, ma il sito limita il risultato della ricerca a 1000 (ad esempio https://github.com/search?l=java&q=onCreate&ref=searchresults&type=Code&utf8=%E2%9C%93). Utilizzando anche l'API GitHub Java ho provato la libreria org.eclipse.egit.github.core.client.GitHubClient usando il metodo GitHubClient.searchRepositories() ma anche lì il numero di risultati è limitato.

Qualcuno sa come ottenere tutti i risultati?

+2

Hai guardato [GitHub Archive] (https://www.githubarchive.org/)? Potrebbe essere un modo per ottenere i tuoi dati senza dover infastidire l'API di ricerca di GitHub, che come hai scoperto fornisce un numero limitato di risultati ed è anche a tasso limitato. –

+0

Sei in grado di sfogliare i risultati? Potresti ottenere il primo pezzo di 1000, ottenere il blocco successivo e ripetere finché non hai tutto. –

+0

Questa non è una domanda Java o una domanda di programmazione. – shmosel

risposta

10

The Search API tornerà fino a 1000 risultati per query (tra cui impaginazione), come documentato qui:

https://developer.github.com/v3/search/#about-the-search-api

Tuttavia, c'è un trucco si può usare per andare a prendere più di 1000 risultati durante l'esecuzione una ricerca di repository. Potresti dividere la tua ricerca in segmenti, entro la data in cui sono stati creati i repository. Ad esempio, è possibile prima cercare i repository creati nella prima settimana di ottobre 2013, poi la seconda settimana, poi settembre e così via.

Poiché si limiterà la ricerca a un periodo ristretto, probabilmente si otterranno meno di 1000 risultati e quindi sarà possibile ottenerli tutti. Nel caso in cui si noti che più di 1000 risultati vengono restituiti per un periodo, si dovrebbe restringere ulteriormente il periodo, in modo da poter raccogliere tutti i risultati.

https://help.github.com/articles/searching-repositories/#search-based-on-when-a-repository-was-created-or-last-updated

Si dovrebbe essere in grado di automatizzare questo tramite l'API.

+0

Questo è intelligente :) – Soubriquet

+0

Sembra che tu non possa interrogare le API di ricerca del repository per data di creazione. Il seguente cercherà, ma ordina, ordina e creato vengono ignorati: 'arricciatura -H 'Accetta: applicazione/vnd.github.v3.text-match + json' 'https://api.github.com/search/ repository? q = language: Java & created> = 2013-04-11T00: 00: 00Z & sort = created & order = asc '| grep created_at' – Soubriquet

+1

@Soubriquet Non stai costruendo quell'URL correttamente. Il parametro "creato" dovrebbe essere una parte della query, non un parametro a sé stante. –

1

Se si stanno cercando tutti i file in Github con nome file: nome-file, è possibile anche suddividerlo con a query attribute : size.

Ad esempio, si sta cercando tutti i file denominati test.rb in Github, l'API Github può restituire più di 11 milioni di risultati, ma è possibile ottenerne solo 1000 perché the GitHub Search API provides up to 1,000 results for each search. Un url come: https://api.github.com/search/code?q=filename:test.rb+size:1000..1500 potrebbe suddividere la ricerca modificando l'intervallo di dimensioni.

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - [Dalla recensione] (/ recensione/post di bassa qualità/18263687) –

+0

Bene, ho modificato il mio post :) –

Problemi correlati