From 3c6cfc81c5535ec8585692820330c619f5d05082 Mon Sep 17 00:00:00 2001 From: Krateng Date: Tue, 14 May 2019 14:43:46 +0200 Subject: [PATCH] Removed outdated scrobblers --- .../chromium-plex-unmaintained/background.js | 232 ----------------- .../contentScript.js | 38 --- .../chromium-plex-unmaintained/icon128.png | Bin 12712 -> 0 bytes .../chromium-plex-unmaintained/icon256.png | Bin 39046 -> 0 bytes .../chromium-plex-unmaintained/icon48.png | Bin 2782 -> 0 bytes .../chromium-plex-unmaintained/manifest.json | 31 --- .../chromium-plex-unmaintained/settings.html | 18 -- .../chromium-plex-unmaintained/settings.js | 77 ------ .../background.js | 233 ------------------ .../contentScript.js | 40 --- .../icon128.png | Bin 7491 -> 0 bytes .../icon256.png | Bin 15707 -> 0 bytes .../icon48.png | Bin 2650 -> 0 bytes .../manifest.json | 31 --- .../settings.html | 18 -- .../settings.js | 77 ------ 16 files changed, 795 deletions(-) delete mode 100644 scrobblers/chromium-plex-unmaintained/background.js delete mode 100644 scrobblers/chromium-plex-unmaintained/contentScript.js delete mode 100644 scrobblers/chromium-plex-unmaintained/icon128.png delete mode 100644 scrobblers/chromium-plex-unmaintained/icon256.png delete mode 100644 scrobblers/chromium-plex-unmaintained/icon48.png delete mode 100644 scrobblers/chromium-plex-unmaintained/manifest.json delete mode 100644 scrobblers/chromium-plex-unmaintained/settings.html delete mode 100644 scrobblers/chromium-plex-unmaintained/settings.js delete mode 100644 scrobblers/chromium-youtubemusic-unmaintained/background.js delete mode 100644 scrobblers/chromium-youtubemusic-unmaintained/contentScript.js delete mode 100644 scrobblers/chromium-youtubemusic-unmaintained/icon128.png delete mode 100644 scrobblers/chromium-youtubemusic-unmaintained/icon256.png delete mode 100644 scrobblers/chromium-youtubemusic-unmaintained/icon48.png delete mode 100644 scrobblers/chromium-youtubemusic-unmaintained/manifest.json delete mode 100644 scrobblers/chromium-youtubemusic-unmaintained/settings.html delete mode 100644 scrobblers/chromium-youtubemusic-unmaintained/settings.js diff --git a/scrobblers/chromium-plex-unmaintained/background.js b/scrobblers/chromium-plex-unmaintained/background.js deleted file mode 100644 index 7ba5bf1..0000000 --- a/scrobblers/chromium-plex-unmaintained/background.js +++ /dev/null @@ -1,232 +0,0 @@ - - -chrome.tabs.onUpdated.addListener(onTabUpdated); -chrome.tabs.onRemoved.addListener(onTabRemoved); -chrome.tabs.onActivated.addListener(onTabChanged); -chrome.runtime.onMessage.addListener(onPlaybackUpdate); - -function onTabUpdated(tabId, changeInfo, tab) { - chrome.tabs.get(tabId,party) -} - -function onTabRemoved() { - -} - -function onTabChanged(activeInfo) { -} - - -function party(tab) { - - var patterns = [ - "https://app.plex.tv", - "http://app.plex.tv", - "https://plex.", - "http://plex." - ]; - - importantPage = false - - for (var i=0;i currentLength) { - alreadyPlayed = alreadyPlayed - currentLength - scrobble(currentArtist,currentTitle,currentLength) - } - - setUpdate() - currentlyPlaying = true - - } - - // CASE 2: New track is being played - else if (artist != currentArtist || title != currentTitle) { - - //first inform ourselves that the previous track has now been stopped for good - stopPlayback(artist,title) - //then initialize new playback - console.log("New track") - setUpdate() - alreadyPlayed = 0 - currentTitle = title - currentArtist = artist - currentLength = seconds - console.log(artist + " - " + title + " is playing!") - currentlyPlaying = true - } -} - -// the artist and title arguments are not attributes of the track being stopped, but of the track active now -// they are here to recognize whether the playback has been paused or completely ended / replaced -function stopPlayback(artist,title) { - - //CASE 1: Playback just paused OR CASE 2: Playback ended - if (currentlyPlaying) { - d = setUpdate() - alreadyPlayed = alreadyPlayed + d - console.log(d + " seconds played since last update, " + alreadyPlayed + " seconds played overall") - } - - - // Already played full song - while (alreadyPlayed > currentLength) { - alreadyPlayed = alreadyPlayed - currentLength - scrobble(currentArtist,currentTitle,currentLength) - } - - currentlyPlaying = false - - - - //ONLY CASE 2: Playback ended - if (artist != currentArtist || title != currentTitle) { - if (alreadyPlayed > currentLength / 2) { - scrobble(currentArtist,currentTitle,alreadyPlayed) - alreadyPlayed = 0 - } - } -} - - -// One problem here: Closing the player while it's paused does not cause an event, so the track will only be scrobbled the next time we play something. -// Also potentially problematic: Pausing a track and just leaving it should probably trigger a scrobble after some time because we can assume the user just stopped listening but didn't bother to press the X -// We could simply check for scrobblability when the track is paused, but this would remove the ability to send listening time with the scrobble - - -function ostopPlayback(artist,title) { - currentlyPlaying = false - console.log("Playback stopped!") - d = new Date() - t = Math.floor(d.getTime()/1000) - delta = t - lastUpdate - console.log("Since the last update, " + delta + " seconds of music have been played") - alreadyPlayed = alreadyPlayed + delta - console.log(alreadyPlayed + " seconds of this track have been played overall") - if ((alreadyPlayed > currentLength/2) && !alreadyScrobbled) { - console.log("Enough to scrobble: " + currentArtist + " - " + currentTitle) - scrobble(currentArtist,currentTitle) - alreadyScrobbled = true - } -} - -function ostartPlayback(artist,title,seconds) { - - console.log("Playback started!") - if (artist == currentArtist && title == currentTitle && !currentlyPlaying) { - console.log("Still previous track!") - while (alreadyPlayed > currentLength) { - console.log("This song is being played several times in a row!") - if (!alreadyScrobbled) { - scrobble(currentArtist,currentTitle) - //alreadyScrobbled = true - } - alreadyPlayed = alreadyPlayed - currentLength - alreadyScrobbled = false - - } - d = new Date() - t = Math.floor(d.getTime()/1000) - lastUpdate = t - currentlyPlaying = true - } - else if (artist != currentArtist || title != currentTitle) { - console.log("New track!") - if (currentlyPlaying) { - console.log("We were playing another track before, so let's check if we should scrobble that.") - d = new Date() - t = Math.floor(d.getTime()/1000) - delta = t - lastUpdate - console.log("Since the last update, " + delta + " seconds of music have been played") - alreadyPlayed = alreadyPlayed + delta - - } - - console.log("The previous track was played for " + alreadyPlayed + " seconds, that's " + Math.floor(alreadyPlayed/currentLength * 100) + "% of its length.") - if (alreadyPlayed > currentLength/2 && !alreadyScrobbled) { - console.log("Enough to scrobble: " + currentArtist + " - " + currentTitle) - scrobble(currentArtist,currentTitle) - - } - else if (alreadyScrobbled) { - console.log("We already scrobbled this track tho.") - alreadyScrobbled = false - } - - - console.log("But now, new track!") - d = new Date() - t = Math.floor(d.getTime()/1000) - lastUpdate = t - alreadyPlayed = 0 - currentTitle = title - currentArtist = artist - currentLength = seconds - console.log(artist + " - " + title + " is playing!") - currentlyPlaying = true - } -} - - - -function scrobble(artist,title,seconds) { - console.log("Scrobbling " + artist + " - " + title + "; " + seconds + " seconds playtime") - artiststring = encodeURIComponent(artist) - titlestring = encodeURIComponent(title) - chrome.storage.local.get("apikey",function(result) { - APIKEY = result["apikey"] - chrome.storage.local.get("serverurl",function(result) { - URL = result["serverurl"] - var xhttp = new XMLHttpRequest(); - xhttp.open("POST",URL + "/db/newscrobble",true); - xhttp.send("artist=" + artiststring + "&title=" + titlestring + "&duration=" + seconds + "&key=" + APIKEY) - }); - }); - - -} - -function setUpdate() { - d = new Date() - t = Math.floor(d.getTime()/1000) - delta = t - lastUpdate - lastUpdate = t - return delta -} diff --git a/scrobblers/chromium-plex-unmaintained/contentScript.js b/scrobblers/chromium-plex-unmaintained/contentScript.js deleted file mode 100644 index d4fcfd1..0000000 --- a/scrobblers/chromium-plex-unmaintained/contentScript.js +++ /dev/null @@ -1,38 +0,0 @@ -bar = document.querySelector("div[class*=PlayerControls]") -if (bar == null) { - console.log("Nothing playing right now!") - chrome.runtime.sendMessage({type:"stopPlayback",artist:"",title:""}) - exit() -} - -metadata = bar.querySelector("div[class*=PlayerControlsMetadata-container]") - -title = metadata.querySelector("a[class*=MetadataPosterTitle-singleLineTitle]").getAttribute("title") -artist = metadata.querySelector("span[class*=MetadataPosterTitle-title] > a:nth-child(1)").getAttribute("title") -duration = metadata.querySelector("[data-qa-id=mediaDuration]").innerHTML.split("/")[1] -if (duration.split(":").length == 2) { - durationSeconds = parseInt(duration.split(":")[0]) * 60 + parseInt(duration.split(":")[1]) -} -else { - durationSeconds = parseInt(duration.split(":")[0]) * 60 * 60 + parseInt(duration.split(":")[1]) * 60 + parseInt(duration.split(":")[2]) -} - - -control = bar.querySelector("div[class*=PlayerControls-buttonGroupCenter] > button:nth-child(2)").getAttribute("title") -if (control == "Play") { - console.log("Not playing right now") - chrome.runtime.sendMessage({type:"stopPlayback",artist:artist,title:title}) - //stopPlayback() -} -else if (control == "Pause") { - console.log("Playing " + artist + " - " + title) - chrome.runtime.sendMessage({type:"startPlayback",artist:artist,title:title,duration:durationSeconds}) - //startPlayback(artist,title,durationSeconds) -} - - - - - - - diff --git a/scrobblers/chromium-plex-unmaintained/icon128.png b/scrobblers/chromium-plex-unmaintained/icon128.png deleted file mode 100644 index 23abc0b8f9ad82a5831746ba1f538b6c56fc183c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12712 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 diff --git a/scrobblers/chromium-plex-unmaintained/manifest.json b/scrobblers/chromium-plex-unmaintained/manifest.json deleted file mode 100644 index 9e8cebe..0000000 --- a/scrobblers/chromium-plex-unmaintained/manifest.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "Plexoja", - "version": "0.1", - "description": "Scrobbles tracks from Plex Web to your Maloja server", - "manifest_version": 2, - "permissions": ["activeTab", "declarativeContent","tabs","storage","http://app.plex.tv/*","https://app.plex.tv/*",""], - "background": - { - "scripts": - [ - "background.js" - ] - }, - - - "browser_action": - { - "default_icon": - { - "128":"icon128.png", - "48":"icon48.png" - }, - "default_popup": "settings.html", - "default_title": "Settings" - }, - "icons": - { - "128":"icon128.png", - "48":"icon48.png" - } -} diff --git a/scrobblers/chromium-plex-unmaintained/settings.html b/scrobblers/chromium-plex-unmaintained/settings.html deleted file mode 100644 index b9d83b2..0000000 --- a/scrobblers/chromium-plex-unmaintained/settings.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - Wat - - - - -
- Server:
- -

