如何通过github api获取热门github仓库列表?

问题描述 投票:0回答:5

我想要获取这样的 github 趋势存储库列表 - https://github.com/trending?l=java 但我在 https://developer.github.com/v3/ 没有找到任何类似的请求方法,如何通过趋势存储库获得 json 响应?

github-api
5个回答
42
投票

GitHub 似乎使用他们的 API 来编写趋势页面,并且不将其作为特定 API 呈现。您需要使用Repository Search API。我已经按照本页上的示例进行操作,它可以通过以下方式解决您的需求:

# 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"
}

4
投票

目前没有 GitHub API 来获取趋势存储库列表。唯一的方法是通过选择器从网页中抓取项目。您可以在 Chrome 中打开 https://github.com/trending 并在 devtools 控制台中运行以下代码:

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

这将输出趋势存储库名称列表。为了使其更加自动化,请考虑使用 Headles Chrome 或其他类似工具。

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


2
投票

GitHub 似乎没有向公众提供官方 API 来实现此类用例。 但是,您可以使用可以轻松实现这一目标的项目之一。您可以尝试 GitHub 上的 github-trending-api 项目并实现这一目标。

$ch = curl_init();
$url = 'https://github-trending-api.now.sh/repositories?language=&since=daily'

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch));

这将为您获取 GitHub 上今天的热门项目。 祝你好运。


0
投票

我正在尝试为上述用例制作一个 Android 应用程序,发现 this api 非常有用,可以提供

language
since
作为可选参数,以获取特定于语言的存储库以及数字或天的趋势。

https://github-trending-api.now.sh/repositories?since=daily

参考


0
投票

https://github.com/onurkanbakirci/trendsgit是随着时间的推移跟踪趋势存储库的终极工具。

© www.soinside.com 2019 - 2024. All rights reserved.