Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I add "current streak" of contributions from github to my blog?

I have a personal blog I built using rails. I want to add a section to my site that displays my current streak of github contributions. What would be the best way about doing this?

edit: for clarification, here is what I want:

enter image description here

just the number of days is all that is necessary for me.

like image 722
Ox Smith Avatar asked Apr 12 '13 18:04

Ox Smith


People also ask

What is current streak in GitHub?

The current streak is the number of consecutive days ending with the current day on which you have made at least one contribution.

How do I maintain my GitHub streak?

Setting a stop date is one way to make your GitHub streak your own. You can also decide which days are part of the streak and which are not. For example, if you're a full-time programmer, you may want to take weekends off.

How are GitHub contributions counted?

Whenever you commit to a project's default branch or the gh-pages branch, open an issue, or propose a Pull Request, we'll count that as a contribution. Repositories are sorted by your recent impact. A commit today is worth more than a commit last week.

How do I see all contributions on GitHub?

On GitHub.com, navigate to the main page of the repository. Under your repository name, click Insights. In the left sidebar, click Contributors. Optionally, to view contributors during a specific time period, click, then drag until the time period is selected.


2 Answers

Considering the GitHub API for Users doesn't yet expose that particular information (number of days for current stream of contributions), you might have to:

  • scrape it (extract it by reading the user's GitHub page)
    As klamping mentions in his answer (upvoted), the url to scrap would be:
    https://github.com/users/<username>/contributions_calendar_data
    https://github.com/users/<username>/contributions
    (for public repos only, though)

    SherlockStd has an updated (May 2017) parsing code below:

    https://github-stats.com/api/user/streak/current/:username 
  • try projects which are using https://github.com/users/<username>/contributions_calendar_data (as listed in Marques Johansson's answer, upvoted)

    • IonicaBizau/git-stats:

git-stats

  • akerl/githubchart (Github contribution SVG generator)
  • akerl/githubstats (Github contribution statistics)

https://github.com/akerl/githubchart

  • build that graph yourself: see the GitHub project git-cal

https://raw.github.com/k4rthik/git-cal/master/screenshots/img1.png

git-cal is a simple script to view commits calendar (similar to GitHub contributions calendar) on command line.
Each block in the graph corresponds to a day and is shaded with one of the 5 possible colors, each representing relative number of commits on that day.

  • or establish a service that will report, each day, any new commit for that given day to a Google Calendar (using the Google Calendar API through a project like nf/streak).
    You can then read that information and report it in your blog.

Google Calendar streak


You can find various example of scraping that information:

  • github_team_calendar.py
  • weekend-commits.js

As in:

$.getJSON('https://github.com/users/' + location.pathname.replace(/\//g, '') + '/contributions_calendar_data', weekendWork); 
  • leaderboard.rb:

Like:

leaderboard = members.map do |u|   user_stats = get("https://github.com/users/#{u}/contributions_calendar_data")   total = user_stats.map { |s| s[1] }.reduce(&:+)   [u, total] end 
  • ... (you get the idea)
like image 118
VonC Avatar answered Sep 20 '22 06:09

VonC


The URL for the plain JSON data was: https://github.com/users/[username]/contributions_calendar_data [Edit: Looks like this URL no longer works)

There is a URL which generates the SVG, which other answers have indicated. That is here: https://github.com/users/[username]/contributions

Simply replace [username] with your github username in the URL and you should be able to see the chart. See other answers for more in-depth explanations

like image 42
Kevin Lamping Avatar answered Sep 20 '22 06:09

Kevin Lamping