GitHub上的用户个人资料显示用户过去一年的贡献数量:
我想在我的网站上显示这些信息,最好不要引入任何类型的后端。我在几个地方寻找过它。 /users/(me)/中没有列出任何内容。没有抓取页面源,有没有办法检索这些信息?我没有看到任何记录......
答案 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;
使用curl&amp;的命令行的另一个示例可以找到xmlstarlet
here