var a = (await Promise.all(Array.from($(".phui-oi-list-view").children).filter(li => { let tableElement = li.children[0].children[0].children[0].children[0].children[0].children; let commitNumber = tableElement[1].children[0].children[0].innerText; commitNumber = +commitNumber.substring(2); return commitNumber > 25942; }).map(async (li) => { let tableElement = li.children[0].children[0].children[0].children[0].children[0].children; let commitNumber = tableElement[1].children[0].children[0].innerText; let revisionTitle = tableElement[1].children[0].children[1].innerText; let committer = tableElement[2].children[1].children[0].children[0]?.text || ""; let revisionUrl = "https://code.wildfiregames.com/" + commitNumber; let contributorString = null; let contributor = await fetch(revisionUrl) .then((response) => response?.text() || "") .then((html) => html.match(/Patch by\s*:\s*[^@]*@*(?[^><]+).*/g)); if (contributor === null) contributorString = committer; else { contributorString = contributor[0].replace(/Patch by\s*:\s*[^@]*@*(?[^><]+).*/g, "$1"); } return { "contributor": contributorString, "commitNumber": commitNumber, "contributed": contributor !== null, "revisionTitle": revisionTitle, "revisionUrl": "https://code.wildfiregames.com/" + commitNumber } }))).reduce(function (rv, x) { (rv[x.contributor] = rv[x.contributor] || []).push({ "revisionTitle": x.revisionTitle, "commitNumber": x.commitNumber, "contributed": x.contributed, "revisionUrl": x.revisionUrl }); return rv; }, {}); var div = document.createElement("div"); div.id = "summary-output"; var sortedContributorNames = Object.keys(a).filter(b => b != "autobuild"); sortedContributorNames.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())); div.innerHTML = sortedContributorNames.map(contributorName => { let contributorData = a[contributorName]; let string = `${contributorName} ${(contributorData[0].contributed ? "contributed" : "committed")}:\n`; return string; }).join("
"); document.getElementById("main-page-frame").prepend(div);