Files
nix/scripts/bin/actWithMusic.ts
2025-11-19 22:01:25 +02:00

85 lines
1.8 KiB
TypeScript

import { $, sleep } from "bun";
import { albumStuffF, fetchAlbumStuff } from "../lib/CiderV2Playing";
import { execFile } from "child_process";
import { rmSync } from "fs";
let x: albumStuffF | any = false;
try {
x = (await fetchAlbumStuff()) as albumStuffF;
} catch {}
function notifyWithImage(
song: string,
artUrl: string,
artist: string,
album: string,
) {
execFile("dunstify", [
"-t",
process.argv[3] === "rel" ? "1" : "2000",
"-r",
"67676767",
"-a",
"ocbwoy3-whatsplaying",
"-I",
artUrl,
song,
`${artist}<br/>`, //${album !== "" ? `<small>${album}</small>` : ""}`
]);
}
console.log(process.argv[3]);
function notifyBasic(song: string, artist: string, album: string) {
execFile("dunstify", [
"-t",
process.argv[3] === "rel" ? "1" : "2000",
"-r",
"67676767",
"-a",
"ocbwoy3-whatsplaying",
song,
`${artist}`, //<br/>${album !== "" ? `<small>${album}</small>` : ""}`
]);
}
if (process.argv[2] === "waybar") {
if (!x) {
process.stdout.write(
JSON.stringify({
class: "hidden",
}),
);
process.exit(0);
}
const y = x as albumStuffF;
process.stdout.write(
JSON.stringify({
// text: ` ${y.artist} — ${y.song}`.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;"),
text: `${y.artist}${y.song}`
.replaceAll("&", "&amp;")
.replaceAll("<", "&lt;")
.replaceAll(">", "&gt;"),
tooltip: `${y.album}`
.replaceAll("&", "&amp;")
.replaceAll("<", "&lt;")
.replaceAll(">", "&gt;"),
}),
);
}
if (process.argv[2] === "notif") {
const y = x as albumStuffF;
if (!x || !y.artUrl) process.exit(1);
try {
console.log(y.song, y.artUrl, y.artist, y.album);
notifyWithImage(y.song, y.artUrl, y.artist, y.album);
} catch {
notifyBasic(y.song, y.artist, y.album);
try {
rmSync(y.artUrl);
} catch {}
}
}