about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-07-24 11:34:17 +0300
committerManeraKai <manerakai@protonmail.com>2022-07-24 11:34:17 +0300
commit663c61e0f26ed4259b64ec574f833155df1ab8dc (patch)
treebe58876ebca99733cf54a297d22e2117a176f001
parentRe-add instances list (for dev reasons) (diff)
downloadlibredirect-663c61e0f26ed4259b64ec574f833155df1ab8dc.zip
fix some typos
-rw-r--r--src/assets/javascripts/imdb.js2
-rw-r--r--src/assets/javascripts/imgur.js1
-rw-r--r--src/assets/javascripts/instagram.js6
-rw-r--r--src/assets/javascripts/lbry.js8
-rw-r--r--src/assets/javascripts/maps.js3
-rw-r--r--src/assets/javascripts/medium.js2
-rw-r--r--src/assets/javascripts/peertube.js6
-rw-r--r--src/assets/javascripts/quora.js2
-rw-r--r--src/assets/javascripts/reddit.js19
-rw-r--r--src/assets/javascripts/reuters.js2
-rw-r--r--src/assets/javascripts/search.js7
-rw-r--r--src/assets/javascripts/sendTargets.js2
-rw-r--r--src/assets/javascripts/tiktok.js2
-rw-r--r--src/assets/javascripts/translate/translate.js8
-rw-r--r--src/assets/javascripts/twitter.js2
-rw-r--r--src/assets/javascripts/utils.js6
-rw-r--r--src/assets/javascripts/wikipedia.js10
-rw-r--r--src/assets/javascripts/youtube/youtube.js26
-rw-r--r--src/assets/javascripts/youtubeMusic.js3
-rw-r--r--src/instances/blacklist.json1
-rw-r--r--src/instances/data.json149
-rw-r--r--src/instances/get_instances.py35
-rw-r--r--src/instances/piped.json6
-rw-r--r--src/pages/options/widgets/general.js6
24 files changed, 223 insertions, 91 deletions
diff --git a/src/assets/javascripts/imdb.js b/src/assets/javascripts/imdb.js
index 681f6754..2a8ac2f6 100644
--- a/src/assets/javascripts/imdb.js
+++ b/src/assets/javascripts/imdb.js
@@ -172,8 +172,10 @@ function initDefaults() {
                 libremdbTorRedirectsChecks: [...redirects.libremdb.tor],
                 libremdbTorCustomRedirects: [],
 
+                libremdbI2pRedirectsChecks: [],
                 libremdbI2pCustomRedirects: [],
 
+                libremdbLokiRedirectsChecks: [],
                 libremdbLokiCustomRedirects: []
             }, () => resolve());
         });
diff --git a/src/assets/javascripts/imgur.js b/src/assets/javascripts/imgur.js
index f76679a3..f373276f 100644
--- a/src/assets/javascripts/imgur.js
+++ b/src/assets/javascripts/imgur.js
@@ -194,6 +194,7 @@ function initDefaults() {
                     rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p],
                     rimgoI2pCustomRedirects: [],
 
+                    rimgoLokiRedirectsChecks: [...redirects.rimgo.loki],
                     rimgoLokiCustomRedirects: []
                 }, () => resolve());
             });
diff --git a/src/assets/javascripts/instagram.js b/src/assets/javascripts/instagram.js
index 7c816b4b..182ff4d9 100644
--- a/src/assets/javascripts/instagram.js
+++ b/src/assets/javascripts/instagram.js
@@ -173,13 +173,15 @@ function initDefaults() {
           instagramRedirects: redirects,
 
           bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks,
-          bibliogramTorRedirectsChecks: [],
+          bibliogramNormalCustomRedirects: [],
 
-          bibliogramNormalCustomRedirects: [...redirects.bibliogram.tor],
+          bibliogramTorRedirectsChecks: [...redirects.bibliogram.tor],
           bibliogramTorCustomRedirects: [],
 
+          bibliogramI2pRedirectsChecks: [...redirects.bibliogram.i2p],
           bibliogramI2pCustomRedirects: [],
 
+          bibliogramLokiRedirectsChecks: [...redirects.bibliogram.loki],
           bibliogramLokiCustomRedirects: []
         })
         resolve();
diff --git a/src/assets/javascripts/lbry.js b/src/assets/javascripts/lbry.js
index 6e2bd352..cfdf1bb0 100644
--- a/src/assets/javascripts/lbry.js
+++ b/src/assets/javascripts/lbry.js
@@ -40,6 +40,7 @@ let
     librarianNormalCustomRedirects,
     librarianTorRedirectsChecks,
     librarianTorCustomRedirects,
+    librarianI2pRedirectsChecks,
     librarianI2pCustomRedirects,
     librarianLokiCustomRedirects;
 
@@ -55,6 +56,7 @@ function init() {
                 "librarianNormalCustomRedirects",
                 "librarianTorRedirectsChecks",
                 "librarianTorCustomRedirects",
+                "librarianI2pRedirectsChecks",
                 "librarianI2pCustomRedirects",
                 "librarianLokiCustomRedirects"
             ],
@@ -67,6 +69,7 @@ function init() {
                 librarianNormalCustomRedirects = r.librarianNormalCustomRedirects;
                 librarianTorRedirectsChecks = r.librarianTorRedirectsChecks;
                 librarianTorCustomRedirects = r.librarianTorCustomRedirects;
+                librarianI2pRedirectsChecks = r.librarianI2pRedirectsChecks;
                 librarianI2pCustomRedirects = r.librarianI2pCustomRedirects;
                 librarianLokiCustomRedirects = r.librarianLokiCustomRedirects;
                 resolve();
@@ -140,17 +143,18 @@ function initDefaults() {
             }
             browser.storage.local.set({
                 disableLbryTargets: true,
-
                 lbryTargetsRedirects: redirects,
 
-                librarianNormalRedirectsChecks: librarianNormalRedirectsChecks,
+                librarianNormalRedirectsChecks: [...redirects.librarian.normal],
                 librarianNormalCustomRedirects: [],
 
                 librarianTorRedirectsChecks: [...redirects.librarian.tor],
                 librarianTorCustomRedirects: [],
 
+                librarianI2pRedirectsChecks: [...redirects.librarian.i2p],
                 librarianI2pCustomRedirects: [],
 
+                librarianLokiRedirectsChecks: [...redirects.librarian.loki],
                 librarianLokiCustomRedirects: []
             }, () => resolve());
         });
