Update
Some checks are pending
ptero-push / build (push) Waiting to run

- Make NWRplay use new GWES icecast server!
This commit is contained in:
Christopher Cookman 2024-08-15 23:09:16 -06:00
parent 662e0e775c
commit d48fe3085a
Signed by: ChrisChrome
GPG key ID: A023A26E42C33A42

View file

@ -7,7 +7,7 @@ const blacklist = require("./data/blacklist.json");
const events = require("./data/events.json"); const events = require("./data/events.json");
const outlookURLs = require("./data/outlook.json"); const outlookURLs = require("./data/outlook.json");
const sattelites = require("./data/sattelites.json"); const sattelites = require("./data/sattelites.json");
const nwrstreams = require("./data/nwrstreams.json") const nwrstreams = {callsigns:{}};
const Jimp = require("jimp"); const Jimp = require("jimp");
const { client, xml } = require("@xmpp/client"); const { client, xml } = require("@xmpp/client");
const fetch = require("node-fetch"); const fetch = require("node-fetch");
@ -264,6 +264,24 @@ var errCount = 0;
const curUUID = generateUUID(); const curUUID = generateUUID();
// nwrstreams setup
// get icecast json data http://ingest.wxr.gwes-cdn.net/status-json.xsl
const fetchNWRstreams = () => {
fetch("http://ingest.wxr.gwes-cdn.net/status-json.xsl").then((res) => {
res.json().then((json) => {
json.icestats.source.forEach((source) => {
nwrstreams.callsigns[source.server_name] = source.listenurl;
});
});
console.log(`${colors.cyan("[INFO]")} Fetched NWR streams`);
}).catch((err) => {
console.error(err);
});
}
fetchNWRstreams();
setInterval(fetchNWRstreams, 5 * 60 * 1000); // Every 5 minutes
const xmpp = client({ const xmpp = client({
service: "xmpp://conference.weather.im", service: "xmpp://conference.weather.im",
domain: "weather.im", domain: "weather.im",
@ -693,16 +711,10 @@ discord.on('ready', async () => {
"description": "The URL of the stream to play", "description": "The URL of the stream to play",
"type": 3, "type": 3,
"required": true, "required": true,
"choices": [] "autocomplete": true
} }
] ]
} }
for (const key in nwrstreams.callsigns) {
nwrplayCommand.options[0].choices.push({
"name": key,
"value": key
});
}
commands.push(nwrplayCommand); commands.push(nwrplayCommand);
} }
await (async () => { await (async () => {
@ -1448,6 +1460,19 @@ discord.on("interactionCreate", async (interaction) => {
} }
break; break;
case Discord.InteractionType.ApplicationCommandAutocomplete:
//map nwrstreams
if (interaction.commandName === "nwrplay") {
let callsignSearch = interaction.options.getString("callsign");
let callsigns = Object.keys(nwrstreams.callsigns);
let results = callsigns.filter((callsign) => callsign.toLowerCase().includes(callsignSearch.toLowerCase()));
if (results.length > 25) {
results = results.slice(0, 25);
}
interaction.respond(results.map((callsign) => ({ name: callsign, value: callsign })));
}
break;
} }
}); });