Я пытаюсь извлечь информацию ниже для любого пользователя из github.
Есть ли способ /api, открытый в github-api, где мы можем получить эту информацию напрямую?
Я пытаюсь извлечь информацию ниже для любого пользователя из github.
Есть ли способ /api, открытый в github-api, где мы можем получить эту информацию напрямую?
Это, вероятно, не решение, которое вы ищете, но созданный массив содержит всю необходимую информацию:
curl https://github.com/users/ankit8898/contributions_calendar_data
Я уверен, что вы ищете решение, которое элегантно, чем это.
ОБНОВЛЕНИЕ Похоже, что это не последний способ получить данные участников. Пожалуйста, посмотрите в другом месте на StackOverflow для правильного ответа.
Вы можете получить календарь с SVG https://github.com/users/<USER>/contributions
с to
параметра URL, как:
https://github.com/users/bertrandmartel/contributions?to=2016-12-31
Вы можете использовать базовый xml-анализатор для суммирования всех вкладов svg.
Пример с curl & xmlstarlet для 2016 года:
curl -s "https://github.com/users/bertrandmartel/contributions?to=2016-12-31" | \
xmlstarlet sel -t -v "sum(/svg/g/g/rect/@data-count)"
Вы можете использовать эту функцию для извлечения вкладов за прошлый год (клиент):
function getContributions(){
const svgGraph = document.getElementsByClassName('js-calendar-graph')[0];
const daysRects = svgGraph.getElementsByClassName('day');
const days = [];
for (let d of daysRects){
days.push({
date: d.getAttribute('data-date'),
count: d.getAttribute('data-count')
});
}
return days;
}
Я также написал небольшой узел модуля, который может "извлечь" вклады
@simonwep/GitHub-вклады
Может быть, это поможет вам (даже я опоздал на 4 года)
Для этого вы можете использовать API GitHub Events:
const got = require('got')
async function getEvents(username) {
const events = []
let page = 1
do {
const url = 'https://api.github.com/users/${username}/events?page=${page}'
var { body } = await got(url, {
json: true
})
page++
events.push(...body)
} while(!body.length)
return events
}
(async () => {
const events = await getEvents('handtrix')
console.log('Overall Events', events.length)
console.log('PullRequests', events.filter(event => event.type === 'PullRequestEvent').length)
console.log('Forks', events.filter(event => event.type === 'ForkEvent').length)
console.log('Issues', events.filter(event => event.type === 'IssuesEvent').length)
console.log('Reviews', events.filter(event => event.type === 'PullRequestReviewEvent').length)
})()