arc*_*ryx 5 curl github github-api
我发现了很多线程——甚至有几个项目使用 github api 之外的 api 嵌入了贡献日历——但这些方法或线程都没有真正回答这个问题。有一件事很接近,但这是不可能的。
我只是想获取用户的贡献总数,如 github 个人资料页面上的日历所示,如下所示......
api 文档描述了收集 Repo Contrib 数据,因此我尝试用有根据的猜测盲目地尝试 api,但没有成功。有谁知道这个数据实际上是否有一个可行的端点?我真的需要自己计算这些信息还是做一些肮脏的 html 抓取废话?这看起来很愚蠢...有人吗?
更新:对于任何寻求快速网络抓取解决方案的人来说,这是一个使用cheerio和正则表达式的解决方案
const axios = require('axios')
const cheerio = require('cheerio')
const url = 'https://github.com/archae0pteryx'
function getCommits(url) {
return new Promise((resolve, reject) => {
axios.get(url).then(res => {
const load = cheerio.load(res.data)
const parsed = load('div.js-contribution-graph > h2').text()
const reg = /\d+/g
const x = parsed.match(reg)
resolve(x)
}).catch(err => reject(err))
})
}
getCommits(url)
.then(x => console.log(x))
.catch(err => console.error(err))
Run Code Online (Sandbox Code Playgroud)
如果可以选择使用graphql API,您可以使用tributionsConnection来获取特定时间段内的贡献总数:
{
viewer {
contributionsCollection(from: "2020-01-01T00:00:00", to: "2020-12-01T00:00:00") {
contributionCalendar {
totalContributions
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出 :
{
"data": {
"viewer": {
"contributionsCollection": {
"contributionCalendar": {
"totalContributions": 118
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以用来xmlstarlet解析从日历 svg 中获取的 XML 文件: https: //github.com/users/archae0pteryx/contributions。
比抓取 GitHub 网站更好,但仍然无法使用官方 API:
curl -s "https://github.com/users/archae0pteryx/contributions" | \
xmlstarlet sel -t -v "sum(//svg/g/g/rect/@data-count)"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |