const fs = require("fs") async function main() { const out = fs.openSync("output.txt", "w") const content = fs.readFileSync('input.txt', 'utf-8'); const lines = content.split(/\r?\n/); for (let line of lines) { if(line.startsWith("!")) { fs.writeSync(out, line + "\n"); continue; } if(line.trim() === "") { continue; } const alias = line .replace("https://matrix.to/#/", "") // Remove links .split(" ")[0] // Ignore comments .trim(); // Remove superfluous whitespace console.log("Resolving: ", alias); const id = await getIdForAlias(alias); fs.writeSync(out, id + "\n"); } fs.closeSync(out); } async function getIdForAlias(alias) { const request = await fetch(`https://chat.upi.li/_matrix/client/v3/directory/room/${encodeURIComponent(alias)}`); if(!request.ok) { console.log(request); console.log("Fetching", `https://chat.upi.li/_matrix/client/v3/directory/room/${encodeURIComponent(alias)}`) throw new Error("Could not get data for room", alias); } const data = await request.json(); return data.room_id; } main();