From c8efc9bdd1e0c8cd2865d6c5d41219816ba96b98 Mon Sep 17 00:00:00 2001 From: lolcat Date: Fri, 24 Nov 2023 18:00:50 -0600 Subject: [PATCH] add xeno canto command --- client.js | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/client.js b/client.js index f9f49bc..f8b081d 100755 --- a/client.js +++ b/client.js @@ -148,7 +148,7 @@ async function serveddg(msg, results, page){ /* Websocket functions */ -async function send(channel, text, file = null){ +async function send(channel, text, file = null, forcemime = null){ if(typeof channel == "object"){ @@ -169,7 +169,13 @@ async function send(channel, text, file = null){ /* Send file */ - var mimetype = await getmime(file); + if(forcemime === null){ + + var mimetype = await getmime(file); + }else{ + + var mimetype = forcemime; + } var form_data = new formdata(); form_data.append("text", text); @@ -816,7 +822,7 @@ deek.on("message", async function(msg, user){ break; } - var res = await fetch("https://4get.perennialte.ch/api/v1/videos?s=" + value); + var res = await fetch("https://4get.perennialte.ch/api/v1/videos?s=" + encodeURIComponent(value)); var res_get = await res.json(); if(res_get.status != "ok"){ @@ -857,6 +863,48 @@ deek.on("message", async function(msg, user){ send(msg, "Search results for \"" + value + "\"\n\n" + text.join("\n\n")); break; + case "x": + case "xeno": + if(value.trim() == ""){ + + send( + msg, + "You must give me a search term you autistic cocksucker with no legs!!\nExample: .x owl" + ); + break; + } + + var res = await fetch("https://xeno-canto.org/api/2/recordings?query=" + encodeURIComponent(value)); + var res_get = await res.json(); + + if(res_get.recordings.length === 0){ + + send( + msg, + "No recordings found for \"" + value + "\"!!!!!" + ); + break; + } + + var filereq = await fetch( + res_get.recordings[0].file, + {headers: img_headers} + ); + + var file = await filereq.buffer(); + + send( + msg, + ">" + res_get.recordings[0].en + " in " + res_get.recordings[0].cnt + " (" + res_get.recordings[0].loc + ")\n" + + res_get.recordings[0].rmk, + file, + [ + "audio/mpeg", + "mp3" + ] + ); + break; + case "help": case "h": send( @@ -868,6 +916,7 @@ deek.on("message", async function(msg, user){ ".page/.p => get page offset for image search\n" + ".pp => get next page\n" + ".yt/.youtube => search the jewish propaganda catalog (now powered by 4get)\n" + + ".x/xeno => search for bird sounds\n" + ".roll/.r => Because deekchat was too slow\n" + ".mumble/.m <[optional]ip:port> => check if lolcat died\n" + ".prop => check if the sun has exploded or smth\n" +