about summary refs log tree commit diff stats
path: root/src/assets/javascripts/youtubeMusic.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets/javascripts/youtubeMusic.js')
-rw-r--r--src/assets/javascripts/youtubeMusic.js97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/assets/javascripts/youtubeMusic.js b/src/assets/javascripts/youtubeMusic.js
new file mode 100644
index 00000000..68fa4f24
--- /dev/null
+++ b/src/assets/javascripts/youtubeMusic.js
@@ -0,0 +1,97 @@
+"use strict";
+
+import utils from './utils.js'
+
+window.browser = window.browser || window.chrome;
+
+const targets = [
+    /^https?:\/{2}music\.youtube\.com(\/.*|$)/,
+];
+let redirects = {
+    "beatbump": {
+        "normal": [
+            "https://beatbump.ml"
+        ],
+        "tor": []
+    },
+};
+
+let
+    disableYoutubeMusic,
+    beatbumpNormalRedirectsChecks,
+    beatbumpNormalCustomRedirects;
+
+function init() {
+    browser.storage.local.get(
+        [
+            "disableYoutubeMusic",
+            "beatbumpNormalRedirectsChecks",
+            "beatbumpNormalCustomRedirects",
+        ],
+        r => {
+            disableYoutubeMusic = r.disableYoutubeMusic;
+            beatbumpNormalRedirectsChecks = r.beatbumpNormalRedirectsChecks;
+            beatbumpNormalCustomRedirects = r.beatbumpNormalCustomRedirects;
+        }
+    )
+}
+
+init();
+browser.storage.onChanged.addListener(init)
+
+/* 
+Video
+https://music.youtube.com/watch?v=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA
+https://beatbump.ml/listen?id=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA
+
+Playlist
+https://music.youtube.com/playlist?list=PLqxd0OMLeWy64zlwhjouj92ISc38FbOns
+https://music.youtube.com/playlist?list=PLqxd0OMLeWy7lrJSzt9LnOJjbC1IaruPM
+https://music.youtube.com/playlist?list=PLQod4DlD72ZMJmOrSNbmEmK_iZ1oXPzKd
+https://beatbump.ml/playlist/VLPLqxd0OMLeWy64zlwhjouj92ISc38FbOns
+
+Channel
+https://music.youtube.com/channel/UCfgmMDI7T5tOQqjnOBRe_wg
+https://beatbump.ml/artist/UCfgmMDI7T5tOQqjnOBRe_wg
+
+Albums
+https://music.youtube.com/playlist?list=OLAK5uy_n-9HVh3cryV2gREZM9Sc0JwEKYjjfi0dU
+https://music.youtube.com/playlist?list=OLAK5uy_lcr5O1zS8f6WIFI_yxqVp2RK9Dyy2bbw0
+https://beatbump.ml/release?id=MPREb_3DURc4yEUtD
+https://beatbump.ml/release?id=MPREb_evaZrV1WNdS
+
+https://music.youtube.com/playlist?list=OLAK5uy_n6OHVllUZUCnlIY1m-gUaH8uqkN3Y-Ca8
+https://music.youtube.com/playlist?list=OLAK5uy_nBOTxAc3_RGB82-Z54jdARGxGaCYlpngY
+https://beatbump.ml/release?id=MPREb_QygdC0wEoLe
+
+https://music.youtube.com/watch?v=R6gSMSYKhKU&list=OLAK5uy_n-9HVh3cryV2gREZM9Sc0JwEKYjjfi0dU
+*/
+function redirect(url, type, initiator) {
+    if (disableYoutubeMusic) return;
+    if (!targets.some(rx => rx.test(url.href))) return;
+
+    let instancesList = [...beatbumpNormalRedirectsChecks, ...beatbumpNormalCustomRedirects];
+    if (instancesList.length === 0) return;
+    const randomInstance = utils.getRandomInstance(instancesList);
+    resolve(
+        `${randomInstance}${url.pathname}${url.search}`
+            .replace("/watch?v=", "/listen?id=")
+            .replace("/channel/", "/artist/")
+            .replace("/playlist?list=", "/playlist/VL")
+    );
+}
+
+async function initDefaults() {
+    await browser.storage.local.set({
+        disableYoutubeMusic: true,
+        youtubeMusicRedirects: redirects,
+
+        beatbumpNormalRedirectsChecks: [...redirects.beatbump.normal],
+        beatbumpNormalCustomRedirects: [],
+    })
+}
+
+export default {
+    redirect,
+    initDefaults,
+};