about summary refs log tree commit diff stats
path: root/src/assets
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-02-23 23:45:22 +0300
committerManeraKai <manerakai@protonmail.com>2022-02-23 23:45:22 +0300
commit39ee72324560acb7823d545f29e90a2d1daee5c0 (patch)
tree42f5f49acd01064d85d450dcb6b0d89a34ea3d53 /src/assets
parentAdded imgur, tiktok tor support #32 (diff)
downloadlibredirect-39ee72324560acb7823d545f29e90a2d1daee5c0.zip
Added the base code for Beatbump #30
Diffstat (limited to 'src/assets')
-rw-r--r--src/assets/javascripts/helpers/youtubeMusic.js117
1 files changed, 117 insertions, 0 deletions
diff --git a/src/assets/javascripts/helpers/youtubeMusic.js b/src/assets/javascripts/helpers/youtubeMusic.js
new file mode 100644
index 00000000..94556010
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtubeMusic.js
@@ -0,0 +1,117 @@
+"use strict";
+
+import commonHelper from './common.js'
+
+window.browser = window.browser || window.chrome;
+
+const targets = [
+    /https?:\/\/music\.youtube\.com(\/.*|$)/,
+];
+let redirects = {
+    "beatbump": {
+        "normal": [
+            "https://beatbump.ml"
+        ],
+        "tor": []
+    },
+};
+
+const getRedirects = () => redirects;
+
+function getCustomRedirects() {
+    return {
+        "beatbump": {
+            "normal": [...beatbumpNormalRedirectsChecks, ...beatbumpNormalCustomRedirects]
+        },
+    };
+};
+
+function setYoutubeMusicRedirects(val) {
+    redirects.beatbump = val;
+    browser.storage.local.set({ youtubeMusicRedirects: redirects })
+    console.log("youtubeMusicRedirects: ", val)
+}
+
+let beatbumpNormalRedirectsChecks;
+const getBeatbumpNormalRedirectsChecks = () => beatbumpNormalRedirectsChecks;
+function setBeatbumpNormalRedirectsChecks(val) {
+    beatbumpNormalRedirectsChecks = val;
+    browser.storage.local.set({ beatbumpNormalRedirectsChecks })
+    console.log("beatbumpNormalRedirectsChecks: ", val)
+}
+
+let beatbumpNormalCustomRedirects = [];
+const getBeatbumpNormalCustomRedirects = () => beatbumpNormalCustomRedirects;
+function setBeatbumpNormalCustomRedirects(val) {
+    beatbumpNormalCustomRedirects = val;
+    browser.storage.local.set({ beatbumpNormalCustomRedirects })
+    console.log("beatbumpNormalCustomRedirects: ", val)
+}
+
+let disable;
+const getDisable = () => disable;
+function setDisable(val) {
+    disable = val;
+    browser.storage.local.set({ disableYoutubeMusic: disable })
+    console.log("disableYoutubeMusic: ", disable)
+}
+
+function isYoutubeMusic(url, initiator) {
+    if (disable) return false
+    return targets.some((rx) => rx.test(url.href));
+}
+
+function redirect(url, type) {
+    let instancesList = [...beatbumpNormalRedirectsChecks, ...beatbumpNormalCustomRedirects];
+    if (instancesList.length === 0) return null;
+    let randomInstance = commonHelper.getRandomInstance(instancesList);
+
+    return `${randomInstance}${url.pathname}${url.search}`.replace("/watch?v=", "/listen?id=");
+}
+
+async function init() {
+    return new Promise((resolve) => {
+        console.log("Init music")
+        browser.storage.local.get(
+            [
+                "disableYoutubeMusic",
+                "youtubeMusicRedirects",
+
+                "beatbumpNormalRedirectsChecks",
+                "beatbumpNormalCustomRedirects",
+
+                "youtubeMusicProtocol",
+            ],
+            (result) => {
+                disable = result.disableYoutubeMusic ?? false;
+
+                if (result.youtubeMusicRedirects) redirects = result.youtubeMusicRedirects;
+
+                beatbumpNormalRedirectsChecks = result.beatbumpNormalRedirectsChecks ?? [...redirects.beatbump.normal];
+                console.log("beatbumpNormalRedirectsChecks", beatbumpNormalRedirectsChecks)
+                beatbumpNormalCustomRedirects = result.beatbumpNormalCustomRedirects ?? [];
+
+                resolve();
+            });
+    });
+}
+
+export default {
+    getRedirects,
+    getCustomRedirects,
+    setYoutubeMusicRedirects,
+
+    redirect,
+    isYoutubeMusic,
+
+    getDisable,
+    setDisable,
+
+    getBeatbumpNormalRedirectsChecks,
+    setBeatbumpNormalRedirectsChecks,
+
+    getBeatbumpNormalCustomRedirects,
+    setBeatbumpNormalCustomRedirects,
+
+    init,
+};