about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/_locales/en/messages.json5
-rw-r--r--src/assets/javascripts/helpers/common.js2
-rw-r--r--src/assets/javascripts/helpers/instagram.js89
-rw-r--r--src/assets/javascripts/helpers/reddit.js88
-rw-r--r--src/assets/javascripts/helpers/search.js88
-rw-r--r--src/assets/javascripts/helpers/tiktok.js24
-rw-r--r--src/assets/javascripts/helpers/translate/get_lingva_preferences.js10
-rw-r--r--src/assets/javascripts/helpers/translate/lingva-preferences.js12
-rw-r--r--src/assets/javascripts/helpers/translate/set_lingva_preferences.js16
-rw-r--r--src/assets/javascripts/helpers/translate/translate.js133
-rw-r--r--src/assets/javascripts/helpers/twitter.js50
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js30
-rw-r--r--src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js7
-rw-r--r--src/assets/javascripts/helpers/youtube/get_piped_preferences.js (renamed from src/assets/javascripts/helpers/youtube/get_piped_settings.js)0
-rw-r--r--src/assets/javascripts/helpers/youtube/piped-preferences.js40
-rw-r--r--src/assets/javascripts/helpers/youtube/piped.js89
-rw-r--r--src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js37
-rw-r--r--src/assets/javascripts/helpers/youtube/pipedMaterial.js31
-rw-r--r--src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js8
-rw-r--r--src/assets/javascripts/helpers/youtube/set_piped_preferences.js40
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js163
-rw-r--r--src/pages/background/background.js94
-rw-r--r--src/pages/options/youtube/youtube.js2
-rw-r--r--src/pages/popup/popup.html5
-rw-r--r--src/pages/popup/popup.js17
-rw-r--r--src/pages/popup/popup.pug6
26 files changed, 697 insertions, 389 deletions
diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json
index 3507eb3a..23a36eef 100644
--- a/src/_locales/en/messages.json
+++ b/src/_locales/en/messages.json
@@ -129,11 +129,6 @@
     "description": "used in general.html"
   },
 
-  "applyTheme": {
-    "message": "Apply theme to sites",
-    "description": "used in general.html"
-  },
-
   "alwaysPref": {
     "message": "Always use Preferred Instances",
     "description": "used in general.html"
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index 5adee5c8..5982fa03 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -331,7 +331,7 @@ function getCookiesFromStorage(frontend, to, name) {
   browser.storage.local.get(
     key,
     r => {
-      if (r) browser.cookies.set({ url: to, name: name, value: r[key] })
+      if (r[key] !== undefined) browser.cookies.set({ url: to, name: name, value: r[key] })
     }
   )
 }
diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js
index effbe46c..3d4af089 100644
--- a/src/assets/javascripts/helpers/instagram.js
+++ b/src/assets/javascripts/helpers/instagram.js
@@ -29,24 +29,6 @@ let bibliogramTorRedirectsChecks;
 let bibliogramNormalCustomRedirects = [];
 let bibliogramTorCustomRedirects = [];
 
-const reservedPaths = [
-  "u",
-  "p",
-  "privacy",
-];
-
-const bypassPaths = [
-  /about/,
-  /explore/,
-  /support/,
-  /press/,
-  /api/,
-  /privacy/,
-  /safety/,
-  /admin/,
-  /\/(accounts\/|embeds?.js)/
-];
-
 let disable; //disableInstagram
 let protocol; //instagramProtocol
 
@@ -68,6 +50,18 @@ function redirect(url, type, initiator) {
     "media",
   ].includes(type)) return null;
 
+  const bypassPaths = [
+    /about/,
+    /explore/,
+    /support/,
+    /press/,
+    /api/,
+    /privacy/,
+    /safety/,
+    /admin/,
+    /\/(accounts\/|embeds?.js)/
+  ];
+
   if (bypassPaths.some(rx => rx.test(url.pathname))) return;
 
   let instancesList;
@@ -76,6 +70,12 @@ function redirect(url, type, initiator) {
   if (instancesList.length === 0) return null;
   let randomInstance = commonHelper.getRandomInstance(instancesList)
 
+  const reservedPaths = [
+    "u",
+    "p",
+    "privacy",
+  ];
+
   if (url.pathname === "/" || reservedPaths.includes(url.pathname.split("/")[1]))
     return `${randomInstance}${url.pathname}${url.search}`;
   if (url.pathname.startsWith("/reel") || url.pathname.startsWith("/tv"))
@@ -139,44 +139,6 @@ function switchInstance(url) {
   return `${randomInstance}${url.pathname}${url.search}`;
 }
 
-function isBibliogram(url) {
-  let protocolHost = commonHelper.protocolHost(url);
-  return [
-    ...redirects.bibliogram.normal,
-    ...redirects.bibliogram.tor,
-    ...bibliogramNormalCustomRedirects,
-    ...bibliogramTorCustomRedirects,
-  ].includes(protocolHost);
-}
-
-let instancesCookies;
-let theme;
-function initBibliogramCookies(url) {
-  let protocolHost = commonHelper.protocolHost(url);
-  browser.cookies.get(
-    { url: protocolHost, name: "settings" },
-    cookie => {
-      if (!cookie || !instancesCookies.includes(protocolHost)) {
-        console.log(`initing cookie for ${protocolHost}`);
-        let request = new XMLHttpRequest();
-        request.open("POST", `${protocolHost}/settings/return?referrer=%2F`);
-
-        let themeValue;
-        if (theme == 'light') themeValue = "classic";
-        if (theme == 'dark') themeValue = "pussthecat.org-v2"
-
-        if (themeValue) {
-          let data = `csrf=x&theme=${themeValue}`;
-          request.send(data);
-          if (!instancesCookies.includes(protocolHost)) instancesCookies.push(protocolHost);
-          browser.storage.local.set({ instancesCookies })
-        }
-      }
-    })
-
-}
-
-
 function initDefaults() {
   return new Promise(resolve => {
     fetch('/instances/data.json').then(response => response.text()).then(data => {
@@ -192,10 +154,6 @@ function initDefaults() {
           disableInstagram: false,
           instagramRedirects: redirects,
 
-          theme: 'DEFAULT',
-
-          instancesCookies: [],
-
           bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks,
           bibliogramTorRedirectsChecks: [],
 
@@ -217,10 +175,6 @@ async function init() {
         "disableInstagram",
         "instagramRedirects",
 
-        "theme",
-
-        "instancesCookies",
-
         "bibliogramNormalRedirectsChecks",
         "bibliogramTorRedirectsChecks",
 
@@ -232,10 +186,6 @@ async function init() {
         disable = r.disableInstagram;
         if (r.instagramRedirects) redirects = r.instagramRedirects
 
-        theme = r.theme;
-
-        instancesCookies = r.instancesCookies;
-
         bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks;
         bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects;
 
@@ -256,9 +206,6 @@ export default {
 
   reverse,
 
-  isBibliogram,
-  initBibliogramCookies,
-
   redirect,
   init,
   initDefaults,
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index bbcaf872..def751a1 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -114,6 +114,38 @@ function initLibredditCookies(from) {
 
 }
 
+function setLibredditCookies() {
+  browser.storage.local.get(
+    [
+      "redditProtocol",
+      "disableReddit",
+      "redditFrontend",
+      "libredditNormalRedirectsChecks",
+      "libredditNormalCustomRedirects",
+      "libredditTorRedirectsChecks",
+      "libredditTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableReddit || r.redditFrontend != 'libreddit' || r.redditProtocol === undefined) return;
+      let checkedInstances;
+      if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects]
+      else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects]
+      for (const to of checkedInstances) {
+        commonHelper.getCookiesFromStorage('libreddit', to, "theme");
+        commonHelper.getCookiesFromStorage('libreddit', to, "front_page");
+        commonHelper.getCookiesFromStorage('libreddit', to, "layout");
+        commonHelper.getCookiesFromStorage('libreddit', to, "wide");
+        commonHelper.getCookiesFromStorage('libreddit', to, "post_sort");
+        commonHelper.getCookiesFromStorage('libreddit', to, "comment_sort");
+        commonHelper.getCookiesFromStorage('libreddit', to, "show_nsfw");
+        commonHelper.getCookiesFromStorage('libreddit', to, "autoplay_videos");
+        commonHelper.getCookiesFromStorage('libreddit', to, "use_hls");
+        commonHelper.getCookiesFromStorage('libreddit', to, "hide_hls_notification");
+      }
+    }
+  )
+}
+
 function initTedditCookies(from) {
   return new Promise(resolve => {
     browser.storage.local.get(
@@ -156,6 +188,40 @@ function initTedditCookies(from) {
   })
 }
 
+function setTedditCookies() {
+  browser.storage.local.get(
+    [
+      "redditProtocol",
+      "disableReddit",
+      "redditFrontend",
+      "tedditNormalRedirectsChecks",
+      "tedditNormalCustomRedirects",
+      "tedditTorRedirectsChecks",
+      "tedditTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableReddit || r.redditFrontend != 'teddit' || r.redditProtocol === undefined) return;
+      let checkedInstances;
+      if (r.redditProtocol == 'normal') checkedInstances = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects]
+      else if (r.redditProtocol == 'tor') checkedInstances = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects]
+      for (const to of checkedInstances) {
+        commonHelper.getCookiesFromStorage('teddit', to, 'collapse_child_comments')
+        commonHelper.getCookiesFromStorage('teddit', to, 'domain_instagram')
+        commonHelper.getCookiesFromStorage('teddit', to, 'domain_twitter')
+        commonHelper.getCookiesFromStorage('teddit', to, 'domain_youtube')
+        commonHelper.getCookiesFromStorage('teddit', to, 'flairs')
+        commonHelper.getCookiesFromStorage('teddit', to, 'highlight_controversial')
+        commonHelper.getCookiesFromStorage('teddit', to, 'nsfw_enabled')
+        commonHelper.getCookiesFromStorage('teddit', to, 'post_media_max_height')
+        commonHelper.getCookiesFromStorage('teddit', to, 'show_upvoted_percentage')
+        commonHelper.getCookiesFromStorage('teddit', to, 'show_upvotes')
+        commonHelper.getCookiesFromStorage('teddit', to, 'theme')
+        commonHelper.getCookiesFromStorage('teddit', to, 'videos_muted')
+      }
+    }
+  )
+}
+
 function redirect(url, type, initiator) {
   // https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4
   // https://libreddit.exonip.de/img/4v3t1vgvrzk81.png
@@ -200,12 +266,12 @@ function redirect(url, type, initiator) {
     if (frontend == 'teddit') {
       if (tedditInstancesList.length === 0) return null;
       let tedditRandomInstance = commonHelper.getRandomInstance(tedditInstancesList);
-      return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.search}`;
+      return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.reddit}`;
     }
     if (frontend == 'libreddit') {
       if (libredditInstancesList.length === 0) return null;
       let libredditRandomInstance = commonHelper.getRandomInstance(libredditInstancesList);
-      return `${libredditRandomInstance}/img${url.pathname}${url.search}`;
+      return `${libredditRandomInstance}/img${url.pathname}${url.reddit}`;
     }
   }
   else if (url.host === "redd.it") {
@@ -213,13 +279,13 @@ function redirect(url, type, initiator) {
       if (libredditInstancesList.length === 0) return null;
       let libredditRandomInstance = commonHelper.getRandomInstance(libredditInstancesList);
       // https://redd.it/foo => https://libredd.it/comments/foo
-      return `${libredditRandomInstance}/comments${url.pathname}${url.search}`;
+      return `${libredditRandomInstance}/comments${url.pathname}${url.reddit}`;
     }
     if (frontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
       if (tedditInstancesList.length === 0) return null;
       let tedditRandomInstance = commonHelper.getRandomInstance(tedditInstancesList);
       // https://redd.it/foo => https://teddit.net/comments/foo
-      return `${tedditRandomInstance}/comments${url.pathname}${url.search}`;
+      return `${tedditRandomInstance}/comments${url.pathname}${url.reddit}`;
     }
   }
   else if (url.host === 'preview.redd.it') {
@@ -229,19 +295,19 @@ function redirect(url, type, initiator) {
     if (frontend == 'libreddit') {
       if (libredditInstancesList.length === 0) return null;
       let libredditRandomInstance = commonHelper.getRandomInstance(libredditInstancesList);
-      return `${libredditRandomInstance}/preview/pre${url.pathname}${url.search}`;
+      return `${libredditRandomInstance}/preview/pre${url.pathname}${url.reddit}`;
     }
   }
 
   if (frontend == 'libreddit') {
     if (libredditInstancesList.length === 0) return null;
     let libredditRandomInstance = commonHelper.getRandomInstance(libredditInstancesList);
-    return `${libredditRandomInstance}${url.pathname}${url.search}`;
+    return `${libredditRandomInstance}${url.pathname}${url.reddit}`;
   }
   if (frontend == 'teddit') {
     if (tedditInstancesList.length === 0) return null;
     let tedditRandomInstance = commonHelper.getRandomInstance(tedditInstancesList);
-    return `${tedditRandomInstance}${url.pathname}${url.search}`;
+    return `${tedditRandomInstance}${url.pathname}${url.reddit}`;
   }
 }
 
@@ -254,7 +320,7 @@ function reverse(url) {
     ...nitterTorCustomRedirects].includes(protocolHost)
   ) return;
   if (url.pathname.includes('/pics/w:null_'))
-    return `https://reddit.com${url.pathname}${url.search}`;
+    return `https://reddit.com${url.pathname}${url.reddit}`;
 }
 
 async function switchInstance(url) {
@@ -319,7 +385,7 @@ async function switchInstance(url) {
 
         let randomInstance = commonHelper.getRandomInstance(instancesList);
 
-        resolve(`${randomInstance}${url.pathname}${url.search}`)
+        resolve(`${randomInstance}${url.pathname}${url.reddit}`)
       }
     )
   })
@@ -412,9 +478,9 @@ export default {
   setLibredditRedirects,
 
   initLibredditCookies,
+  setLibredditCookies,
   initTedditCookies,
-
-  initLibredditCookies,
+  setTedditCookies,
 
   redirect,
   init,
diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js
index 730f3938..4e8441c6 100644
--- a/src/assets/javascripts/helpers/search.js
+++ b/src/assets/javascripts/helpers/search.js
@@ -147,7 +147,8 @@ function initSearxCookies(from) {
           ...r.searxTorCustomRedirects,
           ...r.searxI2pRedirectsChecks,
           ...r.searxI2pCustomRedirects,
-        ].includes(protocolHost)) resolve();
+        ].includes(protocolHost)) return;
+
 
         let checkedInstances;
         if (protocol == 'normal') checkedInstances = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects];
@@ -178,6 +179,45 @@ function initSearxCookies(from) {
   })
 }
 
