2015-05-29 12 views

risposta

16

GitHub sembra utilizzare le API per scrivere la pagina di tendenza e non presentarla come una particolare API. Devi usare lo Repository Search API. Ho seguito il examples on this page, che potrebbe risolvere tue esigenze:

# We'll use the `date` command to get the date for "7 days ago" 
$ date -v-7d '+%Y-%m-%d' 
# => 2013-07-15 

curl -G https://api.github.com/search/repositories --data-urlencode "sort=stars" --data-urlencode "order=desc" --data-urlencode "q=language:java" --data-urlencode "q=created:>`date -v-7d '+%Y-%m-%d'`" 

E poi passare da lì. È inoltre possibile rendere la vita molto più facile con l'installazione di jq su OS X o altre piattaforme per ottenere l'output più bella:

curl -G https://api.github.com/search/repositories --data-urlencode "sort=stars" --data-urlencode "order=desc" --data-urlencode "q=language:java" --data-urlencode "q=created:>`date -v-7d '+%Y-%m-%d'`" | jq ".items[0,1,2] | {name, description, language, watchers_count, html_url}" 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
    0  0 0  0 0  0  0  0 --:--:-- --:--:-- -- 77 161k 77 125k 0  0 131k  0 0:00:01 --:--:-- 0100 161k 100 161k 0  0 163k  0 --:--:-- --:--:-- --:--:-- 163k 
{ 
    "name": "vibrant.js", 
    "description": "Extract prominent colors from an image. JS port of Android's Palette.", 
    "language": "JavaScript", 
    "watchers_count": 1466, 
    "html_url": "https://github.com/jariz/vibrant.js" 
} 
{ 
    "name": "JSPatch", 
    "description": "JSPatch bridge Objective-C and JavaScript using the Objective-C runtime. You can call any Objective-C class and method in JavaScript by just including a small engine.", 
    "language": "Objective-C", 
    "watchers_count": 830, 
    "html_url": "https://github.com/bang590/JSPatch" 
} 
{ 
    "name": "KRVideoPlayer", 
    "description": "类似Weico的播放器,支持竖屏模式下全屏播放", 
    "language": "Objective-C", 
    "watchers_count": 524, 
    "html_url": "https://github.com/36Kr-Mobile/KRVideoPlayer" 
} 
+5

bello, ma se non mi sbaglio, richiedere con il parametro "q = creato:>' date" tornerà repository che è stato creato più tardi poi 7 giorni fa. Penso che il deposito di tendenza sia quello che ha ottenuto la maggior parte delle stelle, nonostante la data di creazione – Lester

+0

Questo parametro combinato con '--data-urlencode" sort = stars "--data-urlencode" order = desc "' fornisce i repository più speciali da La settimana scorsa. Puoi filtrarlo a meno di una settimana, se vuoi, ma è un buon inizio! – mbb

+5

Non è vero. Lo stesso link che hai indicato dice che questo codice è "Trova i repository più caldi creati nell'ultima settimana". La pagina di tendenza di GitHub riguarda gli elementi più speciali in un intervallo di tempo. Non c'è modo di ottenere queste informazioni con la versione corrente dell'API. La soluzione che ho visto in altri posti è stata quella di analizzare la pagina HTML di tendenza. –

1

Attualmente non v'è alcun GitHub API per ottenere l'elenco dei repository trend. L'unico modo è quello di eseguire la scansione degli elementi dalla pagina Web tramite i selettori. È possibile aprire https://github.com/trending in Chrome ed eseguire il codice seguente nella console devtools:

uscita
$$('ol.repo-list li h3').forEach(el => console.log(el.innerText)); 

Questa volontà l'elenco dei nomi trend repository. Per renderlo più automatico, considera Headles Chrome o altri strumenti simili.

Inoltre ci sono diversi progetti che hanno già risolto questo compito in diverse lingue. Per esempio:

Problemi correlati