Skip to content

Instantly share code, notes, and snippets.

[
{
"contributor": "wesleytodd",
"url": "https://github.com/wesleytodd",
"contributions": 146
},
{
"contributor": "blakeembrey",
"url": "https://github.com/blakeembrey",
"contributions": 111
},
{
"contributor": "bjohansebas",
"url": "https://github.com/bjohansebas",
"contributions": 89
},
{
"contributor": "UlisesGascon",
"url": "https://github.com/UlisesGascon",
"contributions": 77
},
{
"contributor": "Phillip9587",
"url": "https://github.com/Phillip9587",
"contributions": 73
},
{
"contributor": "carpasse",
"url": "https://github.com/carpasse",
"contributions": 43
},
{
"contributor": "jonchurch",
"url": "https://github.com/jonchurch",
"contributions": 37
},
{
"contributor": "ctcpip",
"url": "https://github.com/ctcpip",
"contributions": 22
},
{
"contributor": "inigomarquinez",
"url": "https://github.com/inigomarquinez",
"contributions": 21
},
{
"contributor": "github-actions[bot]",
"url": "https://github.com/github-actions[bot]",
"contributions": 17
},
{
"contributor": "carlosstenzel",
"url": "https://github.com/carlosstenzel",
"contributions": 11
},
{
"contributor": "crandmck",
"url": "https://github.com/crandmck",
"contributions": 10
},
{
"contributor": "chrisdel101",
"url": "https://github.com/chrisdel101",
"contributions": 9
},
{
"contributor": "dpopp07",
"url": "https://github.com/dpopp07",
"contributions": 8
},
{
"contributor": "Ayoub-Mabrouk",
"url": "https://github.com/Ayoub-Mabrouk",
"contributions": 7
},
{
"contributor": "jonkoops",
"url": "https://github.com/jonkoops",
"contributions": 7
},
{
"contributor": "IamLizu",
"url": "https://github.com/IamLizu",
"contributions": 7
},
{
"contributor": "marco-ippolito",
"url": "https://github.com/marco-ippolito",
"contributions": 7
},
{
"contributor": "ipreencekmr",
"url": "https://github.com/ipreencekmr",
"contributions": 6
},
{
"contributor": "ShubhamOulkar",
"url": "https://github.com/ShubhamOulkar",
"contributions": 5
},
{
"contributor": "raksbisht",
"url": "https://github.com/raksbisht",
"contributions": 5
},
{
"contributor": "jeffreybaird",
"url": "https://github.com/jeffreybaird",
"contributions": 5
},
{
"contributor": "dougwilson",
"url": "https://github.com/dougwilson",
"contributions": 4
},
{
"contributor": "mertcanaltin",
"url": "https://github.com/mertcanaltin",
"contributions": 3
},
{
"contributor": "dependabot[bot]",
"url": "https://github.com/dependabot[bot]",
"contributions": 3
},
{
"contributor": "GeorgeShvab",
"url": "https://github.com/GeorgeShvab",
"contributions": 3
},
{
"contributor": "RobinTail",
"url": "https://github.com/RobinTail",
"contributions": 2
},
{
"contributor": "EvanHahn",
"url": "https://github.com/EvanHahn",
"contributions": 2
},
{
"contributor": "rhodgkins",
"url": "https://github.com/rhodgkins",
"contributions": 2
},
{
"contributor": "cengizcmataraci",
"url": "https://github.com/cengizcmataraci",
"contributions": 2
},
{
"contributor": "Shantanugupta43",
"url": "https://github.com/Shantanugupta43",
"contributions": 2
},
{
"contributor": "italojs",
"url": "https://github.com/italojs",
"contributions": 2
},
{
"contributor": "ljharb",
"url": "https://github.com/ljharb",
"contributions": 2
},
{
"contributor": "MaoShizhong",
"url": "https://github.com/MaoShizhong",
"contributions": 2
},
{
"contributor": "aroyan",
"url": "https://github.com/aroyan",
"contributions": 2
},
{
"contributor": "Binilkks",
"url": "https://github.com/Binilkks",
"contributions": 2
},
{
"contributor": "danielgindi",
"url": "https://github.com/danielgindi",
"contributions": 2
},
{
"contributor": "papandreou",
"url": "https://github.com/papandreou",
"contributions": 2
},
{
"contributor": "jsoref",
"url": "https://github.com/jsoref",
"contributions": 2
},
{
"contributor": "bigbigDreamer",
"url": "https://github.com/bigbigDreamer",
"contributions": 2
},
{
"contributor": "broofa",
"url": "https://github.com/broofa",
"contributions": 2
},
{
"contributor": "CommanderRoot",
"url": "https://github.com/CommanderRoot",
"contributions": 2
},
{
"contributor": "andvea",
"url": "https://github.com/andvea",
"contributions": 1
},
{
"contributor": "juanarbol",
"url": "https://github.com/juanarbol",
"contributions": 1
},
{
"contributor": "agungjati",
"url": "https://github.com/agungjati",
"contributions": 1
},
{
"contributor": "alexandercerutti",
"url": "https://github.com/alexandercerutti",
"contributions": 1
},
{
"contributor": "pr4j3sh",
"url": "https://github.com/pr4j3sh",
"contributions": 1
},
{
"contributor": "hamirmahal",
"url": "https://github.com/hamirmahal",
"contributions": 1
},
{
"contributor": "slagiewka",
"url": "https://github.com/slagiewka",
"contributions": 1
},
{
"contributor": "Abdel-Monaam-Aouini",
"url": "https://github.com/Abdel-Monaam-Aouini",
"contributions": 1
},
{
"contributor": "sazk07",
"url": "https://github.com/sazk07",
"contributions": 1
},
{
"contributor": "bhavya3024",
"url": "https://github.com/bhavya3024",
"contributions": 1
},
{
"contributor": "joshbuker",
"url": "https://github.com/joshbuker",
"contributions": 1
},
{
"contributor": "almic",
"url": "https://github.com/almic",
"contributions": 1
},
{
"contributor": "FDrag0n",
"url": "https://github.com/FDrag0n",
"contributions": 1
},
{
"contributor": "Dmitry-Kondar",
"url": "https://github.com/Dmitry-Kondar",
"contributions": 1
},
{
"contributor": "attrid",
"url": "https://github.com/attrid",
"contributions": 1
},
{
"contributor": "kristof-low",
"url": "https://github.com/kristof-low",
"contributions": 1
},
{
"contributor": "gireeshpunathil",
"url": "https://github.com/gireeshpunathil",
"contributions": 1
},
{
"contributor": "UzairJ99",
"url": "https://github.com/UzairJ99",
"contributions": 1
},
{
"contributor": "choi2021",
"url": "https://github.com/choi2021",
"contributions": 1
},
{
"contributor": "hayden36",
"url": "https://github.com/hayden36",
"contributions": 1
},
{
"contributor": "joharkhan99",
"url": "https://github.com/joharkhan99",
"contributions": 1
},
{
"contributor": "peterh-capella",
"url": "https://github.com/peterh-capella",
"contributions": 1
},
{
"contributor": "johnburnett",
"url": "https://github.com/johnburnett",
"contributions": 1
},
{
"contributor": "nicolasgandrade",
"url": "https://github.com/nicolasgandrade",
"contributions": 1
},
{
"contributor": "axhuwastaken",
"url": "https://github.com/axhuwastaken",
"contributions": 1
},
{
"contributor": "abhijeetpandit7",
"url": "https://github.com/abhijeetpandit7",
"contributions": 1
},
{
"contributor": "peterdanwan",
"url": "https://github.com/peterdanwan",
"contributions": 1
},
{
"contributor": "rehmansheikh222",
"url": "https://github.com/rehmansheikh222",
"contributions": 1
},
{
"contributor": "corydalis10",
"url": "https://github.com/corydalis10",
"contributions": 1
},
{
"contributor": "mgsantos177",
"url": "https://github.com/mgsantos177",
"contributions": 1
},
{
"contributor": "wilyJ80",
"url": "https://github.com/wilyJ80",
"contributions": 1
},
{
"contributor": "LuiGeeDev",
"url": "https://github.com/LuiGeeDev",
"contributions": 1
},
{
"contributor": "juliogarciape",
"url": "https://github.com/juliogarciape",
"contributions": 1
},
{
"contributor": "aelmardhi",
"url": "https://github.com/aelmardhi",
"contributions": 1
},
{
"contributor": "Ahmed1monm",
"url": "https://github.com/Ahmed1monm",
"contributions": 1
},
{
"contributor": "erensarac",
"url": "https://github.com/erensarac",
"contributions": 1
},
{
"contributor": "tomasz13nocon",
"url": "https://github.com/tomasz13nocon",
"contributions": 1
},
{
"contributor": "tianbuyung",
"url": "https://github.com/tianbuyung",
"contributions": 1
},
{
"contributor": "GreyTearsDev",
"url": "https://github.com/GreyTearsDev",
"contributions": 1
},
{
"contributor": "aastha-cse",
"url": "https://github.com/aastha-cse",
"contributions": 1
},
{
"contributor": "krzysdz",
"url": "https://github.com/krzysdz",
"contributions": 1
},
{
"contributor": "Miguelrom",
"url": "https://github.com/Miguelrom",
"contributions": 1
},
{
"contributor": "bnoordhuis",
"url": "https://github.com/bnoordhuis",
"contributions": 1
},
{
"contributor": "MehfoozurRehman",
"url": "https://github.com/MehfoozurRehman",
"contributions": 1
},
{
"contributor": "EasonLin0716",
"url": "https://github.com/EasonLin0716",
"contributions": 1
},
{
"contributor": "grjan7",
"url": "https://github.com/grjan7",
"contributions": 1
},
{
"contributor": "mishrasur7",
"url": "https://github.com/mishrasur7",
"contributions": 1
},
{
"contributor": "gregfenton",
"url": "https://github.com/gregfenton",
"contributions": 1
},
{
"contributor": "zareefhasan",
"url": "https://github.com/zareefhasan",
"contributions": 1
},
{
"contributor": "Tejas150",
"url": "https://github.com/Tejas150",
"contributions": 1
},
{
"contributor": "jpricardo",
"url": "https://github.com/jpricardo",
"contributions": 1
},
{
"contributor": "nikeee",
"url": "https://github.com/nikeee",
"contributions": 1
},
{
"contributor": "dotnetCarpenter",
"url": "https://github.com/dotnetCarpenter",
"contributions": 1
},
{
"contributor": "engpetermwangi",
"url": "https://github.com/engpetermwangi",
"contributions": 1
},
{
"contributor": "msimerson",
"url": "https://github.com/msimerson",
"contributions": 1
},
{
"contributor": "fetsorn",
"url": "https://github.com/fetsorn",
"contributions": 1
},
{
"contributor": "manoharreddyporeddy",
"url": "https://github.com/manoharreddyporeddy",
"contributions": 1
},
{
"contributor": "lancatlin",
"url": "https://github.com/lancatlin",
"contributions": 1
},
{
"contributor": "mifi",
"url": "https://github.com/mifi",
"contributions": 1
},
{
"contributor": "meowingwhitey",
"url": "https://github.com/meowingwhitey",
"contributions": 1
},
{
"contributor": "sheplu",
"url": "https://github.com/sheplu",
"contributions": 1
},
{
"contributor": "krsriq",
"url": "https://github.com/krsriq",
"contributions": 1
},
{
"contributor": "ravibisht",
"url": "https://github.com/ravibisht",
"contributions": 1
},
{
"contributor": "wojtekmaj",
"url": "https://github.com/wojtekmaj",
"contributions": 1
},
{
"contributor": "aqeelat",
"url": "https://github.com/aqeelat",
"contributions": 1
},
{
"contributor": "melikhov-dev",
"url": "https://github.com/melikhov-dev",
"contributions": 1
},
{
"contributor": "alexstrat",
"url": "https://github.com/alexstrat",
"contributions": 1
},
{
"contributor": "isnifer",
"url": "https://github.com/isnifer",
"contributions": 1
},
{
"contributor": "TorstenDittmann",
"url": "https://github.com/TorstenDittmann",
"contributions": 1
},
{
"contributor": "Uzlopak",
"url": "https://github.com/Uzlopak",
"contributions": 1
},
{
"contributor": "gurgunday",
"url": "https://github.com/gurgunday",
"contributions": 1
},
{
"contributor": "kurtextrem",
"url": "https://github.com/kurtextrem",
"contributions": 1
},
{
"contributor": "hdtmccallie",
"url": "https://github.com/hdtmccallie",
"contributions": 1
},
{
"contributor": "proudparrot2",
"url": "https://github.com/proudparrot2",
"contributions": 1
},
{
"contributor": "bewinsnw",
"url": "https://github.com/bewinsnw",
"contributions": 1
},
{
"contributor": "jonboulle",
"url": "https://github.com/jonboulle",
"contributions": 1
},
{
"contributor": "alexander-akait",
"url": "https://github.com/alexander-akait",
"contributions": 1
},
{
"contributor": "alxndrsn",
"url": "https://github.com/alxndrsn",
"contributions": 1
},
{
"contributor": "DimitriPapadopoulos",
"url": "https://github.com/DimitriPapadopoulos",
"contributions": 1
},
{
"contributor": "greggman",
"url": "https://github.com/greggman",
"contributions": 1
},
{
"contributor": "jkbach",
"url": "https://github.com/jkbach",
"contributions": 1
},
{
"contributor": "julien-c",
"url": "https://github.com/julien-c",
"contributions": 1
},
{
"contributor": "risu729",
"url": "https://github.com/risu729",
"contributions": 1
},
{
"contributor": "JohnSimumatik",
"url": "https://github.com/JohnSimumatik",
"contributions": 1
},
{
"contributor": "dhouck",
"url": "https://github.com/dhouck",
"contributions": 1
},
{
"contributor": "pedro-php",
"url": "https://github.com/pedro-php",
"contributions": 1
},
{
"contributor": "aminerol",
"url": "https://github.com/aminerol",
"contributions": 1
},
{
"contributor": "robertsky",
"url": "https://github.com/robertsky",
"contributions": 1
},
{
"contributor": "ipetrouchtchak-fi",
"url": "https://github.com/ipetrouchtchak-fi",
"contributions": 1
},
{
"contributor": "tinhochu",
"url": "https://github.com/tinhochu",
"contributions": 1
},
{
"contributor": "Lord-Kamina",
"url": "https://github.com/Lord-Kamina",
"contributions": 1
},
{
"contributor": "joshkel",
"url": "https://github.com/joshkel",
"contributions": 1
},
{
"contributor": "raiandexter0607",
"url": "https://github.com/raiandexter0607",
"contributions": 1
},
{
"contributor": "NateEag",
"url": "https://github.com/NateEag",
"contributions": 1
},
{
"contributor": "rmhaiderali",
"url": "https://github.com/rmhaiderali",
"contributions": 1
},
{
"contributor": "ljeda",
"url": "https://github.com/ljeda",
"contributions": 1
}
]