+function setSearxCookies() {
+  browser.storage.local.get(
+    [
+      "disableSearch",
+      "searchProtocol",
+      "searchFrontend",
+      "searxNormalRedirectsChecks",
+      "searxNormalCustomRedirects",
+      "searxTorRedirectsChecks",
+      "searxTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableSearch || r.searchFrontend != 'searx', r.searchProtocol === undefined) return;
+      let checkedInstances;
+      if (r.searchProtocol == 'normal') checkedInstances = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects]
+      else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxTorRedirectsChecks, ...r.searxTorCustomRedirects]
+      for (const to of checkedInstances) {
+        commonHelper.getCookiesFromStorage('searx', to, 'advanced_search');
+        commonHelper.getCookiesFromStorage('searx', to, 'autocomplete');
+        commonHelper.getCookiesFromStorage('searx', to, 'categories');
+        commonHelper.getCookiesFromStorage('searx', to, 'disabled_engines');
+        commonHelper.getCookiesFromStorage('searx', to, 'disabled_plugins');
+        commonHelper.getCookiesFromStorage('searx', to, 'doi_resolver');
+        commonHelper.getCookiesFromStorage('searx', to, 'enabled_engines');
+        commonHelper.getCookiesFromStorage('searx', to, 'enabled_plugins');
+        commonHelper.getCookiesFromStorage('searx', to, 'image_proxy');
+        commonHelper.getCookiesFromStorage('searx', to, 'language');
+        commonHelper.getCookiesFromStorage('searx', to, 'locale');
+        commonHelper.getCookiesFromStorage('searx', to, 'method');
+        commonHelper.getCookiesFromStorage('searx', to, 'oscar-style');
+        commonHelper.getCookiesFromStorage('searx', to, 'results_on_new_tab');
+        commonHelper.getCookiesFromStorage('searx', to, 'safesearch');
+        commonHelper.getCookiesFromStorage('searx', to, 'theme');
+        commonHelper.getCookiesFromStorage('searx', to, 'tokens');
+      }
+    }
+  )
+}
+
 function initSearxngCookies(from) {
   return new Promise(resolve => {
     browser.storage.local.get(
@@ -199,7 +239,7 @@ function initSearxngCookies(from) {
           ...r.searxngTorCustomRedirects,
           ...r.searxngI2pRedirectsChecks,
           ...r.searxngI2pCustomRedirects,
-        ].includes(protocolHost)) resolve();
+        ].includes(protocolHost)) return;
 
         let checkedInstances;
         if (r.searchProtocol == 'normal') checkedInstances = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects];
@@ -232,6 +272,47 @@ function initSearxngCookies(from) {
   })
 }
 
+function setSearxngCookies() {
+  browser.storage.local.get(
+    [
+      "searchProtocol",
+      "disableSearch",
+      "searchFrontend",
+      "searxngNormalRedirectsChecks",
+      "searxngNormalCustomRedirects",
+      "searxngTorRedirectsChecks",
+      "searxngTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableSearch || r.searchFrontend != 'searxng', r.searchProtocol === undefined) return;
+      let checkedInstances;
+      if (r.searchProtocol == 'normal') checkedInstances = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects]
+      else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxngTorRedirectsChecks, ...r.searxngTorCustomRedirects]
+      for (const to of checkedInstances) {
+        commonHelper.getCookiesFromStorage('searxng', to, 'autocomplete');
+        commonHelper.getCookiesFromStorage('searxng', to, 'categories');
+        commonHelper.getCookiesFromStorage('searxng', to, 'disabled_engines');
+        commonHelper.getCookiesFromStorage('searxng', to, 'disabled_plugins');
+        commonHelper.getCookiesFromStorage('searxng', to, 'doi_resolver');
+        commonHelper.getCookiesFromStorage('searxng', to, 'enabled_plugins');
+        commonHelper.getCookiesFromStorage('searxng', to, 'enabled_engines');
+        commonHelper.getCookiesFromStorage('searxng', to, 'image_proxy');
+        commonHelper.getCookiesFromStorage('searxng', to, 'infinite_scroll');
+        commonHelper.getCookiesFromStorage('searxng', to, 'language');
+        commonHelper.getCookiesFromStorage('searxng', to, 'locale');
+        commonHelper.getCookiesFromStorage('searxng', to, 'maintab');
+        commonHelper.getCookiesFromStorage('searxng', to, 'method');
+        commonHelper.getCookiesFromStorage('searxng', to, 'query_in_title');
+        commonHelper.getCookiesFromStorage('searxng', to, 'results_on_new_tab');
+        commonHelper.getCookiesFromStorage('searxng', to, 'safesearch');
+        commonHelper.getCookiesFromStorage('searxng', to, 'simple_style');
+        commonHelper.getCookiesFromStorage('searxng', to, 'theme');
+        commonHelper.getCookiesFromStorage('searxng', to, 'tokens');
+      }
+    }
+  )
+}
+
 function redirect(url) {
   if (disable) return;
   if (!targets.some(rx => rx.test(url.href))) return;
@@ -482,7 +563,10 @@ export default {
   setWhoogleRedirects,
 
   initSearxCookies,
+  setSearxCookies,
+
   initSearxngCookies,
+  setSearxngCookies,
 
   redirect,
   initDefaults,
diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js
index 07820c26..501390dc 100644
--- a/src/assets/javascripts/helpers/tiktok.js
+++ b/src/assets/javascripts/helpers/tiktok.js
@@ -73,6 +73,29 @@ function initProxiTokCookies(from) {
     })
 }
 
+function setProxiTokCookies() {
+    browser.storage.local.get(
+        [
+            "tiktokProtocol",
+            "disableTiktok",
+            "proxiTokNormalRedirectsChecks",
+            "proxiTokNormalCustomRedirects",
+            "proxiTokTorRedirectsChecks",
+            "proxiTokTorCustomRedirects",
+        ],
+        r => {
+            if (r.disableTiktok || r.tiktokProtocol === undefined) return;
+            let checkedInstances;
+            if (r.youtubeProtocol == 'normal') checkedInstances = [...r.proxiTokNormalRedirectsChecks, ...r.proxiTokNormalCustomRedirects]
+            else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.proxiTokTorRedirectsChecks, ...r.proxiTokTorCustomRedirects]
+            for (const to of checkedInstances) {
+                commonHelper.getCookiesFromStorage('proxitok', from, to, 'theme');
+                commonHelper.getCookiesFromStorage('proxitok', from, to, 'api-legacy');
+            }
+        }
+    )
+}
+
 function redirect(url, type, initiator) {
     if (disable) return;
     if (type != "main_frame") return null;
@@ -174,6 +197,7 @@ export default {
     reverse,
 
     initProxiTokCookies,
+    setProxiTokCookies,
 
     initDefaults,
     init,
diff --git a/src/assets/javascripts/helpers/translate/get_lingva_preferences.js b/src/assets/javascripts/helpers/translate/get_lingva_preferences.js
new file mode 100644
index 00000000..f04ea3dc
--- /dev/null
+++ b/src/assets/javascripts/helpers/translate/get_lingva_preferences.js
@@ -0,0 +1,10 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.set(
+    {
+        ['lingva_lingva_chakra-ui-color-mode']: localStorage.getItem('chakra-ui-color-mode'),
+        lingva_lingva_isauto: localStorage.getItem('isauto'),
+        lingva_lingva_source: localStorage.getItem('source'),
+        lingva_lingva_target: localStorage.getItem('target'),
+    }
+)
diff --git a/src/assets/javascripts/helpers/translate/lingva-preferences.js b/src/assets/javascripts/helpers/translate/lingva-preferences.js
deleted file mode 100644
index eeee2415..00000000
--- a/src/assets/javascripts/helpers/translate/lingva-preferences.js
+++ /dev/null
@@ -1,12 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.get(
-    [
-        "theme",
-    ],
-    r => {
-        let theme = r.theme;
-
-        if (theme != "DEFAULT") localStorage.setItem("chakra-ui-color-mode", r.theme);
-    }
-)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/translate/set_lingva_preferences.js b/src/assets/javascripts/helpers/translate/set_lingva_preferences.js
new file mode 100644
index 00000000..7380fa37
--- /dev/null
+++ b/src/assets/javascripts/helpers/translate/set_lingva_preferences.js
@@ -0,0 +1,16 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.get(
+    [
+        "lingva_chakra-ui-color-mode",
+        "lingva_isauto",
+        "lingva_source",
+        "lingva_target",
+    ],
+    r => {
+        if (r['lingva_chakra-ui-color-mode'] !== undefined) localStorage.setItem('chakra-ui-color-mode', r['lingva_chakra-ui-color-mode']);
+        if (r.lingva_isauto !== undefined) localStorage.setItem('isauto', r.lingva_isauto);
+        if (r.lingva_source !== undefined) localStorage.setItem('source', r.lingva_source);
+        if (r.lingva_target !== undefined) localStorage.setItem('target', r.lingva_target);
+    }
+)
diff --git a/src/assets/javascripts/helpers/translate/translate.js b/src/assets/javascripts/helpers/translate/translate.js
index 3efaf544..3ca4dd9b 100644
--- a/src/assets/javascripts/helpers/translate/translate.js
+++ b/src/assets/javascripts/helpers/translate/translate.js
@@ -67,7 +67,6 @@ let
   lingvaNormalCustomRedirects,
   lingvaTorCustomRedirects;
 
-
 let
   disable, // translateDisable
   frontend, // translateFrontend
@@ -107,14 +106,129 @@ function isTranslateRedirects(url, type, frontend) {
   ].includes(protocolHost);
 }
 
-function initLingvaLocalStorage(tabId) {
-  browser.tabs.executeScript(
-    tabId,
-    {
-      file: "/assets/javascripts/helpers/translate/lingva-preferences.js",
-      runAt: "document_start"
+function initLingvaLocalStorage(url, tabId) {
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "lingvaNormalRedirectsChecks",
+        "lingvaNormalCustomRedirects",
+        "lingvaTorRedirectsChecks",
+        "lingvaTorCustomRedirects",
+      ],
+      r => {
+        let protocolHost = commonHelper.protocolHost(url);
+        if (![
+          ...r.lingvaNormalRedirectsChecks,
+          ...r.lingvaTorRedirectsChecks,
+          ...r.lingvaNormalCustomRedirects,
+          ...r.lingvaTorCustomRedirects,
+        ].includes(protocolHost)) return;
+        browser.tabs.executeScript(
+          tabId,
+          {
+            file: "/assets/javascripts/helpers/translate/get_lingva_preferences.js",
+            runAt: "document_start"
+          }
+        );
+        resolve(true);
+      }
+    )
+  })
+}
+
+async function setLingvaLocalStorage(url, tabId) {
+  browser.storage.local.get(
+    [
+      "disableYoutube",
+      "youtubeFrontend",
+      "lingvaNormalRedirectsChecks",
+      "lingvaNormalCustomRedirects",
+      "lingvaTorRedirectsChecks",
+      "lingvaTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableYoutube || r.youtubeFrontend != 'lingva') return;
+      let protocolHost = commonHelper.protocolHost(url);
+      if (![
+        ...r.lingvaNormalRedirectsChecks,
+        ...r.lingvaTorRedirectsChecks,
+        ...r.lingvaNormalCustomRedirects,
+        ...r.lingvaTorCustomRedirects,
+      ].includes(protocolHost)) return;
+      browser.tabs.executeScript(
+        tabId,
+        {
+          file: "/assets/javascripts/helpers/youtube/set_lingva_preferences.js",
+          runAt: "document_start"
+        }
+      );
+      return true;
+    })
+}
+
+function initSimplyTranslateCookies(from) {
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "translateProtocol",
+        "simplyTranslateNormalRedirectsChecks",
+        "simplyTranslateNormalCustomRedirects",
+        "simplyTranslateTorRedirectsChecks",
+        "simplyTranslateTorCustomRedirects",
+        "simplyTranslateI2pRedirectsChecks",
+        "simplyTranslateI2pCustomRedirects",
+      ],
+      r => {
+        let protocolHost = commonHelper.protocolHost(from);
+        if (![
+          ...r.simplyTranslateNormalRedirectsChecks,
+          ...r.simplyTranslateNormalCustomRedirects,
+          ...r.simplyTranslateTorRedirectsChecks,
+          ...r.simplyTranslateTorCustomRedirects,
+          ...r.simplyTranslateI2pRedirectsChecks,
+          ...r.simplyTranslateI2pCustomRedirects,
+        ].includes(protocolHost)) resolve();
+
+        let checkedInstances;
+        if (r.translateProtocol == 'normal') checkedInstances = [...r.simplyTranslateNormalRedirectsChecks, ...r.simplyTranslateNormalCustomRedirects]
+        else if (r.translateProtocol == 'tor') checkedInstances = [...r.simplyTranslateTorRedirectsChecks, ...r.simplyTranslateTorCustomRedirects]
+        else if (r.translateProtocol == 'i2p') checkedInstances = [...r.simplyTranslateI2pRedirectsChecks, ...r.simplyTranslateI2pCustomRedirects]
+        for (const to of checkedInstances) {
+          commonHelper.copyCookie('simplyTranslate', from, to, 'from_lang');
+          commonHelper.copyCookie('simplyTranslate', from, to, 'to_lang');
+          commonHelper.copyCookie('simplyTranslate', from, to, 'tts_enabled');
+          commonHelper.copyCookie('simplyTranslate', from, to, 'use_text_fields');
+        }
+        resolve(true);
+      }
+    )
+  })
+}
+
+function setSimplyTranslateCookies() {
+  browser.storage.local.get(
+    [
+      "translateProtocol",
+      "translateDisable",
+      "translateFrontend",
+      "simplyTranslateNormalRedirectsChecks",
+      "simplyTranslateNormalCustomRedirects",
+      "simplyTranslateTorRedirectsChecks",
+      "simplyTranslateTorCustomRedirects",
+    ],
+    r => {
+      if (r.translateDisable || r.translateFrontend != 'simplyTranslate' || r.translateProtocol === undefined) return;
+      let checkedInstances;
+      if (r.translateProtocol == 'normal') checkedInstances = [...r.simplyTranslateNormalRedirectsChecks, ...r.simplyTranslateNormalCustomRedirects]
+      else if (r.translateProtocol == 'tor') checkedInstances = [...r.simplyTranslateTorRedirectsChecks, ...r.simplyTranslateTorCustomRedirects]
+      for (const to of checkedInstances) {
+        commonHelper.getCookiesFromStorage('simplyTranslate', to, 'from_lang');
+        commonHelper.getCookiesFromStorage('simplyTranslate', to, 'to_lang');
+        commonHelper.getCookiesFromStorage('simplyTranslate', to, 'tts_enabled');
+        commonHelper.getCookiesFromStorage('simplyTranslate', to, 'use_text_fields');
+      }
     }
-  );
+  )
 }
 
 function redirect(url) {
@@ -267,7 +381,10 @@ export default {
   getRedirects,
 
   isTranslateRedirects,
+  initSimplyTranslateCookies,
+  setSimplyTranslateCookies,
   initLingvaLocalStorage,
+  setLingvaLocalStorage,
 
   setSimplyTranslateRedirects,
   setLingvaRedirects,
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index 2af6a28d..b2469d7c 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -134,18 +134,6 @@ function removeXFrameOptions(e) {
   if (isChanged) return { responseHeaders: e.responseHeaders };
 }
 
-function isNitter(url, type) {
-  if (type !== "main_frame" && type !== "sub_frame") return false;
-
-  let protocolHost = commonHelper.protocolHost(url);
-  return [
-    ...redirects.nitter.normal,
-    ...redirects.nitter.tor,
-    ...nitterNormalCustomRedirects,
-    ...nitterTorCustomRedirects,
-  ].includes(protocolHost);
-}
-
 async function initNitterCookies(from) {
   return new Promise(resolve => {
     browser.storage.local.get(
@@ -190,6 +178,42 @@ async function initNitterCookies(from) {
   })
 }
 
+function setNitterCookies() {
+  browser.storage.local.get(
+    [
+      "twitterProtocol",
+      "disableTwitter",
+      "youtubeFrontend",
+      "nitterNormalRedirectsChecks",
+      "nitterNormalCustomRedirects",
+      "nitterTorRedirectsChecks",
+      "nitterTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableYoutube || r.youtubeFrontend != 'nitter' || r.twitterProtocol === undefined) return;
+      let checkedInstances;
+      if (r.youtubeProtocol == 'normal') checkedInstances = [...r.nitterNormalRedirectsChecks, ...r.nitterNormalCustomRedirects]
+      else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.nitterTorRedirectsChecks, ...r.nitterTorCustomRedirects]
+      for (const to of checkedInstances) {
+        commonHelper.getCookiesFromStorage('nitter', to, 'theme');
+        commonHelper.getCookiesFromStorage('nitter', to, 'infiniteScroll');
+        commonHelper.getCookiesFromStorage('nitter', to, 'stickyProfile');
+        commonHelper.getCookiesFromStorage('nitter', to, 'bidiSupport');
+        commonHelper.getCookiesFromStorage('nitter', to, 'hideTweetStats');
+        commonHelper.getCookiesFromStorage('nitter', to, 'hideBanner');
+        commonHelper.getCookiesFromStorage('nitter', to, 'hidePins');
+        commonHelper.getCookiesFromStorage('nitter', to, 'hideReplies');
+        commonHelper.getCookiesFromStorage('nitter', to, 'squareAvatars');
+        commonHelper.getCookiesFromStorage('nitter', to, 'mp4Playback');
+        commonHelper.getCookiesFromStorage('nitter', to, 'hlsPlayback');
+        commonHelper.getCookiesFromStorage('nitter', to, 'proxyVideos');
+        commonHelper.getCookiesFromStorage('nitter', to, 'muteVideos');
+        commonHelper.getCookiesFromStorage('nitter', to, 'autoplayGifs');
+      }
+    }
+  )
+}
+
 function initDefaults() {
   fetch('/instances/data.json').then(response => response.text()).then(data => {
     let dataJson = JSON.parse(data);
@@ -248,8 +272,8 @@ export default {
   reverse,
   removeXFrameOptions,
 
-  isNitter,
   initNitterCookies,
+  setNitterCookies,
 
   redirect,
   initDefaults,
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
index 17c1ece1..a8acb097 100644
--- a/src/assets/javascripts/helpers/wikipedia.js
+++ b/src/assets/javascripts/helpers/wikipedia.js
@@ -50,7 +50,7 @@ let
   wikilessTorCustomRedirects,
   wikilessI2pCustomRedirects;
 
-function initWikilessCookies() {
+function initWikilessCookies(from) {
   return new Promise(resolve => {
     browser.storage.local.get(
       [
@@ -78,14 +78,39 @@ function initWikilessCookies() {
         else if (r.wikipediaProtocol == 'tor') checkedInstances = [...r.wikilessTorRedirectsChecks, ...r.wikilessTorCustomRedirects]
         else if (r.wikipediaProtocol == 'i2p') checkedInstances = [...r.wikilessI2pRedirectsChecks, ...r.wikilessI2pCustomRedirects]
 
-        for (const to of checkedInstances)
+        for (const to of checkedInstances) {
           commonHelper.copyCookie('wikiless', from, to, 'theme');
+          commonHelper.copyCookie('wikiless', from, to, 'default_lang');
+        }
         resolve(true);
       }
     )
   })
 }
 
+function setWikilessCookies() {
+  browser.storage.local.get(
+    [
+      "disableWikipedia",
+      "wikipediaProtocol",
+      "wikilessNormalRedirectsChecks",
+      "wikilessNormalCustomRedirects",
+      "wikilessTorRedirectsChecks",
+      "wikilessTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableWikipedia || r.wikipediaProtocol === undefined) return;
+      let checkedInstances;
+      if (r.wikipediaProtocol == 'normal') checkedInstances = [...r.wikilessNormalRedirectsChecks, ...r.wikilessNormalCustomRedirects]
+      else if (r.wikipediaProtocol == 'tor') checkedInstances = [...r.wikilessTorRedirectsChecks, ...r.wikilessTorCustomRedirects]
+      for (const to of checkedInstances) {
+        commonHelper.getCookiesFromStorage('wikiless', to, 'theme');
+        commonHelper.getCookiesFromStorage('wikiless', to, 'default_lang');
+      }
+    }
+  )
+}
+
 function redirect(url) {
   if (disable) return;
   if (!targets.test(url.href)) return;
@@ -212,6 +237,7 @@ export default {
   setRedirects,
 
   initWikilessCookies,
+  setWikilessCookies,
 
   redirect,
   initDefaults,
diff --git a/src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js b/src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js
new file mode 100644
index 00000000..9d052f62
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js
@@ -0,0 +1,7 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.set(
+    {
+        'pipedMaterial_PREFERENCES': localStorage.getItem("PREFERENCES")
+    }
+)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/get_piped_settings.js b/src/assets/javascripts/helpers/youtube/get_piped_preferences.js
index 12e92baa..12e92baa 100644
--- a/src/assets/javascripts/helpers/youtube/get_piped_settings.js
+++ b/src/assets/javascripts/helpers/youtube/get_piped_preferences.js
diff --git a/src/assets/javascripts/helpers/youtube/piped-preferences.js b/src/assets/javascripts/helpers/youtube/piped-preferences.js
deleted file mode 100644
index 8a1f2d0d..00000000
--- a/src/assets/javascripts/helpers/youtube/piped-preferences.js
+++ /dev/null
@@ -1,40 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.get(
-    [
-        "piped_bufferGoal",
-        "piped_comments",
-        "piped_disableLBRY",
-        "piped_enabledCodecs",
-        "piped_homepage",
-        "piped_listen",
-        "piped_minimizeDescription",
-        "piped_playerAutoPlay",
-        "piped_proxyLBRY",
-        "piped_quality",
-        "piped_region",
-        "piped_selectedSkip",
-        "piped_sponsorblock",
-        "piped_theme",
-        "piped_volume",
-        "piped_watchHistory",
-    ],
-    r => {
-        localStorage.setItem("bufferGoal", r.piped_bufferGoal);
-        localStorage.setItem("comments", r.piped_comments);
-        localStorage.setItem("disableLBRY", r.piped_disableLBRY);
-        localStorage.setItem("enabledCodecs", r.piped_enabledCodecs);
-        localStorage.setItem("homepage", r.piped_homepage);
-        localStorage.setItem("listen", r.piped_listen);
-        localStorage.setItem("minimizeDescription", r.piped_minimizeDescription);
-        localStorage.setItem("playerAutoPlay", r.piped_playerAutoPlay);
-        localStorage.setItem("proxyLBRY", r.piped_proxyLBRY);
-        localStorage.setItem("quality", r.piped_quality);
-        localStorage.setItem("region", r.piped_region);
-        localStorage.setItem("selectedSkip", r.piped_selectedSkip);
-        localStorage.setItem("sponsorblock", r.piped_sponsorblock);
-        localStorage.setItem("theme", r.piped_theme);
-        localStorage.setItem("volume", r.piped_volume);
-        localStorage.setItem("watchHistory", r.piped_watchHistory);
-    }
-)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/piped.js b/src/assets/javascripts/helpers/youtube/piped.js
deleted file mode 100644
index e1f7b0df..00000000
--- a/src/assets/javascripts/helpers/youtube/piped.js
+++ /dev/null
@@ -1,89 +0,0 @@
-"use strict";
-window.browser = window.browser || window.chrome;
-
-import commonHelper from '../common.js'
-
-async function initDefaults() {
-  await browser.storage.local.set({
-    youtubeVolume: 100,
-    youtubeAutoplay: false,
-    youtubeListen: false,
-
-    pipedBufferGoal: 300,
-    pipedComments: true,
-    pipedDisableLBRY: false,
-    pipedEnabledCodecs: ["av1", "vp9", "avc"],
-    pipedHomepage: "trending",
-    pipedMinimizeDescription: false,
-    pipedProxyLBRY: false,
-    pipedQuality: 0,
-    pipedRegion: "US",
-    pipedSelectedSkip: ["sponsor", "interaction", "selfpromo", "music_offtopic"],
-    pipedSponsorblock: true,
-    pipedDdlTheme: 'auto',
-    pipedWatchHistory: false,
-  })
-}
-
-async function copyPipedLocalStorage(url, tabId) {
-  return new Promise(resolve => {
-    browser.storage.local.get(
-      [
-        "pipedNormalRedirectsChecks",
-        "pipedNormalCustomRedirects",
-        "pipedTorRedirectsChecks",
-        "pipedTorCustomRedirects",
-      ],
-      r => {
-        let protocolHost = commonHelper.protocolHost(url);
-        if (![
-          ...r.pipedNormalCustomRedirects,
-          ...r.pipedNormalRedirectsChecks,
-          ...r.pipedTorRedirectsChecks,
-          ...r.pipedTorCustomRedirects,
-        ].includes(protocolHost)) resolve();
-        browser.tabs.executeScript(
-          tabId,
-          {
-            file: "/assets/javascripts/helpers/youtube/get_piped_settings.js",
-            runAt: "document_start"
-          }
-        );
-        resolve(true);
-      })
-  })
-}
-
-async function initPipedLocalStorage(url, tabId) {
-  browser.storage.local.get(
-    [
-      "youtubeProtocol",
-      "pipedNormalRedirectsChecks",
-      "pipedNormalCustomRedirects",
-      "pipedTorRedirectsChecks",
-      "pipedTorCustomRedirects",
-    ],
-    r => {
-      let protocolHost = commonHelper.protocolHost(url);
-      if (![
-        ...r.pipedNormalRedirectsChecks,
-        ...r.pipedTorRedirectsChecks,
-        ...r.pipedNormalCustomRedirects,
-        ...r.pipedTorCustomRedirects,
-      ].includes(protocolHost)) return;
-      browser.tabs.executeScript(
-        tabId,
-        {
-          file: "/assets/javascripts/helpers/youtube/piped-preferences.js",
-          runAt: "document_start"
-        }
-      );
-      return true;
-    })
-}
-
-export default {
-  initDefaults,
-  initPipedLocalStorage,
-  copyPipedLocalStorage,
-}
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js b/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
deleted file mode 100644
index c669c47e..00000000
--- a/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
+++ /dev/null
@@ -1,37 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.get(
-    [
-        "theme",
-        "youtubeAutoplay",
-        "youtubeVolume",
-        "youtubeListen",
-
-        "pipedDisableLBRY",
-        "pipedProxyLBRY",
-        "pipedSelectedSkip",
-        "pipedSponsorblock",
-
-        "pipedMaterialSkipToLastPoint",
-    ],
-    r => {
-        let prefs = {};
-        if (localStorage.getItem("PREFERENCES"))
-            prefs = JSON.parse(localStorage.getItem("PREFERENCES"));
-
-        if (r.theme == 'dark') prefs.darkMode = true;
-        if (r.theme == 'light') prefs.darkMode = false;
-
-        prefs.volume = r.youtubeVolume / 100;
-        prefs.playerAutoplay = r.youtubeAutoplay;
-
-        prefs.listen = r.youtubeListen;
-        prefs.disableLBRY = r.pipedDisableLBRY;
-        prefs.proxyLBRY = r.pipedProxyLBRY;
-        prefs.sponsorblock = r.pipedSponsorblock;
-        prefs.skipToLastPoint = r.pipedMaterialSkipToLastPoint;
-        prefs.selectedSkip = r.pipedSelectedSkip;
-
-        localStorage.setItem("PREFERENCES", JSON.stringify(prefs));
-    }
-)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/pipedMaterial.js b/src/assets/javascripts/helpers/youtube/pipedMaterial.js
deleted file mode 100644
index 5e5a577d..00000000
--- a/src/assets/javascripts/helpers/youtube/pipedMaterial.js
+++ /dev/null
@@ -1,31 +0,0 @@
-async function initDefaults() {
-  await browser.storage.local.set({
-    theme: "dark",
-    youtubeAutoplay: false,
-    youtubeVolume: 100,
-    youtubeListen: false,
-
-    pipedDisableLBRY: false,
-    pipedProxyLBRY: false,
-    pipedSelectedSkip: [],
-    pipedSponsorblock: true,
-
-    pipedMaterialSkipToLastPoint: true,
-  })
-}
-
-function initPipedMaterialLocalStorage(tabId) {
-  if (!disable && frontend == 'pipedMaterial' && enableCustomSettings)
-    browser.tabs.executeScript(
-      tabId,
-      {
-        file: "/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js",
-        runAt: "document_start"
-      }
-    );
-}
-
-export default {
-  initDefaults,
-  initPipedMaterialLocalStorage,
-}
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js b/src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js
new file mode 100644
index 00000000..7e12fe26
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js
@@ -0,0 +1,8 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.get(
+    "pipedMaterial_PREFERENCES",
+    r => {
+        if (r.pipedMaterial_PREFERENCES !== undefined) localStorage.setItem("PREFERENCES", r.pipedMaterial_PREFERENCES)
+    }
+)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/set_piped_preferences.js b/src/assets/javascripts/helpers/youtube/set_piped_preferences.js
new file mode 100644
index 00000000..ffb3e218
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtube/set_piped_preferences.js
@@ -0,0 +1,40 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.get(
+    [
+        "piped_bufferGoal",
+        "piped_comments",
+        "piped_disableLBRY",
+        "piped_enabledCodecs",
+        "piped_homepage",
+        "piped_listen",
+        "piped_minimizeDescription",
+        "piped_playerAutoPlay",
+        "piped_proxyLBRY",
+        "piped_quality",
+        "piped_region",
+        "piped_selectedSkip",
+        "piped_sponsorblock",
+        "piped_theme",
+        "piped_volume",
+        "piped_watchHistory",
+    ],
+    r => {
+        if (r.piped_bufferGoal !== undefined) localStorage.setItem("bufferGoal", r.piped_bufferGoal);
+        if (r.piped_comments !== undefined) localStorage.setItem("comments", r.piped_comments);
+        if (r.piped_disableLBRY !== undefined) localStorage.setItem("disableLBRY", r.piped_disableLBRY);
+        if (r.piped_enabledCodecs !== undefined) localStorage.setItem("enabledCodecs", r.piped_enabledCodecs);
+        if (r.piped_homepage !== undefined) localStorage.setItem("homepage", r.piped_homepage);
+        if (r.piped_listen !== undefined) localStorage.setItem("listen", r.piped_listen);
+        if (r.piped_minimizeDescription !== undefined) localStorage.setItem("minimizeDescription", r.piped_minimizeDescription);
+        if (r.piped_playerAutoPlay !== undefined) localStorage.setItem("playerAutoPlay", r.piped_playerAutoPlay);
+        if (r.piped_proxyLBRY !== undefined) localStorage.setItem("proxyLBRY", r.piped_proxyLBRY);
+        if (r.piped_quality !== undefined) localStorage.setItem("quality", r.piped_quality);
+        if (r.piped_region !== undefined) localStorage.setItem("region", r.piped_region);
+        if (r.piped_selectedSkip !== undefined) localStorage.setItem("selectedSkip", r.piped_selectedSkip);
+        if (r.piped_sponsorblock !== undefined) localStorage.setItem("sponsorblock", r.piped_sponsorblock);
+        if (r.piped_theme !== undefined) localStorage.setItem("theme", r.piped_theme);
+        if (r.piped_volume !== undefined) localStorage.setItem("volume", r.piped_volume);
+        if (r.piped_watchHistory !== undefined) localStorage.setItem("watchHistory", r.piped_watchHistory);
+    }
+)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index 96f9959b..31cc444e 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -3,8 +3,6 @@
 window.browser = window.browser || window.chrome;
 
 import commonHelper from '../common.js'
-import piped from './piped.js';
-import pipedMaterial from './pipedMaterial.js';
 
 const targets = [
   /^https?:\/{2}(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
@@ -330,9 +328,6 @@ async function initDefaults() {
           youtubeEmbedFrontend: 'invidious',
           youtubeProtocol: 'normal',
         })
-
-        await piped.initDefaults();
-        await pipedMaterial.initDefaults();
         resolve();
       })
     })
@@ -420,7 +415,7 @@ async function initInvidiousCookies(from) {
           ...r.invidiousTorRedirectsChecks,
           ...r.invidiousNormalCustomRedirects,
           ...r.invidiousTorCustomRedirects,
-        ].includes(protocolHost)) resolve();
+        ].includes(protocolHost)) return;
         let checkedInstances;
         if (r.youtubeProtocol == 'normal') checkedInstances = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects]
         else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects]
@@ -429,7 +424,150 @@ async function initInvidiousCookies(from) {
         resolve(true);
       }
     )
-  }
+  })
+}
+
+function setInvidiousCookies() {
+  browser.storage.local.get(
+    [
+      "disableYoutube",
+      "youtubeProtocol",
+      "youtubeFrontend",
+      "invidiousNormalRedirectsChecks",
+      "invidiousNormalCustomRedirects",
+      "invidiousTorRedirectsChecks",
+      "invidiousTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableYoutube || r.youtubeFrontend != 'invidious' || r.youtubeProtocol === undefined) return;
+      let checkedInstances;
+      if (r.youtubeProtocol == 'normal') checkedInstances = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects]
+      else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects]
+      for (const to of checkedInstances)
+        commonHelper.getCookiesFromStorage('invidious', to, 'PREFS');
+    }
+  )
+}
+
+async function initPipedLocalStorage(url, tabId) {
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "pipedNormalRedirectsChecks",
+        "pipedNormalCustomRedirects",
+        "pipedTorRedirectsChecks",
+        "pipedTorCustomRedirects",
+      ],
+      r => {
+        let protocolHost = commonHelper.protocolHost(url);
+        if (![
+          ...r.pipedNormalCustomRedirects,
+          ...r.pipedNormalRedirectsChecks,
+          ...r.pipedTorRedirectsChecks,
+          ...r.pipedTorCustomRedirects,
+        ].includes(protocolHost)) resolve();
+        browser.tabs.executeScript(
+          tabId,
+          {
+            file: "/assets/javascripts/helpers/youtube/get_piped_settings.js",
+            runAt: "document_start"
+          }
+        );
+        resolve(true);
+      }
+    )
+  })
+}
+
+async function setPipedLocalStorage(url, tabId) {
+  browser.storage.local.get(
+    [
+      "disableYoutube",
+      "youtubeFrontend",
+      "pipedNormalRedirectsChecks",
+      "pipedNormalCustomRedirects",
+      "pipedTorRedirectsChecks",
+      "pipedTorCustomRedirects",
+    ],
+    r => {
+      if (!r.disableYoutube && r.youtubeFrontend == 'pipedMaterial') return;
+      let protocolHost = commonHelper.protocolHost(url);
+      if (![
+        ...r.pipedNormalRedirectsChecks,
+        ...r.pipedTorRedirectsChecks,
+        ...r.pipedNormalCustomRedirects,
+        ...r.pipedTorCustomRedirects,
+      ].includes(protocolHost)) return;
+      browser.tabs.executeScript(
+        tabId,
+        {
+          file: "/assets/javascripts/helpers/youtube/set_piped_preferences.js",
+          runAt: "document_start"
+        }
+      );
+      return true;
+    }
+  )
+}
+
+async function initPipedMaterialLocalStorage(tabId) {
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "pipedMaterialNormalRedirectsChecks",
+        "pipedMaterialNormalCustomRedirects",
+        "pipedMaterialTorRedirectsChecks",
+        "pipedMaterialTorCustomRedirects",
+      ],
+      r => {
+        const protocolHost = commonHelper.protocolHost(url);
+        if (![
+          ...r.pipedMaterialNormalCustomRedirects,
+          ...r.pipedMaterialNormalRedirectsChecks,
+          ...r.pipedMaterialTorRedirectsChecks,
+          ...r.pipedMaterialTorCustomRedirects,
+        ].includes(protocolHost)) return;
+        browser.tabs.executeScript(
+          tabId,
+          {
+            file: "/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js",
+            runAt: "document_start"
+          }
+        );
+        resolve(true);
+      }
+    )
+  })
+}
+
+async function setPipedMaterialLocalStorage(url, tabId) {
+  browser.storage.local.get(
+    [
+      "disableYoutube",
+      "youtubeFrontend",
+      "pipedMaterialNormalRedirectsChecks",
+      "pipedMaterialTorRedirectsChecks",
+      "pipedMaterialNormalCustomRedirects",
+      "pipedMaterialTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableYoutube || r.youtubeFrontend != 'pipedMaterial') return;
+      const protocolHost = commonHelper.protocolHost(url);
+      if (![
+        ...r.pipedMaterialNormalRedirectsChecks,
+        ...r.pipedMaterialTorRedirectsChecks,
+        ...r.pipedMaterialNormalCustomRedirects,
+        ...r.pipedMaterialTorCustomRedirects,
+      ].includes(protocolHost)) return;
+      browser.tabs.executeScript(
+        tabId,
+        {
+          file: "/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js",
+          runAt: "document_start"
+        }
+      );
+      return true;
+    }
   )
 }
 
@@ -456,15 +594,12 @@ function removeXFrameOptions(e) {
   if (isChanged) return { responseHeaders: e.responseHeaders };
 }
 
-let
-  initPipedLocalStorage = piped.initPipedLocalStorage,
-  initPipedMaterialLocalStorage = pipedMaterial.initPipedMaterialLocalStorage,
-  copyPipedLocalStorage = piped.copyPipedLocalStorage;
-
 export default {
-  initPipedLocalStorage,
   initPipedMaterialLocalStorage,
+  setPipedLocalStorage,
+  setPipedMaterialLocalStorage,
   initInvidiousCookies,
+  setInvidiousCookies,
   getRedirects,
 
   redirect,
@@ -474,7 +609,7 @@ export default {
 
   isPipedorInvidious,
 
-  copyPipedLocalStorage,
+  initPipedLocalStorage,
 
   initDefaults,
   init,
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 06957367..d112e000 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -1,6 +1,8 @@
 "use strict";
 
+import generalHelper from "../../assets/javascripts/helpers/general.js";
 import youtubeHelper from "../../assets/javascripts/helpers/youtube/youtube.js";
+import youtubeMusicHelper from "../../assets/javascripts/helpers/youtubeMusic.js";
 import twitterHelper from "../../assets/javascripts/helpers/twitter.js";
 import instagramHelper from "../../assets/javascripts/helpers/instagram.js";
 import redditHelper from "../../assets/javascripts/helpers/reddit.js";
@@ -15,33 +17,42 @@ import sendTargetsHelper from "../../assets/javascripts/helpers/sendTargets.js";
 import peertubeHelper from "../../assets/javascripts/helpers/peertube.js";
 import lbryHelper from "../../assets/javascripts/helpers/lbry.js";
 
-import generalHelper from "../../assets/javascripts/helpers/general.js";
-import youtubeMusicHelper from "../../assets/javascripts/helpers/youtubeMusic.js";
-
 window.browser = window.browser || window.chrome;
 
-browser.runtime.onInstalled.addListener(async details => {
-  if (details.reason == 'install') {
-    fetch('/instances/blocklist.json').then(response => response.text()).then(async data => {
-      await browser.storage.local.set({ cloudflareList: JSON.parse(data) })
-      youtubeHelper.initDefaults();
-      youtubeMusicHelper.initDefaults();
-      twitterHelper.initDefaults();
-      instagramHelper.initDefaults();
-      mapsHelper.initDefaults();
-      searchHelper.initDefaults();
-      translateHelper.initDefaults();
-      mediumHelper.initDefaults();
-      redditHelper.initDefaults();
-      wikipediaHelper.initDefaults();
-      imgurHelper.initDefaults();
-      tiktokHelper.initDefaults();
-      sendTargetsHelper.initDefaults();
-      peertubeHelper.initDefaults();
-      lbryHelper.initDefaults();
-    })
+youtubeHelper.setInvidiousCookies();
+translateHelper.setSimplyTranslateCookies();
+twitterHelper.setNitterCookies();
+wikipediaHelper.setWikilessCookies();
+searchHelper.setSearxCookies();
+searchHelper.setSearxngCookies();
+redditHelper.setLibredditCookies();
+redditHelper.setTedditCookies();
+tiktokHelper.setProxiTokCookies();
+
+browser.runtime.onInstalled.addListener(
+  async details => {
+    if (details.reason == 'install') {
+      fetch('/instances/blocklist.json').then(response => response.text()).then(async data => {
+        await browser.storage.local.set({ cloudflareList: JSON.parse(data) })
+        youtubeHelper.initDefaults();
+        youtubeMusicHelper.initDefaults();
+        twitterHelper.initDefaults();
+        instagramHelper.initDefaults();
+        mapsHelper.initDefaults();
+        searchHelper.initDefaults();
+        translateHelper.initDefaults();
+        mediumHelper.initDefaults();
+        redditHelper.initDefaults();
+        wikipediaHelper.initDefaults();
+        imgurHelper.initDefaults();
+        tiktokHelper.initDefaults();
+        sendTargetsHelper.initDefaults();
+        peertubeHelper.initDefaults();
+        lbryHelper.initDefaults();
+      })
+    }
   }
-})
+)
 
 async function wholeInit() {
   await youtubeHelper.init();
@@ -71,11 +82,10 @@ browser.tabs.onCreated.addListener(
       });
       incognitoInit = true;
     }
-  });
-
+  }
+);
 
 let BYPASSTABs = [];
