Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save UlisesGascon/c2ad2338e34b139f036dc2337dfcf73c to your computer and use it in GitHub Desktop.
Save UlisesGascon/c2ad2338e34b139f036dc2337dfcf73c to your computer and use it in GitHub Desktop.
[
{
"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