@wesleytodd, @blakeembrey, @bjohansebas, @UlisesGascon, @Phillip9587, @carpasse, @jonchurch, @ctcpip, @inigomarquinez, @github-actions[bot], @carlosstenzel, @crandmck, @chrisdel101, @dpopp07, @Ayoub-Mabrouk, @jonkoops, @IamLizu, @marco-ippolito, @ipreencekmr, @ShubhamOulkar, @raksbisht, @jeffreybaird, @dougwilson, @mertcanaltin, @dependabot[bot], @GeorgeShvab, @RobinTail, @EvanHahn, @rhodgkins, @cengizcmataraci, @Shantanugupta43, @italojs, @ljharb, @MaoShizhong, @aroyan, @Binilkks, @danielgindi, @papandreou, @jsoref, @bigbigDreamer, @broofa, @CommanderRoot, @andvea, @juanarbol, @agungjati, @alexandercerutti, @pr4j3sh, @hamirmahal, @slagiewka, @Abdel-Monaam-Aouini, @sazk07, @bhavya3024, @joshbuker, @almic, @FDrag0n, @Dmitry-Kondar, @attrid, @kristof-low, @gireeshpunathil, @UzairJ99, @choi2021, @hayden36, @joharkhan99, @peterh-capella, @johnburnett, @nicolasgandrade, @axhuwastaken, @abhijeetpandit7, @peterdanwan, @rehmansheikh222, @corydalis10, @mgsantos177, @wilyJ80, @LuiGeeDev, @juliogarciape, @aelmardhi, @Ahmed1monm, @erensarac, @tomasz13nocon, @tianbuyung, @GreyTearsDev, @aastha-cse, @krzysdz, @Miguelrom, @bnoordhuis, @MehfoozurRehman, @EasonLin0716, @grjan7, @mishrasur7, @gregfenton, @zareefhasan, @Tejas150, @jpricardo, @nikeee, @dotnetCarpenter, @engpetermwangi, @msimerson, @fetsorn, @manoharreddyporeddy, @lancatlin, @mifi, @meowingwhitey, @sheplu, @krsriq, @ravibisht, @wojtekmaj, @aqeelat, @melikhov-dev, @alexstrat, @isnifer, @TorstenDittmann, @Uzlopak, @gurgunday, @kurtextrem, @hdtmccallie, @proudparrot2, @bewinsnw, @jonboulle, @alexander-akait, @alxndrsn, @DimitriPapadopoulos, @greggman, @jkbach, @julien-c, @risu729, @JohnSimumatik, @dhouck, @pedro-php, @aminerol, @robertsky, @ipetrouchtchak-fi, @tinhochu, @Lord-Kamina, @joshkel, @raiandexter0607, @NateEag, @rmhaiderali, @ljeda