diff --git a/src/assets/javascripts/maps.js b/src/assets/javascripts/maps.js
index 7714e17d..fd65b1c5 100644
--- a/src/assets/javascripts/maps.js
+++ b/src/assets/javascripts/maps.js
@@ -228,10 +228,13 @@ async function initDefaults() {
       facilNormalRedirectsChecks: [...redirects.facil.normal],
       facilNormalCustomRedirects: [],
 
+      facilTorRedirectsChecks: [...redirects.facil.tor],
       facilTorCustomRedirects: [],
 
+      facilI2pRedirectsChecks: [...redirects.facil.i2p],
       facilI2pCustomRedirects: [],
 
+      facilLokiRedirectsChecks: [...redirects.facil.loki],
       facilLokiCustomRedirects: []
     }, () => resolve())
   )
diff --git a/src/assets/javascripts/medium.js b/src/assets/javascripts/medium.js
index d4c81ba8..ddd955c1 100644
--- a/src/assets/javascripts/medium.js
+++ b/src/assets/javascripts/medium.js
@@ -188,8 +188,10 @@ function initDefaults() {
             scribeTorRedirectsChecks: [...redirects.scribe.tor],
             scribeTorCustomRedirects: [],
 
+            scribeI2pRedirectsChecks: [...redirects.scribe.i2p],
             scribeI2pCustomRedirects: [],
 
+            scribeLokiRedirectsChecks: [...redirects.scribe.loki],
             scribeLokiCustomRedirects: []
           }, () => resolve())
         })
diff --git a/src/assets/javascripts/peertube.js b/src/assets/javascripts/peertube.js
index 82993941..d05e4b27 100644
--- a/src/assets/javascripts/peertube.js
+++ b/src/assets/javascripts/peertube.js
@@ -11,7 +11,9 @@ let redirects = {
             "https://st.phreedom.club",
             "https://simpleertube.esmailelbob.xyz",
         ],
-        "tor": []
+        "tor": [],
+        "i2p": [],
+        "loki": []
     }
 }
 function setRedirects(val) {
@@ -159,8 +161,10 @@ function initDefaults() {
                     simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor],
                     simpleertubeTorCustomRedirects: [],
 
+                    simpleertubeI2pRedirectsChecks: [...redirects.simpleertube.i2p],
                     simpleertubeI2pCustomRedirects: [],
 
+                    simpleertubeLokiRedirectsChecks: [...redirects.simpleertube.loki],
                     simpleertubeLokiCustomRedirects: []
                 }, () => resolve());
             })
diff --git a/src/assets/javascripts/quora.js b/src/assets/javascripts/quora.js
index db2cff85..fed321de 100644
--- a/src/assets/javascripts/quora.js
+++ b/src/assets/javascripts/quora.js
@@ -173,8 +173,10 @@ function initDefaults() {
                 quetreTorRedirectsChecks: [...redirects.quetre.tor],
                 quetreTorCustomRedirects: [],
 
+                quetreI2pRedirectsChecks: [...redirects.quetre.i2p],
                 quetreI2pCustomRedirects: [],
 
+                quetreLokiRedirectsChecks: [...redirects.quetre.loki],
                 quetreLokiCustomRedirects: []
             }, () => resolve());
         });
diff --git a/src/assets/javascripts/reddit.js b/src/assets/javascripts/reddit.js
index 510ec469..bc7b687f 100644
--- a/src/assets/javascripts/reddit.js
+++ b/src/assets/javascripts/reddit.js
@@ -12,10 +12,10 @@ const frontends = new Array("libreddit", "teddit")
 const protocols = new Array("normal", "tor", "i2p", "loki")
 
 for (let i = 0; i < frontends.length; i++) {
-    redirects[frontends[i]] = {}
-    for (let x = 0; x < protocols.length; x++) {
-        redirects[frontends[i]][protocols[x]] = []
-    }
+  redirects[frontends[i]] = {}
+  for (let x = 0; x < protocols.length; x++) {
+    redirects[frontends[i]][protocols[x]] = []
+  }
 }
 
 function setRedirects(val) {
@@ -44,16 +44,23 @@ let
   redditRedirects,
   protocol,
   protocolFallback,
+
   libredditNormalRedirectsChecks,
   libredditNormalCustomRedirects,
+
   libredditTorRedirectsChecks,
   libredditTorCustomRedirects,
+
   libredditI2pCustomRedirects,
+
   libredditLokiCustomRedirects,
+
   tedditNormalRedirectsChecks,
   tedditNormalCustomRedirects,
+
   tedditTorRedirectsChecks,
   tedditTorCustomRedirects,
+
   tedditI2pCustomRedirects,
   tedditLokiCustomRedirects;
 
@@ -411,8 +418,10 @@ function initDefaults() {
           libredditTorRedirectsChecks: [...redirects.libreddit.tor],
           libredditTorCustomRedirects: [],
 
+          libredditI2pRedirectsChecks: [...redirects.libreddit.i2p],
           libredditI2pCustomRedirects: [],
 
+          libredditLokiRedirectsChecks: [...redirects.libreddit.loki],
           libredditLokiCustomRedirects: [],
 
           tedditNormalRedirectsChecks: tedditNormalRedirectsChecks,
@@ -421,8 +430,10 @@ function initDefaults() {
           tedditTorRedirectsChecks: [...redirects.teddit.tor],
           tedditTorCustomRedirects: [],
 
+          tedditI2pRedirectsChecks: [...redirects.teddit.i2p],
           tedditI2pCustomRedirects: [],
 
+          tedditLokiRedirectsChecks: [...redirects.teddit.loki],
           tedditLokiCustomRedirects: []
         }, () => resolve());
       });
