diff --git a/site.js b/site.js index 6f5c19b..04b3264 100644 --- a/site.js +++ b/site.js @@ -3,20 +3,39 @@ import { writeFile } from "fs/promises"; import { rankCalc } from "./rank.js"; let cache = {}; +let site = process.env.site || 'darflen'; -async function siteCollector(user, path) { +async function siteCollector(user, path, site) { let users = []; let i = 1; while (true) { - let p = `https://api.darflen.com/users/${user}/${path}/${i}`; + let p; + + if (site == 'darflen') { + p = `https://api.darflen.com/users/${user}/${path}/${i}`; + } else if (site == 'scratch') { + p = `https://api.scratch.mit.edu/users/${user}/${path}/?offset=${i * 20}`; + } else { + throw 'That site is not supported.'; + } + let j1 = cache[p]; if (!j1) { let h1 = await fetch(p); - j1 = await h1.json(); + try { + j1 = await h1.json(); + } catch(err) { + j1 = []; + } } cache[p] = j1; - let users2 = j1[path].map(x => x.profile.username); + let users2; + if (site == 'darflen') { + users2 = j1[path].map(x => x.profile.username); + } else if (site == 'scratch') { + users2 = j1.map(x => x.username); + } users = [...users, ...users2]; @@ -26,11 +45,11 @@ async function siteCollector(user, path) { console.log(`User ${user} has ${i} pages calculated`); } - return users; + return users; } (async function () { - let users = await siteCollector('paradock','followers'); + let users = await siteCollector(process.env.user || 'paradock', 'followers', site); let data = {}; let p = []; @@ -40,9 +59,9 @@ async function siteCollector(user, path) { p = []; } p.push((async function () { - let j1 = await siteCollector(u,'followers'); + let j1 = await siteCollector(u, 'followers', site); - let j2 = await siteCollector(u,'following'); + let j2 = await siteCollector(u, 'following', site); data[u] = { followers: j1,