Я хочу получить список репозиториев github trending, подобных этому - https://github.com/trending?l=java но я не нашел подобных методов запросов в https://developer.github.com/v3/, как я могу получить ответ json с trends repos?
Как получить список тренда репозиториев github от github api?
Ответ 1
GitHub, похоже, использует свой API для написания трендовой страницы и не представляет ее в качестве конкретного API. Вам необходимо использовать 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'`"
И затем оттуда. Вы также можете сделать вашу жизнь намного проще, установив jq
на OS X или на другие платформы, чтобы получить более красивый вывод:
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 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"
}
Ответ 2
В настоящее время нет API-интерфейса GitHub для получения списка репозиториев трендов. Единственный способ - обход элементов с веб-страницы с помощью селекторов. Вы можете открыть https://github.com/trending в Chrome и запустить следующий код в консоли devtools:
$$('ol.repo-list li h3').forEach(el => console.log(el.innerText));
Это приведет к отображению списка имен тренда репозитория. Чтобы сделать его более автоматическим, рассмотрите Headles Chrome или другие подобные инструменты.
Также есть несколько проектов, которые уже решили эту задачу на разных языках. Например:
Ответ 3
Похоже, GitHub не предоставляет официальный API для публики для достижения такого варианта использования. Однако вы можете использовать один из проектов, который может выполнить это для вас легко. Вы можете попробовать проект github-trending-api на GitHub и добиться именно этого.
$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. Удачи.