diff --git a/src/assets/javascripts/reuters.js b/src/assets/javascripts/reuters.js
index 01e47010..e1d18a40 100644
--- a/src/assets/javascripts/reuters.js
+++ b/src/assets/javascripts/reuters.js
@@ -136,8 +136,10 @@ function initDefaults() {
             neutersTorRedirectsChecks: [...redirects.neuters.tor],
             neutersTorCustomRedirects: [],
 
+            neutersI2pRedirectsChecks: [...redirects.neuters.i2p],
             neutersI2pCustomRedirects: [],
 
+            neutersLokiRedirectsChecks: [...redirects.neuters.loki],
             neutersLokiCustomRedirects: []
         }, () => resolve());
     });
diff --git a/src/assets/javascripts/search.js b/src/assets/javascripts/search.js
index 571df3c1..7644ad4b 100644
--- a/src/assets/javascripts/search.js
+++ b/src/assets/javascripts/search.js
@@ -613,9 +613,9 @@ function initDefaults() {
           whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p],
           whoogleI2pCustomRedirects: [],
 
+          whoogleLokiRedirectsChecks: [...redirects.whoogle.loki],
           whoogleLokiCustomRedirects: [],
 
-
           searxNormalRedirectsChecks: searxNormalRedirectsChecks,
           searxNormalCustomRedirects: [],
 
@@ -625,9 +625,9 @@ function initDefaults() {
           searxI2pRedirectsChecks: [...redirects.searx.i2p],
           searxI2pCustomRedirects: [],
 
+          searxLokiRedirectsChecks: [...redirects.searx.loki],
           searxLokiCustomRedirects: [],
 
-
           searxngNormalRedirectsChecks: searxngNormalRedirectsChecks,
           searxngNormalCustomRedirects: [],
 
@@ -637,9 +637,9 @@ function initDefaults() {
           searxngI2pRedirectsChecks: [...redirects.searxng.i2p],
           searxngI2pCustomRedirects: [],
 
+          searxngLokiRedirectsChecks: [...redirects.searxng.loki],
           searxngLokiCustomRedirects: [],
 
-
           librexNormalRedirectsChecks: librexNormalRedirectsChecks,
           librexNormalCustomRedirects: [],
 
@@ -649,6 +649,7 @@ function initDefaults() {
           librexI2pRedirectsChecks: [...redirects.librex.i2p],
           librexI2pCustomRedirects: [],
 
+          librexLokiRedirectsChecks: [...redirects.librex.loki],
           librexLokiCustomRedirects: []
         }, () => resolve())
       })
diff --git a/src/assets/javascripts/sendTargets.js b/src/assets/javascripts/sendTargets.js
index e414298a..2ea95d21 100644
--- a/src/assets/javascripts/sendTargets.js
+++ b/src/assets/javascripts/sendTargets.js
@@ -161,8 +161,10 @@ function initDefaults() {
                     sendTorRedirectsChecks: [...redirects.send.tor],
                     sendTorCustomRedirects: [],
 
+                    sendI2pRedirectsChecks: [...redirects.send.i2p],
                     sendI2pCustomRedirects: [],
 
+                    sendLokiRedirectsChecks: [...redirects.send.loki],
                     sendLokiCustomRedirects: []
                 }, () => resolve())
             })
diff --git a/src/assets/javascripts/tiktok.js b/src/assets/javascripts/tiktok.js
index ac35910d..a5c14a27 100644
--- a/src/assets/javascripts/tiktok.js
+++ b/src/assets/javascripts/tiktok.js
@@ -219,8 +219,10 @@ function initDefaults() {
                 proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor],
                 proxiTokTorCustomRedirects: [],
 
+                proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p],
                 proxiTokI2pCustomRedirects: [],
 
+                proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki],
                 proxiTokLokiCustomRedirects: []
             }, () => resolve());
         });
diff --git a/src/assets/javascripts/translate/translate.js b/src/assets/javascripts/translate/translate.js
index 0dc0f73b..75c5b5f8 100644
--- a/src/assets/javascripts/translate/translate.js
+++ b/src/assets/javascripts/translate/translate.js
@@ -340,18 +340,26 @@ function initDefaults() {
 
             simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal],
             simplyTranslateNormalCustomRedirects: [],
+            
             simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor],
             simplyTranslateTorCustomRedirects: [],
+            
             simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p],
             simplyTranslateI2pCustomRedirects: [],
+            
             simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki],
             simplyTranslateLokiCustomRedirects: [],
 
             lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks,
             lingvaNormalCustomRedirects: [],
+
             lingvaTorRedirectsChecks: [...redirects.lingva.tor],
             lingvaTorCustomRedirects: [],
+
+            lingvaI2pRedirectsChecks: [...redirects.lingva.i2p],
             lingvaI2pCustomRedirects: [],
+
+            lingvaLokiRedirectsChecks: [...redirects.lingva.loki],
             lingvaLokiCustomRedirects: []
           }, () => resolve())
         })
diff --git a/src/assets/javascripts/twitter.js b/src/assets/javascripts/twitter.js
index 42243a66..0a851923 100644
--- a/src/assets/javascripts/twitter.js
+++ b/src/assets/javascripts/twitter.js
@@ -278,8 +278,10 @@ function initDefaults() {
           nitterTorRedirectsChecks: [...redirects.nitter.tor],
           nitterTorCustomRedirects: [],
 
+          nitterI2pRedirectsChecks: [...redirects.nitter.i2p],
           nitterI2pCustomRedirects: [],
 
+          nitterLokiRedirectsChecks: [...redirects.nitter.loki],
           nitterLokiCustomRedirects: []
         }, () => resolve());
       })
diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js
index b04024e8..f9225729 100644
--- a/src/assets/javascripts/utils.js
+++ b/src/assets/javascripts/utils.js
@@ -92,7 +92,7 @@ async function processDefaultCustomInstances(target, name, protocol, document) {
   let redirects;
 
   async function getFromStorage() {
-    return new Promise(async resolve => {
+    return new Promise(async resolve =>
       browser.storage.local.get(
         [
           redirectsChecks,
@@ -108,9 +108,11 @@ async function processDefaultCustomInstances(target, name, protocol, document) {
           resolve();
         }
       )
-    })
+    )
   }
+  
   await getFromStorage();
+  if (nameCustomInstances === undefined) console.log(customRedirects);
 
   function calcNameCheckBoxes() {
     let isTrue = true;
diff --git a/src/assets/javascripts/wikipedia.js b/src/assets/javascripts/wikipedia.js
index 2d9384f0..d2ba7de8 100644
--- a/src/assets/javascripts/wikipedia.js
+++ b/src/assets/javascripts/wikipedia.js
@@ -217,13 +217,19 @@ function initDefaults() {
         browser.storage.local.set({
           disableWikipedia: true,
           wikipediaRedirects: redirects,
+          
           wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks,
-          wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
-          wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p],
           wikilessNormalCustomRedirects: [],
+          
+          wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
           wikilessTorCustomRedirects: [],
+          
+          wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p],
           wikilessI2pCustomRedirects: [],
+          
+          wikilessLokiRedirectsChecks: [...redirects.wikiless.loki],
           wikilessLokiCustomRedirects: []
+          
         }, () => resolve());
       })
     })
