gpt4 book ai didi

curl - 获取所有公共(public)用户贡献 aka "calendar data"(github api v3)

转载 作者:行者123 更新时间:2023-12-01 15:22:56 24 4
gpt4 key购买 nike

我发现了很多线程——甚至有几个项目使用 api 而非 github api 嵌入了贡献日历——但这些方法或线程都没有真正回答这个问题。 One comes close但这是不行的。

我只是想访问一个用户的贡献总数,如您在 github 个人资料页面上的日历中所示,如下所示...

enter image description here

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))

最佳答案

使用 GraphQL v4

如果使用 graphql API是一个选项,您可以使用 contributionsConnection获取特定时间段之间的贡献总数:

{
viewer {
contributionsCollection(from: "2020-01-01T00:00:00", to: "2020-12-01T00:00:00") {
contributionCalendar {
totalContributions
}
}
}
}

输出 :
{
"data": {
"viewer": {
"contributionsCollection": {
"contributionCalendar": {
"totalContributions": 118
}
}
}
}
}

解析日历svg

您可以使用 xmlstartlet 解析从日历 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)"

关于curl - 获取所有公共(public)用户贡献 aka "calendar data"(github api v3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45021406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com