let area = document.querySelector('#area-main'); let entries = []; let users = {}; let fetchData; async function genTree(treeId) { fetchData = fetchData || await fetch(`https://corsproxy.io/?https://scratch.mit.edu/projects/${treeId}/remixtree/bare/`) .then(x => x.json()); entries.push(treeId) let entry = fetchData[treeId]; while (entry) { entry = entry.parent_id; entries.push(entry); entry = fetchData[entry]; if (entry) users[entry.username] = true; } return entry; } let doThings = false; async function main() { let latestData = await fetch("https://corsproxy.io/?https://api.scratch.mit.edu/studios/34493018/projects").then(x => x.json()); await genTree(latestData[0].id); // latest project await genTree("654605857"); // tree bug here, unavoidable without jank doThings = true; document.querySelector('.contributors').textContent = Object.keys(users).join(', '); } main(); let i = 0; function sanitize(content) { const decoder = document.createElement('div'); decoder.textContent = content; return decoder.innerHTML; } setInterval(function() { if (doThings && (window.innerHeight + window.scrollY) >= document.body.scrollHeight - 25) { let h = ''; for (let j = 0; j < 35; j++) { let entry = entries[i]; if (!entry || !(entry in fetchData)) break; h += `
`; i++; } area.innerHTML += h; } },500);