diff --git a/src/assets/javascripts/youtube/youtube.js b/src/assets/javascripts/youtube/youtube.js
index ffc08ed5..669b26d5 100644
--- a/src/assets/javascripts/youtube/youtube.js
+++ b/src/assets/javascripts/youtube/youtube.js
@@ -23,10 +23,10 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
 let redirects = {};
 
 for (let i = 0; i < frontends.length; i++) {
-    redirects[frontends[i]] = {}
-    for (let x = 0; x < protocols.length; x++) {
-        redirects[frontends[i]][protocols[x]] = []
-    }
+  redirects[frontends[i]] = {}
+  for (let x = 0; x < protocols.length; x++) {
+    redirects[frontends[i]][protocols[x]] = []
+  }
 }
 
 function setRedirects(val) {
@@ -81,7 +81,7 @@ let
   pipedLokiCustomRedirects,
   pipedMaterialNormalRedirectsChecks,
   pipedMaterialNormalCustomRedirects,
-  // pipedMaterialTorRedirectsChecks,
+  pipedMaterialTorRedirectsChecks,
   pipedMaterialTorCustomRedirects,
   pipedMaterialI2pCustomRedirects,
   pipedMaterialLokiCustomRedirects;
@@ -111,7 +111,7 @@ function init() {
         "pipedLokiCustomRedirects",
         "pipedMaterialNormalRedirectsChecks",
         "pipedMaterialNormalCustomRedirects",
-        // "pipedMaterialTorRedirectsChecks",
+        "pipedMaterialTorRedirectsChecks",
         "pipedMaterialTorCustomRedirects",
         "pipedMaterialI2pCustomRedirects",
         "pipedMaterialLokiCustomRedirects"
@@ -138,7 +138,7 @@ function init() {
         pipedLokiCustomRedirects = r.pipedLokiCustomRedirects;
         pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks;
         pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects;
-        // pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks;
+        pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks;
         pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects;
         pipedMaterialI2pCustomRedirects - r.pipedMaterialI2pCustomRedirects;
         pipedMaterialLokiCustomRedirects = r.pipedMaterialLokiCustomRedirects;
@@ -160,7 +160,7 @@ function all() {
     ...youtubeRedirects.piped.tor,
 
     ...youtubeRedirects.pipedMaterial.normal,
-    //...youtubeRedirects.pipedMaterial.tor,
+    ...youtubeRedirects.pipedMaterial.tor,
 
     ...invidiousNormalCustomRedirects,
     ...invidiousTorCustomRedirects,
@@ -320,9 +320,7 @@ function initDefaults() {
           disableYoutube: false,
           enableYoutubeCustomSettings: false,
           onlyEmbeddedVideo: 'both',
-
           youtubeRedirects: redirects,
-
           youtubeFrontend: 'invidious',
 
           invidiousNormalRedirectsChecks: invidiousNormalRedirectsChecks,
@@ -331,8 +329,10 @@ function initDefaults() {
           invidiousTorRedirectsChecks: [...redirects.invidious.tor],
           invidiousTorCustomRedirects: [],
 
+          invidiousI2pRedirectsChecks: [...redirects.invidious.i2p],
           invidiousI2pCustomRedirects: [],
 
+          invidiousLokiRedirectsChecks: [...redirects.invidious.loki],
           invidiousLokiCustomRedirects: [],
 
           pipedNormalRedirectsChecks: pipedNormalRedirectsChecks,
@@ -341,18 +341,22 @@ function initDefaults() {
           pipedTorRedirectsChecks: [...redirects.piped.tor],
           pipedTorCustomRedirects: [],
 
+          pipedI2pRedirectsChecks: [...redirects.piped.i2p],
           pipedI2pCustomRedirects: [],
 
+          pipedLokiRedirectsChecks: [...redirects.piped.loki],
           pipedLokiCustomRedirects: [],
 
           pipedMaterialNormalRedirectsChecks: pipedMaterialNormalRedirectsChecks,
           pipedMaterialNormalCustomRedirects: [],
 
-          //pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor],
+          pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor],
           pipedMaterialTorCustomRedirects: [],
 
+          pipedMaterialI2pRedirectsChecks: [...redirects.pipedMaterial.i2p],
           pipedMaterialI2pCustomRedirects: [],
 
+          pipedMaterialLokiRedirectsChecks: [...redirects.pipedMaterial.loki],
           pipedMaterialLokiCustomRedirects: [],
 
           youtubeEmbedFrontend: 'invidious'
diff --git a/src/assets/javascripts/youtubeMusic.js b/src/assets/javascripts/youtubeMusic.js
index 4a63911b..46caf60e 100644
--- a/src/assets/javascripts/youtubeMusic.js
+++ b/src/assets/javascripts/youtubeMusic.js
@@ -117,10 +117,13 @@ async function initDefaults() {
             beatbumpNormalRedirectsChecks: [...redirects.beatbump.normal],
             beatbumpNormalCustomRedirects: [],
 
+            beatbumpTorRedirectsChecks: [...redirects.beatbump.tor],
             beatbumpTorCustomRedirects: [],
 
+            beatbumpI2pRedirectsChecks: [...redirects.beatbump.i2p],
             beatbumpI2pCustomRedirects: [],
 
+            beatbumpLokiRedirectsChecks: [...redirects.beatbump.loki],
             beatbumpLokiCustomRedirects: []
         }, () => resolve())
     )
diff --git a/src/instances/blacklist.json b/src/instances/blacklist.json
index 021c9e51..5819fb7d 100644
--- a/src/instances/blacklist.json
+++ b/src/instances/blacklist.json
@@ -47,7 +47,6 @@
     "https://search.garudalinux.org",
     "https://search.dr460nf1r3.org",
     "https://search.wef.lol",
-    "https://librex.catalyst.sx",
     "https://i.actionsack.com",
     "https://rimgo.encrypted-data.xyz"
   ],
diff --git a/src/instances/data.json b/src/instances/data.json
index ed734e63..a532260f 100644
--- a/src/instances/data.json
+++ b/src/instances/data.json
@@ -17,9 +17,9 @@
       "https://inv.vern.cc",
       "https://invidious.nerdvpn.de",
       "https://invidious.slipfox.xyz",
-      "https://invidious.weblibre.org",
-      "https://invidious.esmailelbob.xyz",
       "https://youtube.076.ne.jp",
+      "https://invidious.esmailelbob.xyz",
+      "https://invidious.weblibre.org",
       "https://invidious.namazso.eu"
     ],
     "tor": [
@@ -32,7 +32,9 @@
       "http://euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd.onion",
       "http://invidious.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onion",
       "http://inv.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion"
-    ]
+    ],
+    "i2p": [],
+    "loki": []
   },
   "piped": {
     "normal": [
@@ -51,7 +53,9 @@
     ],
     "tor": [
       "http://piped2bbch4xslbl2ckr6k62q56kon56ffowxaqzy42ai22a4sash3ad.onion"
-    ]
+    ],
+    "i2p": [],
+    "loki": []
   },
   "pipedMaterial": {
     "normal": [
@@ -59,15 +63,21 @@
       "https://piped-material.ftp.sh",
       "https://piped-staging.ftp.sh",
       "https://ui.piped.১.net"
-    ]
+    ],
+    "tor": [],
+    "i2p": [],
+    "loki": []
   },
   "proxiTok": {
     "normal": [
       "https://proxitok.herokuapp.com",
       "https://proxitok.pussthecat.org",
-      "https://proxitok.privacydev.net"
+      "https://proxitok.privacydev.net",
+      "https://tok.habedieeh.re"
     ],
-    "tor": []
+    "tor": [],
+    "i2p": [],
+    "loki": []
   },
   "send": {
     "normal": [
@@ -89,7 +99,9 @@
       "https://bytefile.de",
       "https://transfer.acted.org"
     ],
-    "tor": []
+    "tor": [],
+    "i2p": [],
+    "loki": []
   },
   "nitter": {
     "normal": [
@@ -160,7 +172,8 @@
       "https://india.unofficialbird.com",
       "https://nederland.unofficialbird.com",
       "https://uk.unofficialbird.com",
-      "https://n.l5.ca"
+      "https://n.l5.ca",
+      "https://nitter.slipfox.xyz"
     ],
     "tor": [
       "http://3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad.onion",
@@ -188,7 +201,9 @@
       "http://nitter.privpw3tndpkw6pnp3g727zfgfdzbu3k6a7chv226s3xymv2p4eiuqyd.onion",
       "http://aaaaaxx74hbzeibageieowryhsqvimbdiitfkfe47tvgawkwkjh3coqd.onion",
       "http://wiio4sgs4247brk7hj6qck2jxnvldwfdbguigc5ivpxrsegnliyfvuqd.onion"
-    ]
+    ],
+    "i2p": [],
+    "loki": []
   },
   "bibliogram": {
     "normal": [
@@ -206,7 +221,9 @@
       "https://ig.funami.tech",
       "https://bib.actionsack.com"
     ],
-    "tor": []
+    "tor": [],
+    "i2p": [],
+    "loki": []
   },
   "libreddit": {
     "normal": [
@@ -289,7 +306,9 @@
       "http://inz6tbezfwzexva6dize4cqraj2tjdhygxabmcgysccesvw2pybzhbyd.onion",
       "http://libreddit.micohauwkjbyw5meacrb4ipicwvwg4xtzl7y7viv53kig2mdcsvwkyyd.onion",
       "http://lr.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion"
-    ]
+    ],
+    "i2p": [],
+    "loki": []
   },
   "teddit": {
     "normal": [
@@ -323,7 +342,9 @@
       "http://tedditfyn6idalzso5wam5qd3kdtxoljjhbrbbx34q2xkcisvshuytad.onion",
       "http://dawtyi5e2cfyfmoht4izmczi42aa2zwh6wi34zwvc6rzf2acpxhrcrad.onion",
       "http://qtpvyiaqhmwccxwzsqubd23xhmmrt75tdyw35kp43w4hvamsgl3x27ad.onion"
-    ]
+    ],
+    "i2p": [],
+    "loki": []
   },
   "wikiless": {
     "normal": [
@@ -347,7 +368,8 @@
     "i2p": [
       "http://hflqp2ejxygpj6cdwo3ogfieqmxw3b56w7dblt7bor2ltwk6kcfa.b32.i2p",
       "http://x33lx4h6d7h6xs4eiqwhvaxn3ea5gn2ifmu3jobnvuvn4k4aej7a.b32.i2p"
-    ]
+    ],
+    "loki": []
   },
   "scribe": {
     "normal": [
@@ -357,7 +379,9 @@
       "https://scribe.bus-hit.me",
       "https://scribe.froth.zone"
     ],
-    "tor": []
+    "tor": [],
+    "i2p": [],
+    "loki": []
   },
   "quetre": {
     "normal": [
@@ -369,7 +393,9 @@
       "https://quetre.tokhmi.xyz",
       "https://quetre.projectsegfau.lt"
     ],
-    "tor": []
+    "tor": [],
+    "i2p": [],
+    "loki": []
   },
   "libremdb": {
     "normal": [
@@ -378,7 +404,9 @@
       "https://libremdbeu.herokuapp.com",
       "https://lmdb.tokhmi.xyz"
     ],
-    "tor": []
+    "tor": [],
+    "i2p": [],
+    "loki": []
   },
   "simplyTranslate": {
     "normal": [
@@ -420,22 +448,11 @@
       "https://lingva.lunar.icu",
       "https://lingva.opnxng.com"
     ],
-    "tor": []
+    "tor": [],
+    "i2p": [],
+    "loki": []
   },
   "searx": {
-    "tor": [
-      "http://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion",
-      "http://w5rl6wsd7mzj4bdkbuqvzidet5osdsm5jhg2f7nvfidakfq5exda5wid.onion",
-      "http://yra4tke2pwcnatxjkufpw6kvebu3h3ti2jca2lcdpgx3mpwol326lzid.onion",
-      "http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion",
-      "http://zbuc3bbzbfdqqo2x46repx2ddajbha6fpsjeeptjhhhhzji3zopxdqyd.onion",
-      "http://f4qfqajszpx5b7itzxt6mb7kj4ktpgbdq7lq6xaiqyqx6a7de3epptad.onion",
-      "http://4tz2vlnwk2apf2rpinkqv6uxvfgo5xjx6vl5vp7lxgaiooumetjpstqd.onion"
-    ],
-    "i2p": [
-      "http://ransack.i2p",
-      "http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p"
-    ],
     "normal": [
       "https://anon.sx",
       "https://dynabyte.ca",
@@ -476,23 +493,22 @@
       "https://sx.catgirl.cloud",
       "https://timdor.noip.me/searx",
       "https://searx.roflcopter.fr"
-    ]
-  },
-  "searxng": {
+    ],
     "tor": [
-      "http://4n53nafyi77iplnbrpmxnp3x4exbswwxigujaxy3b37fvr7bvlopxeyd.onion",
-      "http://x5gdjh6t7kb4yubpufhtc3l3df2acev3emxdasd5vyuyoon5rzf5zkyd.onion",
-      "http://search3q76rqpektbrchlf2rjq4fnbxzeov6rljdywg3nwbunpgd7bid.onion",
-      "http://searchoorwalty5a2ailrboa2asqyts2u7bdoqwnjefpgjobpvtzn4qd.onion",
-      "http://gbat2pbpg7ys3fi3pbp64667tt5x66mg45xok35bxdw7v55brm7a27yd.onion",
-      "http://searxdr3pqz4nydgnqocsia2xbywptxbkympa2emn7zlgggrir4bkfad.onion",
-      "http://searx.micohauwkjbyw5meacrb4ipicwvwg4xtzl7y7viv53kig2mdcsvwkyyd.onion",
-      "http://searx.privpw3tndpkw6pnp3g727zfgfdzbu3k6a7chv226s3xymv2p4eiuqyd.onion",
-      "http://rq2w52kyrif3xpfihkgjnhqm3a5aqhoikpv72z3drpjglfzc2wr5z4yd.onion",
-      "http://fub6vgedgeadlu3ctskrpkcqjruh76tckwtj5swfhyblgml2tzgzckqd.onion/searx",
-      "http://searx3aolosaf3urwnhpynlhuokqsgz47si4pzz5hvb7uuzyjncl2tid.onion"
+      "http://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion",
+      "http://w5rl6wsd7mzj4bdkbuqvzidet5osdsm5jhg2f7nvfidakfq5exda5wid.onion",
+      "http://yra4tke2pwcnatxjkufpw6kvebu3h3ti2jca2lcdpgx3mpwol326lzid.onion",
+      "http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion",
+      "http://zbuc3bbzbfdqqo2x46repx2ddajbha6fpsjeeptjhhhhzji3zopxdqyd.onion",
+      "http://f4qfqajszpx5b7itzxt6mb7kj4ktpgbdq7lq6xaiqyqx6a7de3epptad.onion"
     ],
