如何通过 github api 获取趋势 github 存储库列表?
How to get list of trending github repositories by github api?
我想要这样的 github 趋势回购列表 -https://github.com/trending?l=java
但是我在 https://developer.github.com/v3/ 没有找到任何类似的请求方法,我怎样才能得到 json 趋势回购的响应?
GitHub 似乎使用他们的 API 编写趋势页面,而不是将其作为特定的 API 返回。您需要使用 Repository Search API. I've followed the 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"
}
目前没有GitHub API 获取趋势存储库列表。唯一的方法是通过选择器从网页中抓取项目。可以在Chrome中打开https://github.com/trending,在devtools控制台中运行如下代码:
$$('ol.repo-list li h3').forEach(el => console.log(el.innerText));
这将输出趋势存储库名称列表。要使其更加自动化,请考虑 Headles Chrome 或其他类似工具。
还有几个项目已经用不同的语言解决了这个任务。例如:
似乎 GitHub 没有提供正式的 API 到 public 来实现这样的用例。
但是,您可以使用可以为您轻松完成该任务的项目之一。您可以在 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 上的热门项目。
祝你好运。
我正在尝试为上述用例制作一个 android 应用程序,发现 this api 非常有用,可以提供 language
和 since
作为可选参数获取特定于某种语言的回购以及数字或日期的趋势。
https://github-trending-api.now.sh/repositories?since=daily
我想要这样的 github 趋势回购列表 -https://github.com/trending?l=java 但是我在 https://developer.github.com/v3/ 没有找到任何类似的请求方法,我怎样才能得到 json 趋势回购的响应?
GitHub 似乎使用他们的 API 编写趋势页面,而不是将其作为特定的 API 返回。您需要使用 Repository Search API. I've followed the 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"
}
目前没有GitHub API 获取趋势存储库列表。唯一的方法是通过选择器从网页中抓取项目。可以在Chrome中打开https://github.com/trending,在devtools控制台中运行如下代码:
$$('ol.repo-list li h3').forEach(el => console.log(el.innerText));
这将输出趋势存储库名称列表。要使其更加自动化,请考虑 Headles Chrome 或其他类似工具。
还有几个项目已经用不同的语言解决了这个任务。例如:
似乎 GitHub 没有提供正式的 API 到 public 来实现这样的用例。 但是,您可以使用可以为您轻松完成该任务的项目之一。您可以在 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 上的热门项目。 祝你好运。
我正在尝试为上述用例制作一个 android 应用程序,发现 this api 非常有用,可以提供 language
和 since
作为可选参数获取特定于某种语言的回购以及数字或日期的趋势。
https://github-trending-api.now.sh/repositories?since=daily