fedi-block-api/apis/mastodon_api.js

68 lines
2.6 KiB
JavaScript
Raw Normal View History

const puppeteer = require("puppeteer");
const app = require("express")();
const PORT = 8069;
2022-03-04 21:01:44 +00:00
async function main(domain, _callback) {
const browser = await puppeteer.launch();
const page = await browser.newPage();
let data;
try {
2022-03-04 21:01:44 +00:00
await page.goto("https://"+domain+"/about/more", {waitUntil: "networkidle2"});
data = await page.evaluate(() => {
let reject = []; // Suspended servers
let media_removal = []; // Filtered media
let federated_timeline_removal = []; // Silenced servers, Limited servers
Array.from(document.querySelectorAll("table")).map(table => {
if (["Suspended servers","Filtered media","Limited servers", "Silenced servers"].includes(table.previousElementSibling.previousElementSibling.innerText)) {
Array.from(table.rows).map((row, j) => {
if (j == 0)
return;
let row_obj = {
2022-03-04 21:13:00 +00:00
domain: row.childNodes[1].innerText,
hash: row.querySelector("[title]").title.replace("SHA-256: ", ""),
reason: row.childNodes[3].innerText,
}
switch(table.previousElementSibling.previousElementSibling.innerText) {
case "Suspended servers":
reject.push(row_obj);
break;
case "Filtered media":
media_removal.push(row_obj);
break;
case "Limited servers":
case "Silenced servers":
federated_timeline_removal.push(row_obj);
break;
}
});
}
});
return {
reject,
media_removal,
federated_timeline_removal,
}
})
} catch(err) {
console.log(err.message);
}
_callback(data);
await browser.close();
}
app.listen(PORT, "127.0.0.1", () => console.log("API started on http://127.0.0.1:"+PORT));
app.get("/", (req, res) => {
2022-03-06 23:36:41 +00:00
res.status(400).json({"message":"insert a domain"});
});
2022-03-06 13:46:43 +00:00
2022-03-04 21:01:44 +00:00
app.get("/:domain", (req, res) => {
const {domain} = req.params;
2022-03-06 23:36:41 +00:00
main(domain, data => res.status(200).json({
"reject": data.reject,
"media_removal": data.media_removal,
"federated_timeline_removal": data.federated_timeline_removal,
}));
2022-03-05 16:07:22 +00:00
});