-
 browser.webRequest.onBeforeRequest.addListener(
   async details => {
     const url = new URL(details.url);
@@ -213,11 +223,9 @@ browser.tabs.onUpdated.addListener(
     let url;
     try { url = new URL(changeInfo.url); }
     catch (_) { return }
-    let result = await youtubeHelper.initPipedLocalStorage(url, tabId);
-    // if (youtubeHelper.isPipedorInvidious(url, 'main_frame', 'pipedMaterial')) youtubeHelper.initPipedMaterialLocalStorage(tabId);
-    // if (translateHelper.isTranslateRedirects(url, 'main_frame', 'lingva')) translateHelper.initLingvaLocalStorage(tabId);
-    // if (instagramHelper.isBibliogram(url)) instagramHelper.initBibliogramCookies(url);
-    // if (changeInfo.url && youtubeHelper.isPipedorInvidious(url, 'main_frame', 'pipedMaterial')) youtubeHelper.initPipedMaterialLocalStorage(tabId);
+    let result = await youtubeHelper.setPipedLocalStorage(url, tabId);
+    if (!result) result = await youtubeHelper.setPipedMaterialLocalStorage(url, tabId);
+    if (!result) result = await translateHelper.initLingvaLocalStorage(url, tabId);
   }
 );
 
@@ -265,14 +273,16 @@ browser.contextMenus.create({
   contexts: ["browser_action"]
 });
 
-browser.contextMenus.onClicked.addListener((info, tab) => {
-  if (info.menuItemId == 'switchInstance') {
-    let url;
-    try { url = new URL(tab.url); }
-    catch (_) { return }
-    let newUrl = changeWholeInstance(url);
-    if (newUrl) browser.tabs.update({ url: newUrl });
+browser.contextMenus.onClicked.addListener(
+  (info, tab) => {
+    if (info.menuItemId == 'switchInstance') {
+      let url;
+      try { url = new URL(tab.url); }
+      catch (_) { return }
+      let newUrl = changeWholeInstance(url);
+      if (newUrl) browser.tabs.update({ url: newUrl });
+    }
+    else if (info.menuItemId == 'settings')
+      browser.runtime.openOptionsPage()
   }
-  else if (info.menuItemId == 'settings')
-    browser.runtime.openOptionsPage()
-});
+);
diff --git a/src/pages/options/youtube/youtube.js b/src/pages/options/youtube/youtube.js
index 07d9ba1d..ce42abdc 100644
--- a/src/pages/options/youtube/youtube.js
+++ b/src/pages/options/youtube/youtube.js
@@ -146,7 +146,7 @@ invidiousForm.addEventListener('submit', async event => {
 // pipedForm.addEventListener('submit', async event => {
 //     event.preventDefault();
 //     const url = new URL(pipedCookies.value);
-//     youtubeHelper.initPipedLocalStorage(url);
+//     youtubeHelper.applyPipedLocalStorage(url);
 // });
 
 commonHelper.processDefaultCustomInstances('youtube', 'invidious', 'normal', document);
diff --git a/src/pages/popup/popup.html b/src/pages/popup/popup.html
index 0cd1a4f7..b4086ffd 100644
--- a/src/pages/popup/popup.html
+++ b/src/pages/popup/popup.html
@@ -56,14 +56,14 @@
         <h4>LBRY</h4></a>
       <input id="disable-lbry" type="checkbox">
     </div>
-    <div class="some-block" id="search"><a class="title" href="https://search.com">
+    <div class="some-block" id="search"><a class="title" href="https://libredirect.invalid">
         <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
           <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
         </svg>
         <h4>Search</h4></a>
       <input id="disable-search" type="checkbox">
     </div>
-    <div class="some-block" id="translate"><a class="title" href="https://translate.com">
+    <div class="some-block" id="translate"><a class="title" href="https://translate.google.com">
         <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
           <path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path>
         </svg>
@@ -107,6 +107,5 @@
         <h4>Unify Settings</h4></a></div>
     <script type="module" src="../options/init.js"></script>
     <script type="module" src="./popup.js"></script>
-    <script src="../../assets/javascripts/localise.js"></script>
   </body>
 </html>
\ No newline at end of file
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index 61e0ee1b..c6399aeb 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -110,14 +110,23 @@ function unify() {
         let url = new URL(currTab.url);
 
         let result = await youtubeHelper.initInvidiousCookies(url);
-        if (!result) result = await youtubeHelper.copyPipedLocalStorage(url, currTab.id);
+        if (!result) result = await youtubeHelper.initPipedLocalStorage(url, currTab.id);
+        if (!result) result = await youtubeHelper.initPipedMaterialLocalStorage(url, currTab.id);
+
         if (!result) result = await twitterHelper.initNitterCookies(url);
+
         if (!result) result = await redditHelper.initLibredditCookies(url);
         if (!result) result = await redditHelper.initTedditCookies(url);
-        if (!result) result = await redditHelper.initSearxCookies(url);
-        if (!result) result = await redditHelper.initSearxngCookies(url);
+
+        if (!result) result = await searchHelper.initSearxCookies(url);
+        if (!result) result = await searchHelper.initSearxngCookies(url);
+
         if (!result) result = await tiktokHelper.initProxiTokCookies(url);
-        if (!result) result = await tiktokHelper.initWikilessCookies(url);
+
+        if (!result) result = await wikipediaHelper.initWikilessCookies(url);
+
+        if (!result) result = await translateHelper.initSimplyTranslateCookies(url);
+        if (!result) result = await translateHelper.initLingvaLocalStorage(url);
 
         if (result) {
           const textElement = unifyElement.getElementsByTagName('h4')[0]
diff --git a/src/pages/popup/popup.pug b/src/pages/popup/popup.pug
index f2cc4635..31354a4b 100644
--- a/src/pages/popup/popup.pug
+++ b/src/pages/popup/popup.pug
@@ -75,13 +75,13 @@ html(lang="en")
             input#disable-lbry(type="checkbox")
 
         #search.some-block
-            a.title(href="https://search.com")
+            a.title(href="https://libredirect.invalid")
                 +search
                 h4 Search
             input#disable-search(type="checkbox")
 
         #translate.some-block
-            a.title(href="https://translate.com")
+            a.title(href="https://translate.google.com")
                 +translate
                 h4 Translate
             input#disable-simplyTranslate(type="checkbox")
@@ -120,4 +120,4 @@ html(lang="en")
 
         script(type="module" src="../options/init.js")
         script(type="module" src="./popup.js")
-        script(src="../../assets/javascripts/localise.js")
\ No newline at end of file
+        //- script(src="../../assets/javascripts/localise.js")
\ No newline at end of file