From a9f95b3d1de44edf205508233a3526246842bbf3 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Fri, 4 Feb 2022 18:48:24 +0300 Subject: Cleaning and refining settings --- src/assets/javascripts/helpers/common.js | 2 +- src/assets/javascripts/helpers/instagram.js | 11 +- src/assets/javascripts/helpers/medium.js | 4 +- src/assets/javascripts/helpers/reddit.js | 8 + src/assets/javascripts/helpers/rimgo.js | 14 + src/assets/javascripts/helpers/search.js | 53 ++- src/assets/javascripts/helpers/translate.js | 5 + src/assets/javascripts/helpers/twitter.js | 54 +++- src/assets/javascripts/helpers/wikipedia.js | 8 +- src/assets/javascripts/helpers/youtube.js | 354 --------------------- .../helpers/youtube/invidious-cookies.js | 38 +++ src/assets/javascripts/helpers/youtube/youtube.js | 325 +++++++++++++++++++ 12 files changed, 478 insertions(+), 398 deletions(-) create mode 100644 src/assets/javascripts/helpers/rimgo.js delete mode 100644 src/assets/javascripts/helpers/youtube.js create mode 100644 src/assets/javascripts/helpers/youtube/invidious-cookies.js create mode 100644 src/assets/javascripts/helpers/youtube/youtube.js (limited to 'src/assets/javascripts') 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.js b/src/assets/javascripts/helpers/youtube.js deleted file mode 100644 index 30f7a4b5..00000000 --- a/src/assets/javascripts/helpers/youtube.js +++ /dev/null @@ -1,354 +0,0 @@ -"use strict"; - -import commonHelper from './common.js' - -window.browser = window.browser || window.chrome; - -const targets = [ - "m.youtube.com", - "youtube.com", - "img.youtube.com", - "www.youtube.com", - "youtube-nocookie.com", - "www.youtube-nocookie.com", - "youtu.be", - "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://vid.puffyan.us", - "https://dev.viewtube.io", - "https://invidious.048596.xyz", - ], - "onion": [ - "http://fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad.onion", - "http://qklhadlycap4cnod.onion", - "http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion", - "http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion", - ] - }, - "piped": { - "normal": [ - "https://piped.kavin.rocks", - "https://piped.silkky.cloud", - "https://piped.tokhmi.xyz", - "https://piped.mint.lgbt", - ] - } -}; - -const getRedirects = () => redirects; - -function setInvidiousRedirects(val) { - redirects.invidious = val; - browser.storage.sync.set({ youtubeRedirects: redirects }) - console.log("invidiousRedirects: ", val) -} - -function setPipedRedirects(val) { - redirects.piped = val; - browser.storage.sync.set({ youtubeRedirects: redirects }) - console.log("pipedRedirects: ", val) -} - -let disableYoutube; -const getDisableYoutube = () => disableYoutube; -function setDisableYoutube(val) { - disableYoutube = val; - browser.storage.sync.set({ disableYoutube }) - console.log("disableYoutube: ", disableYoutube) -} - -let invidiousInstance; -const getInvidiousInstance = () => invidiousInstance; -function setInvidiousInstance(val) { - invidiousInstance = val; - browser.storage.sync.set({ invidiousInstance }) - console.log("invidiousInstance: ", invidiousInstance) -} - -let invidiousAlwaysProxy; -function setInvidiousAlwaysProxy(val) { - invidiousAlwaysProxy = val; - browser.storage.sync.set({ invidiousAlwaysProxy }) - console.log("invidiousAlwaysProxy: ", invidiousAlwaysProxy); -} -const getInvidiousAlwaysProxy = () => invidiousAlwaysProxy; - -let invidiousOnlyEmbeddedVideo; -function setInvidiousOnlyEmbeddedVideo(val) { - invidiousOnlyEmbeddedVideo = val; - browser.storage.sync.set({ invidiousOnlyEmbeddedVideo }) - console.log("invidiousOnlyEmbeddedVideo: ", invidiousOnlyEmbeddedVideo) -} -const getInvidiousOnlyEmbeddedVideo = () => invidiousOnlyEmbeddedVideo; - -let invidiousVideoQuality; -function setInvidiousVideoQuality(val) { - invidiousVideoQuality = val; - browser.storage.sync.set({ invidiousVideoQuality }) - console.log("invidiousVideoQuality: ", invidiousVideoQuality) -} -const getInvidiousVideoQuality = () => invidiousVideoQuality; - -let invidiousDarkMode; -const getInvidiousDarkMode = () => invidiousDarkMode; -function setInvidiousDarkMode(val) { - invidiousDarkMode = val; - browser.storage.sync.set({ invidiousDarkMode }) - console.log("invidiousDarkMode: ", invidiousDarkMode) -} - -let invidiousVolume; -const getInvidiousVolume = () => invidiousVolume; -function setInvidiousVolume(val) { - invidiousVolume = val; - browser.storage.sync.set({ invidiousVolume }) - console.log("invidiousVolume: ", invidiousVolume) -} - -let invidiousPlayerStyle; -const getInvidiousPlayerStyle = () => invidiousPlayerStyle; -function setInvidiousPlayerStyle(val) { - invidiousPlayerStyle = val; - browser.storage.sync.set({ invidiousPlayerStyle }) - console.log("invidiousPlayerStyle: ", invidiousPlayerStyle) -} - -let invidiousSubtitles; -let getInvidiousSubtitles = () => invidiousSubtitles; -function setInvidiousSubtitles(val) { - invidiousSubtitles = val; - browser.storage.sync.set({ invidiousSubtitles }) - console.log("invidiousSubtitles: ", invidiousSubtitles) -} - -let invidiousAutoplay; -const getInvidiousAutoplay = () => invidiousAutoplay; -function setInvidiousAutoplay(val) { - invidiousAutoplay = val; - browser.storage.sync.set({ invidiousAutoplay }) - console.log("invidiousAutoplay: ", invidiousAutoplay) -} - - -let frontend; -const getFrontend = () => frontend; -function setFrontend(val) { - frontend = val; - browser.storage.sync.set({ youtubeFrontend: val }) - console.log("youtubeFrontend: ", val) -} - -let useFreeTube; -function setUseFreeTube(val) { - useFreeTube = val; - browser.storage.sync.set({ useFreeTube }) - console.log("useFreeTube: ", useFreeTube) -} -const getUseFreeTube = () => useFreeTube; - -let persistInvidiousPrefs; -function setPersistInvidiousPrefs(val) { - persistInvidiousPrefs = val; - browser.storage.sync.set({ persistInvidiousPrefs }) - console.log("persistInvidiousPrefs: ", persistInvidiousPrefs) - if (persistInvidiousPrefs) initInvidiousCookie() -} -const getPersistInvidiousPrefs = () => persistInvidiousPrefs; - -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( - [ - "invidiousAlwaysProxy", - "invidiousVideoQuality", - "invidiousDarkMode", - "persistInvidiousPrefs", - "disableYoutube", - "invidiousInstance", - "invidiousAlwaysProxy", - "invidiousOnlyEmbeddedVideo", - "invidiousVideoQuality", - "invidiousDarkMode", - "invidiousVolume", - "invidiousPlayerStyle", - "invidiousSubtitles", - "invidiousAutoplay", - "useFreeTube", - "youtubeRedirects", - "youtubeFrontend", - ]); - disableYoutube = result.disableYoutube ?? false; - invidiousInstance = result.invidiousInstance; - invidiousAlwaysProxy = result.invidiousAlwaysProxy ?? true; - invidiousOnlyEmbeddedVideo = result.invidiousOnlyEmbeddedVideo ?? false; - invidiousVideoQuality = result.invidiousVideoQuality ?? 'medium'; - invidiousDarkMode = result.invidiousDarkMode ?? true; - invidiousVolume = result.invidiousVolume ?? 50; - invidiousPlayerStyle = result.invidiousPlayerStyle ?? 'invidious'; - invidiousSubtitles = result.invidiousSubtitles || ''; - invidiousAutoplay = result.invidiousAutoplay ?? true; - useFreeTube = result.useFreeTube ?? false; - - if (result.youtubeRedirects) - redirects = result.youtubeRedirects - - if (result.persistInvidiousPrefs) initInvidiousCookie(); - - frontend = result.youtubeFrontend ?? 'piped'; -} - -function redirect(url, initiator, type) { - if (disableYoutube) - return null; - - if ( - initiator && - ( - initiator.origin === invidiousInstance || - redirects.invidious.normal.includes(initiator.origin) || - redirects.piped.normal.includes(initiator.origin) || - targets.includes(initiator.host) - ) - ) - return null; - - 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 (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); - - let randomInstance = commonHelper.getRandomInstance(redirects.invidious.normal) - - return `${randomInstance}${url.pathname.replace("/shorts", "")}${url.search}`; - - } else if (frontend == 'piped') { - let randomInstance = commonHelper.getRandomInstance(redirects.piped.normal); - if (url.hostname.endsWith("youtube.com") || url.hostname.endsWith("youtube-nocookie.com")) - return `${randomInstance}${url.pathname}${url.search}`; - - if (url.hostname.endsWith("youtu.be") && url.pathname.length > 1) - return `${randomInstance}/watch?v=${url.pathname.substring(1)}`; - - } -} - - -export default { - getFrontend, - setFrontend, - - getRedirects, - setInvidiousRedirects, - setPipedRedirects, - - redirect, - isYoutube, - - getDisableYoutube, - setDisableYoutube, - - setInvidiousInstance, - getInvidiousInstance, - - setInvidiousAlwaysProxy, - getInvidiousAlwaysProxy, - - setInvidiousOnlyEmbeddedVideo, - getInvidiousOnlyEmbeddedVideo, - - setInvidiousVideoQuality, - getInvidiousVideoQuality, - - setInvidiousDarkMode, - getInvidiousDarkMode, - - setInvidiousVolume, - getInvidiousVolume, - - setInvidiousPlayerStyle, - getInvidiousPlayerStyle, - - setInvidiousSubtitles, - getInvidiousSubtitles, - - setInvidiousAutoplay, - getInvidiousAutoplay, - - getUseFreeTube, - setUseFreeTube, - - getPersistInvidiousPrefs, - setPersistInvidiousPrefs, - - init, -}; 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/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js new file mode 100644 index 00000000..547e2614 --- /dev/null +++ b/src/assets/javascripts/helpers/youtube/youtube.js @@ -0,0 +1,325 @@ +"use strict"; + +import commonHelper from '../common.js' + +window.browser = window.browser || window.chrome; + +const targets = [ + "m.youtube.com", + "youtube.com", + "img.youtube.com", + "www.youtube.com", + "youtube-nocookie.com", + "www.youtube-nocookie.com", + "youtu.be", + "s.ytimg.com", + "music.youtube.com", +]; +let redirects = { + "invidious": { + "normal": [ + "https://yewtu.be", + "https://invidious.snopyta.org", + "https://vid.puffyan.us", + "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://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion", + "http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion", + "http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion", + "http://grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion", + "http://hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid.onion", + "http://osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd.onion", + "http://u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad.onion" + ] + }, + "piped": { + "normal": [ + "https://piped.kavin.rocks", + "https://piped.silkky.cloud", + "https://piped.tokhmi.xyz", + "https://piped.mint.lgbt", + ] + } +}; + +const getRedirects = () => redirects; + +function setInvidiousRedirects(val) { + redirects.invidious = val; + browser.storage.sync.set({ youtubeRedirects: redirects }) + console.log("invidiousRedirects: ", val) +} + +function setPipedRedirects(val) { + redirects.piped = val; + browser.storage.sync.set({ youtubeRedirects: redirects }) + console.log("pipedRedirects: ", val) +} + +let disableYoutube; +const getDisableYoutube = () => disableYoutube; +function setDisableYoutube(val) { + disableYoutube = val; + browser.storage.sync.set({ disableYoutube }) + console.log("disableYoutube: ", disableYoutube) +} + +let invidiousInstance; +const getInvidiousInstance = () => invidiousInstance; +function setInvidiousInstance(val) { + invidiousInstance = val; + browser.storage.sync.set({ invidiousInstance }) + console.log("invidiousInstance: ", invidiousInstance) +} + +let invidiousAlwaysProxy; +function setInvidiousAlwaysProxy(val) { + invidiousAlwaysProxy = val; + browser.storage.sync.set({ invidiousAlwaysProxy }) + console.log("invidiousAlwaysProxy: ", invidiousAlwaysProxy); +} +const getInvidiousAlwaysProxy = () => invidiousAlwaysProxy; + +let invidiousOnlyEmbeddedVideo; +function setInvidiousOnlyEmbeddedVideo(val) { + invidiousOnlyEmbeddedVideo = val; + browser.storage.sync.set({ invidiousOnlyEmbeddedVideo }) + console.log("invidiousOnlyEmbeddedVideo: ", invidiousOnlyEmbeddedVideo) +} +const getInvidiousOnlyEmbeddedVideo = () => invidiousOnlyEmbeddedVideo; + +let invidiousVideoQuality; +function setInvidiousVideoQuality(val) { + invidiousVideoQuality = val; + browser.storage.sync.set({ invidiousVideoQuality }) + console.log("invidiousVideoQuality: ", invidiousVideoQuality) +} +const getInvidiousVideoQuality = () => invidiousVideoQuality; + +let invidiousDarkMode; +const getInvidiousDarkMode = () => invidiousDarkMode; +function setInvidiousDarkMode(val) { + invidiousDarkMode = val; + browser.storage.sync.set({ invidiousDarkMode }) + console.log("invidiousDarkMode: ", invidiousDarkMode) +} + +let invidiousVolume; +const getInvidiousVolume = () => invidiousVolume; +function setInvidiousVolume(val) { + invidiousVolume = val; + browser.storage.sync.set({ invidiousVolume }) + console.log("invidiousVolume: ", invidiousVolume) +} + +let invidiousPlayerStyle; +const getInvidiousPlayerStyle = () => invidiousPlayerStyle; +function setInvidiousPlayerStyle(val) { + invidiousPlayerStyle = val; + browser.storage.sync.set({ invidiousPlayerStyle }) + console.log("invidiousPlayerStyle: ", invidiousPlayerStyle) +} + +let invidiousSubtitles; +let getInvidiousSubtitles = () => invidiousSubtitles; +function setInvidiousSubtitles(val) { + invidiousSubtitles = val; + browser.storage.sync.set({ invidiousSubtitles }) + console.log("invidiousSubtitles: ", invidiousSubtitles) +} + +let invidiousAutoplay; +const getInvidiousAutoplay = () => invidiousAutoplay; +function setInvidiousAutoplay(val) { + invidiousAutoplay = val; + browser.storage.sync.set({ invidiousAutoplay }) + console.log("invidiousAutoplay: ", invidiousAutoplay) +} + + +let frontend; +const getFrontend = () => frontend; +function setFrontend(val) { + frontend = val; + browser.storage.sync.set({ youtubeFrontend: val }) + console.log("youtubeFrontend: ", val) +} + +let useFreeTube; +function setUseFreeTube(val) { + useFreeTube = val; + browser.storage.sync.set({ useFreeTube }) + console.log("useFreeTube: ", useFreeTube) +} +const getUseFreeTube = () => useFreeTube; + +let persistInvidiousPrefs; +function setPersistInvidiousPrefs(val) { + persistInvidiousPrefs = val; + browser.storage.sync.set({ persistInvidiousPrefs }) + console.log("persistInvidiousPrefs: ", persistInvidiousPrefs) +} +const getPersistInvidiousPrefs = () => persistInvidiousPrefs; + +function isYoutube(url) { + return targets.includes(url.host); +} + +async function init() { + let result = await browser.storage.sync.get( + [ + "invidiousAlwaysProxy", + "invidiousVideoQuality", + "invidiousDarkMode", + "persistInvidiousPrefs", + "disableYoutube", + "invidiousInstance", + "invidiousOnlyEmbeddedVideo", + "invidiousVolume", + "invidiousPlayerStyle", + "invidiousSubtitles", + "invidiousAutoplay", + "useFreeTube", + "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'; + invidiousDarkMode = result.invidiousDarkMode ?? true; + invidiousVolume = result.invidiousVolume ?? 50; + invidiousPlayerStyle = result.invidiousPlayerStyle ?? 'invidious'; + invidiousSubtitles = result.invidiousSubtitles || ''; + invidiousAutoplay = result.invidiousAutoplay ?? true; + + persistInvidiousPrefs = result.persistInvidiousPrefs ?? false; + + useFreeTube = result.useFreeTube ?? false; +} + +function invidiousInitCookies(tabId) { + browser.tabs.executeScript( + tabId, { + file: "/assets/javascripts/helpers/youtube/invidious-cookies.js", + runAt: "document_start" + }); +} + +function redirect(url, initiator, type) { + if (disableYoutube) + return null; + + if ( + initiator && + ( + initiator.origin === invidiousInstance || + redirects.invidious.normal.includes(initiator.origin) || + redirects.piped.normal.includes(initiator.origin) || + targets.includes(initiator.host) + ) + ) + return null; + + 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") { + console.log("no because studio"); + return null; + }; // Avoid redirecting `studio.youtube.com` + + if (invidiousOnlyEmbeddedVideo && type !== "sub_frame") return null; + + 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) + + return `${randomInstance}${url.pathname.replace("/shorts", "")}${url.search}`; + + } else if (frontend == 'piped') { + let randomInstance = commonHelper.getRandomInstance(redirects.piped.normal); + if (url.hostname.endsWith("youtube.com") || url.hostname.endsWith("youtube-nocookie.com")) + return `${randomInstance}${url.pathname}${url.search}`; + + if (url.hostname.endsWith("youtu.be") && url.pathname.length > 1) + return `${randomInstance}/watch?v=${url.pathname.substring(1)}`; + + } +} + + +export default { + invidiousInitCookies, + + getFrontend, + setFrontend, + + getRedirects, + setInvidiousRedirects, + setPipedRedirects, + + redirect, + isYoutube, + + getDisableYoutube, + setDisableYoutube, + + setInvidiousInstance, + getInvidiousInstance, + + setInvidiousAlwaysProxy, + getInvidiousAlwaysProxy, + + setInvidiousOnlyEmbeddedVideo, + getInvidiousOnlyEmbeddedVideo, + + setInvidiousVideoQuality, + getInvidiousVideoQuality, + + setInvidiousDarkMode, + getInvidiousDarkMode, + + setInvidiousVolume, + getInvidiousVolume, + + setInvidiousPlayerStyle, + getInvidiousPlayerStyle, + + setInvidiousSubtitles, + getInvidiousSubtitles, + + setInvidiousAutoplay, + getInvidiousAutoplay, + + getUseFreeTube, + setUseFreeTube, + + getPersistInvidiousPrefs, + setPersistInvidiousPrefs, + + init, +}; -- cgit 1.4.1