import { Octokit } from "@octokit/rest";
import { writeFileSync } from "fs";
const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
const repos = [
"expressjs/express",
"expressjs/expressjs.com",
"jshttp/accepts",
"expressjs/body-parser",
"jshttp/content-disposition",
"jshttp/content-type",
"jshttp/cookie",
"pillarjs/encodeurl",
"jshttp/etag",
"jshttp/forwarded",
"pillarjs/finalhandler",
"jshttp/fresh",
"jshttp/http-errors",
"jshttp/media-typer",
"jshttp/mime-db",
"jshttp/mime-types",
"jshttp/negotiator",
"jshttp/on-finished",
"pillarjs/parseurl",
"pillarjs/path-to-regexp",
"jshttp/proxy-addr",
"jshttp/range-parser",
"pillarjs/router",
"pillarjs/send",
"expressjs/serve-static",
"jshttp/statuses",
"jshttp/type-is",
"jshttp/vary"
];
const since = new Date("2024-01-01T00:00:00Z").toISOString();
(async () => {
const contribMap = new Map();
for (const repoFullName of repos) {
const [org, repo] = repoFullName.split("/");
console.log(`Fetching commits for ${repoFullName} since ${since}`);
let page = 1;
let hasMore = true;
while (hasMore) {
const res = await octokit.repos.listCommits({
owner: org,
repo,
since,
per_page: 100,
page,
});
if (res.data.length === 0) {
hasMore = false;
break;
}
for (const commit of res.data) {
if (commit.author && commit.author.login) {
const login = commit.author.login;
contribMap.set(login, (contribMap.get(login) || 0) + 1);
}
}
page++;
}
}
const sorted = [...contribMap.entries()].sort((a, b) => b[1] - a[1]);
const formatted = sorted.map(([login, count]) => ({
contributor: login,
url: `https://github.com/${login}`,
contributions: count,
}));
writeFileSync("contribs.json", JSON.stringify(formatted, null, 2));
console.log("Contributors written to contribs.json");
console.log("All contributors:");
console.log(formatted.map(({ contributor, url }) => `[@${contributor}](${url})`).join(", "))
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment