aboutsummaryrefslogtreecommitdiffstats
path: root/src/assets/javascripts
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/javascripts
parentAdded imgur, tiktok tor support #32 (diff)
downloadlibredirect-39ee72324560acb7823d545f29e90a2d1daee5c0.zip
Added the base code for Beatbump #30
Diffstat (limited to 'src/assets/javascripts')
-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,
+};