billywhizz
7/23/2013 - 7:17 PM

5 entertaining things you can find with the GitHub Search API

5 entertaining things you can find with the GitHub Search API

Find the most commented issues in the past month

OK. OK. You were only expecting 5 examples. But since you read this far, here's a bonus one.

# We'll use the `date` command to get the date for "1 month ago"
$ date -v-1m '+%Y-%m-%d'
# => 2013-06-23

$ curl -G https://api.github.com/search/issues             \
    --data-urlencode "q=created:>`date -v-7d '+%Y-%m-%d'`" \
    --data-urlencode 'sort=comments'                       \
    --data-urlencode 'order=desc'                          \
    -H 'Accept: application/vnd.github.preview'            \
    | jq '.items[0,1,2] | {html_url, title, comments}'

I ran this a couple months ago, when we were first sketching out the search API. What did I find? A Pull Request to remove all press representatives from bitcoin.org. Followed by another Pull Request to counteract the first one.

Interesting times.

{
  "comments": 158,
  "title": "Remove press representatives",
  "html_url": "https://github.com/bitcoin/bitcoin.org/issues/152"
}
{
  "comments": 151,
  "title": "Add several independent voices to the Press Center page",
  "html_url": "https://github.com/bitcoin/bitcoin.org/issues/162"
}
{
  "comments": 150,
  "title": "Select and implement a template engine (or The issue to discuss everything Framework refactoring)",
  "html_url": "https://github.com/joomla/jissues/issues/86"
}

Check out the Issue Search API docs for more details.

What does John Resig work on other than JavaScript?

$ curl -G https://api.github.com/search/repositories   \
    --data-urlencode 'q=@jeresig -language:javascript' \
    -H 'Accept: application/vnd.github.preview'        \
    | jq '.items[] | {html_url, watchers_count, language, name}'
{
  "name": "processing-js",
  "language": "Java",
  "watchers_count": 1455,
  "html_url": "https://github.com/jeresig/processing-js"
}
{
  "name": "selectortest",
  "language": null,
  "watchers_count": 12,
  "html_url": "https://github.com/jeresig/selectortest"
}
{
  "name": "wtpa-bot",
  "language": "Perl",
  "watchers_count": 9,
  "html_url": "https://github.com/jeresig/wtpa-bot"
}
{
  "name": "jeresig.github.com",
  "language": null,
  "watchers_count": 6,
  "html_url": "https://github.com/jeresig/jeresig.github.com"
}
{
  "name": "apples2artworks",
  "language": "Python",
  "watchers_count": 1,
  "html_url": "https://github.com/jeresig/apples2artworks"
}
{
  "name": "datacook",
  "language": "Perl",
  "watchers_count": 0,
  "html_url": "https://github.com/jeresig/datacook"
}

@jeresig has a repo with zero people watching it? This changes my whole worldview.


Check out the Repository Search API docs for more details.

Find recently-indexed Clojure projects using an MIT license

Rebels! I bet these dudes don't like hammocks either.

$ curl -G https://api.github.com/search/code          \
    --data-urlencode 'q=MIT License path:project.clj' \
    --data-urlencode 'sort=indexed'                   \
    --data-urlencode 'order=desc'                     \
    -H 'Accept: application/vnd.github.preview'       \
    | jq '.items[0,1,2] | {description: (.repository.description), name: (.repository.full_name), html_url}'
{
  "html_url": "https://github.com/royvandewater/optparse/blob/e4bb8558405ffd7ba6a14718b89e7cd418b5565e/project.clj",
  "name": "royvandewater/optparse",
  "description": "Option parser for clojure"
}
{
  "html_url": "https://github.com/SnootyMonkey/coming-soon/blob/108decfd74338ba5428580c8cd156f684484d3b2/project.clj",
  "name": "SnootyMonkey/coming-soon",
  "description": "coming-soon is a simple Clojure/ClojureScript/Redis 'landing page' application that takes just a few minute to setup"
}
{
  "html_url": "https://github.com/rreas/ring-test/blob/5fd78404eec4f81033ae073c5a42ea8a55ccc75a/project.clj",
  "name": "rreas/ring-test",
  "description": "An integration test framework for ring web applications."
}

Check out the Code Search API docs for more details.

How many issues do Ruby developers create each day?

Track issue trends over time.

for i in {1..7}
do
    created_on=`date -v-"${i}"d '+%Y-%m-%d'`
    issue_count=$(                                                      \
        curl -G https://api.github.com/search/issues                    \
        --data-urlencode "q=language:ruby created:$created_on"          \
        -H "Authorization: token REDACTED"                              \
        -H "Accept: application/vnd.github.preview" | jq ".total_count" \
    )

    echo "$created_on: $issue_count"
done
2013-07-22: 1174
2013-07-21: 716
2013-07-20: 687
2013-07-19: 1336
2013-07-18: 1348
2013-07-17: 1471
2013-07-16: 1386

Check out the Issue Search API docs for more details.

Find the oldest user accounts with zero followers

Go follow these poor souls.

$ curl -G https://api.github.com/search/users   \
    --data-urlencode 'q=followers:0'            \
    --data-urlencode 'sort=joined'              \
    --data-urlencode 'order=asc'                \
    -H 'Accept: application/vnd.github.preview' \
    | jq '.items[0,1,2] | {html_url, login, id}'
{
  "id": 30,
  "login": "fanvsfan",
  "html_url": "https://github.com/fanvsfan"
}
{
  "id": 32,
  "login": "railsjitsu",
  "html_url": "https://github.com/railsjitsu"
}
{
  "id": 44,
  "login": "errfree",
  "html_url": "https://github.com/errfree"
}

Check out the User Search API docs for more details.

Find the hottest repositories created in the last week

Keep an eye on the latest trending repos.

# 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 "q=created:>`date -v-7d '+%Y-%m-%d'`" \
    --data-urlencode "sort=stars"                          \
    --data-urlencode "order=desc"                          \
    -H "Accept: application/vnd.github.preview"            \
    | jq ".items[0,1,2] | {name, description, language, watchers_count, html_url}"
{
  "html_url": "https://github.com/mame/quine-relay",
  "watchers_count": 2492,
  "language": "Ruby",
  "description": "An uroboros program with 50 programming languages",
  "name": "quine-relay"
}
{
  "html_url": "https://github.com/jehna/VerbalExpressions",
  "watchers_count": 483,
  "language": "JavaScript",
  "description": "JavaScript Regular expressions made easy",
  "name": "VerbalExpressions"
}
{
  "html_url": "https://github.com/applidium/ADTransitionController",
  "watchers_count": 340,
  "language": "Objective-C",
  "description": "UINavigationController with custom transitions",
  "name": "ADTransitionController"
}

Check out the Repository Search API docs for more details.