84 lines
2.3 KiB
TypeScript
84 lines
2.3 KiB
TypeScript
import { $, sleep } from "bun";
|
|
import { albumStuffF, fetchAlbumStuff } from "../lib/CiderV2Playing"
|
|
import { execFile } from "child_process";
|
|
import { rmSync } from "fs";
|
|
|
|
const isKDE = process.env.XDG_CURRENT_DESKTOP === "KDE" ? true : false;
|
|
|
|
let x: albumStuffF | any = false;
|
|
try {
|
|
x = await fetchAlbumStuff() as albumStuffF
|
|
} catch { }
|
|
|
|
|
|
let releaseMode = process.argv[3] === "rel";
|
|
// console.log(process.argv[3],isKDE,releaseMode);
|
|
|
|
function notifyWithImage(song: string, artUrl: string, artist: string, album: string) {
|
|
if (isKDE === true) {
|
|
execFile("notify-send", [
|
|
"-t", (releaseMode ? "10" : "2000"),
|
|
"-a", "Now Playing",
|
|
"-i", artUrl,
|
|
song,
|
|
`${artist}`//<br/>${album !== "" ? `<small>${album}</small>` : ""}`
|
|
]);
|
|
return
|
|
}
|
|
execFile("dunstify", [
|
|
"-t", (releaseMode ? "1" : "2000"),
|
|
"-r", "67676767",
|
|
"-a", "ocbwoy3-whatsplaying",
|
|
"-I", artUrl,
|
|
song,
|
|
`${artist}<br/>`//${album !== "" ? `<small>${album}</small>` : ""}`
|
|
]);
|
|
}
|
|
|
|
function notifyBasic(song: string, artist: string, album: string) {
|
|
if (isKDE === true) {
|
|
execFile("notify-send", [
|
|
"-t", (releaseMode ? "1" : "2000"),
|
|
"-a", "Now Playing",
|
|
song,
|
|
`${artist}`//<br/>${album !== "" ? `<small>${album}</small>` : ""}`
|
|
]);
|
|
return
|
|
}
|
|
execFile("dunstify", [
|
|
"-t", (releaseMode ? "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("&", "&").replaceAll("<", "<").replaceAll(">", ">"),
|
|
text: ` ${y.artist} — ${y.song}`.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">"),
|
|
tooltip: `${y.album}`.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">")
|
|
}))
|
|
}
|
|
|
|
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 { }
|
|
}
|
|
}
|