Как получить список тренда репозиториев github от github api?

Я хочу получить список репозиториев github trending, подобных этому - https://github.com/trending?l=java но я не нашел подобных методов запросов в https://developer.github.com/v3/, как я могу получить ответ json с trends repos?

Ответы

Ответ 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. Удачи.