2015-05-29 14 views

Antwort

16

GitHub scheint ihre API zu verwenden, um die Trendseite zu schreiben und sie nicht als eine bestimmte API darzustellen. Sie müssen die Repository Search API verwenden. Ich habe die examples on this page gefolgt, die Ihre Bedürfnisse durch lösen könnte:

# 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'`" 

Und dann von dort aus gehen. Sie können auch Ihr Leben viel einfacher machen, indem jq auf OS X oder anderen Plattformen zu installieren schönere Ausgabe zu erhalten:

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

schön, aber wenn ich mich nicht täusche, fordern Sie mit dem Parameter "q = erstellt:>' date" zurückkehren Repositories, die später als vor 7 Tagen erstellt wurden. Ich denke, das Trending-Repository ist derjenige, der die meisten Sterne erhielt, trotz des Erstellungsdatums – Lester

+0

Dieser Parameter kombiniert mit '--data-urlencode" sort = sterne "--data-urlencode" order = desc "' gibt Ihnen die meisten markierten Repos aus die letzte Woche. Sie könnten das auf weniger als eine Woche filtern, wenn Sie möchten, aber das ist ein guter Anfang! – mbb

+5

Das stimmt nicht. Derselbe Link, auf den Sie hingewiesen haben, besagt, dass dieser Code "Die heißesten Repositories der letzten Woche" finden soll. Die GitHub-Trendseite enthält die meist markierten Elemente in einem bestimmten Zeitraum. Es gibt keine Möglichkeit, diese Informationen mit der aktuellen API-Version zu erhalten. Die Lösung, die ich an anderen Orten sah, war, HTML-Seiten zu analysieren. –

1

Derzeit gibt es keine GitHub API ist Liste der Trending-Repositorys zu bekommen. Die einzige Möglichkeit besteht darin, Elemente über Selektoren auf der Webseite zu crawlen. Sie können https://github.com/trending in Chrome öffnen und den folgenden Code in devtools Konsole ausführen:

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

Dies wird Ausgabe der Liste der Repositorys Namen Trending. Um es automatisierter zu machen, betrachten Sie Headles Chrome oder andere ähnliche Werkzeuge.

Es gibt auch mehrere Projekte, die diese Aufgabe bereits in verschiedenen Sprachen gelöst haben. Zum Beispiel:

Verwandte Themen