diff --git a/content.js b/content.js new file mode 100644 index 0000000..5475b3f --- /dev/null +++ b/content.js @@ -0,0 +1,45 @@ +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 }); \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..3a32f0b --- /dev/null +++ b/manifest.json @@ -0,0 +1,20 @@ +{ + "manifest_version": 3, + "name": "Spotify IP Sender", + "version": "1.0", + "permissions": [ + "activeTab", + "storage" + ], + "host_permissions": [ + "https://open.spotify.com/*", + "http://*/*", + "https://*/*" + ], + "content_scripts": [ + { + "matches": ["https://open.spotify.com/*"], + "js": ["content.js"] + } + ] +} \ No newline at end of file