Created
August 22, 2020 17:07
-
-
Save icebob/022ab2176075e22c4f076fb1130cb5fe to your computer and use it in GitHub Desktop.
Convert Github stars to csv
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fetch = require("node-fetch"); | |
const { createWriteStream, existsSync } = require("fs"); | |
const fs = require("fs").promises; | |
const outputFileName = "stars.csv"; | |
const githubUser = "icebob"; | |
function log(msg) { | |
console.log(`[${new Date().toISOString().substr(11, 8)}] -`, msg); | |
} | |
async function start() { | |
const f = createWriteStream(outputFileName); | |
f.write("Repo,URL,Description,Stars,Language,Last Update\n") | |
let page = 1; | |
while (true) { | |
const pageFilename = `page-${page}.json`; | |
let json; | |
if (existsSync(pageFilename)) { | |
log(`Load page ${page} from file...`); | |
const content = await fs.readFile(pageFilename, "utf8"); | |
json = JSON.parse(content); | |
} else { | |
log(`Download page ${page}...`); | |
const res = await fetch(`https://api.github.com/users/${githubUser}/starred?page=${page}&per_page=100`); | |
const content = await res.text(); | |
await fs.writeFile(`page-${page}.json`, content, "utf8"); | |
json = JSON.parse(content); | |
} | |
if (json.length == 0) break; | |
log("Processing data..."); | |
for(star of json) { | |
const row = []; | |
row.push(star.full_name, star.html_url, '"' + star.description + '"', star.stargazers_count, star.language, star.updated_at) | |
f.write(row.join(",") + "\n"); | |
} | |
page++; | |
} | |
f.close(); | |
log("Done."); | |
} | |
start(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment