2015-05-29 205 views

回答

16

GitHub似乎使用他們的API來編寫趨勢頁面,並且不會將其作爲特定的API呈現。您需要使用Repository Search API。我跟着examples on this page,這可能是解決你的需求:

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

然後從那裏。您也可以讓你的生活變得更加簡單通過OS X或其他平臺上安裝jq得到漂亮的輸出:

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

不錯,但如果我沒有記錯的話,用參數請求 「Q =創建:>'日期」 將返回在7天前創建的存儲庫。我認爲,儘管創建日期爲 – Lester

+0

,但趨勢存儲庫是獲得最多明星的存儲庫。該參數與「--data-urlencode」sort = stars「--data-urlencode」order = desc「'結合,可爲您帶來最具星級的回購最後一週。如果你願意,你可以過濾不到一週,但這是一個好的開始! – mbb

+5

這不是事實。您指出的同一鏈接表示此代碼是「查找上週創建的最熱門的存儲庫」。 GitHub趨勢頁面是關於某個時間範圍內最具有星標的項目。無法使用當前版本的API獲取此信息。我在其他地方看到的解決方案是解析熱門頁面HTML。 –

1

目前還沒有GitHub的API來獲取趨勢信息庫的名單。唯一的方法是通過選擇器從網頁抓取項目。您可以在Chrome中devtools控制檯打開https://github.com/trending和運行下面的代碼:趨勢倉庫名稱

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

這將輸出清單。爲了使其更自動化,考慮Headles Chrome或其他類似的工具。

另外有幾個項目已經用不同的語言解決了這個任務。例如: