anonradio thing for foxwells thread
This commit is contained in:
parent
3980bf20f5
commit
f9046a1a8b
1 changed files with 99 additions and 0 deletions
99
src/modules/anonradio.js
Normal file
99
src/modules/anonradio.js
Normal file
|
@ -0,0 +1,99 @@
|
|||
const GUILD_ID = "300436792916836352";
|
||||
const CHANNEL_ID = "353018352580689930";
|
||||
const THREAD_ID = "1054106209273253888";
|
||||
const MESSAGE_ID = "1054109813132509245";
|
||||
|
||||
async function updateNowPlaying() {
|
||||
let playing;
|
||||
try {
|
||||
playing = await fetch("https://anonradio.net/playing").then((res) =>
|
||||
res.text()
|
||||
);
|
||||
} catch (err) {
|
||||
try {
|
||||
playing = await fetch("http://anonradio.net/playing").then((res) =>
|
||||
res.text()
|
||||
);
|
||||
} catch (err) {}
|
||||
}
|
||||
let schedule;
|
||||
try {
|
||||
schedule = await fetch("https://anonradio.net/schedule/").then((res) =>
|
||||
res.text()
|
||||
);
|
||||
} catch (err) {
|
||||
try {
|
||||
schedule = await fetch("http://anonradio.net/schedule/").then((res) =>
|
||||
res.text()
|
||||
);
|
||||
} catch (err) {}
|
||||
}
|
||||
|
||||
if (!playing || !schedule) return;
|
||||
|
||||
let lines = schedule.split("\n");
|
||||
lines = lines.slice(4, lines.length - 2);
|
||||
const line = lines[0];
|
||||
|
||||
const [_, time, id, name] = line.match(/^(.{3,4} .{4})\s+(.+?) {2}(.+?)$/);
|
||||
|
||||
let liveNow = {name: "ident", id: "aNONradio"};
|
||||
|
||||
if (name.includes("<- Live NOW")) {
|
||||
liveNow.id = id;
|
||||
liveNow.name = name.replace("<- Live NOW", "").trim();
|
||||
}
|
||||
|
||||
let title = "";
|
||||
let subtitle = "";
|
||||
|
||||
if (playing.includes("listeners with a daily peak of")) {
|
||||
title = `${liveNow.name} (\`${liveNow.id}\`)`;
|
||||
subtitle = playing;
|
||||
} else {
|
||||
const [_, current, peakDay, peakMonth, dj, metadata] = playing.match(
|
||||
/\[(\d+)\/(\d+)\/(\d+)\] \((.+?)\): (.+)/
|
||||
);
|
||||
|
||||
if (
|
||||
metadata == "https://archives.anonradio.net" ||
|
||||
liveNow.name == "Synth Battle Royale"
|
||||
) {
|
||||
title = `${liveNow.name} (\`${dj}\`)`;
|
||||
} else {
|
||||
title = `${metadata} (\`${dj}\`)`;
|
||||
}
|
||||
subtitle = `${current} listening with a daily peak of ${peakDay} and ${peakMonth} peak for the month.`;
|
||||
}
|
||||
|
||||
let openmicTime = "";
|
||||
if (liveNow.id == "openmic") {
|
||||
try {
|
||||
const icecast = await fetch("http://anonradio.net:8010/status-json.xsl")
|
||||
.then((res) => res.text())
|
||||
.then((data) =>
|
||||
JSON.parse(data.replace(/"title": - ,/g, '"title":" - ",'))
|
||||
);
|
||||
const streamData = icecast.icestats.source.find(
|
||||
(src) => src.listenurl == "http://anonradio.net:8010/openmic"
|
||||
);
|
||||
if (streamData && streamData.stream_start_iso8601) {
|
||||
const startTime = new Date(streamData.stream_start_iso8601).getTime();
|
||||
openmicTime = `-\\*- OpenMIC DJ has been streaming for ${formatTime(
|
||||
Date.now() - startTime
|
||||
)} -\\*-\n`;
|
||||
}
|
||||
} catch (err) {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
const content = (`${title}\n${subtitle}\n${openmicTime}`).trim();
|
||||
const thread = hf.bot.guilds.get(GUILD_ID).threads.get(THREAD_ID);
|
||||
const msg = await thread.getMessage(MESSAGE_ID);
|
||||
if (msg.content !== content) {
|
||||
thread.editMessage(MESSAGE_ID, {content});
|
||||
}
|
||||
}
|
||||
|
||||
hf.timer.add("anonradio", updateNowPlaying, 2000);
|
Loading…
Reference in a new issue