45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
const TARGET_URL = "http://localhost:8080/endpoint";
|
|
let lastSentSong = "";
|
|
|
|
function extractAndSendSong() {
|
|
// Najdeme widget "Now Playing" v levém dolním rohu Spotify
|
|
const trackInfo = document.querySelector('[data-testid="now-playing-widget"]');
|
|
|
|
if (trackInfo) {
|
|
const links = trackInfo.querySelectorAll('a');
|
|
const songTitle = links[0] ? links[0].innerText : null;
|
|
const artistName = links[1] ? links[1].innerText : "Unknown Artist";
|
|
|
|
if (songTitle) {
|
|
const currentTrackString = `${artistName} - ${songTitle}`;
|
|
|
|
// Odesíláme pouze pokud se písnička změnila, abychom zbytečně nezatěžovali server
|
|
if (currentTrackString !== lastSentSong) {
|
|
lastSentSong = currentTrackString;
|
|
|
|
console.log("Odesílám skladbu:", currentTrackString);
|
|
|
|
fetch(TARGET_URL, {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json"
|
|
},
|
|
body: JSON.stringify({
|
|
artist: artistName,
|
|
title: songTitle,
|
|
timestamp: new Date().toISOString()
|
|
})
|
|
}).catch(err => {
|
|
console.error("Chyba při odesílání:", err);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Sledujeme změny na stránce, protože Spotify funguje jako Single Page Application
|
|
const observer = new MutationObserver(() => {
|
|
extractAndSendSong();
|
|
});
|
|
|
|
observer.observe(document.body, { childList: true, subtree: true }); |