6 Commits

Author SHA1 Message Date
723c8af2ba Nahrát soubory do „/“ 2026-09-24 19:13:41 +00:00
2e567e638b Aktualizovat content.js 2026-09-23 15:29:28 +00:00
9e2cc10160 Aktualizovat content.js 2026-09-23 15:22:04 +00:00
de82ebd56f Aktualizovat content.js 2026-09-23 15:10:32 +00:00
876a537354 Nahrát soubory do „/“ 2026-09-19 22:00:28 +00:00
3dcec7d43f Odstranit proces.txt 2026-09-19 22:00:00 +00:00
6 changed files with 82 additions and 95 deletions

View File

@@ -1,80 +0,0 @@
spotify playlist: https://open.spotify.com/playlist/5uJ1AO6PBOHrG9M3XK521M
Aplikace pro verejne viditelny monitor:
Priprava pro aplikaci:
1. stahnout a naistalovat python main/spotify.exe a zakliknout "Add python.exe to PATH"
2. extrahovat spotify-sender/spotify-sender.zip do nove slozky
3. extrahovanou slozku vlozit do chrome extentions tim ze v chromu: (tri tecky, rozsireni, nacist rozbalene) a vybrat tu slozku s tema souborama
4. udelat jsi nekde slozku treba "sweb" a do ni extrahovat sweb/node.zip a sweb/katalog+zvuky.zip
5. do sweb dat soubor sweb/server.js a soubor sweb/spotify_widget.py
Spousteni aplikace:
1. otevrit spotify playlist "https://open.spotify.com/playlist/5uJ1AO6PBOHrG9M3XK521M"
2. spustit nove cmdcko a vejit do slozky sweb
3. napsat "node server.js" (spusti jse server pro odesilani spotify dat)
4. spustit dalsi cmdcko v sweb
5. napsat "py spotidy_widget" (spusti jse samostatna aplikace)
Ovladani aplikace:
1. F2 – Zobrazení nebo skrytí vstupního pole pro psaní vlastních zpráv.
2. Enter (při zobrazeném vstupním poli) – Odeslání zprávy. Pokud odešlete prázdnou zprávu (nebo výchozí text), stará zpráva se okamžitě odstraní z obrazovky.
3. Esc – Pokud je otevřené pole pro zprávu, zavře ho. Pokud je zpráva zavřená, ukončí celou aplikaci (režim celé obrazovky).
4. Šipka vpravo (Right) – Přeskočení na následující produkt v katalogu.
5. Šipka vlevo (Left) – Návrat na předchozí produkt v katalogu.
6. Mezerník (Space) – Pozastavení (PAUSE) nebo opětovné spuštění automatického cyklování produktů.
7. Klávesa R nebo r – Ruční načtení / aktualizace katalogu produktů ze složky
Aplikace pro monitor videtelny jenom v stanku:
Priprava pro aplikaci:
Spousteni aplikace:
Ovladani aplikace:
Webovka:
-webovka
Priprava pro webovku:
Spousteni webovky:
Ovladani webovky:
-panel
Priprava pro panel:
Spousteni panelu:
Ovladani panelu:
Katalog access:
Priprava pro access:
1. nainstalovat nejaky prohlizec souboru(pokud mas windows, mas ho predinstalovany)
Spousteni accessu:
1. spusti nejaky prohlizec souboru
2. zadej cestu "\\123.456.789.123\katalog\"(jenom priklad)
Ovladani accessu:
1. kurva asi umis prochazet soubory ne?
2. ta vole proste vyber jsi slozku treba "3d-spiral" a v ni najdes soubor menem "info.txt" a ten proste upravuj.

View File

@@ -1,15 +0,0 @@
aplikace ktera pobezi na monitoru pro verejnost a bude ukazovat katalog s spotify
hotovo
aplikace ktera pobezi na obrazovce pro pracovniky v stanku ktera bude ukazovat spotify s moznosti ovladat hudbu a prichazajici objednavky ktere bude taky moct potvrzovat
zatim jenom napad
moznost menit katalog/sklad pomoci admin panelu
zatim jenom napad
WEBOVKA
verejna webova stranka kde bude moznost objednavani online, online platba a dalsi informace o stanku
jenom zaklad(UI)
admin panel ktery bude moct menit katalog, hudbu, osvetleni a stav objednavek
zatim jenom napad

62
content.js Normal file
View File

@@ -0,0 +1,62 @@
const TARGET_URL = "http://localhost:8080/endpoint";
let lastSentSignature = "";
function extractAndSendSong() {
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";
// Získání obrázku alba
const imgElement = trackInfo.querySelector('img');
const albumCoverUrl = imgElement ? imgElement.src : null;
// Získání času
const currentTimeEl = document.querySelector('[data-testid="playback-position"]');
const durationEl = document.querySelector('[data-testid="playback-duration"]');
const currentTime = currentTimeEl ? currentTimeEl.innerText : "0:00";
const duration = durationEl ? durationEl.innerText : "0:00";
const progressFull = `${currentTime}/${duration}`;
// Spolehlivější detekce reklamy:
// Reklamy na Spotify trvají vždy přesně 30 vteřin (0:30) nebo nemají běžné odkazy na skladbu
const isAd = (duration === "0:30") || (links.length < 2) || (songTitle === null);
const finalTitle = isAd ? "Reklama" : songTitle;
const finalArtist = isAd ? "Spotify" : artistName;
if (finalTitle || isAd) {
const currentSignature = `${finalArtist}-${finalTitle}-${currentTime}-${isAd}`;
if (currentSignature !== lastSentSignature) {
lastSentSignature = currentSignature;
console.log("Odesílám data:", finalArtist, "-", finalTitle, `[${progressFull}]`, "Reklama:", isAd);
fetch(TARGET_URL, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
artist: finalArtist,
title: finalTitle,
coverImg: albumCoverUrl,
progressTime: progressFull,
ad: isAd ? "true" : "false",
timestamp: new Date().toISOString()
})
}).catch(err => {
console.error("Chyba při odesílání:", err);
});
}
}
}
}
// Kontrola každou vteřinu
setInterval(extractAndSendSong, 1000);

20
manifest.json Normal file
View File

@@ -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"]
}
]
}

Binary file not shown.

BIN
spotify-sender.zip Normal file

Binary file not shown.