获取每年GitHub用户贡献的数量

时间:2016-11-20 15:14:37

标签: javascript github client-side github-api

GitHub上的用户个人资料显示用户过去一年的贡献数量:

我想在我的网站上显示这些信息,最好不要引入任何类型的后端。我在几个地方寻找过它。 /users/(me)/中没有列出任何内容。没有抓取页面源,有没有办法检索这些信息?我没有看到任何记录......

2 个答案:

答案 0 :(得分:1)

你见过GithubAPI吗?使用它,您可以从js文件运行请求,而无需实现任何后端。

出于您的目的,我认为您可以使用以下请求https://api.github.com/users/yourUserName/events。这将为您提供与youUserName相关的事件列表。

e.g

    [
      {
        "id": "xxxxxxx",
        "type": "PushEvent",
        "actor": {.......},
        "repo": {......},
        "payload": {.......},
        "public": true,
        "created_at": "2016-11-17T21:33:15Z"
      },
      .....
    ]

您应该浏览列表并过滤type = PushEvent和created_at = lastYear。

我希望这可以帮到你!

更新:该服务只是给出了过去3个月的结果,所以其他可能性是检查(用户/用户名/ repos),然后检查对它们的提交(repos / username / repoName / commit)

答案 1 :(得分:1)

还可以使用xml解析器解析svg日历数据,然后对所有data-count条目求和。为避免出现CORS问题,您可以使用urlreq上生成http://urlreq.appspot.com/req之类的代理:



const user = 'controversial';

fetch('https://urlreq.appspot.com/req?method=GET&url=https://github.com/users/' + user + '/contributions')
  .then(function(response) {
    return response.text();
  })
  .then(function(text) {
    xmlDoc = new DOMParser().parseFromString(text, 'text/xml');
    var nodes = xmlDoc.getElementsByTagName('rect');
    var count = 0;
    for (var i = 0; i < nodes.length; i++) {
      count += parseInt(nodes[i].getAttribute('data-count'));
    }
    console.log('contributions count : ' + count);
  })
  .catch(function(error) {
    console.log('Request failed', error)
  });
&#13;
&#13;
&#13;

使用&amp;的命令行的另一个示例可以找到

here