- API key:
- -
- - diff --git a/scrobblers/chromium-plex-unmaintained/settings.js b/scrobblers/chromium-plex-unmaintained/settings.js deleted file mode 100644 index ac403e2..0000000 --- a/scrobblers/chromium-plex-unmaintained/settings.js +++ /dev/null @@ -1,77 +0,0 @@ - -document.addEventListener("DOMContentLoaded",function() { - document.getElementById("serverurl").addEventListener("input",updateServer); - document.getElementById("apikey").addEventListener("input",updateAPIKey); - - document.getElementById("serverurl").addEventListener("change",checkServer); - document.getElementById("apikey").addEventListener("change",checkServer); - - - chrome.storage.local.get({"serverurl":"http://localhost:42010"},function(result) { - document.getElementById("serverurl").value = result["serverurl"] - checkServer() - }); - chrome.storage.local.get({"apikey":"BlackPinkInYourArea"},function(result) { - document.getElementById("apikey").value = result["apikey"] - checkServer() - }); - - - -}); - - - -function updateServer() { - - text = document.getElementById("serverurl").value - - - chrome.storage.local.set({"serverurl":text}) -} - -function updateAPIKey() { - text = document.getElementById("apikey").value - chrome.storage.local.set({"apikey":text}) -} - -function checkServer() { - url = document.getElementById("serverurl").value + "/db/test?key=" + document.getElementById("apikey").value - - var xhttp = new XMLHttpRequest(); - xhttp.onreadystatechange = createCheckmarks; - try { - xhttp.open("GET",url,true); - xhttp.send(); - } - catch (e) { - //document.getElementById("checkmark_url").innerHTML = "❌" - //document.getElementById("checkmark_key").innerHTML = "❌" - document.getElementById("serverurl").style.backgroundColor = "red" - document.getElementById("apikey").style.backgroundColor = "red" - } - -} - -function createCheckmarks() { - if (this.readyState == 4) { - if ((this.status == 204) || (this.status == 205)) { - //document.getElementById("checkmark_url").innerHTML = "✔️" - //document.getElementById("checkmark_key").innerHTML = "✔️" - document.getElementById("serverurl").style.backgroundColor = "lawngreen" - document.getElementById("apikey").style.backgroundColor = "lawngreen" - } - else if (this.status == 403) { - //document.getElementById("checkmark_url").innerHTML = "✔️" - //document.getElementById("checkmark_key").innerHTML = "❌" - document.getElementById("serverurl").style.backgroundColor = "lawngreen" - document.getElementById("apikey").style.backgroundColor = "red" - } - else { - //document.getElementById("checkmark_url").innerHTML = "❌" - //document.getElementById("checkmark_key").innerHTML = "❌" - document.getElementById("serverurl").style.backgroundColor = "red" - document.getElementById("apikey").style.backgroundColor = "red" - } - } -} diff --git a/scrobblers/chromium-youtubemusic-unmaintained/background.js b/scrobblers/chromium-youtubemusic-unmaintained/background.js deleted file mode 100644 index c9aa12b..0000000 --- a/scrobblers/chromium-youtubemusic-unmaintained/background.js +++ /dev/null @@ -1,233 +0,0 @@ - - -chrome.tabs.onUpdated.addListener(onTabUpdated); -chrome.tabs.onRemoved.addListener(onTabRemoved); -chrome.runtime.onMessage.addListener(onPlaybackUpdate); - - -var patterns = [ - "https://music.youtube.com", - "http://music.youtube.com" -]; - -function onTabUpdated(tabId, changeInfo, tab) { - if (changeInfo.status !== "complete") { - return; - } - console.log("Update") - chrome.tabs.get(tabId,party) -} - -function onTabRemoved() { - -} - - - -function party(tab) { - - importantPage = false - - for (var i=0;i currentLength) { - alreadyPlayed = alreadyPlayed - currentLength - scrobble(currentArtist,currentTitle,currentLength) - } - - setUpdate() - currentlyPlaying = true - - } - - // CASE 2: New track is being played - else if (artist != currentArtist || title != currentTitle) { - - //first inform ourselves that the previous track has now been stopped for good - stopPlayback(artist,title) - //then initialize new playback - console.log("New track") - setUpdate() - alreadyPlayed = 0 - currentTitle = title - currentArtist = artist - currentLength = seconds - console.log(artist + " - " + title + " is playing!") - currentlyPlaying = true - } -} - -// the artist and title arguments are not attributes of the track being stopped, but of the track active now -// they are here to recognize whether the playback has been paused or completely ended / replaced -function stopPlayback(artist,title) { - - //CASE 1: Playback just paused OR CASE 2: Playback ended - if (currentlyPlaying) { - d = setUpdate() - alreadyPlayed = alreadyPlayed + d - console.log(d + " seconds played since last update, " + alreadyPlayed + " seconds played overall") - } - - - // Already played full song - while (alreadyPlayed > currentLength) { - alreadyPlayed = alreadyPlayed - currentLength - scrobble(currentArtist,currentTitle,currentLength) - } - - currentlyPlaying = false - - - - //ONLY CASE 2: Playback ended - if (artist != currentArtist || title != currentTitle) { - if (alreadyPlayed > currentLength / 2) { - scrobble(currentArtist,currentTitle,alreadyPlayed) - alreadyPlayed = 0 - } - } -} - - -// One problem here: Closing the player while it's paused does not cause an event, so the track will only be scrobbled the next time we play something. -// Also potentially problematic: Pausing a track and just leaving it should probably trigger a scrobble after some time because we can assume the user just stopped listening but didn't bother to press the X -// We could simply check for scrobblability when the track is paused, but this would remove the ability to send listening time with the scrobble - - -function ostopPlayback(artist,title) { - currentlyPlaying = false - console.log("Playback stopped!") - d = new Date() - t = Math.floor(d.getTime()/1000) - delta = t - lastUpdate - console.log("Since the last update, " + delta + " seconds of music have been played") - alreadyPlayed = alreadyPlayed + delta - console.log(alreadyPlayed + " seconds of this track have been played overall") - if ((alreadyPlayed > currentLength/2) && !alreadyScrobbled) { - console.log("Enough to scrobble: " + currentArtist + " - " + currentTitle) - scrobble(currentArtist,currentTitle) - alreadyScrobbled = true - } -} - -function ostartPlayback(artist,title,seconds) { - - console.log("Playback started!") - if (artist == currentArtist && title == currentTitle && !currentlyPlaying) { - console.log("Still previous track!") - while (alreadyPlayed > currentLength) { - console.log("This song is being played several times in a row!") - if (!alreadyScrobbled) { - scrobble(currentArtist,currentTitle) - //alreadyScrobbled = true - } - alreadyPlayed = alreadyPlayed - currentLength - alreadyScrobbled = false - - } - d = new Date() - t = Math.floor(d.getTime()/1000) - lastUpdate = t - currentlyPlaying = true - } - else if (artist != currentArtist || title != currentTitle) { - console.log("New track!") - if (currentlyPlaying) { - console.log("We were playing another track before, so let's check if we should scrobble that.") - d = new Date() - t = Math.floor(d.getTime()/1000) - delta = t - lastUpdate - console.log("Since the last update, " + delta + " seconds of music have been played") - alreadyPlayed = alreadyPlayed + delta - - } - - console.log("The previous track was played for " + alreadyPlayed + " seconds, that's " + Math.floor(alreadyPlayed/currentLength * 100) + "% of its length.") - if (alreadyPlayed > currentLength/2 && !alreadyScrobbled) { - console.log("Enough to scrobble: " + currentArtist + " - " + currentTitle) - scrobble(currentArtist,currentTitle) - - } - else if (alreadyScrobbled) { - console.log("We already scrobbled this track tho.") - alreadyScrobbled = false - } - - - console.log("But now, new track!") - d = new Date() - t = Math.floor(d.getTime()/1000) - lastUpdate = t - alreadyPlayed = 0 - currentTitle = title - currentArtist = artist - currentLength = seconds - console.log(artist + " - " + title + " is playing!") - currentlyPlaying = true - } -} - - - -function scrobble(artist,title,seconds) { - console.log("Scrobbling " + artist + " - " + title + "; " + seconds + " seconds playtime") - artiststring = encodeURIComponent(artist) - titlestring = encodeURIComponent(title) - chrome.storage.local.get("apikey",function(result) { - APIKEY = result["apikey"] - chrome.storage.local.get("serverurl",function(result) { - URL = result["serverurl"] - var xhttp = new XMLHttpRequest(); - xhttp.open("POST",URL + "/db/newscrobble",true); - xhttp.send("artist=" + artiststring + "&title=" + titlestring + "&duration=" + seconds + "&key=" + APIKEY) - }); - }); - - -} - -function setUpdate() { - d = new Date() - t = Math.floor(d.getTime()/1000) - delta = t - lastUpdate - lastUpdate = t - return delta -} diff --git a/scrobblers/chromium-youtubemusic-unmaintained/contentScript.js b/scrobblers/chromium-youtubemusic-unmaintained/contentScript.js deleted file mode 100644 index b4e9a68..0000000 --- a/scrobblers/chromium-youtubemusic-unmaintained/contentScript.js +++ /dev/null @@ -1,40 +0,0 @@ -bar = document.querySelector("ytmusic-player-bar") -if (bar == null) { - console.log("Nothing playing right now!") - chrome.runtime.sendMessage({type:"stopPlayback",artist:"",title:""}) - exit() -} - -metadata = bar.querySelector("div[class*=middle-controls] > div[class*=content-info-wrapper]") - -ctrl = bar.querySelector("div[class*=left-controls]") - -title = metadata.querySelector("yt-formatted-string[class*=title]").getAttribute("title") -artist = metadata.querySelector("span > span[class*=subtitle] > yt-formatted-string > a:nth-child(1)").innerHTML -duration = ctrl.querySelector("[class*=time-info]").innerHTML.split("/")[1] -if (duration.split(":").length == 2) { - durationSeconds = parseInt(duration.split(":")[0]) * 60 + parseInt(duration.split(":")[1]) -} -else { - durationSeconds = parseInt(duration.split(":")[0]) * 60 * 60 + parseInt(duration.split(":")[1]) * 60 + parseInt(duration.split(":")[2]) -} - - -control = ctrl.querySelector("div > paper-icon-button[class*=play-pause-button]").getAttribute("title") -if (control == "Play") { - console.log("Not playing right now") - chrome.runtime.sendMessage({type:"stopPlayback",artist:artist,title:title}) - //stopPlayback() -} -else if (control == "Pause") { - console.log("Playing " + artist + " - " + title) - chrome.runtime.sendMessage({type:"startPlayback",artist:artist,title:title,duration:durationSeconds}) - //startPlayback(artist,title,durationSeconds) -} - - - - - - - diff --git a/scrobblers/chromium-youtubemusic-unmaintained/icon128.png b/scrobblers/chromium-youtubemusic-unmaintained/icon128.png deleted file mode 100644 index df0435d5d8fb0ddf58f081423bfc17949d795818..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7491 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�~|pP$~LzQ%;{&0f0wi zay{5RNN|a_6s%ht;_54P-{RGq6t>7331Mu{n)xSh?H(Y$r%||>9&;OF@e}o zQ@^NP0N{b(EgFe2w+`C2KWu+ZU|r#th=gI(#V zCzv>~hW-OAh7XU?OHWW(BuQA1w3SqKZa|R)LvAW)b#;IR|14njDwU5uEavNl1r!uG zC<>_>fm;%*IN7fD&2viyuzr1Z9&(*dPFIr5w3hLWDB$T}ciszhqNvy* zvOU0SbINfXh{Y5)$4`}%mf92)It1NAx3DZhU7bQrjoZdG9G0nyp!#Fox=V{QlbgB7 zZh2p=XT5$0wj;6*7D-9^k+c8E82~iPkfy5tfO`l*&V2*`Lu8CQ6F+cEVij`(otUST z@?oGHMPaA&`C>68RllE3Zjfoml3L-IoM~@nyc40HG+Twov(-Ut5h0RE!I{&y5{YCt zl{HN=e}1aX;@VtlfO-%t&nFN7gpr(TS97Xeo$5RCiBigT0!<#u;NTX9>e8aZ%R@+= zG|>w5%TRxodxt$AKDLgZ{d{xQ?QMfW$)c|dQQhTeX-)yq00aYo@5oa+s{Zh$EL{ez zCHyy)PJ9$7LkQ^EE5RNAz1CN6V=2KhMLhuK`QfG2jW)0TeI>9TZp#@-2c8-Imor}mxux`)D8sP4&#r{ zTGgUvlxtRnQagYJk=L!f0l*F*taCKW7>v(j;P)olOpx=nL4ezc^3f+(5f1zJO%xS6 z%$ZYO|MPCYe6`EIU9*g{fOGa`09@qF{8&`s-uu_kr%$3q*}_YgYM47Zi*Cwm0C*sH z0q6r5`t`;@;&Ur4Csp{7Of7};m|DQQ)Ro2a}R8=y0;=uZjWnWfB zDo5{e8lZtTxEr?*z%zS00A8||FvhMyN;ivX`sw{r4xLQ5evdxfCB0qUzqgd9yf`&X zvy7N#89&B7Ms@by41xy}-`xbfC8gW9aQbQesos)VT6=A+!qZQsj#8+sid25JR{$Ul z26qh*s@)|w; zxY{dQgE5iUqo(R1-0Iewyk%lfqtAhRy)E!AG^}*$dG$+QA|V)dNQ~d#xo)>z&|aNg z#>~gM)O-G3sESmcv)2Ql0T_+}E(U&*=d5l4W&r=ASw@qYBEw2g5+M2l-vX)-h?*LO zYp&hMx#w@ArpA@_)~)VR;blFqs)|(hZ7pWS9yqHoRecI@DsT~LUBq%oRlsY&QL$iRWW*N2l!t1cosh8n)NLyVMseFPC>Y&!9{|7e<&~v(w`ojPK N002ovPDHLkV1mIQP}2Ya diff --git a/scrobblers/chromium-youtubemusic-unmaintained/icon256.png b/scrobblers/chromium-youtubemusic-unmaintained/icon256.png deleted file mode 100644 index 0462c28725ef291923c8c6be9a563a93eaa17c15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15707 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 - - - - Wat - - - - -
- Server:
- -

- API key:
- -
- - diff --git a/scrobblers/chromium-youtubemusic-unmaintained/settings.js b/scrobblers/chromium-youtubemusic-unmaintained/settings.js deleted file mode 100644 index ac403e2..0000000 --- a/scrobblers/chromium-youtubemusic-unmaintained/settings.js +++ /dev/null @@ -1,77 +0,0 @@ - -document.addEventListener("DOMContentLoaded",function() { - document.getElementById("serverurl").addEventListener("input",updateServer); - document.getElementById("apikey").addEventListener("input",updateAPIKey); - - document.getElementById("serverurl").addEventListener("change",checkServer); - document.getElementById("apikey").addEventListener("change",checkServer); - - - chrome.storage.local.get({"serverurl":"http://localhost:42010"},function(result) { - document.getElementById("serverurl").value = result["serverurl"] - checkServer() - }); - chrome.storage.local.get({"apikey":"BlackPinkInYourArea"},function(result) { - document.getElementById("apikey").value = result["apikey"] - checkServer() - }); - - - -}); - - - -function updateServer() { - - text = document.getElementById("serverurl").value - - - chrome.storage.local.set({"serverurl":text}) -} - -function updateAPIKey() { - text = document.getElementById("apikey").value - chrome.storage.local.set({"apikey":text}) -} - -function checkServer() { - url = document.getElementById("serverurl").value + "/db/test?key=" + document.getElementById("apikey").value - - var xhttp = new XMLHttpRequest(); - xhttp.onreadystatechange = createCheckmarks; - try { - xhttp.open("GET",url,true); - xhttp.send(); - } - catch (e) { - //document.getElementById("checkmark_url").innerHTML = "❌" - //document.getElementById("checkmark_key").innerHTML = "❌" - document.getElementById("serverurl").style.backgroundColor = "red" - document.getElementById("apikey").style.backgroundColor = "red" - } - -} - -function createCheckmarks() { - if (this.readyState == 4) { - if ((this.status == 204) || (this.status == 205)) { - //document.getElementById("checkmark_url").innerHTML = "✔️" - //document.getElementById("checkmark_key").innerHTML = "✔️" - document.getElementById("serverurl").style.backgroundColor = "lawngreen" - document.getElementById("apikey").style.backgroundColor = "lawngreen" - } - else if (this.status == 403) { - //document.getElementById("checkmark_url").innerHTML = "✔️" - //document.getElementById("checkmark_key").innerHTML = "❌" - document.getElementById("serverurl").style.backgroundColor = "lawngreen" - document.getElementById("apikey").style.backgroundColor = "red" - } - else { - //document.getElementById("checkmark_url").innerHTML = "❌" - //document.getElementById("checkmark_key").innerHTML = "❌" - document.getElementById("serverurl").style.backgroundColor = "red" - document.getElementById("apikey").style.backgroundColor = "red" - } - } -}