-    "i2p": [],
+    "i2p": [
+      "http://ransack.i2p",
+      "http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p"
+    ],
+    "loki": []
+  },
+  "searxng": {
     "normal": [
       "https://darmarit.org/searx",
       "https://de.xcxc.ml",
@@ -524,6 +540,7 @@
       "https://search.sapti.me",
       "https://search.teamriverbubbles.com",
       "https://search.unlocked.link",
+      "https://search.vidhukant.xyz",
       "https://search.zzls.xyz",
       "https://searx.be",
       "https://searx.becomesovran.com",
@@ -558,7 +575,23 @@
       "https://www.gruble.de",
       "https://www.webrats.xyz",
       "https://xcxc.ml"
-    ]
+    ],
+    "tor": [
+      "http://4n53nafyi77iplnbrpmxnp3x4exbswwxigujaxy3b37fvr7bvlopxeyd.onion",
+      "http://x5gdjh6t7kb4yubpufhtc3l3df2acev3emxdasd5vyuyoon5rzf5zkyd.onion",
+      "http://search3q76rqpektbrchlf2rjq4fnbxzeov6rljdywg3nwbunpgd7bid.onion",
+      "http://searchoorwalty5a2ailrboa2asqyts2u7bdoqwnjefpgjobpvtzn4qd.onion",
+      "http://gbat2pbpg7ys3fi3pbp64667tt5x66mg45xok35bxdw7v55brm7a27yd.onion",
+      "http://searxdr3pqz4nydgnqocsia2xbywptxbkympa2emn7zlgggrir4bkfad.onion",
+      "http://searx.micohauwkjbyw5meacrb4ipicwvwg4xtzl7y7viv53kig2mdcsvwkyyd.onion",
+      "http://searx.privpw3tndpkw6pnp3g727zfgfdzbu3k6a7chv226s3xymv2p4eiuqyd.onion",
+      "http://rq2w52kyrif3xpfihkgjnhqm3a5aqhoikpv72z3drpjglfzc2wr5z4yd.onion",
+      "http://fub6vgedgeadlu3ctskrpkcqjruh76tckwtj5swfhyblgml2tzgzckqd.onion/searx",
+      "http://searx3aolosaf3urwnhpynlhuokqsgz47si4pzz5hvb7uuzyjncl2tid.onion",
+      "http://4tz2vlnwk2apf2rpinkqv6uxvfgo5xjx6vl5vp7lxgaiooumetjpstqd.onion"
+    ],
+    "i2p": [],
+    "loki": []
   },
   "whoogle": {
     "normal": [
@@ -577,7 +610,8 @@
       "https://search.wef.lol"
     ],
     "tor": [],
-    "i2p": []
+    "i2p": [],
+    "loki": []
   },
   "librex": {
     "normal": [
@@ -592,7 +626,8 @@
     ],
     "i2p": [
       "http://fboseyskrqpi6yjiifvz4ryuoiswjezkqsfxfkm2vmbuhehbpr7q.b32.i2p"
-    ]
+    ],
+    "loki": []
   },
   "rimgo": {
     "normal": [
@@ -613,7 +648,8 @@
       "http://rimgo.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion",
       "http://rimgo.micohauwkjbyw5meacrb4ipicwvwg4xtzl7y7viv53kig2mdcsvwkyyd.onion"
     ],
-    "i2p": []
+    "i2p": [],
+    "loki": []
   },
   "librarian": {
     "normal": [
@@ -628,7 +664,8 @@
       "http://librarian.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onion",
       "http://lbry.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion"
     ],
-    "i2p": []
+    "i2p": [],
+    "loki": []
   },
   "peertube": [
     "https://pire.artisanlogiciel.net",
@@ -779,7 +816,6 @@
     "https://turkum.me",
     "https://video.colibris-outilslibres.org",
     "https://invoice.peertube.biz",
-    "https://vnhup.com",
     "https://peertube.chantierlibre.org",
     "https://video.9wd.eu",
     "https://video.niboe.info",
@@ -1116,7 +1152,6 @@
     "https://video.rubdos.be",
     "https://tube.tuxfriend.fr",
     "https://anarchy.tube",
-    "https://nsfw.vger.cloud",
     "https://tube.elemac.fr",
     "https://tube.nocturlab.fr",
     "https://videos.optoutpod.com",
@@ -1216,7 +1251,6 @@
     "https://libra.syntazia.org",
     "https://peertube.beeldengeluid.nl",
     "https://tv.lumbung.space",
-    "https://vid.dascoyote.xyz",
     "https://peertube.cuatrolibertades.org",
     "https://videos.hush.is",
     "https://tube.ebin.club",
@@ -1283,7 +1317,6 @@
     "https://videos.benjaminbrady.ie",
     "https://video.binarydad.com",
     "https://tube.pmj.rocks",
-    "https://gary.vger.cloud",
     "https://video.guerredeclasse.fr",
     "https://ptmir4.inter21.net",
     "https://ptmir3.inter21.net",
@@ -1675,6 +1708,10 @@
     "https://video.tedomum.net",
     "https://video.g3l.org",
     "https://fontube.fr",
-    "https://peertube.gaialabs.ch"
+    "https://peertube.gaialabs.ch",
+    "https://peertube.qtg.fr",
+    "https://tube.p2p.legal",
+    "https://troll.tv",
+    "https://videos.iut-orsay.fr"
   ]
 }
\ No newline at end of file
diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py
index 1d1334a8..b8970ee8 100644
--- a/src/instances/get_instances.py
+++ b/src/instances/get_instances.py
@@ -87,6 +87,8 @@ def invidious():
     invidiousList = {}
     invidiousList['normal'] = []
     invidiousList['tor'] = []
+    invidiousList['i2p'] = []
+    invidiousList['loki'] = []
     for instance in rJson:
         if instance[1]['type'] == 'https':
             invidiousList['normal'].append(instance[1]['uri'])
@@ -112,6 +114,8 @@ def pipedMaterial():
     pipedMaterialList = {}
     pipedMaterialList['normal'] = []
     pipedMaterialList['tor'] = []
+    pipedMaterialList['i2p'] = []
+    pipedMaterialList['loki'] = []
     for item in tmp:
         pipedMaterialList['normal'].append(item)
     mightyList['pipedMaterial'] = pipedMaterialList
@@ -127,6 +131,8 @@ def proxitok():
     proxiTokList = {}
     proxiTokList['normal'] = []
     proxiTokList['tor'] = []
+    proxiTokList['i2p'] = []
+    proxiTokList['loki'] = []
     for item in tmp:
         proxiTokList['normal'].append(re.sub(r'/$', '', item))
     mightyList['proxiTok'] = proxiTokList
@@ -141,6 +147,8 @@ def send():
     sendList = {}
     sendList['normal'] = []
     sendList['tor'] = []
+    sendList['i2p'] = []
+    sendList['loki'] = []
     for item in tmp:
         sendList['normal'].append(item)
     mightyList['send'] = sendList
@@ -157,6 +165,8 @@ def nitter():
     nitterList = {}
     nitterList['normal'] = []
     nitterList['tor'] = []
+    nitterList['i2p'] = []
+    nitterList['loki'] = []
     for table in tables:
         tbody = table.find('tbody')
         trs = tbody.find_all('tr')
@@ -180,6 +190,8 @@ def bibliogram():
     bibliogramList = {}
     bibliogramList['normal'] = []
     bibliogramList['tor'] = []
+    bibliogramList['i2p'] = []
+    bibliogramList['loki'] = []
     for item in rJson['data']:
         bibliogramList['normal'].append(item['address'])
     mightyList['bibliogram'] = bibliogramList
