How to get list of trending github repositories by github api?

GitHub seems to use their API to write the trending page and don't present it back as a particular API. You need to use the Repository Search API. I've followed the examples on this page, which could solve your needs by:

# 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'`"

And then go from there. You can also make your life a lot easier by installing jq on OS X or other platforms to get prettier output:

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

Currently there is no GitHub API to get list of trending repositories. The only way is to crawl items from web page by selectors. You can open https://github.com/trending in Chrome and run the following code in devtools console:

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

This will output the list of trending repositories names. To make it more automated consider Headles Chrome or other similar tools.

Also there are several projects that already have solved this task in different languages. For example:

  • vitalets/github-trending-repos
  • andygrunwald/go-trending
  • sheharyarn/github-trending
  • etc

Tags:

Github Api