about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-02-04 18:48:24 +0300
committerManeraKai <manerakai@protonmail.com>2022-02-04 18:48:24 +0300
commita9f95b3d1de44edf205508233a3526246842bbf3 (patch)
treea273532e131ae36cee2a200c953d015c3fa36bff /src
parentAdded Piped, cleaned code (diff)
downloadlibredirect-a9f95b3d1de44edf205508233a3526246842bbf3.zip
Cleaning and refining settings
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/helpers/common.js2
-rw-r--r--src/assets/javascripts/helpers/instagram.js11
-rw-r--r--src/assets/javascripts/helpers/medium.js4
-rw-r--r--src/assets/javascripts/helpers/reddit.js8
-rw-r--r--src/assets/javascripts/helpers/rimgo.js14
-rw-r--r--src/assets/javascripts/helpers/search.js53
-rw-r--r--src/assets/javascripts/helpers/translate.js5
-rw-r--r--src/assets/javascripts/helpers/twitter.js54
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js8
-rw-r--r--src/assets/javascripts/helpers/youtube/invidious-cookies.js38
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js (renamed from src/assets/javascripts/helpers/youtube.js)119
-rw-r--r--src/manifest.json2
-rw-r--r--src/pages/background/background.js9
-rw-r--r--src/pages/options/general/general.html (renamed from src/pages/options/general.html)26
-rw-r--r--src/pages/options/general/general.js (renamed from src/pages/options/general.js)6
-rw-r--r--src/pages/options/instagram/instagram.html (renamed from src/pages/options/instagram.html)24
-rw-r--r--src/pages/options/instagram/instagram.js (renamed from src/pages/options/instagram.js)11
-rw-r--r--src/pages/options/maps/maps.html (renamed from src/pages/options/maps.html)24
-rw-r--r--src/pages/options/maps/maps.js (renamed from src/pages/options/maps.js)11
-rw-r--r--src/pages/options/medium/medium.html (renamed from src/pages/options/medium.html)24
-rw-r--r--src/pages/options/medium/medium.js (renamed from src/pages/options/medium.js)11
-rw-r--r--src/pages/options/reddit/reddit.html (renamed from src/pages/options/reddit.html)24
-rw-r--r--src/pages/options/reddit/reddit.js (renamed from src/pages/options/reddit.js)17
-rw-r--r--src/pages/options/search/search.html (renamed from src/pages/options/search.html)26
-rw-r--r--src/pages/options/search/search.js (renamed from src/pages/options/search.js)15
-rw-r--r--src/pages/options/shared.js1
-rw-r--r--src/pages/options/translate/translate.html (renamed from src/pages/options/translate.html)24
-rw-r--r--src/pages/options/translate/translate.js (renamed from src/pages/options/translate.js)16
-rw-r--r--src/pages/options/twitter/twitter.html (renamed from src/pages/options/twitter.html)24
-rw-r--r--src/pages/options/twitter/twitter.js (renamed from src/pages/options/twitter.js)15
-rw-r--r--src/pages/options/wikipedia/wikipedia.html (renamed from src/pages/options/wikipedia.html)26
-rw-r--r--src/pages/options/wikipedia/wikipedia.js (renamed from src/pages/options/wikipedia.js)11
-rw-r--r--src/pages/options/youtube/youtube.html (renamed from src/pages/options/youtube.html)30
-rw-r--r--src/pages/options/youtube/youtube.js (renamed from src/pages/options/youtube.js)91
-rw-r--r--src/pages/popup/popup.js2
35 files changed, 430 insertions, 356 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index 22ee252d..d7b65881 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -1,5 +1,5 @@
 import twitterHelper from "./twitter.js";
-import youtubeHelper from "./youtube.js";
+import youtubeHelper from "./youtube/youtube.js";
 import instagramHelper from "./instagram.js";
 import mediumHelper from "./medium.js";
 import redditHelper from "./reddit.js";
diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js
index 71dfdc5b..666b9f71 100644
--- a/src/assets/javascripts/helpers/instagram.js
+++ b/src/assets/javascripts/helpers/instagram.js
@@ -11,12 +11,13 @@ let redirects = {
     "https://bibliogram.art",
     "https://bibliogram.snopyta.org",
     "https://bibliogram.pussthecat.org",
-    "https://bibliogram.nixnet.services",
-    "https://bibliogram.ethibox.fr",
-    "https://bibliogram.hamster.dance",
+    "https://bibliogram.1d4.us",
     "https://insta.trom.tf",
-    "https://bib.actionsack.com"
-  ],
+    "https://bib.riverside.rocks",
+    "https://bibliogram.esmailelbob.xyz",
+    "https://bib.actionsack.com",
+    "https://biblio.alefvanoon.xyz"
+  ]
 };
 const getRedirects = () => redirects;
 function setRedirects(val) {
diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js
index cca83250..ce91e99c 100644
--- a/src/assets/javascripts/helpers/medium.js
+++ b/src/assets/javascripts/helpers/medium.js
@@ -19,7 +19,9 @@ const targets = [
 let redirects = {
   "normal": [
     "https://scribe.rip",
-    "https://scribe.nixnet.services"
+    "https://scribe.nixnet.services",
+    "https://scribe.citizen4.eu",
+    "https://scribe.bus-hit.me"
   ]
 };
 const getRedirects = () => redirects;
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index 005636b8..880d1576 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -45,6 +45,14 @@ let redirects = {
       "https://teddit.adminforge.de",
       "https://teddit.bus-hit.me"
     ],
+    "onion": [
+      "http://teddit4w6cmzmj5kimhfcavs7yo5s7alszvsi2khqutqtlaanpcftfyd.onion",
+      "http://snoo.ioensistjs7wd746zluwixvojbbkxhr37lepdvwtdfeav673o64iflqd.onion",
+      "http://ibarajztopxnuhabfu7fg6gbudynxofbnmvis3ltj6lfx47b6fhrd5qd.onion",
+      "http://tedditfyn6idalzso5wam5qd3kdtxoljjhbrbbx34q2xkcisvshuytad.onion",
+      "http://dawtyi5e2cfyfmoht4izmczi42aa2zwh6wi34zwvc6rzf2acpxhrcrad.onion",
+      "http://qtpvyiaqhmwccxwzsqubd23xhmmrt75tdyw35kp43w4hvamsgl3x27ad.onion"
+    ]
   },
   "desktop": "https://old.reddit.com", // desktop
   "mobile": "https://i.reddit.com", // mobile
diff --git a/src/assets/javascripts/helpers/rimgo.js b/src/assets/javascripts/helpers/rimgo.js
new file mode 100644
index 00000000..829dd230
--- /dev/null
+++ b/src/assets/javascripts/helpers/rimgo.js
@@ -0,0 +1,14 @@
+let redirects = {
+    "normal": [
+        "https://i.bcow.xyz",
+        "https://rimgo.bcow.xyz",
+        "https://rimgo.pussthecat.org",
+        "https://img.riverside.rocks",
+        "https://rimgo.totaldarkness.net",
+        "https://rimgo.bus-hit.me"
+    ],
+    "onion": [
+        "http://l4d4owboqr6xcmd6lf64gbegel62kbudu3x3jnldz2mx6mhn3bsv3zyd.onion",
+        "http://jx3dpcwedpzu2mh54obk5gvl64i2ln7pt5mrzd75s4jnndkqwzaim7ad.onion"
+    ]
+}
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js
index 3470abb2..84b63f9a 100644
--- a/src/assets/javascripts/helpers/search.js
+++ b/src/assets/javascripts/helpers/search.js
@@ -6,12 +6,12 @@ const targets = [
   /https?:\/\/(((www|maps)\.)?(google\.).*(\/search)|search\.(google\.).*)/
 ];
 let redirects = {
-  "searx": {
+    "searx": {
     "normal": [
       "https://a.searx.space",
       "https://anon.sx",
       "https://beezboo.com",
-      "https://darmarit.org",
+      "https://darmarit.org/searx",
       "https://dynabyte.ca",
       "https://engo.mint.lgbt",
       "https://jsearch.pw",
@@ -37,6 +37,7 @@ let redirects = {
       "https://search.jigsaw-security.com",
       "https://search.jpope.org",
       "https://search.mdosch.de",
+      "https://search.neet.works",
       "https://search.ononoki.org",
       "https://search.snopyta.org",
       "https://search.st8.at",
@@ -50,7 +51,6 @@ let redirects = {
       "https://searx.dresden.network",
       "https://searx.esmailelbob.xyz",
       "https://searx.everdot.org",
-      "https://searx.feneas.org",
       "https://searx.fmac.xyz",
       "https://searx.fossencdi.org",
       "https://searx.gnous.eu",
@@ -106,50 +106,49 @@ let redirects = {
       "https://swag.pw",
       "https://sx.catgirl.cloud",
       "https://sx.fedi.tech",
-      "https://timdor.noip.me",
+      "https://timdor.noip.me/searx",
       "https://trovu.komun.org",
       "https://www.gruble.de",
-      "https://www.perfectpixel.de",
+      "https://www.perfectpixel.de/searx",
       "https://www.searxs.eu",
       "https://www.webrats.xyz",
       "https://xeek.com",
-      "searx.roflcopter.fr"
+      "https://searx.roflcopter.fr"
     ],
     "onion": [
-      "https://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion",
-      "https://searxbgetrkiwxhdwi6svpgh7eotopqyxhbqiokrwzg7dcte44t36kyd.onion",
-      "https://suche.xyzco456vwisukfg.onion",
-      "https://w5rl6wsd7mzj4bdkbuqvzidet5osdsm5jhg2f7nvfidakfq5exda5wid.onion",
-      "https://4n53nafyi77iplnbrpmxnp3x4exbswwxigujaxy3b37fvr7bvlopxeyd.onion",
-      "https://z34ambyi6makk6ta7ksog2sljly2ctt2sa3apekb7wkllk72sxecdtad.onion",
-      "https://search.4bkxscubgtxwvhpe.onion",
-      "https://juy4e6eicawzdrz7.onion",
-      "https://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion",
-      "https://zbuc3bbzbfdqqo2x46repx2ddajbha6fpsjeeptjhhhhzji3zopxdqyd.onion",
-      "https://f4qfqajszpx5b7itzxt6mb7kj4ktpgbdq7lq6xaiqyqx6a7de3epptad.onion",
-      "https://searx.cwuzdtzlubq5uual.onion",
-      "https://rq2w52kyrif3xpfihkgjnhqm3a5aqhoikpv72z3drpjglfzc2wr5z4yd.onion",
-      "https://searx3aolosaf3urwnhpynlhuokqsgz47si4pzz5hvb7uuzyjncl2tid.onion",
-      "https://searx.bsbvtqi5oq2cqzn32zt4cr2f2z2rwots3dq7gmdcnlyqoxko2wx6reqd.onion",
+      "http://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion",
+      "http://searxbgetrkiwxhdwi6svpgh7eotopqyxhbqiokrwzg7dcte44t36kyd.onion",
+      "http://suche.xyzco456vwisukfg.onion",
+      "http://w5rl6wsd7mzj4bdkbuqvzidet5osdsm5jhg2f7nvfidakfq5exda5wid.onion",
+      "http://4n53nafyi77iplnbrpmxnp3x4exbswwxigujaxy3b37fvr7bvlopxeyd.onion",
+      "http://z34ambyi6makk6ta7ksog2sljly2ctt2sa3apekb7wkllk72sxecdtad.onion",
+      "http://search.4bkxscubgtxwvhpe.onion",
+      "http://juy4e6eicawzdrz7.onion",
+      "http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion",
+      "http://zbuc3bbzbfdqqo2x46repx2ddajbha6fpsjeeptjhhhhzji3zopxdqyd.onion",
+      "http://f4qfqajszpx5b7itzxt6mb7kj4ktpgbdq7lq6xaiqyqx6a7de3epptad.onion",
+      "http://searx.cwuzdtzlubq5uual.onion",
+      "http://rq2w52kyrif3xpfihkgjnhqm3a5aqhoikpv72z3drpjglfzc2wr5z4yd.onion",
+      "http://searx3aolosaf3urwnhpynlhuokqsgz47si4pzz5hvb7uuzyjncl2tid.onion",
+      "http://searx.bsbvtqi5oq2cqzn32zt4cr2f2z2rwots3dq7gmdcnlyqoxko2wx6reqd.onion"
     ],
     "i2p": [
-      "https://ransack.i2p",
-      "https://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p",
+      "http://ransack.i2p",
+      "http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p"
     ]
   },
-  "whoogle": {
+ "whoogle": {
     "normal": [
       "https://s.alefvanoon.xyz",
       "https://search.albony.xyz",
-      "https://search.exonip.de",
       "https://search.garudalinux.org",
       "https://search.sethforprivacy.com",
       "https://whoogle.fossho.st",
       "https://whooglesearch.net",
       "https://www.whooglesearch.ml",
-      "https://whoogle.dcs0.hu",
+      "https://whoogle.dcs0.hu"
     ]
-  }
+  },
 };
 const getRedirects = () => redirects;
 
diff --git a/src/assets/javascripts/helpers/translate.js b/src/assets/javascripts/helpers/translate.js
index d128bc53..198603e9 100644
--- a/src/assets/javascripts/helpers/translate.js
+++ b/src/assets/javascripts/helpers/translate.js
@@ -16,6 +16,11 @@ let redirects = {
       "https://manerakai.asuscomm.com:447",
       "https://translate.bus-hit.me",
       "https://simplytranslate.pussthecat.org",
+      "https://translate.northboot.xyz"
+    ],
+    "onion": [
+      "http://fyng2tsmzmvxmojzbbwmfnsn2lrcyftf4cw6rk5j2v2huliazud3fjid.onion",
+      "http://xxtbwyb5z5bdvy2f6l2yquu5qilgkjeewno4qfknvb3lkg3nmoklitid.onion"
     ]
   },
 
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index ee5ea287..24d2725e 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -20,27 +20,63 @@ const targets = [
 let redirects = {
   "normal": [
     "https://nitter.net",
-    "https://nitter.snopyta.org",
     "https://nitter.42l.fr",
-    "https://nitter.nixnet.services",
     "https://nitter.pussthecat.org",
-    "https://nitter.dark.fail",
-    "https://nitter.tedomum.net",
-    "https://nitter.cattube.org",
+    "https://nitter.nixnet.services",
     "https://nitter.fdn.fr",
     "https://nitter.1d4.us",
     "https://nitter.kavin.rocks",
-    "https://tweet.lambda.dance",
-    "https://nitter.cc",
-    "https://nitter.vxempire.xyz",
     "https://nitter.unixfox.eu",
+    "https://nitter.domain.glass",
+    "https://nitter.eu",
+    "https://nitter.namazso.eu",
+    "https://nitter.actionsack.com",
+    "https://birdsite.xanny.family",
+    "https://nitter.hu",
+    "https://twitr.gq",
+    "https://nitter.moomoo.me",
+    "https://nittereu.moomoo.me",
     "https://bird.trom.tf",
+    "https://nitter.it",
+    "https://twitter.censors.us",
+    "https://nitter.grimneko.de",
+    "https://nitter.alefvanoon.xyz",
+    "https://n.hyperborea.cloud",
+    "https://nitter.ca",
+    "https://twitter.076.ne.jp",
+    "https://nitter.mstdn.social",
+    "https://nitter.fly.dev",
+    "https://notabird.site",
+    "https://nitter.weiler.rocks",
+    "https://nitter.silkky.cloud",
+    "https://nitter.sethforprivacy.com",
+    "https://nttr.stream",
+    "https://nitter.cutelab.space",
+    "https://nitter.nl",
+    "https://nitter.mint.lgbt",
+    "https://nitter.tokhmi.xyz",
+    "https://nitter.bus-hit.me",
+    "https://fuckthesacklers.network",
+    "https://nitter.govt.land",
+    "https://nitter.datatunnel.xyz",
+    "https://nitter.esmailelbob.xyz"
   ],
   "onion": [
     "http://3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad.onion",
     "http://nitter.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion",
-    "http://nitterlgj3n5fgwesu3vxc5h67ruku33nqaoeoocae2mvlzhsu6k7fqd.onion",
+    "http://nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd.onion",
     "http://npf37k3mtzwxreiw52ccs5ay4e6qt2fkcs2ndieurdyn2cuzzsfyfvid.onion",
+    "http://nitter.v6vgyqpa7yefkorazmg5d5fimstmvm2vtbirt6676mt7qmllrcnwycqd.onion",
+    "http://i23nv6w3juvzlw32xzoxcqzktegd4i4fu3nmnc2ewv4ggiu4ledwklad.onion",
+    "http://26oq3gioiwcmfojub37nz5gzbkdiqp7fue5kvye7d4txv4ny6fb4wwid.onion",
+    "http://vfaomgh4jxphpbdfizkm5gbtjahmei234giqj4facbwhrfjtcldauqad.onion",
+    "http://iwgu3cv7ywf3gssed5iqtavmrlszgsxazkmwwnt4h2kdait75thdyrqd.onion",
+    "http://erpnncl5nhyji3c32dcfmztujtl3xaddqb457jsbkulq24zqq7ifdgad.onion",
+    "http://ckzuw5misyahmg7j5t5xwwuj3bwy62jfolxyux4brfflramzsvvd3syd.onion",
+    "http://jebqj47jgxleaiosfcxfibx2xdahjettuydlxbg64azd4khsxv6kawid.onion",
+    "http://nttr2iupbb6fazdpr2rgbooon2tzbbsvvkagkgkwohhodjzj43stxhad.onion",
+    "http://nitraeju2mipeziu2wtcrqsxg7h62v5y4eqgwi75uprynkj74gevvuqd.onion",
+    "http://nitter.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onion"
   ]
 };
 const getRedirects = () => redirects;
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
index d3c9ffb5..e730c8b8 100644
--- a/src/assets/javascripts/helpers/wikipedia.js
+++ b/src/assets/javascripts/helpers/wikipedia.js
@@ -4,7 +4,13 @@ const targets = /wikipedia.org/;
 
 let redirects = {
   "normal": [
-    "https://wikiless.org"
+    "https://wikiless.org",
+    "https://wikiless.alefvanoon.xyz",
+    "https://wikiless.sethforprivacy.com",
+    "https://wiki.604kph.xyz"
+  ],
+  "onion": [
+    "http://dj2tbh2nqfxyfmvq33cjmhuw7nb6am7thzd3zsjvizeqf374fixbrxyd.onion"
   ]
 };
 const getRedirects = () => redirects;
diff --git a/src/assets/javascripts/helpers/youtube/invidious-cookies.js b/src/assets/javascripts/helpers/youtube/invidious-cookies.js
new file mode 100644
index 00000000..6b77a278
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtube/invidious-cookies.js
@@ -0,0 +1,38 @@
+
+function getCookie() {
+    let ca = document.cookie.split(";");
+    for (let i = 0; i < ca.length; i++) {
+        let c = ca[i];
+        while (c.charAt(0) == " ") c = c.substring(1, c.length);
+        if (c.indexOf("PREFS=") == 0)
+            return JSON.parse(
+                decodeURIComponent(c.substring("PREFS=".length, c.length))
+            );
+    }
+    return {};
+}
+
+browser.storage.sync.get(
+    [
+        "invidiousAlwaysProxy",
+        "invidiousVideoQuality",
+        "invidiousDarkMode",
+        "invidiousOnlyEmbeddedVideo",
+        "invidiousVolume",
+        "invidiousPlayerStyle",
+        "invidiousSubtitles",
+        "invidiousAutoplay",
+    ], (result) => {
+        const prefs = getCookie();
+
+        prefs.local = result.invidiousAlwaysProxy;
+        prefs.quality = result.invidiousVideoQuality;
+        prefs.dark_mode = result.invidiousDarkMode;
+        prefs.volume = result.invidiousVolume;
+        prefs.player_style = result.invidiousPlayerStyle;
+        prefs.subtitles = result.invidiousSubtitles;
+        prefs.autoplay = result.invidiousAutoplay;
+
+        document.cookie = `PREFS=${encodeURIComponent(JSON.stringify(prefs))}`;
+    }
+)
diff --git a/src/assets/javascripts/helpers/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index 30f7a4b5..547e2614 100644
--- a/src/assets/javascripts/helpers/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -1,6 +1,6 @@
 "use strict";
 
-import commonHelper from './common.js'
+import commonHelper from '../common.js'
 
 window.browser = window.browser || window.chrome;
 
@@ -15,39 +15,30 @@ const targets = [
   "s.ytimg.com",
   "music.youtube.com",
 ];
-/*
-    Please remember to also update the manifest.json file
-    (content_scripts > matches, 'persist-invidious-prefs.js')
-    when updating this list:
-  */
 let redirects = {
   "invidious": {
     "normal": [
-      "https://invidious.snopyta.org",
-      "https://invidious.xyz",
-      "https://invidious.kavin.rocks",
-      "https://tube.connect.cafe",
-      "https://invidious.zapashcanon.fr",
-      "https://invidiou.site",
-      "https://vid.mint.lgbt",
-      "https://invidious.site",
       "https://yewtu.be",
-      "https://invidious.tube",
-      "https://invidious.silkky.cloud",
-      "https://invidious.himiko.cloud",
-      "https://inv.skyn3t.in",
-      "https://tube.incognet.io",
-      "https://invidious.tinfoil-hat.net",
-      "https://invidious.namazso.eu",
+      "https://invidious.snopyta.org",
       "https://vid.puffyan.us",
-      "https://dev.viewtube.io",
-      "https://invidious.048596.xyz",
+      "https://invidious.kavin.rocks",
+      "https://invidio.xamh.de",
+      "https://inv.riverside.rocks",
+      "https://invidious-us.kavin.rocks",
+      "https://invidious.osi.kr",
+      "https://inv.cthd.icu",
+      "https://yt.artemislena.eu",
+      "https://youtube.076.ne.jp",
+      "https://invidious.namazso.eu"
     ],
     "onion": [
-      "http://fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad.onion",
-      "http://qklhadlycap4cnod.onion",
       "http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion",
       "http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion",
+      "http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion",
+      "http://grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion",
+      "http://hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid.onion",
+      "http://osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd.onion",
+      "http://u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad.onion"
     ]
   },
   "piped": {
@@ -176,7 +167,6 @@ function setPersistInvidiousPrefs(val) {
   persistInvidiousPrefs = val;
   browser.storage.sync.set({ persistInvidiousPrefs })
   console.log("persistInvidiousPrefs: ", persistInvidiousPrefs)
-  if (persistInvidiousPrefs) initInvidiousCookie()
 }
 const getPersistInvidiousPrefs = () => persistInvidiousPrefs;
 
@@ -184,27 +174,6 @@ function isYoutube(url) {
   return targets.includes(url.host);
 }
 
-function getCookie() {
-  let ca = document.cookie.split(";");
-  for (let i = 0; i < ca.length; i++) {
-    let c = ca[i];
-    while (c.charAt(0) == " ") c = c.substring(1, c.length);
-    if (c.indexOf("PREFS=") == 0)
-      return JSON.parse(
-        decodeURIComponent(c.substring("PREFS=".length, c.length))
-      );
-  }
-  return {};
-}
-
-function initInvidiousCookie() {
-  const prefs = getCookie();
-  prefs.local = invidiousAlwaysProxy;
-  prefs.quality = invidiousVideoQuality;
-  prefs.dark_mode = invidiousDarkMode;
-  document.cookie = `PREFS=${encodeURIComponent(JSON.stringify(prefs))}`;
-}
-
 async function init() {
   let result = await browser.storage.sync.get(
     [
@@ -214,10 +183,7 @@ async function init() {
       "persistInvidiousPrefs",
       "disableYoutube",
       "invidiousInstance",
-      "invidiousAlwaysProxy",
       "invidiousOnlyEmbeddedVideo",
-      "invidiousVideoQuality",
-      "invidiousDarkMode",
       "invidiousVolume",
       "invidiousPlayerStyle",
       "invidiousSubtitles",
@@ -226,8 +192,12 @@ async function init() {
       "youtubeRedirects",
       "youtubeFrontend",
     ]);
+  if (result.youtubeRedirects) redirects = result.youtubeRedirects
+  frontend = result.youtubeFrontend ?? 'piped';
   disableYoutube = result.disableYoutube ?? false;
+
   invidiousInstance = result.invidiousInstance;
+
   invidiousAlwaysProxy = result.invidiousAlwaysProxy ?? true;
   invidiousOnlyEmbeddedVideo = result.invidiousOnlyEmbeddedVideo ?? false;
   invidiousVideoQuality = result.invidiousVideoQuality ?? 'medium';
@@ -236,14 +206,18 @@ async function init() {
   invidiousPlayerStyle = result.invidiousPlayerStyle ?? 'invidious';
   invidiousSubtitles = result.invidiousSubtitles || '';
   invidiousAutoplay = result.invidiousAutoplay ?? true;
-  useFreeTube = result.useFreeTube ?? false;
 
-  if (result.youtubeRedirects)
-    redirects = result.youtubeRedirects
+  persistInvidiousPrefs = result.persistInvidiousPrefs ?? false;
 
-  if (result.persistInvidiousPrefs) initInvidiousCookie();
+  useFreeTube = result.useFreeTube ?? false;
+}
 
-  frontend = result.youtubeFrontend ?? 'piped';
+function invidiousInitCookies(tabId) {
+  browser.tabs.executeScript(
+    tabId, {
+    file: "/assets/javascripts/helpers/youtube/invidious-cookies.js",
+    runAt: "document_start"
+  });
 }
 
 function redirect(url, initiator, type) {
@@ -261,31 +235,26 @@ function redirect(url, initiator, type) {
   )
     return null;
 
-  if (frontend == 'invidious') {
+  if (frontend == 'freeTube' && type === "main_frame")
+    return `freetube://${url}`;
+  else if (frontend == 'invidious') {
 
     if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return null; // Don't redirect YouTube Player API.
 
-    if (url.host.split(".")[0] === "studio") return null; // Avoid redirecting `studio.youtube.com`
+    if (url.host.split(".")[0] === "studio") {
+      console.log("no because studio");
+      return null;
+    }; // Avoid redirecting `studio.youtube.com`
 
     if (invidiousOnlyEmbeddedVideo && type !== "sub_frame") return null;
 
-    if (useFreeTube && type === "main_frame")
-      return `freetube://${url}`;
-
-    // Apply settings
-    if (invidiousAlwaysProxy) url.searchParams.append("local", true);
-
-    if (invidiousVideoQuality) url.searchParams.append("quality", invidiousVideoQuality);
-
-    if (invidiousDarkMode) url.searchParams.append("dark_mode", invidiousDarkMode);
-
-    if (invidiousVolume) url.searchParams.append("volume", invidiousVolume);
-
-    if (invidiousPlayerStyle) url.searchParams.append("player_style", invidiousPlayerStyle);
-
-    if (invidiousSubtitles) url.searchParams.append("subtitles", invidiousSubtitles);
-
-    if (invidiousAutoplay) url.searchParams.append("autoplay", 1);
+    url.searchParams.append("local", invidiousAlwaysProxy);
+    url.searchParams.append("quality", invidiousVideoQuality);
+    url.searchParams.append("dark_mode", invidiousDarkMode);
+    url.searchParams.append("volume", invidiousVolume);
+    url.searchParams.append("player_style", invidiousPlayerStyle);
+    url.searchParams.append("subtitles", invidiousSubtitles);
+    url.searchParams.append("autoplay", invidiousAutoplay);
 
     let randomInstance = commonHelper.getRandomInstance(redirects.invidious.normal)
 
@@ -304,6 +273,8 @@ function redirect(url, initiator, type) {
 
 
 export default {
+  invidiousInitCookies,
+
   getFrontend,
   setFrontend,
 
diff --git a/src/manifest.json b/src/manifest.json
index ff2cad69..161162e9 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -42,7 +42,7 @@
     }
   },
   "options_ui": {
-    "page": "pages/options/general.html",
+    "page": "pages/options/general/general.html",
     "browser_style": false,
     "open_in_tab": true
   },
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index caa7444d..30d7ae32 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -1,6 +1,6 @@
 "use strict";
 
-import youtubeHelper from "../../assets/javascripts/helpers/youtube.js";
+import youtubeHelper from "../../assets/javascripts/helpers/youtube/youtube.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";
@@ -75,6 +75,13 @@ browser.tabs.onUpdated.addListener((tabId, changeInfo, _) => {
     return;
   }
   var protocolHost = `${url.protocol}//${url.host}`;
+
+
+  if (youtubeHelper.getRedirects().invidious.normal.includes(protocolHost)) {
+    if (youtubeHelper.getPersistInvidiousPrefs())
+      youtubeHelper.invidiousInitCookies(tabId);
+  }
+
   var mightyList = [];
   mightyList.push(
     ...youtubeHelper.getRedirects().invidious.normal,
diff --git a/src/pages/options/general.html b/src/pages/options/general/general.html
index 507e65c3..8c46c40b 100644
--- a/src/pages/options/general.html
+++ b/src/pages/options/general/general.html
@@ -4,23 +4,23 @@
 <head>
   <meta charset="utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1" />
-  <link href="../stylesheets/styles.css" rel="stylesheet" />
+  <link href="../../stylesheets/styles.css" rel="stylesheet" />
   <title>LibRedirect Options</title>
 </head>
 
 <body class="option">
 
   <section class="links">
-    <a href="general.html" class="selected">General</a>
-    <a href="youtube.html">Youtube</a>
-    <a href="twitter.html">Twitter</a>
-    <a href="instagram.html">Instagram</a>
-    <a href="reddit.html">Reddit</a>
-    <a href="search.html">Search</a>
-    <a href="translate.html">Translate</a>
-    <a href="maps.html">Maps</a>
-    <a href="wikipedia.html" >Wikipedia</a>
-    <a href="medium.html">Medium</a>
+    <a href="./general.html" class="selected">General</a>
+    <a href="../youtube/youtube.html">Youtube</a>
+    <a href="../twitter/twitter.html">Twitter</a>
+    <a href="../instagram/instagram.html">Instagram</a>
+    <a href="../reddit/reddit.html">Reddit</a>
+    <a href="../search/search.html">Search</a>
+    <a href="../translate/translate.html">Translate</a>
+    <a href="../maps/maps.html">Maps</a>
+    <a href="../wikipedia/wikipedia.html">Wikipedia</a>
+    <a href="../medium/medium.html">Medium</a>
   </section>
 
 
@@ -99,8 +99,8 @@
 
 
   <script type="module" src="./general.js"></script>
-  <script type="module" src="./init.js"></script>
-  <script src="../../assets/javascripts/localise.js"></script>
+  <script type="module" src="../init.js"></script>
+  <!-- <script src="../../assets/javascripts/localise.js"></script> -->
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/pages/options/general.js b/src/pages/options/general/general.js
index 1104ba16..4f111469 100644
--- a/src/pages/options/general.js
+++ b/src/pages/options/general/general.js
@@ -1,9 +1,9 @@
 "use strict";
 
-import data from "../../assets/javascripts/data.js";
-import commonHelper from "../../assets/javascripts/helpers/common.js";
+import data from "../../../assets/javascripts/data.js";
+import commonHelper from "../../../assets/javascripts/helpers/common.js";
 
-import shared from "./shared.js";
+import shared from "../shared.js";
 
 const domparser = new DOMParser();
 
diff --git a/src/pages/options/instagram.html b/src/pages/options/instagram/instagram.html
index 25cfc8f2..dfbbd7f7 100644
--- a/src/pages/options/instagram.html
+++ b/src/pages/options/instagram/instagram.html
@@ -5,22 +5,22 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="../stylesheets/styles.css" rel="stylesheet" />
+    <link href="../../stylesheets/styles.css" rel="stylesheet" />
 </head>
 
 <body class="option">
 
     <section class="links">
-        <a href="general.html">General</a>
-        <a href="youtube.html">Youtube</a>
-        <a href="twitter.html">Twitter</a>
+        <a href="../general/general.html">General</a>
+        <a href="../youtube/youtube.html">Youtube</a>
+        <a href="../twitter/twitter.html">Twitter</a>
         <a href="instagram.html" class="selected">Instagram</a>
-        <a href="reddit.html">Reddit</a>
-        <a href="search.html">Search</a>
-        <a href="translate.html">Translate</a>
-        <a href="maps.html">Maps</a>
-        <a href="wikipedia.html">Wikipedia</a>
-        <a href="medium.html">Medium</a>
+        <a href="../reddit/reddit.html">Reddit</a>
+        <a href="../search/search.html">Search</a>
+        <a href="../translate/translate.html">Translate</a>
+        <a href="../maps/maps.html">Maps</a>
+        <a href="../wikipedia/wikipedia.html">Wikipedia</a>
+        <a href="../medium/medium.html">Medium</a>
     </section>
 
     <section class="option-block">
@@ -46,9 +46,9 @@
 
 
     </section>
-    <script type="module" src="./init.js"></script>
+    <script type="module" src="../init.js"></script>
     <script type="module" src="./instagram.js"></script>
-    <script src="../../assets/javascripts/localise.js"></script>
+    <!-- <script src="../../assets/javascripts/localise.js"></script> -->
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/pages/options/instagram.js b/src/pages/options/instagram/instagram.js
index b4e57def..c5aad9c2 100644
--- a/src/pages/options/instagram.js
+++ b/src/pages/options/instagram/instagram.js
@@ -1,11 +1,10 @@
-import instagramHelper from "../../assets/javascripts/helpers/instagram.js";
+import instagramHelper from "../../../assets/javascripts/helpers/instagram.js";
 
 let disableInstagramElement = document.getElementById("disable-bibliogram");
+disableInstagramElement.addEventListener("change",
+    (event) => instagramHelper.setDisableInstagram(!event.target.checked)
+);
 
 instagramHelper.init().then(() => {
     disableInstagramElement.checked = !instagramHelper.getDisableInstagram();
-})
-
-disableInstagramElement.addEventListener("change",
-    (event) => instagramHelper.setDisableInstagram(!event.target.checked)
-);
\ No newline at end of file
+})
\ No newline at end of file
diff --git a/src/pages/options/maps.html b/src/pages/options/maps/maps.html
index bfcedbaf..7702d019 100644
--- a/src/pages/options/maps.html
+++ b/src/pages/options/maps/maps.html
@@ -5,23 +5,23 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="../stylesheets/styles.css" rel="stylesheet" />
+    <link href="../../stylesheets/styles.css" rel="stylesheet" />
     <title>LibRedirect Options: Twitter</title>
 </head>
 
 <body class="option">
 
     <section class="links">
-        <a href="general.html">General</a>
-        <a href="youtube.html">Youtube</a>
-        <a href="twitter.html">Twitter</a>
-        <a href="instagram.html">Instagram</a>
-        <a href="reddit.html">Reddit</a>
-        <a href="search.html">Search</a>
-        <a href="translate.html">Translate</a>
+        <a href="../general/general.html">General</a>
+        <a href="../youtube/youtube.html">Youtube</a>
+        <a href="../twitter/twitter.html">Twitter</a>
+        <a href="../instagram/instagram.html">Instagram</a>
+        <a href="../reddit/reddit.html">Reddit</a>
+        <a href="../search/search.html">Search</a>
+        <a href="../translate/translate.html">Translate</a>
         <a href="maps.html" class="selected">Maps</a>
-        <a href="wikipedia.html">Wikipedia</a>
-        <a href="medium.html">Medium</a>
+        <a href="../wikipedia/wikipedia.html">Wikipedia</a>
+        <a href="../medium/medium.html">Medium</a>
     </section>
 
     <section class="option-block">
@@ -36,9 +36,9 @@
             </div>
         </div> -->
     </section>
-    <script type="module" src="./init.js"></script>
+    <script type="module" src="../init.js"></script>
     <script type="module" src="./maps.js"></script>
-    <script src="../../assets/javascripts/localise.js"></script>
+    <!-- <script src="../../assets/javascripts/localise.js"></script> -->
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/pages/options/maps.js b/src/pages/options/maps/maps.js
index 9e5bb2cc..edb1cca3 100644
--- a/src/pages/options/maps.js
+++ b/src/pages/options/maps/maps.js
@@ -1,11 +1,10 @@
-import mapsHelper from "../../assets/javascripts/helpers/maps.js";
+import mapsHelper from "../../../assets/javascripts/helpers/maps.js";
 
 let disableMapsElement = document.getElementById("disable-osm");
+disableMapsElement.addEventListener("change",
+    (event) => mapsHelper.setDisableMaps(!event.target.checked)
+);
 
 mapsHelper.init().then(() => {
     disableMapsElement.checked = !mapsHelper.getDisableMaps();
-})
-
-disableMapsElement.addEventListener("change",
-    (event) => mapsHelper.setDisableMaps(!event.target.checked)
-);
\ No newline at end of file
+})
\ No newline at end of file
diff --git a/src/pages/options/medium.html b/src/pages/options/medium/medium.html
index fb44b7ee..877d704e 100644
--- a/src/pages/options/medium.html
+++ b/src/pages/options/medium/medium.html
@@ -5,21 +5,21 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="../stylesheets/styles.css" rel="stylesheet" />
+    <link href="../../stylesheets/styles.css" rel="stylesheet" />
     <title>LibRedirect Options: Twitter</title>
 </head>
 
 <body class="option">
     <section class="links">
-        <a href="general.html">General</a>
-        <a href="youtube.html">Youtube</a>
-        <a href="twitter.html">Twitter</a>
-        <a href="instagram.html">Instagram</a>
-        <a href="reddit.html">Reddit</a>
-        <a href="search.html">Search</a>
-        <a href="translate.html">Translate</a>
-        <a href="maps.html">Maps</a>
-        <a href="wikipedia.html">Wikipedia</a>
+        <a href="../general/general.html">General</a>
+        <a href="../youtube/youtube.html">Youtube</a>
+        <a href="../twitter/twitter.html">Twitter</a>
+        <a href="../instagram/instagram.html">Instagram</a>
+        <a href="../reddit/reddit.html">Reddit</a>
+        <a href="../search/search.html">Search</a>
+        <a href="../translate/translate.html">Translate</a>
+        <a href="../maps/maps.html">Maps</a>
+        <a href="../wikipedia/wikipedia.html">Wikipedia</a>
         <a href="medium.html" class="selected">Medium</a>
     </section>
 
@@ -45,9 +45,9 @@
         </section> -->
     </section>
 
-    <script type="module" src="./init.js"></script>
+    <script type="module" src="../init.js"></script>
     <script type="module" src="./medium.js"></script>
-    <script src="../../assets/javascripts/localise.js"></script>
+    <!-- <script src="../../assets/javascripts/localise.js"></script> -->
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/pages/options/medium.js b/src/pages/options/medium/medium.js
index 4f0377f5..fea66855 100644
--- a/src/pages/options/medium.js
+++ b/src/pages/options/medium/medium.js
@@ -1,11 +1,10 @@
-import mediumHelper from "../../assets/javascripts/helpers/medium.js";
+import mediumHelper from "../../../assets/javascripts/helpers/medium.js";
 
 let disableMediumElement = document.getElementById("disable-scribe");
-
-mediumHelper.init().then(() => {
-    disableMediumElement.checked = !mediumHelper.getDisableMedium();
-})
-
 disableMediumElement.addEventListener("change",
     (event) => mediumHelper.setDisableMedium(!event.target.checked)
 );
+
+mediumHelper.init().then(() => {
+    disableMediumElement.checked = !mediumHelper.getDisableMedium();
+})
\ No newline at end of file
diff --git a/src/pages/options/reddit.html b/src/pages/options/reddit/reddit.html
index 14474285..b3f9c7c7 100644
--- a/src/pages/options/reddit.html
+++ b/src/pages/options/reddit/reddit.html
@@ -5,22 +5,22 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="../stylesheets/styles.css" rel="stylesheet" />
+    <link href="../../stylesheets/styles.css" rel="stylesheet" />
     <title>LibRedirect Options: Twitter</title>
 </head>
 
 <body class="option">
     <section class="links">
-        <a href="general.html">General</a>
-        <a href="youtube.html">Youtube</a>
-        <a href="twitter.html">Twitter</a>
-        <a href="instagram.html">Instagram</a>
+        <a href="../general/general.html">General</a>
+        <a href="../youtube/youtube.html">Youtube</a>
+        <a href="../twitter/twitter.html">Twitter</a>
+        <a href="../instagram/instagram.html">Instagram</a>
         <a href="reddit.html" class="selected">Reddit</a>
-        <a href="search.html">Search</a>
-        <a href="translate.html">Translate</a>
-        <a href="maps.html">Maps</a>
-        <a href="wikipedia.html">Wikipedia</a>
-        <a href="medium.html">Medium</a>
+        <a href="../search/search.html">Search</a>
+        <a href="../translate/translate.html">Translate</a>
+        <a href="../maps/maps.html">Maps</a>
+        <a href="../wikipedia/wikipedia.html">Wikipedia</a>
+        <a href="../medium/medium.html">Medium</a>
     </section>
 
 
@@ -64,9 +64,9 @@
 
     </section>
 
-    <script type="module" src="./init.js"></script>
+    <script type="module" src="../init.js"></script>
     <script type="module" src="./reddit.js"></script>
-    <script src="../../assets/javascripts/localise.js"></script>
+    <!-- <script src="../../assets/javascripts/localise.js"></script> -->
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/pages/options/reddit.js b/src/pages/options/reddit/reddit.js
index 0222c6dd..92bd6e46 100644
--- a/src/pages/options/reddit.js
+++ b/src/pages/options/reddit/reddit.js
@@ -1,17 +1,16 @@
-import redditHelper from "../../assets/javascripts/helpers/reddit.js";
+import redditHelper from "../../../assets/javascripts/helpers/reddit.js";
 
 let disableRedditElement = document.getElementById("disable-reddit");
-let redditFrontendElement = document.getElementById("reddit-frontend");
-
-redditHelper.init().then(() => {
-    disableRedditElement.checked = !redditHelper.getDisableReddit();
-    redditFrontendElement.value = redditHelper.getRedditFrontend();
-})
-
 disableRedditElement.addEventListener("change",
     (event) => redditHelper.setDisableReddit(!event.target.checked)
 );
 
+let redditFrontendElement = document.getElementById("reddit-frontend");
 redditFrontendElement.addEventListener("change",
     (event) => redditHelper.setRedditFrontend(event.target.options[redditFrontendElement.selectedIndex].value)
-);
\ No newline at end of file
+);
+
+redditHelper.init().then(() => {
+    disableRedditElement.checked = !redditHelper.getDisableReddit();
+    redditFrontendElement.value = redditHelper.getRedditFrontend();
+})
\ No newline at end of file
diff --git a/src/pages/options/search.html b/src/pages/options/search/search.html
index d0510eed..863a3472 100644
--- a/src/pages/options/search.html
+++ b/src/pages/options/search/search.html
@@ -5,22 +5,22 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="../stylesheets/styles.css" rel="stylesheet" />
+    <link href="../../stylesheets/styles.css" rel="stylesheet" />
     <title>LibRedirect Options: Twitter</title>
 </head>
 
 <body class="option">
     <section class="links">
-        <a href="general.html">General</a>
-        <a href="youtube.html">Youtube</a>
-        <a href="twitter.html">Twitter</a>
-        <a href="instagram.html">Instagram</a>
-        <a href="reddit.html">Reddit</a>
+        <a href="../general/general.html">General</a>
+        <a href="../youtube/youtube.html">Youtube</a>
+        <a href="../twitter/twitter.html">Twitter</a>
+        <a href="../instagram/instagram.html">Instagram</a>
+        <a href="../reddit/reddit.html">Reddit</a>
         <a href="search.html" class="selected">Search</a>
-        <a href="translate.html">Translate</a>
-        <a href="maps.html">Maps</a>
-        <a href="wikipedia.html">Wikipedia</a>
-        <a href="medium.html">Medium</a>
+        <a href="../translate/translate.html">Translate</a>
+        <a href="../maps/maps.html">Maps</a>
+        <a href="../wikipedia/wikipedia.html">Wikipedia</a>
+        <a href="../medium/medium.html">Medium</a>
     </section>
 
     <section class="option-block">
@@ -64,10 +64,10 @@
     </section>
 
 
-    <script type="module" src="./init.js"></script>
-    <script type="module" src="./init.js"></script>
+    <script type="module" src="../init.js"></script>
+    <script type="module" src="../init.js"></script>
     <script type="module" src="./search.js"></script>
-    <script src="../../assets/javascripts/localise.js"></script>
+    <!-- <script src="../../assets/javascripts/localise.js"></script> -->
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/pages/options/search.js b/src/pages/options/search/search.js
index 2029392c..e38480e2 100644
--- a/src/pages/options/search.js
+++ b/src/pages/options/search/search.js
@@ -1,17 +1,16 @@
-import searchHelper from "../../assets/javascripts/helpers/search.js";
+import searchHelper from "../../../assets/javascripts/helpers/search.js";
 
-let disableSearchElement = document.getElementById("disable-search");
 let searchFrontendElement = document.getElementById("search-frontend");
-
-searchHelper.init().then(() => {
-  disableSearchElement.checked = !searchHelper.getDisableSearch();
-  searchFrontendElement.value = searchHelper.getSearchFrontend();
-});
-
 searchFrontendElement.addEventListener("change",
   (event) => searchHelper.setSearchFrontend(event.target.options[searchFrontendElement.selectedIndex].value)
 );
 
+let disableSearchElement = document.getElementById("disable-search");
 disableSearchElement.addEventListener("change",
   (event) => searchHelper.setDisableSearch(!event.target.checked)
 );
+
+searchHelper.init().then(() => {
+  disableSearchElement.checked = !searchHelper.getDisableSearch();
+  searchFrontendElement.value = searchHelper.getSearchFrontend();
+});
diff --git a/src/pages/options/shared.js b/src/pages/options/shared.js
index 62da2504..36f2ef27 100644
--- a/src/pages/options/shared.js
+++ b/src/pages/options/shared.js
@@ -107,7 +107,6 @@ function autocomplete(input, list) {
     });
 }
 
-
 export default {
     autocompletes,
     parseURL,
diff --git a/src/pages/options/translate.html b/src/pages/options/translate/translate.html
index b193130a..3b6d7580 100644
--- a/src/pages/options/translate.html
+++ b/src/pages/options/translate/translate.html
@@ -5,22 +5,22 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="../stylesheets/styles.css" rel="stylesheet" />
+    <link href="../../stylesheets/styles.css" rel="stylesheet" />
     <title>LibRedirect Options: Twitter</title>
 </head>
 
 <body class="option">
     <section class="links">
-        <a href="general.html">General</a>
-        <a href="youtube.html">Youtube</a>
-        <a href="twitter.html">Twitter</a>
-        <a href="instagram.html">Instagram</a>
-        <a href="reddit.html">Reddit</a>
-        <a href="search.html">Search</a>
+        <a href="../general/general.html">General</a>
+        <a href="../youtube/youtube.html">Youtube</a>
+        <a href="../twitter/twitter.html">Twitter</a>
+        <a href="../instagram/instagram.html">Instagram</a>
+        <a href="../reddit/reddit.html">Reddit</a>
+        <a href="../search/search.html">Search</a>
         <a href="translate.html" class="selected">Translate</a>
-        <a href="maps.html">Maps</a>
-        <a href="wikipedia.html">Wikipedia</a>
-        <a href="medium.html">Medium</a>
+        <a href="../maps/maps.html">Maps</a>
+        <a href="../wikipedia/wikipedia.html">Wikipedia</a>
+        <a href="../medium/medium.html">Medium</a>
     </section>
     <section class="option-block">
         <div class="some-block option-block">
@@ -43,9 +43,9 @@
         </div>
     </section>
 
-    <script type="module" src="./init.js"></script>
+    <script type="module" src="../init.js"></script>
     <script type="module" src="./translate.js"></script>
-    <script src="../../assets/javascripts/localise.js"></script>
+    <!-- <script src="../../assets/javascripts/localise.js"></script> -->
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/pages/options/translate.js b/src/pages/options/translate/translate.js
index 84a12ab0..480b754e 100644
--- a/src/pages/options/translate.js
+++ b/src/pages/options/translate/translate.js
@@ -1,18 +1,16 @@
-import translateHelper from "../../assets/javascripts/helpers/translate.js";
+import translateHelper from "../../../assets/javascripts/helpers/translate.js";
 
 let disableTranslateElement = document.getElementById("disable-simplyTranslate");
-let translateFrontendElement = document.getElementById("translate-frontend");
-
-
-translateHelper.init().then(() => {
-    disableTranslateElement.checked = !translateHelper.getDisableTranslate();
-    translateFrontendElement.value = translateHelper.getFrontend();
-});
-
 disableTranslateElement.addEventListener("change",
     (event) => translateHelper.setDisableTranslate(!event.target.checked)
 );
 
+let translateFrontendElement = document.getElementById("translate-frontend");
 translateFrontendElement.addEventListener("change",
     (event) => translateHelper.setFrontend(event.target.options[translateFrontendElement.selectedIndex].value)
 );
+
+translateHelper.init().then(() => {
+    disableTranslateElement.checked = !translateHelper.getDisableTranslate();
+    translateFrontendElement.value = translateHelper.getFrontend();
+});
\ No newline at end of file
diff --git a/src/pages/options/twitter.html b/src/pages/options/twitter/twitter.html
index 555b3f64..b695a8b2 100644
--- a/src/pages/options/twitter.html
+++ b/src/pages/options/twitter/twitter.html
@@ -5,23 +5,23 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="../stylesheets/styles.css" rel="stylesheet" />
+    <link href="../../stylesheets/styles.css" rel="stylesheet" />
     <title>LibRedirect Options: Twitter</title>
 </head>
 
 <body class="option">
 
     <section class="links">
-        <a href="general.html">General</a>
-        <a href="youtube.html">Youtube</a>
+        <a href="../general/general.html">General</a>
+        <a href="../youtube/youtube.html">Youtube</a>
         <a href="twitter.html" class="selected">Twitter</a>
-        <a href="instagram.html">Instagram</a>
-        <a href="reddit.html">Reddit</a>
-        <a href="search.html">Search</a>
-        <a href="translate.html">Translate</a>
-        <a href="maps.html">Maps</a>
-        <a href="wikipedia.html">Wikipedia</a>
-        <a href="medium.html">Medium</a>
+        <a href="../instagram/instagram.html">Instagram</a>
+        <a href="../reddit/reddit.html">Reddit</a>
+        <a href="../search/search.html">Search</a>
+        <a href="../translate/translate.html">Translate</a>
+        <a href="../maps/maps.html">Maps</a>
+        <a href="../wikipedia/wikipedia.html">Wikipedia</a>
+        <a href="../medium/medium.html">Medium</a>
     </section>
 
     <section class="option-block">
@@ -53,9 +53,9 @@
 
     </section>
 
-    <script type="module" src="./init.js"></script>
+    <script type="module" src="../init.js"></script>
     <script type="module" src="./twitter.js"></script>
-    <script src="../../assets/javascripts/localise.js"></script>
+    <!-- <script src="../../assets/javascripts/localise.js"></script> -->
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/pages/options/twitter.js b/src/pages/options/twitter/twitter.js
index f8fdd8ce..08fabb20 100644
--- a/src/pages/options/twitter.js
+++ b/src/pages/options/twitter/twitter.js
@@ -1,17 +1,16 @@
-import twitterHelper from "../../assets/javascripts/helpers/twitter.js";
+import twitterHelper from "../../../assets/javascripts/helpers/twitter.js";
 
-let removeTwitterSWElement = document.getElementById("remove-twitter-sw");
 let disableTwitterElement = document.getElementById("disable-nitter");
-
-twitterHelper.init().then(() => {
-    disableTwitterElement.checked = !twitterHelper.getDisableTwitter();
-    removeTwitterSWElement.checked = !remove.getRemoveTwitterSW; // Problem
-});
-
 disableTwitterElement.addEventListener("change",
     (event) => twitterHelper.setDisableTwitter(!event.target.checked)
 );
 
+let removeTwitterSWElement = document.getElementById("remove-twitter-sw");
 removeTwitterSWElement.addEventListener("change", (event) => {
     browser.storage.sync.set({ removeTwitterSW: !event.target.checked }); // Problem
 });
+
+twitterHelper.init().then(() => {
+    disableTwitterElement.checked = !twitterHelper.getDisableTwitter();
+    removeTwitterSWElement.checked = !remove.getRemoveTwitterSW; // Problem
+});
\ No newline at end of file
diff --git a/src/pages/options/wikipedia.html b/src/pages/options/wikipedia/wikipedia.html
index d3cc5cb2..1a4ea8d5 100644
--- a/src/pages/options/wikipedia.html
+++ b/src/pages/options/wikipedia/wikipedia.html
@@ -5,22 +5,22 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="../stylesheets/styles.css" rel="stylesheet" />
+    <link href="../../stylesheets/styles.css" rel="stylesheet" />
     <title>LibRedirect Options: Twitter</title>
 </head>
 
 <body class="option">
     <section class="links">
-        <a href="general.html">General</a>
-        <a href="youtube.html">Youtube</a>
-        <a href="twitter.html">Twitter</a>
-        <a href="instagram.html">Instagram</a>
-        <a href="reddit.html">Reddit</a>
-        <a href="search.html">Search</a>
-        <a href="translate.html">Translate</a>
-        <a href="maps.html">Maps</a>
-        <a href="wikipedia.html" class="selected">Wikipedia</a>
-        <a href="medium.html">Medium</a>
+        <a href="../general/general.html">General</a>
+        <a href="../youtube/youtube.html">Youtube</a>
+        <a href="../twitter/twitter.html">Twitter</a>
+        <a href="../instagram/instagram.html">Instagram</a>
+        <a href="../reddit/reddit.html">Reddit</a>
+        <a href="../search/search.html">Search</a>
+        <a href="../translate/translate.html">Translate</a>
+        <a href="../maps/maps.html">Maps</a>
+        <a href="../wikipedia/wikipedia.html" class="selected">Wikipedia</a>
+        <a href="../medium/medium.html">Medium</a>
     </section>
 
     <section class="option-block">
@@ -44,9 +44,9 @@
         </section> -->
     </section>
 
-    <script type="module" src="./init.js"></script>
+    <script type="module" src="../init.js"></script>
     <script type="module" src="./wikipedia.js"></script>
-    <script src="../../assets/javascripts/localise.js"></script>
+    <!-- <script src="../../assets/javascripts/localise.js"></script> -->
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/pages/options/wikipedia.js b/src/pages/options/wikipedia/wikipedia.js
index 95ef6406..08a9a6e0 100644
--- a/src/pages/options/wikipedia.js
+++ b/src/pages/options/wikipedia/wikipedia.js
@@ -1,11 +1,10 @@
-import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js";
+import wikipediaHelper from "../../../assets/javascripts/helpers/wikipedia.js";
 
 let disableWikipediaElement = document.getElementById("disable-wikipedia");
+disableWikipediaElement.addEventListener("change",
+    (event) => wikipediaHelper.setDisableWikipedia(!event.target.checked)
+);
 
 wikipediaHelper.init().then(() => {
     disableWikipediaElement.checked = !wikipediaHelper.getDisableWikipedia();
-})
-
-disableWikipediaElement.addEventListener("change",
-    (event) => wikipediaHelper.setDisableWikipedia(!event.target.checked)
-);
\ No newline at end of file
+})
\ No newline at end of file
diff --git a/src/pages/options/youtube.html b/src/pages/options/youtube/youtube.html
index c1bd830e..15688873 100644
--- a/src/pages/options/youtube.html
+++ b/src/pages/options/youtube/youtube.html
@@ -5,23 +5,23 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="../stylesheets/styles.css" rel="stylesheet" />
+    <link href="../../stylesheets/styles.css" rel="stylesheet" />
     <title>LibRedirect Options: Twitter</title>
 </head>
 
 <body class="option">
 
     <section class="links">
-        <a href="general.html">General</a>
+        <a href="../general/general.html">General</a>
         <a href="youtube.html" class="selected">Youtube</a>
-        <a href="twitter.html">Twitter</a>
-        <a href="instagram.html">Instagram</a>
-        <a href="reddit.html">Reddit</a>
-        <a href="search.html">Search</a>
-        <a href="translate.html">Translate</a>
-        <a href="maps.html">Maps</a>
-        <a href="wikipedia.html">Wikipedia</a>
-        <a href="medium.html">Medium</a>
+        <a href="../twitter/twitter.html">Twitter</a>
+        <a href="../instagram/instagram.html">Instagram</a>
+        <a href="../reddit/reddit.html">Reddit</a>
+        <a href="../search/search.html">Search</a>
+        <a href="../translate/translate.html">Translate</a>
+        <a href="../maps/maps.html">Maps</a>
+        <a href="../wikipedia/wikipedia.html">Wikipedia</a>
+        <a href="../medium/medium.html">Medium</a>
     </section>
 
     <section class="option-block">
@@ -52,6 +52,7 @@
             <select id="youtube-frontend">
                 <option value="piped">Piped</option>
                 <option value="invidious">Invidious</option>
+                <option value="freeTube">FreeTube</option>
             </select>
         </div>
 
@@ -77,11 +78,6 @@
             </div>
 
             <div class="some-block option-block">
-                <h4 data-localise="__MSG_useFreeTube__">Use FreeTube over Invidious when possible</h4>
-                <input id="use-freetube" type="checkbox" checked />
-            </div>
-
-            <div class="some-block option-block">
                 <h4 data-localise="__MSG_invidiousAlwaysProxy__">Always proxy videos through Invidious</h4>
                 <input id="always-proxy" type="checkbox" checked />
             </div>
@@ -122,9 +118,9 @@
 
     </section>
 
-    <script type="module" src="./init.js"></script>
+    <script type="module" src="../init.js"></script>
     <script type="module" src="./youtube.js"></script>
-    <script src="../../assets/javascripts/localise.js"></script>
+    <!-- <script src="../../assets/javascripts/localise.js"></script> -->
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/pages/options/youtube.js b/src/pages/options/youtube/youtube.js
index c592b4cc..c1d526da 100644
--- a/src/pages/options/youtube.js
+++ b/src/pages/options/youtube/youtube.js
@@ -1,23 +1,11 @@
-import youtubeHelper from "../../assets/javascripts/helpers/youtube.js";
-import commonHelper from "../../assets/javascripts/helpers/common.js";
+import youtubeHelper from "../../../assets/javascripts/helpers/youtube/youtube.js";
+import commonHelper from "../../../assets/javascripts/helpers/common.js";
 
 let disableYoutubeElement = document.getElementById("disable-invidious");
-let youtubeFrontendElement = document.getElementById("youtube-frontend");
-let invidiousDarkModeElement = document.getElementById("invidious-dark-mode");
-let persistInvidiousPrefsElement = document.getElementById("persist-invidious-prefs");
-let invidiousVolumeElement = document.getElementById("invidious-volume");
-let invidiousPlayerStyleElement = document.getElementById("invidious-player-style");
-let invidiousSubtitlesElement = document.getElementById("invidious-subtitles");
-let invidiousAutoplayElement = document.getElementById("invidious-autoplay");
-let useFreeTubeElement = document.getElementById("use-freetube");
-let invidiousAlwaysProxyElement = document.getElementById("always-proxy");
-let invidiousOnlyEmbeddedVideoElement = document.getElementById("only-embed");
-let invidiousVideoQualityElement = document.getElementById("video-quality");
-let invidiousVolumeValueElement = document.querySelector("#volume-value");
 
+let youtubeFrontendElement = document.getElementById("youtube-frontend");
 let invidiousDivElement = document.getElementById("invidious")
 let pipedDivElement = document.getElementById("piped")
-
 function changeFrontendsSettings(frontend) {
     if (frontend == 'piped') {
         pipedDivElement.style.display = 'block';
@@ -27,39 +15,35 @@ function changeFrontendsSettings(frontend) {
         pipedDivElement.style.display = 'none';
         invidiousDivElement.style.display = 'block';
     }
+    else if (frontend == 'freeTube') {
+        pipedDivElement.style.display = 'none';
+        invidiousDivElement.style.display = 'none';
+    }
 }
-
-youtubeHelper.init().then(() => {
-    disableYoutubeElement.checked = !youtubeHelper.getDisableYoutube();
-    invidiousDarkModeElement.checked = youtubeHelper.getInvidiousDarkMode();
-    persistInvidiousPrefsElement.checked = youtubeHelper.getPersistInvidiousPrefs();
-    invidiousVolumeElement.value = youtubeHelper.getInvidiousVolume();
-    invidiousVolumeValueElement.textContent = `${youtubeHelper.getInvidiousVolume()}%`;
-    invidiousPlayerStyleElement.value = youtubeHelper.getInvidiousPlayerStyle();
-    invidiousSubtitlesElement.value = youtubeHelper.getInvidiousSubtitles();
-    useFreeTubeElement.checked = youtubeHelper.getUseFreeTube();
-    invidiousOnlyEmbeddedVideoElement.checked = youtubeHelper.getInvidiousOnlyEmbeddedVideo();
-    invidiousAlwaysProxyElement.checked = youtubeHelper.getInvidiousAlwaysProxy();
-    invidiousVideoQualityElement.value = youtubeHelper.getInvidiousVideoQuality();
-    invidiousAutoplayElement.checked = youtubeHelper.getInvidiousAutoplay();
-    let frontend = youtubeHelper.getFrontend()
-    youtubeFrontendElement.value = frontend;
-    changeFrontendsSettings(frontend);
-});
-
+youtubeFrontendElement.addEventListener("change",
+    (event) => {
+        let frontend = event.target.options[youtubeFrontendElement.selectedIndex].value
+        youtubeHelper.setFrontend(frontend);
+        changeFrontendsSettings(frontend);
+    }
+);
 
 disableYoutubeElement.addEventListener("change",
     (event) => youtubeHelper.setDisableYoutube(!event.target.checked)
 );
 
+let invidiousDarkModeElement = document.getElementById("invidious-dark-mode");
 invidiousDarkModeElement.addEventListener("change",
     (event) => youtubeHelper.setInvidiousDarkMode(event.target.checked)
 );
 
+let persistInvidiousPrefsElement = document.getElementById("persist-invidious-prefs");
 persistInvidiousPrefsElement.addEventListener("change",
     (event) => youtubeHelper.setPersistInvidiousPrefs(event.target.checked)
 );
 
+let invidiousVolumeElement = document.getElementById("invidious-volume");
+let invidiousVolumeValueElement = document.querySelector("#volume-value");
 invidiousVolumeElement.addEventListener("input",
     () => {
         youtubeHelper.setInvidiousVolume(invidiousVolumeElement.value);
@@ -67,40 +51,57 @@ invidiousVolumeElement.addEventListener("input",
     }
 );
 
+let invidiousPlayerStyleElement = document.getElementById("invidious-player-style");
 invidiousPlayerStyleElement.addEventListener("change",
     (event) => youtubeHelper.setInvidiousPlayerStyle(event.target.options[invidiousPlayerStyleElement.selectedIndex].value)
 );
 
+let invidiousSubtitlesElement = document.getElementById("invidious-subtitles");
 invidiousSubtitlesElement.addEventListener("input",
     commonHelper.debounce(() => {
         youtubeHelper.setInvidiousSubtitles(invidiousSubtitlesElement.value)
     }, 500)
 );
 
+let invidiousAutoplayElement = document.getElementById("invidious-autoplay");
 invidiousAutoplayElement.addEventListener("change",
     (event) => youtubeHelper.setInvidiousAutoplay(event.target.checked)
 );
 
-useFreeTubeElement.addEventListener("change",
-    (event) => youtubeHelper.setUseFreeTube(event.target.checked)
-);
-
+let invidiousAlwaysProxyElement = document.getElementById("always-proxy");
 invidiousAlwaysProxyElement.addEventListener("change",
     (event) => youtubeHelper.setInvidiousAlwaysProxy(event.target.checked)
 );
 
+let invidiousOnlyEmbeddedVideoElement = document.getElementById("only-embed");
 invidiousOnlyEmbeddedVideoElement.addEventListener("change",
     (event) => youtubeHelper.setInvidiousOnlyEmbeddedVideo(event.target.checked)
 );
 
+let invidiousVideoQualityElement = document.getElementById("video-quality");
 invidiousVideoQualityElement.addEventListener("change",
     (event) => youtubeHelper.setInvidiousVideoQuality(event.target.options[invidiousVideoQualityElement.selectedIndex].value)
 );
 
-youtubeFrontendElement.addEventListener("change",
-    (event) => {
-        let frontend = event.target.options[youtubeFrontendElement.selectedIndex].value
-        youtubeHelper.setFrontend(frontend);
-        changeFrontendsSettings(frontend);
-    }
-);
\ No newline at end of file
+
+youtubeHelper.init().then(() => {
+    disableYoutubeElement.checked = !youtubeHelper.getDisableYoutube();
+    invidiousDarkModeElement.checked = youtubeHelper.getInvidiousDarkMode();
+    persistInvidiousPrefsElement.checked = youtubeHelper.getPersistInvidiousPrefs();
+    invidiousVolumeElement.value = youtubeHelper.getInvidiousVolume();
+    invidiousVolumeValueElement.textContent = `${youtubeHelper.getInvidiousVolume()}%`;
+    invidiousPlayerStyleElement.value = youtubeHelper.getInvidiousPlayerStyle();
+    invidiousSubtitlesElement.value = youtubeHelper.getInvidiousSubtitles();
+    invidiousOnlyEmbeddedVideoElement.checked = youtubeHelper.getInvidiousOnlyEmbeddedVideo();
+    invidiousAlwaysProxyElement.checked = youtubeHelper.getInvidiousAlwaysProxy();
+    invidiousVideoQualityElement.value = youtubeHelper.getInvidiousVideoQuality();
+    invidiousAutoplayElement.checked = youtubeHelper.getInvidiousAutoplay();
+    let frontend = youtubeHelper.getFrontend()
+    youtubeFrontendElement.value = frontend;
+    changeFrontendsSettings(frontend);
+});
+
+
+
+
+
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index 5362c79a..bd8a5057 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -2,7 +2,7 @@
 
 import commonHelper from "../../assets/javascripts/helpers/common.js";
 import data from "../../assets/javascripts/data.js";
-import youtubeHelper from "../../assets/javascripts/helpers/youtube.js";
+import youtubeHelper from "../../assets/javascripts/helpers/youtube/youtube.js";
 import twitterHelper from "../../assets/javascripts/helpers/twitter.js";
 import instagramHelper from "../../assets/javascripts/helpers/instagram.js";
 import mapsHelper from "../../assets/javascripts/helpers/maps.js";