Подтвердить что ты не робот

Как мне получить список всех проектов GitHub, которые я внес в прошлом году?

Я понимаю, что могу нажать https://api.github.com/users/:user_id/repos, чтобы получить список всех репозиториев, которыми я владею или имел разветвленный. Но то, что я хотел бы сделать, - это выяснить все проекты, которые я внесла (заработал, вытащил запросы, проблемы и т.д.) За последний год. API событий позволяет мне получить последние 300 событий, но за последние двенадцать месяцев я внес большой вклад в это. Возможно ли это?

4b9b3361

Ответ 1

Благодаря твит из @caged, я написал этот Perl script, чтобы перебирать месяцы в мои вклады:

use v5.12;
use warnings;
use utf8;
my $uname = 'theory';

my %projects;
for my $year (2012..2014) {
    for my $month (1..12) {
        last if $year == 2014 && $month > 1;
        my $from = sprintf '%4d-%02d-01', $year, $month;
        my $to   = sprintf '%4d-%02d-01', $month == 12 ? ($year + 1, 1) : ($year, $month + 1);
        my $res = `curl 'https://github.com/$uname?tab=contributions&from=$from&to=$to' | grep 'class="title"'`;
        while ($res =~ /href="([^"?]+)/g) {
            my (undef, $user, $repo) = split m{/} => $1;
            $projects{"$user/$repo"}++;
        }
    }
}

say "$projects{$_}: $_" for sort keys %projects;

Да, HTML-скребок - это некрасиво, но сделал трюк для моих нужд.

Ответ 2

Я столкнулся с этим вопросом некоторое время назад, и это раздражало меня, что я не мог найти ответ (я хотел перечислить все свои проекты в своем резюме).

GitHubContributions.io

Любой пользователь может использовать методы API JSON REST (только /user/<username> и /user/<username>/events/<page>), хотя сайт смехотворно медленный, потому что у меня есть 250 миллионов записей из VPS с 1 ГБ ОЗУ. Если вы хотите, чтобы исходные данные были скомпилированы (много GB JSON), я был бы рад предоставить его вам.

Код (конечно) на GitHub: github.com/hut8/github-contributions