@@ -192,6 +204,8 @@ def libreddit():
     libredditList = {}
     libredditList['normal'] = []
     libredditList['tor'] = []
+    libredditList['i2p'] = []
+    libredditList['loki'] = []
 
     tmp = re.findall(
         r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|", r.text)
@@ -212,6 +226,8 @@ def teddit():
     tedditList = {}
     tedditList['normal'] = []
     tedditList['tor'] = []
+    tedditList['i2p'] = []
+    tedditList['loki'] = []
     for item in rJson:
         url = item['url']
         if url != '':
@@ -232,6 +248,7 @@ def wikiless():
     wikilessList['normal'] = []
     wikilessList['tor'] = []
     wikilessList['i2p'] = []
+    wikilessList['loki'] = []
     for item in rJson:
         if 'url' in item:
             if item['url'].strip() != "":
@@ -253,6 +270,8 @@ def scribe():
     scribeList = {}
     scribeList['normal'] = []
     scribeList['tor'] = []
+    scribeList['i2p'] = []
+    scribeList['loki'] = []
     for item in rJson:
         scribeList['normal'].append(item)
     mightyList['scribe'] = scribeList
@@ -265,6 +284,8 @@ def quetre():
     _list = {}
     _list['normal'] = []
     _list['tor'] = []
+    _list['i2p'] = []
+    _list['loki'] = []
 
     tmp = re.findall(
         r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|", r.text)
@@ -285,6 +306,8 @@ def libremdb():
     _list = {}
     _list['normal'] = []
     _list['tor'] = []
+    _list['i2p'] = []
+    _list['loki'] = []
 
     tmp = re.findall(
         r"\| ([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)*\|*[A-Z]{0,}.*\|.*\|", r.text)
@@ -335,6 +358,8 @@ def linvgatranslate():
     lingvaList = {}
     lingvaList['normal'] = []
     lingvaList['tor'] = []
+    lingvaList['i2p'] = []
+    lingvaList['loki'] = []
     for item in rJson:
         lingvaList['normal'].append(item)
 
@@ -346,13 +371,15 @@ def searx_searxng():
     r = requests.get('https://searx.space/data/instances.json')
     rJson = json.loads(r.text)
     searxList = {}
+    searxList['normal'] = []
     searxList['tor'] = []
     searxList['i2p'] = []
-    searxList['normal'] = []
+    searxList['loki'] = []
     searxngList = {}
+    searxngList['normal'] = []
     searxngList['tor'] = []
     searxngList['i2p'] = []
-    searxngList['normal'] = []
+    searxngList['loki'] = []
     for item in rJson['instances']:
         if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item[:-1]):
             if (rJson['instances'][item].get('generator') == 'searxng'):
@@ -383,6 +410,7 @@ def whoogle():
     whoogleList['normal'] = []
     whoogleList['tor'] = []
     whoogleList['i2p'] = []
+    whoogleList['loki'] = []
     for item in tmpList:
         if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item):
             whoogleList['tor'].append(item)
@@ -401,6 +429,7 @@ def librex():
     _list['normal'] = []
     _list['tor'] = []
     _list['i2p'] = []
+    _list['loki'] = []
 
     tmp = re.findall(
             r"\| {1,2}\[(?:(?:[a-zA-Z0-9]+\.)+[a-zA-Z]{2,}|✅)\]\((https?:\/{2}(?:[a-zA-Z0-9]+\.)+[a-zA-Z0-9]{2,})", r.text)
@@ -426,6 +455,7 @@ def rimgo():
     rimgoList['normal'] = []
     rimgoList['tor'] = []
     rimgoList['i2p'] = []
+    rimgoList['loki'] = []
     for item in rJson:
         if 'url' in item:
             rimgoList['normal'].append(item['url'])
@@ -445,6 +475,7 @@ def librarian():
     librarianList['normal'] = []
     librarianList['tor'] = []
     librarianList['i2p'] = []
+    librarianList['loki'] = []
     instances = rJson['instances']
     for item in instances:
         url = item['url']
diff --git a/src/instances/piped.json b/src/instances/piped.json
index 49619bd3..2f742ff9 100644
--- a/src/instances/piped.json
+++ b/src/instances/piped.json
@@ -15,5 +15,7 @@
   ],
   "tor": [
     "http://piped2bbch4xslbl2ckr6k62q56kon56ffowxaqzy42ai22a4sash3ad.onion"
-  ]
-}
+  ],
+  "i2p": [],
+  "loki": []
+}
\ No newline at end of file
diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js
index 0f7a3140..352e4b76 100644
--- a/src/pages/options/widgets/general.js
+++ b/src/pages/options/widgets/general.js
@@ -42,7 +42,7 @@ function exportSettings() {
     null,
     result => {
       let resultString = JSON.stringify(result, null, '  ');
-      exportSettingsElement.href = 'data:application/json;base64,' + btoa(resultString);
+      exportSettingsElement.href = 'data:application/json;base64,' + btoa(encodeURI(resultString));
       exportSettingsElement.download = 'libredirect-settings.json';
     }
   );
@@ -171,7 +171,7 @@ protocolElement.addEventListener("change", event => {
 
 let protocolFallbackCheckbox = document.getElementById("protocol-fallback-checkbox")
 protocolFallbackCheckbox.addEventListener("change", event => {
-  browser.storage.local.set({ protocolFallback: event.target.checked});
+  browser.storage.local.set({ protocolFallback: event.target.checked });
 })
 
 let nameCustomInstanceInput = document.getElementById("exceptions-custom-instance");
@@ -210,7 +210,7 @@ browser.storage.local.get(
     protocolElement.value = r.protocol;
     protocolFallbackCheckbox.checked = r.protocolFallback;
     // firstPartyIsolate.checked = r.firstPartyIsolate;
-     
+
     let protocolFallbackElement = document.getElementById('protocol-fallback')
     if (protocolElement.value == "normal") {
       protocolFallbackElement.style.display = 'none';