2015-05-29 82 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或其他类似的工具。

另外有几个项目已经用不同的语言解决了这个任务。例如: