Adding tor to twitter and youtube #32

This commit is contained in:
ManeraKai 2022-02-20 00:48:51 +03:00
parent f0d70837fc
commit ef222d2ca5
No known key found for this signature in database
GPG Key ID: 5ABC31FFD562E337
26 changed files with 599 additions and 207 deletions

View File

@ -16,7 +16,7 @@
"https://invidious.privacy.gd", "https://invidious.privacy.gd",
"https://invidious.namazso.eu" "https://invidious.namazso.eu"
], ],
"onion": [ "tor": [
"http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion", "http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion",
"http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion", "http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion",
"http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion", "http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion",
@ -73,7 +73,7 @@
"https://tw.artemislena.eu", "https://tw.artemislena.eu",
"https://de.nttr.stream" "https://de.nttr.stream"
], ],
"onion": [ "tor": [
"http://3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad.onion", "http://3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad.onion",
"http://nitter.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion", "http://nitter.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion",
"http://nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd.onion", "http://nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd.onion",
@ -126,7 +126,7 @@
"https://teddit.adminforge.de", "https://teddit.adminforge.de",
"https://teddit.bus-hit.me" "https://teddit.bus-hit.me"
], ],
"onion": [ "tor": [
"http://teddit4w6cmzmj5kimhfcavs7yo5s7alszvsi2khqutqtlaanpcftfyd.onion", "http://teddit4w6cmzmj5kimhfcavs7yo5s7alszvsi2khqutqtlaanpcftfyd.onion",
"http://snoo.ioensistjs7wd746zluwixvojbbkxhr37lepdvwtdfeav673o64iflqd.onion", "http://snoo.ioensistjs7wd746zluwixvojbbkxhr37lepdvwtdfeav673o64iflqd.onion",
"http://ibarajztopxnuhabfu7fg6gbudynxofbnmvis3ltj6lfx47b6fhrd5qd.onion", "http://ibarajztopxnuhabfu7fg6gbudynxofbnmvis3ltj6lfx47b6fhrd5qd.onion",
@ -142,7 +142,7 @@
"https://wikiless.sethforprivacy.com", "https://wikiless.sethforprivacy.com",
"https://wiki.604kph.xyz" "https://wiki.604kph.xyz"
], ],
"onion": [ "tor": [
"http://dj2tbh2nqfxyfmvq33cjmhuw7nb6am7thzd3zsjvizeqf374fixbrxyd.onion" "http://dj2tbh2nqfxyfmvq33cjmhuw7nb6am7thzd3zsjvizeqf374fixbrxyd.onion"
] ]
}, },
@ -166,7 +166,7 @@
"https://simplytranslate.pussthecat.org", "https://simplytranslate.pussthecat.org",
"https://translate.northboot.xyz" "https://translate.northboot.xyz"
], ],
"onion": [ "tor": [
"http://fyng2tsmzmvxmojzbbwmfnsn2lrcyftf4cw6rk5j2v2huliazud3fjid.onion", "http://fyng2tsmzmvxmojzbbwmfnsn2lrcyftf4cw6rk5j2v2huliazud3fjid.onion",
"http://xxtbwyb5z5bdvy2f6l2yquu5qilgkjeewno4qfknvb3lkg3nmoklitid.onion" "http://xxtbwyb5z5bdvy2f6l2yquu5qilgkjeewno4qfknvb3lkg3nmoklitid.onion"
] ]
@ -276,7 +276,7 @@
"https://xeek.com", "https://xeek.com",
"https://searx.roflcopter.fr" "https://searx.roflcopter.fr"
], ],
"onion": [ "tor": [
"http://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion", "http://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion",
"http://searxbgetrkiwxhdwi6svpgh7eotopqyxhbqiokrwzg7dcte44t36kyd.onion", "http://searxbgetrkiwxhdwi6svpgh7eotopqyxhbqiokrwzg7dcte44t36kyd.onion",
"http://suche.xyzco456vwisukfg.onion", "http://suche.xyzco456vwisukfg.onion",
@ -321,7 +321,7 @@
"https://rimgo.totaldarkness.net", "https://rimgo.totaldarkness.net",
"https://rimgo.bus-hit.me" "https://rimgo.bus-hit.me"
], ],
"onion": [ "tor": [
"http://l4d4owboqr6xcmd6lf64gbegel62kbudu3x3jnldz2mx6mhn3bsv3zyd.onion", "http://l4d4owboqr6xcmd6lf64gbegel62kbudu3x3jnldz2mx6mhn3bsv3zyd.onion",
"http://jx3dpcwedpzu2mh54obk5gvl64i2ln7pt5mrzd75s4jnndkqwzaim7ad.onion" "http://jx3dpcwedpzu2mh54obk5gvl64i2ln7pt5mrzd75s4jnndkqwzaim7ad.onion"
] ]

View File

@ -90,6 +90,7 @@ function isFirefox() {
function processDefaultCustomInstances( function processDefaultCustomInstances(
name, name,
protocol,
nameHelper, nameHelper,
document, document,
getNameRedirectsChecks, getNameRedirectsChecks,
@ -99,32 +100,33 @@ function processDefaultCustomInstances(
) { ) {
let nameCustomInstances = []; let nameCustomInstances = [];
let nameCheckListElement = document.getElementById(`${name}-checklist`); let nameCheckListElement = document.getElementById(`${name}-${protocol}-checklist`);
let nameDefaultRedirects; let nameDefaultRedirects;
function calcNameCheckBoxes() { function calcNameCheckBoxes() {
let isTrue = true; let isTrue = true;
for (const item of nameHelper.getRedirects()[name].normal) for (const item of nameHelper.getRedirects()[name][protocol])
if (!nameDefaultRedirects.includes(item)) { if (!nameDefaultRedirects.includes(item)) {
isTrue = false; isTrue = false;
break; break;
} }
for (const element of nameCheckListElement.getElementsByTagName('input')) for (const element of nameCheckListElement.getElementsByTagName('input'))
element.checked = nameDefaultRedirects.includes(element.id) element.checked = nameDefaultRedirects.includes(element.id)
document.getElementById(`${name}-toogle-all`).checked = isTrue; document.getElementById(`${name}-${protocol}-toogle-all`).checked = isTrue;
} }
nameDefaultRedirects = getNameRedirectsChecks(); nameDefaultRedirects = getNameRedirectsChecks();
nameCheckListElement.innerHTML = nameCheckListElement.innerHTML =
[ [
`<div>Toggle All<input type="checkbox" id="${name}-toogle-all" /></div>`, `<div>Toggle All<input type="checkbox" id="${name}-${protocol}-toogle-all" /></div>`,
...nameHelper.getRedirects()[name].normal.map((x) => `<div>${x}<input type="checkbox" id="${x}" /></div>`), ...nameHelper.getRedirects()[name][protocol].map((x) => `<div>${x}<input type="checkbox" id="${x}" /></div>`),
].join('\n<hr>\n'); ].join('\n<hr>\n');
calcNameCheckBoxes(); calcNameCheckBoxes();
document.getElementById(`${name}-toogle-all`).addEventListener("change", (event) => { document.getElementById(`${name}-${protocol}-toogle-all`).addEventListener("change", (event) => {
if (event.target.checked) if (event.target.checked)
nameDefaultRedirects = [...nameHelper.getRedirects()[name].normal]; nameDefaultRedirects = [...nameHelper.getRedirects()[name][protocol]];
else else
nameDefaultRedirects = []; nameDefaultRedirects = [];
setNameRedirectsChecks(nameDefaultRedirects); setNameRedirectsChecks(nameDefaultRedirects);
@ -132,7 +134,7 @@ function processDefaultCustomInstances(
}); });
for (let element of nameCheckListElement.getElementsByTagName('input')) { for (let element of nameCheckListElement.getElementsByTagName('input')) {
if (element.id != `${name}-toogle-all`) if (element.id != `${name}-${protocol}-toogle-all`)
document.getElementById(element.id).addEventListener("change", (event) => { document.getElementById(element.id).addEventListener("change", (event) => {
if (event.target.checked) if (event.target.checked)
nameDefaultRedirects.push(element.id) nameDefaultRedirects.push(element.id)
@ -147,7 +149,7 @@ function processDefaultCustomInstances(
nameCustomInstances = getNameCustomRedirects(); nameCustomInstances = getNameCustomRedirects();
function calcNameCustomInstances() { function calcNameCustomInstances() {
document.getElementById(`${name}-custom-checklist`).innerHTML = document.getElementById(`${name}-${protocol}-custom-checklist`).innerHTML =
nameCustomInstances.map( nameCustomInstances.map(
(x) => `<div>${x}<button class="add" id="clear-${x}"> (x) => `<div>${x}<button class="add" id="clear-${x}">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
@ -170,12 +172,12 @@ function processDefaultCustomInstances(
} }
} }
calcNameCustomInstances(); calcNameCustomInstances();
document.getElementById(`custom-${name}-instance-form`).addEventListener("submit", (event) => { document.getElementById(`custom-${name}-${protocol}-instance-form`).addEventListener("submit", (event) => {
event.preventDefault(); event.preventDefault();
let nameCustomInstanceInput = document.getElementById(`${name}-custom-instance`); let nameCustomInstanceInput = document.getElementById(`${name}-${protocol}-custom-instance`);
let url = new URL(nameCustomInstanceInput.value); let url = new URL(nameCustomInstanceInput.value);
let protocolHost = `${url.protocol}//${url.host}`; let protocolHost = `${url.protocol}//${url.host}`;
if (nameCustomInstanceInput.validity.valid && !nameHelper.getRedirects()[name].normal.includes(protocolHost)) { if (nameCustomInstanceInput.validity.valid && !nameHelper.getRedirects()[name][protocol].includes(protocolHost)) {
if (!nameCustomInstances.includes(protocolHost)) { if (!nameCustomInstances.includes(protocolHost)) {
nameCustomInstances.push(protocolHost) nameCustomInstances.push(protocolHost)
setNameCustomRedirects(nameCustomInstances); setNameCustomRedirects(nameCustomInstances);

View File

@ -16,7 +16,7 @@ let redirects = {
"https://rimgo.totaldarkness.net", "https://rimgo.totaldarkness.net",
"https://rimgo.bus-hit.me" "https://rimgo.bus-hit.me"
], ],
"onion": [ "tor": [
"http://l4d4owboqr6xcmd6lf64gbegel62kbudu3x3jnldz2mx6mhn3bsv3zyd.onion", "http://l4d4owboqr6xcmd6lf64gbegel62kbudu3x3jnldz2mx6mhn3bsv3zyd.onion",
"http://jx3dpcwedpzu2mh54obk5gvl64i2ln7pt5mrzd75s4jnndkqwzaim7ad.onion" "http://jx3dpcwedpzu2mh54obk5gvl64i2ln7pt5mrzd75s4jnndkqwzaim7ad.onion"
] ]

View File

@ -47,7 +47,7 @@ let redirects = {
"https://teddit.adminforge.de", "https://teddit.adminforge.de",
"https://teddit.bus-hit.me" "https://teddit.bus-hit.me"
], ],
"onion": [ "tor": [
"http://teddit4w6cmzmj5kimhfcavs7yo5s7alszvsi2khqutqtlaanpcftfyd.onion", "http://teddit4w6cmzmj5kimhfcavs7yo5s7alszvsi2khqutqtlaanpcftfyd.onion",
"http://snoo.ioensistjs7wd746zluwixvojbbkxhr37lepdvwtdfeav673o64iflqd.onion", "http://snoo.ioensistjs7wd746zluwixvojbbkxhr37lepdvwtdfeav673o64iflqd.onion",
"http://ibarajztopxnuhabfu7fg6gbudynxofbnmvis3ltj6lfx47b6fhrd5qd.onion", "http://ibarajztopxnuhabfu7fg6gbudynxofbnmvis3ltj6lfx47b6fhrd5qd.onion",

View File

@ -100,7 +100,7 @@ let redirects = {
"https://xeek.com", "https://xeek.com",
"https://searx.roflcopter.fr", "https://searx.roflcopter.fr",
], ],
"onion": [ "tor": [
"http://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion", "http://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion",
"http://searxbgetrkiwxhdwi6svpgh7eotopqyxhbqiokrwzg7dcte44t36kyd.onion", "http://searxbgetrkiwxhdwi6svpgh7eotopqyxhbqiokrwzg7dcte44t36kyd.onion",
"http://suche.xyzco456vwisukfg.onion", "http://suche.xyzco456vwisukfg.onion",

View File

@ -20,7 +20,7 @@ let redirects = {
"https://simplytranslate.pussthecat.org", "https://simplytranslate.pussthecat.org",
"https://translate.northboot.xyz" "https://translate.northboot.xyz"
], ],
"onion": [ "tor": [
"http://fyng2tsmzmvxmojzbbwmfnsn2lrcyftf4cw6rk5j2v2huliazud3fjid.onion", "http://fyng2tsmzmvxmojzbbwmfnsn2lrcyftf4cw6rk5j2v2huliazud3fjid.onion",
"http://xxtbwyb5z5bdvy2f6l2yquu5qilgkjeewno4qfknvb3lkg3nmoklitid.onion" "http://xxtbwyb5z5bdvy2f6l2yquu5qilgkjeewno4qfknvb3lkg3nmoklitid.onion"
] ]

View File

@ -63,7 +63,7 @@ let redirects = {
"https://tw.artemislena.eu", "https://tw.artemislena.eu",
"https://nitter.eu.org" "https://nitter.eu.org"
], ],
"onion": [ "tor": [
"http://3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad.onion", "http://3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad.onion",
"http://nitter.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion", "http://nitter.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion",
"http://nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd.onion", "http://nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd.onion",
@ -83,13 +83,15 @@ let redirects = {
}, },
}; };
const getRedirects = () => redirects; const getRedirects = () => redirects;
const getCustomRedirects = function () {
function getCustomRedirects() {
return { return {
"nitter": { "nitter": {
"normal": [...nitterRedirectsChecks, ...nitterCustomRedirects] "normal": [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
}, },
}; };
}; };
function setRedirects(val) { function setRedirects(val) {
redirects.nitter = val; redirects.nitter = val;
browser.storage.sync.set({ twitterRedirects: redirects }) browser.storage.sync.set({ twitterRedirects: redirects })
@ -102,22 +104,39 @@ function setRedirects(val) {
setNitterRedirectsChecks(nitterRedirectsChecks); setNitterRedirectsChecks(nitterRedirectsChecks);
} }
let nitterRedirectsChecks; let nitterNormalRedirectsChecks;
const getNitterRedirectsChecks = () => nitterRedirectsChecks; const getNitterNormalRedirectsChecks = () => nitterNormalRedirectsChecks;
function setNitterRedirectsChecks(val) { function setNitterNormalRedirectsChecks(val) {
nitterRedirectsChecks = val; nitterNormalRedirectsChecks = val;
browser.storage.sync.set({ nitterRedirectsChecks }) browser.storage.sync.set({ nitterNormalRedirectsChecks })
console.log("nitterRedirectsChecks: ", val) console.log("nitterNormalRedirectsChecks: ", val)
} }
let nitterCustomRedirects = []; let nitterNormalCustomRedirects = [];
const getNitterCustomRedirects = () => nitterCustomRedirects; const getNitterNormalCustomRedirects = () => nitterNormalCustomRedirects;
function setNitterCustomRedirects(val) { function setNitterNormalCustomRedirects(val) {
nitterCustomRedirects = val; nitterNormalCustomRedirects = val;
browser.storage.sync.set({ nitterCustomRedirects }) browser.storage.sync.set({ nitterNormalCustomRedirects })
console.log("nitterCustomRedirects: ", val) console.log("nitterNormalCustomRedirects: ", val)
} }
let nitterTorRedirectsChecks;
const getNitterTorRedirectsChecks = () => nitterTorRedirectsChecks;
function setNitterTorRedirectsChecks(val) {
nitterTorRedirectsChecks = val;
browser.storage.sync.set({ nitterTorRedirectsChecks })
console.log("nitterTorRedirectsChecks: ", val)
}
let nitterTorCustomRedirects = [];
const getNitterTorCustomRedirects = () => nitterTorCustomRedirects;
function setNitterTorCustomRedirects(val) {
nitterTorCustomRedirects = val;
browser.storage.sync.set({ nitterTorCustomRedirects })
console.log("nitterTorCustomRedirects: ", val)
}
let disable; let disable;
const getDisable = () => disable; const getDisable = () => disable;
function setDisable(val) { function setDisable(val) {
@ -125,19 +144,38 @@ function setDisable(val) {
browser.storage.sync.set({ disableTwitter: disable }) browser.storage.sync.set({ disableTwitter: disable })
} }
let protocol;
const getprotocol = () => protocol;
function setProtocol(val) {
protocol = val;
browser.storage.sync.set({ nitterProtocol: val })
console.log("nitterProtocol: ", val)
}
function isTwitter(url, initiator) { function isTwitter(url, initiator) {
if (disable) return false; if (disable) return false;
if (url.pathname.split("/").includes("home")) return null; if (url.pathname.split("/").includes("home")) return null;
if ( if (
commonHelper.isFirefox() && commonHelper.isFirefox() &&
initiator && ([...redirects.nitter.normal, ...nitterCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host)) initiator && (
[
...redirects.nitter.normal,
...redirects.nitter.tor,
...nitterTorCustomRedirects,
...nitterNormalCustomRedirects
].includes(initiator.origin) || targets.includes(initiator.host))
) return false; ) return false;
return targets.includes(url.host) return targets.includes(url.host)
} }
function redirect(url) { function redirect(url) {
let instancesList = [...nitterRedirectsChecks, ...nitterCustomRedirects]; let instancesList;
if (protocol == 'normal')
instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
else if (protocol == 'tor')
instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
if (instancesList.length === 0) return null; if (instancesList.length === 0) return null;
let randomInstance = commonHelper.getRandomInstance(instancesList) let randomInstance = commonHelper.getRandomInstance(instancesList)
@ -157,16 +195,24 @@ async function init() {
[ [
"disableTwitter", "disableTwitter",
"twitterRedirects", "twitterRedirects",
"nitterRedirectsChecks", "nitterNormalRedirectsChecks",
"nitterCustomRedirects", "nitterNormalCustomRedirects",
"nitterTorRedirectsChecks",
"nitterTorCustomRedirects",
"nitterProtocol",
], ],
(result) => { (result) => {
disable = result.disableTwitter ?? false; disable = result.disableTwitter ?? false;
if (result.twitterRedirects) redirects = result.twitterRedirects; if (result.twitterRedirects) redirects = result.twitterRedirects;
nitterRedirectsChecks = result.nitterRedirectsChecks ?? [...redirects.nitter.normal]; nitterNormalRedirectsChecks = result.nitterNormalRedirectsChecks ?? [...redirects.nitter.normal];
nitterCustomRedirects = result.nitterCustomRedirects ?? []; nitterNormalCustomRedirects = result.nitterNormalCustomRedirects ?? [];
nitterTorRedirectsChecks = result.nitterTorRedirectsChecks ?? [...redirects.nitter.tor];
nitterTorCustomRedirects = result.nitterTorCustomRedirects ?? [];
protocol = result.nitterProtocol ?? "normal";
resolve(); resolve();
} }
@ -182,11 +228,20 @@ export default {
getDisable, getDisable,
setDisable, setDisable,
getNitterRedirectsChecks, getNitterNormalRedirectsChecks,
setNitterRedirectsChecks, setNitterNormalRedirectsChecks,
getNitterCustomRedirects, getNitterNormalCustomRedirects,
setNitterCustomRedirects, setNitterNormalCustomRedirects,
getNitterTorRedirectsChecks,
setNitterTorRedirectsChecks,
getNitterTorCustomRedirects,
setNitterTorCustomRedirects,
getprotocol,
setProtocol,
redirect, redirect,
isTwitter, isTwitter,

View File

@ -12,7 +12,7 @@ let redirects = {
"https://wikiless.sethforprivacy.com", "https://wikiless.sethforprivacy.com",
"https://wiki.604kph.xyz" "https://wiki.604kph.xyz"
], ],
"onion": [ "tor": [
"http://dj2tbh2nqfxyfmvq33cjmhuw7nb6am7thzd3zsjvizeqf374fixbrxyd.onion" "http://dj2tbh2nqfxyfmvq33cjmhuw7nb6am7thzd3zsjvizeqf374fixbrxyd.onion"
] ]
} }

View File

@ -24,8 +24,8 @@ browser.storage.sync.get(
let prefs = getCookie(); let prefs = getCookie();
let changed = false; let changed = false;
if (result.invidiousAlwaysProxy !== undefined && prefs.local !== result.invidiousAlwaysProxy) { if (result.invidiousAlwaysProxy !== undefined && prefs.sync !== result.invidiousAlwaysProxy) {
prefs.local = result.invidiousAlwaysProxy; prefs.sync = result.invidiousAlwaysProxy;
changed = true; changed = true;
} }
if (result.invidiousVideoQuality !== undefined && prefs.quality !== result.invidiousVideoQuality) { if (result.invidiousVideoQuality !== undefined && prefs.quality !== result.invidiousVideoQuality) {

View File

@ -32,7 +32,7 @@ let redirects = {
"https://youtube.076.ne.jp", "https://youtube.076.ne.jp",
"https://invidious.namazso.eu" "https://invidious.namazso.eu"
], ],
"onion": [ "tor": [
"http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion", "http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion",
"http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion", "http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion",
"http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion", "http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion",
@ -48,7 +48,8 @@ let redirects = {
"https://piped.silkky.cloud", "https://piped.silkky.cloud",
"https://piped.tokhmi.xyz", "https://piped.tokhmi.xyz",
"https://piped.mint.lgbt", "https://piped.mint.lgbt",
] ],
"tor": []
} }
}; };
@ -57,10 +58,12 @@ const getRedirects = () => redirects;
const getCustomRedirects = function () { const getCustomRedirects = function () {
return { return {
"invidious": { "invidious": {
"normal": [...invidiousRedirectsChecks, ...invidiousCustomRedirects] "normal": [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects],
"tor": [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
}, },
"piped": { "piped": {
"normal": [...pipedRedirectsChecks, ...pipedCustomRedirects] "normal": [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects],
"tor": [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
} }
}; };
}; };
@ -71,38 +74,76 @@ function setInvidiousRedirects(val) {
console.log("invidiousRedirects: ", val) console.log("invidiousRedirects: ", val)
} }
let invidiousRedirectsChecks; let invidiousNormalRedirectsChecks;
const getInvidiousRedirectsChecks = () => invidiousRedirectsChecks; const getInvidiousNormalRedirectsChecks = () => invidiousNormalRedirectsChecks;
function setInvidiousRedirectsChecks(val) { function setInvidiousNormalRedirectsChecks(val) {
invidiousRedirectsChecks = val; invidiousNormalRedirectsChecks = val;
browser.storage.sync.set({ invidiousRedirectsChecks }) browser.storage.sync.set({ invidiousNormalRedirectsChecks })
console.log("invidiousRedirectsChecks: ", val) console.log("invidiousNormalRedirectsChecks: ", val)
} }
let invidiousCustomRedirects = []; let invidiousNormalCustomRedirects = [];
const getInvidiousCustomRedirects = () => invidiousCustomRedirects; const getInvidiousNormalCustomRedirects = () => invidiousNormalCustomRedirects;
function setInvidiousCustomRedirects(val) { function setInvidiousNormalCustomRedirects(val) {
invidiousCustomRedirects = val; invidiousNormalCustomRedirects = val;
browser.storage.sync.set({ invidiousCustomRedirects }) browser.storage.sync.set({ invidiousNormalCustomRedirects })
console.log("invidiousCustomRedirects: ", val) console.log("invidiousNormalCustomRedirects: ", val)
} }
let pipedRedirectsChecks;
const getPipedRedirectsChecks = () => pipedRedirectsChecks; let invidiousTorRedirectsChecks;
function setPipedRedirectsChecks(val) { const getInvidiousTorRedirectsChecks = () => invidiousTorRedirectsChecks;
pipedRedirectsChecks = val; function setInvidiousTorRedirectsChecks(val) {
browser.storage.sync.set({ pipedRedirectsChecks }) invidiousTorRedirectsChecks = val;
console.log("pipedRedirectsChecks: ", val) browser.storage.sync.set({ invidiousTorRedirectsChecks })
console.log("invidiousTorRedirectsChecks: ", val)
} }
let pipedCustomRedirects = []; let invidiousTorCustomRedirects = [];
const getPipedCustomRedirects = () => pipedCustomRedirects; const getInvidiousTorCustomRedirects = () => invidiousTorCustomRedirects;
function setPipedCustomRedirects(val) { function setInvidiousTorCustomRedirects(val) {
pipedCustomRedirects = val; invidiousTorCustomRedirects = val;
browser.storage.sync.set({ pipedCustomRedirects }) browser.storage.sync.set({ invidiousTorCustomRedirects })
console.log("pipedCustomRedirects: ", val) console.log("invidiousTorCustomRedirects: ", val)
} }
let pipedNormalRedirectsChecks;
const getPipedNormalRedirectsChecks = () => pipedNormalRedirectsChecks;
function setPipedNormalRedirectsChecks(val) {
pipedNormalRedirectsChecks = val;
browser.storage.sync.set({ pipedNormalRedirectsChecks })
console.log("pipedNormalRedirectsChecks: ", val)
}
let pipedNormalCustomRedirects = [];
const getPipedNormalCustomRedirects = () => pipedNormalCustomRedirects;
function setPipedNormalCustomRedirects(val) {
pipedNormalCustomRedirects = val;
browser.storage.sync.set({ pipedNormalCustomRedirects })
console.log("pipedNormalCustomRedirects: ", val)
}
let pipedTorRedirectsChecks;
const getPipedTorRedirectsChecks = () => pipedTorRedirectsChecks;
function setPipedTorRedirectsChecks(val) {
pipedTorRedirectsChecks = val;
browser.storage.sync.set({ pipedTorRedirectsChecks })
console.log("pipedTorRedirectsChecks: ", val)
}
let pipedTorCustomRedirects = [];
const getPipedTorCustomRedirects = () => pipedTorCustomRedirects;
function setPipedTorCustomRedirects(val) {
pipedTorCustomRedirects = val;
browser.storage.sync.set({ pipedTorCustomRedirects })
console.log("pipedTorCustomRedirects: ", val)
}
function setPipedRedirects(val) { function setPipedRedirects(val) {
redirects.piped = val; redirects.piped = val;
browser.storage.sync.set({ youtubeRedirects: redirects }) browser.storage.sync.set({ youtubeRedirects: redirects })
@ -117,6 +158,15 @@ function setDisable(val) {
console.log("disableYoutube: ", disable) console.log("disableYoutube: ", disable)
} }
let protocol;
const getprotocol = () => protocol;
function setProtocol(val) {
protocol = val;
browser.storage.sync.set({ youtubeProtocol: val })
console.log("youtubeProtocol: ", val)
}
let invidiousAlwaysProxy; let invidiousAlwaysProxy;
function setInvidiousAlwaysProxy(val) { function setInvidiousAlwaysProxy(val) {
invidiousAlwaysProxy = val; invidiousAlwaysProxy = val;
@ -215,11 +265,19 @@ function setAlwaysusePreferred(val) {
function isYoutube(url, initiator) { function isYoutube(url, initiator) {
if (disable) return false; if (disable) return false;
if ( if (
initiator && ( initiator && (
[...redirects.invidious.normal, ...invidiousCustomRedirects].includes(initiator.origin) || [
[...redirects.piped.normal, ...pipedCustomRedirects].includes(initiator.origin) || ...redirects.invidious.normal,
...invidiousNormalCustomRedirects,
...redirects.invidious.tor,
...invidiousTorCustomRedirects,
...redirects.piped.normal,
...redirects.piped.tor,
...pipedNormalCustomRedirects,
...pipedTorCustomRedirects
].includes(initiator.origin) ||
targets.includes(initiator.host) targets.includes(initiator.host)
) )
) return false; ) return false;
@ -227,15 +285,27 @@ function isYoutube(url, initiator) {
let isTargets = targets.some((rx) => rx.test(url.href)); let isTargets = targets.some((rx) => rx.test(url.href));
let protocolHost = `${url.protocol}//${url.host}`; let protocolHost = `${url.protocol}//${url.host}`;
let isInvidious = redirects.invidious.normal.includes(protocolHost); let isInvidious = [...redirects.invidious.normal, ...redirects.invidious.tor].includes(protocolHost);
if (isInvidious) { if (isInvidious) {
let myInvidiousInstances = [...invidiousRedirectsChecks, ...invidiousCustomRedirects]; let myInvidiousInstances = [
...invidiousNormalRedirectsChecks,
...invidiousNormalCustomRedirects,
...invidiousTorRedirectsChecks,
...invidiousTorCustomRedirects,
];
for (const item of myInvidiousInstances) if (item == protocolHost) isInvidious = false; for (const item of myInvidiousInstances) if (item == protocolHost) isInvidious = false;
} }
let isPiped = redirects.piped.normal.includes(protocolHost); let isPiped = [...redirects.piped.normal, ...redirects.piped.tor].includes(protocolHost);
if (isPiped) { if (isPiped) {
let myPipedInstances = [...pipedRedirectsChecks, ...pipedCustomRedirects]; let myPipedInstances = [
...pipedNormalRedirectsChecks,
...pipedNormalCustomRedirects,
...pipedTorRedirectsChecks,
...pipedTorCustomRedirects,
];
for (const item of myPipedInstances) if (item == protocolHost) isPiped = false; for (const item of myPipedInstances) if (item == protocolHost) isPiped = false;
} }
@ -272,7 +342,10 @@ function redirect(url, type) {
!(frontend == 'freetube' && freetubeFrontend == 'invidious' && type === "sub_frame") !(frontend == 'freetube' && freetubeFrontend == 'invidious' && type === "sub_frame")
) return null; ) return null;
let instancesList = [...invidiousRedirectsChecks, ...invidiousCustomRedirects]; let instancesList;
if (protocol == 'normal') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
else if (protocol == 'tor') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
if (instancesList.length === 0) return null; if (instancesList.length === 0) return null;
let randomInstance = commonHelper.getRandomInstance(instancesList); let randomInstance = commonHelper.getRandomInstance(instancesList);
@ -286,7 +359,9 @@ function redirect(url, type) {
!(frontend == 'freetube' && freetubeFrontend == 'piped' && type == "sub_frame") !(frontend == 'freetube' && freetubeFrontend == 'piped' && type == "sub_frame")
) return null; ) return null;
let instancesList = [...pipedRedirectsChecks, ...pipedCustomRedirects]; let instancesList;
if (protocol == 'normal') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
else if (protocol == 'tor') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
if (instancesList.length === 0) return null; if (instancesList.length === 0) return null;
let randomInstance = commonHelper.getRandomInstance(instancesList); let randomInstance = commonHelper.getRandomInstance(instancesList);
@ -297,22 +372,54 @@ function redirect(url, type) {
function isPipedorInvidious(url, type) { function isPipedorInvidious(url, type) {
let protocolHost = `${url.protocol}//${url.host}`; let protocolHost = `${url.protocol}//${url.host}`;
return (type === "main_frame" || type === "sub_frame") && [...redirects.invidious.normal, ...redirects.piped.normal].includes(protocolHost); return (type === "main_frame" || type === "sub_frame") && [
...redirects.invidious.normal,
...invidiousNormalCustomRedirects,
...redirects.invidious.tor,
...invidiousTorCustomRedirects,
...redirects.piped.normal,
...redirects.piped.tor,
...pipedNormalCustomRedirects,
...pipedTorCustomRedirects,
].includes(protocolHost);
} }
function isUrlPipedorInvidious(url) { function isUrlPipedorInvidious(url) {
url = new URL(url); url = new URL(url);
let protocolHost = `${url.protocol}//${url.host}`; let protocolHost = `${url.protocol}//${url.host}`;
return [...redirects.invidious.normal, ...redirects.piped.normal].includes(protocolHost); return [
...redirects.invidious.normal,
...redirects.invidious.tor,
...invidiousNormalCustomRedirects,
...invidiousTorCustomRedirects,
...redirects.piped.normal,
...redirects.piped.tor,
...pipedNormalCustomRedirects,
...pipedTorCustomRedirects,
].includes(protocolHost);
} }
function addUrlParams(url) { function addUrlParams(url) {
let protocolHost = `${url.protocol}//${url.host}`; let protocolHost = `${url.protocol}//${url.host}`;
let isChanged = false; let isChanged = false;
console.log("protocolHost", protocolHost);
console.log("protocolHost", protocolHost) console.log([
if (redirects.invidious.normal.includes(protocolHost)) { ...redirects.invidious.normal,
...redirects.invidious.tor,
...invidiousNormalCustomRedirects,
...invidiousTorCustomRedirects,
])
if (
[
...redirects.invidious.normal,
...redirects.invidious.tor,
...invidiousNormalCustomRedirects,
...invidiousTorCustomRedirects,
].includes(protocolHost)) {
if (!url.searchParams.has("dark_mode") && theme != "DEFAULT") { if (!url.searchParams.has("dark_mode") && theme != "DEFAULT") {
url.searchParams.append("dark_mode", theme); url.searchParams.append("dark_mode", theme);
isChanged = true; isChanged = true;
@ -348,7 +455,13 @@ function addUrlParams(url) {
isChanged = true; isChanged = true;
} }
} else if (redirects.piped.normal.includes(protocolHost)) { } else if (
[
...redirects.piped.normal,
...redirects.piped.tor,
...pipedNormalCustomRedirects,
...pipedTorCustomRedirects,
].includes(protocolHost)) {
if (!url.searchParams.has("theme") && theme != "DEFAULT") { if (!url.searchParams.has("theme") && theme != "DEFAULT") {
url.searchParams.append("theme", theme); url.searchParams.append("theme", theme);
@ -396,17 +509,28 @@ async function init() {
"youtubeAutoplay", "youtubeAutoplay",
"youtubeRedirects", "youtubeRedirects",
"youtubeFrontend", "youtubeFrontend",
"invidiousRedirectsChecks",
"invidiousCustomRedirects", "invidiousNormalRedirectsChecks",
"pipedRedirectsChecks", "invidiousNormalCustomRedirects",
"pipedCustomRedirects",
"invidiousTorRedirectsChecks",
"invidiousTorCustomRedirects",
"pipedNormalRedirectsChecks",
"pipedNormalCustomRedirects",
"pipedTorRedirectsChecks",
"pipedTorCustomRedirects",
"alwaysusePreferred", "alwaysusePreferred",
"freetubeFrontend", "freetubeFrontend",
"youtubeProtocol",
], ],
(result) => { (result) => {
if (result.youtubeRedirects) redirects = result.youtubeRedirects; if (result.youtubeRedirects) redirects = result.youtubeRedirects;
disable = result.disableYoutube ?? false; disable = result.disableYoutube ?? false;
protocol = result.youtubeProtocol ?? 'normal';
frontend = result.youtubeFrontend ?? 'piped'; frontend = result.youtubeFrontend ?? 'piped';
freetubeFrontend = result.freetubeFrontend ?? 'invidious'; freetubeFrontend = result.freetubeFrontend ?? 'invidious';
@ -420,11 +544,17 @@ async function init() {
invidiousPlayerStyle = result.invidiousPlayerStyle ?? 'DEFAULT'; invidiousPlayerStyle = result.invidiousPlayerStyle ?? 'DEFAULT';
invidiousSubtitles = result.invidiousSubtitles || ''; invidiousSubtitles = result.invidiousSubtitles || '';
invidiousRedirectsChecks = result.invidiousRedirectsChecks ?? [...redirects.invidious.normal]; invidiousNormalRedirectsChecks = result.invidiousNormalRedirectsChecks ?? [...redirects.invidious.normal];
invidiousCustomRedirects = result.invidiousCustomRedirects ?? []; invidiousNormalCustomRedirects = result.invidiousNormalCustomRedirects ?? [];
pipedRedirectsChecks = result.pipedRedirectsChecks ?? [...redirects.piped.normal]; invidiousTorRedirectsChecks = result.invidiousTorRedirectsChecks ?? [...redirects.invidious.tor];
pipedCustomRedirects = result.pipedCustomRedirects ?? []; invidiousTorCustomRedirects = result.invidiousTorCustomRedirects ?? [];
pipedNormalRedirectsChecks = result.pipedNormalRedirectsChecks ?? [...redirects.piped.normal];
pipedNormalCustomRedirects = result.pipedNormalCustomRedirects ?? [];
pipedTorRedirectsChecks = result.pipedTorRedirectsChecks ?? [...redirects.piped.tor];
pipedTorCustomRedirects = result.pipedTorCustomRedirects ?? [];
persistInvidiousPrefs = result.persistInvidiousPrefs ?? false; persistInvidiousPrefs = result.persistInvidiousPrefs ?? false;
@ -460,6 +590,9 @@ export default {
getDisable, getDisable,
setDisable, setDisable,
getprotocol,
setProtocol,
setInvidiousAlwaysProxy, setInvidiousAlwaysProxy,
getInvidiousAlwaysProxy, getInvidiousAlwaysProxy,
@ -487,17 +620,29 @@ export default {
getPersistInvidiousPrefs, getPersistInvidiousPrefs,
setPersistInvidiousPrefs, setPersistInvidiousPrefs,
getInvidiousRedirectsChecks, getInvidiousNormalRedirectsChecks,
setInvidiousRedirectsChecks, setInvidiousNormalRedirectsChecks,
getInvidiousCustomRedirects, getInvidiousNormalCustomRedirects,
setInvidiousCustomRedirects, setInvidiousNormalCustomRedirects,
getPipedRedirectsChecks, getPipedNormalRedirectsChecks,
setPipedRedirectsChecks, setPipedNormalRedirectsChecks,
getPipedCustomRedirects, getPipedNormalCustomRedirects,
setPipedCustomRedirects, setPipedNormalCustomRedirects,
getInvidiousTorRedirectsChecks,
setInvidiousTorRedirectsChecks,
getInvidiousTorCustomRedirects,
setInvidiousTorCustomRedirects,
getPipedTorRedirectsChecks,
setPipedTorRedirectsChecks,
getPipedTorCustomRedirects,
setPipedTorCustomRedirects,
getAlwaysusePreferred, getAlwaysusePreferred,
setAlwaysusePreferred, setAlwaysusePreferred,

View File

@ -11,6 +11,7 @@ imgurHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'rimgo', 'rimgo',
'normal',
imgurHelper, imgurHelper,
document, document,
imgurHelper.getRimgoRedirectsChecks, imgurHelper.getRimgoRedirectsChecks,

View File

@ -11,6 +11,7 @@ instagramHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'bibliogram', 'bibliogram',
'normal',
instagramHelper, instagramHelper,
document, document,
instagramHelper.getBibliogramRedirectsChecks, instagramHelper.getBibliogramRedirectsChecks,

View File

@ -11,6 +11,7 @@ mediumHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'scribe', 'scribe',
'normal',
mediumHelper, mediumHelper,
document, document,
mediumHelper.getScribeRedirectsChecks, mediumHelper.getScribeRedirectsChecks,

View File

@ -37,6 +37,7 @@ redditHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'libreddit', 'libreddit',
'normal',
redditHelper, redditHelper,
document, document,
redditHelper.getLibredditRedirectsChecks, redditHelper.getLibredditRedirectsChecks,
@ -47,6 +48,7 @@ redditHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'teddit', 'teddit',
'normal',
redditHelper, redditHelper,
document, document,
redditHelper.getTedditRedirectsChecks, redditHelper.getTedditRedirectsChecks,

View File

@ -38,6 +38,7 @@ searchHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'searx', 'searx',
'normal',
searchHelper, searchHelper,
document, document,
searchHelper.getSearxRedirectsChecks, searchHelper.getSearxRedirectsChecks,
@ -48,6 +49,7 @@ searchHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'whoogle', 'whoogle',
'normal',
searchHelper, searchHelper,
document, document,
searchHelper.getWhoogleRedirectsChecks, searchHelper.getWhoogleRedirectsChecks,

View File

@ -11,6 +11,7 @@ tiktokHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'proxiTok', 'proxiTok',
'normal',
tiktokHelper, tiktokHelper,
document, document,
tiktokHelper.getProxiTokRedirectsChecks, tiktokHelper.getProxiTokRedirectsChecks,

View File

@ -58,6 +58,7 @@ translateHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'simplyTranslate', 'simplyTranslate',
'normal',
translateHelper, translateHelper,
document, document,
translateHelper.getSimplyTranslateRedirectsChecks, translateHelper.getSimplyTranslateRedirectsChecks,
@ -68,6 +69,7 @@ translateHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'lingva', 'lingva',
'normal',
translateHelper, translateHelper,
document, document,
translateHelper.getLingvaRedirectsChecks, translateHelper.getLingvaRedirectsChecks,

View File

@ -115,29 +115,65 @@
<input id="disable-nitter" type="checkbox" checked /> <input id="disable-nitter" type="checkbox" checked />
</div> </div>
<div class="some-block option-block">
<h4>Protocol</h4>
<select id="protocol">
<option value="normal">Normal</option>
<option value="tor">Tor</option>
</select>
</div>
<hr> <hr>
<div class="some-block option-block"> <div id="normal">
<h4>Default Instances</h4>
</div>
<div class="checklist" id="nitter-checklist"></div>
<hr>
<div class="some-block option-block">
<h4>Custom Instances</h4>
</div>
<form id="custom-nitter-instance-form">
<div class="some-block option-block"> <div class="some-block option-block">
<input id="nitter-custom-instance" placeholder="https://nitter.com" type="url" /> <h4>Default Instances</h4>
<button type="submit" class="add" id="nitter-add-instance">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</svg>
</button>
</div> </div>
</form> <div class="checklist" id="nitter-normal-checklist"></div>
<div class="checklist" id="nitter-custom-checklist"></div> <hr>
<div class="some-block option-block">
<h4>Custom Instances</h4>
</div>
<form id="custom-nitter-normal-instance-form">
<div class="some-block option-block">
<input id="nitter-normal-custom-instance" placeholder="https://nitter.com" type="url" />
<button type="submit" class="add" id="nitter-normal-add-instance">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</svg>
</button>
</div>
</form>
<div class="checklist" id="nitter-normal-custom-checklist"></div>
</div>
<div id="tor">
<div class="some-block option-block">
<h4>Default Tor Instances</h4>
</div>
<div class="checklist" id="nitter-tor-checklist"></div>
<hr>
<div class="some-block option-block">
<h4>Custom Instances</h4>
</div>
<form id="custom-nitter-tor-instance-form">
<div class="some-block option-block">
<input id="nitter-tor-custom-instance" placeholder="https://nitter.com" type="url" />
<button type="submit" class="add" id="nitter-tor-add-instance">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</svg>
</button>
</div>
</form>
<div class="checklist" id="nitter-tor-custom-checklist"></div>
</div>
</section> </section>

View File

@ -6,16 +6,54 @@ disableTwitterElement.addEventListener("change",
(event) => twitterHelper.setDisable(!event.target.checked) (event) => twitterHelper.setDisable(!event.target.checked)
); );
let protocolElement = document.getElementById("protocol")
protocolElement.addEventListener("change",
(event) => {
let protocol = event.target.options[protocolElement.selectedIndex].value
twitterHelper.setProtocol(protocol);
changeProtocolSettings(protocol);
}
);
function changeProtocolSettings(protocol) {
let normalDiv = document.getElementById("normal");
let torDiv = document.getElementById("tor");
if (protocol == 'normal') {
normalDiv.style.display = 'block';
torDiv.style.display = 'none';
}
else if (protocol == 'tor') {
normalDiv.style.display = 'none';
torDiv.style.display = 'block';
}
}
twitterHelper.init().then(() => { twitterHelper.init().then(() => {
disableTwitterElement.checked = !twitterHelper.getDisable(); disableTwitterElement.checked = !twitterHelper.getDisable();
let protocol = twitterHelper.getprotocol();
protocolElement.value = protocol;
changeProtocolSettings(protocol);
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'nitter', 'nitter',
'normal',
twitterHelper, twitterHelper,
document, document,
twitterHelper.getNitterRedirectsChecks, twitterHelper.getNitterNormalRedirectsChecks,
twitterHelper.setNitterRedirectsChecks, twitterHelper.setNitterNormalRedirectsChecks,
twitterHelper.getNitterCustomRedirects, twitterHelper.getNitterNormalCustomRedirects,
twitterHelper.setNitterCustomRedirects twitterHelper.setNitterNormalCustomRedirects
)
commonHelper.processDefaultCustomInstances(
'nitter',
'tor',
twitterHelper,
document,
twitterHelper.getNitterTorRedirectsChecks,
twitterHelper.setNitterTorRedirectsChecks,
twitterHelper.getNitterTorCustomRedirects,
twitterHelper.setNitterTorCustomRedirects
) )
}); });

View File

@ -10,6 +10,7 @@ wikipediaHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'wikiless', 'wikiless',
'normal',
wikipediaHelper, wikipediaHelper,
document, document,
wikipediaHelper.getWikilessRedirectsChecks, wikipediaHelper.getWikilessRedirectsChecks,

View File

@ -26,6 +26,7 @@ persistInvidiousPrefsElement.addEventListener("change",
(event) => youtubeHelper.setPersistInvidiousPrefs(event.target.checked) (event) => youtubeHelper.setPersistInvidiousPrefs(event.target.checked)
); );
youtubeHelper.init().then(() => { youtubeHelper.init().then(() => {
invidiousPlayerStyleElement.value = youtubeHelper.getInvidiousPlayerStyle(); invidiousPlayerStyleElement.value = youtubeHelper.getInvidiousPlayerStyle();
invidiousAlwaysProxyElement.checked = youtubeHelper.getInvidiousAlwaysProxy(); invidiousAlwaysProxyElement.checked = youtubeHelper.getInvidiousAlwaysProxy();
@ -35,12 +36,24 @@ youtubeHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'invidious', 'invidious',
'normal',
youtubeHelper, youtubeHelper,
document, document,
youtubeHelper.getInvidiousRedirectsChecks, youtubeHelper.getInvidiousNormalRedirectsChecks,
youtubeHelper.setInvidiousRedirectsChecks, youtubeHelper.setInvidiousNormalRedirectsChecks,
youtubeHelper.getInvidiousCustomRedirects, youtubeHelper.getInvidiousNormalCustomRedirects,
youtubeHelper.setInvidiousCustomRedirects youtubeHelper.setInvidiousNormalCustomRedirects
) );
commonHelper.processDefaultCustomInstances(
'invidious',
'tor',
youtubeHelper,
document,
youtubeHelper.getInvidiousTorRedirectsChecks,
youtubeHelper.setInvidiousTorRedirectsChecks,
youtubeHelper.getInvidiousTorCustomRedirects,
youtubeHelper.setInvidiousTorCustomRedirects
);
}); });

View File

@ -4,13 +4,24 @@ import commonHelper from "../../../assets/javascripts/helpers/common.js";
youtubeHelper.init().then(() => { youtubeHelper.init().then(() => {
commonHelper.processDefaultCustomInstances( commonHelper.processDefaultCustomInstances(
'piped', 'piped',
'normal',
youtubeHelper, youtubeHelper,
document, document,
youtubeHelper.getPipedRedirectsChecks, youtubeHelper.getPipedNormalRedirectsChecks,
youtubeHelper.setPipedRedirectsChecks, youtubeHelper.setPipedNormalRedirectsChecks,
youtubeHelper.getPipedCustomRedirects, youtubeHelper.getPipedNormalCustomRedirects,
youtubeHelper.setPipedCustomRedirects youtubeHelper.setPipedNormalCustomRedirects
) );
commonHelper.processDefaultCustomInstances(
'piped',
'tor',
youtubeHelper,
document,
youtubeHelper.getPipedTorRedirectsChecks,
youtubeHelper.setPipedTorRedirectsChecks,
youtubeHelper.getPipedTorCustomRedirects,
youtubeHelper.setPipedTorCustomRedirects
);
}); });

View File

@ -138,6 +138,15 @@
</div> </div>
<div id="invidious-piped"> <div id="invidious-piped">
<div class="some-block option-block">
<h4>Protocol</h4>
<select id="protocol">
<option value="normal">Normal</option>
<option value="tor">Tor</option>
</select>
</div>
<div class="some-block option-block"> <div class="some-block option-block">
<h4>Redirect Type</h4> <h4>Redirect Type</h4>
<select id="only-embed"> <select id="only-embed">
@ -225,54 +234,111 @@
<hr> <hr>
<div class="some-block option-block">
<h4>Default Instances</h4> <div id="invidious-normal">
</div>
<div class="checklist" id="invidious-checklist">
</div>
<hr>
<div class="some-block option-block">
<h4>Custom Instances</h4>
</div>
<form id="custom-invidious-instance-form">
<div class="some-block option-block"> <div class="some-block option-block">
<input id="invidious-custom-instance" placeholder="https://invidious.com" type="url" /> <h4>Default Instances</h4>
<button type="submit" class="add" id="invidious-add-instance">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</svg>
</button>
</div> </div>
</form> <div class="checklist" id="invidious-normal-checklist">
<div class="checklist" id="invidious-custom-checklist"></div> </div>
<hr>
<div class="some-block option-block">
<h4>Custom Instances</h4>
</div>
<form id="custom-invidious-normal-instance-form">
<div class="some-block option-block">
<input id="invidious-normal-custom-instance" placeholder="https://invidious.com" type="url" />
<button type="submit" class="add" id="invidious-normal-add-instance">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</svg>
</button>
</div>
</form>
<div class="checklist" id="invidious-normal-custom-checklist"></div>
</div>
<div id="invidious-tor">
<div class="some-block option-block">
<h4>Default Instances</h4>
</div>
<div class="checklist" id="invidious-tor-checklist">
</div>
<hr>
<div class="some-block option-block">
<h4>Custom Instances</h4>
</div>
<form id="custom-invidious-tor-instance-form">
<div class="some-block option-block">
<input id="invidious-tor-custom-instance" placeholder="https://invidious.com" type="url" />
<button type="submit" class="add" id="invidious-tor-add-instance">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</svg>
</button>
</div>
</form>
<div class="checklist" id="invidious-tor-custom-checklist"></div>
</div>
</div> </div>
<div id="piped"> <div id="piped">
<hr> <hr>
<div class="some-block option-block"> <div id="piped-normal">
<h4>Default Instances</h4>
</div>
<div class="checklist" id="piped-checklist">
</div>
<hr>
<div class="some-block option-block">
<h4>Custom Instances</h4>
</div>
<form id="custom-piped-instance-form">
<div class="some-block option-block"> <div class="some-block option-block">
<input id="piped-custom-instance" placeholder="https://piped.com" type="url" /> <h4>Default Instances</h4>
<button type="submit" class="add" id="piped-add-instance">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</svg>
</button>
</div> </div>
</form> <div class="checklist" id="piped-normal-checklist">
<div class="checklist" id="piped-custom-checklist"></div> </div>
<hr>
<div class="some-block option-block">
<h4>Custom Instances</h4>
</div>
<form id="custom-piped-normal-instance-form">
<div class="some-block option-block">
<input id="piped-normal-custom-instance" placeholder="https://piped.com" type="url" />
<button type="submit" class="add" id="piped-normal-add-instance">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</svg>
</button>
</div>
</form>
<div class="checklist" id="piped-normal-custom-checklist"></div>
</div>
<div id="piped-tor">
<div class="some-block option-block">
<h4>Default Instances</h4>
</div>
<div class="checklist" id="piped-tor-checklist">
</div>
<hr>
<div class="some-block option-block">
<h4>Custom Instances</h4>
</div>
<form id="custom-piped-tor-instance-form">
<div class="some-block option-block">
<input id="piped-tor-custom-instance" placeholder="https://piped.com" type="url" />
<button type="submit" class="add" id="piped-tor-add-instance">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</svg>
</button>
</div>
</form>
<div class="checklist" id="piped-tor-custom-checklist"></div>
</div>
</div> </div>
</section> </section>

View File

@ -103,6 +103,35 @@ alwaysUsePreferredElement.addEventListener("change",
(event) => youtubeHelper.setAlwaysusePreferred(event.target.checked) (event) => youtubeHelper.setAlwaysusePreferred(event.target.checked)
); );
let protocolElement = document.getElementById("protocol")
protocolElement.addEventListener("change",
(event) => {
let protocol = event.target.options[protocolElement.selectedIndex].value
youtubeHelper.setProtocol(protocol);
changeProtocolSettings(protocol);
}
);
function changeProtocolSettings(protocol) {
let normalPipedDiv = document.getElementById("piped-normal");
let torPipedDiv = document.getElementById("piped-tor");
let normalInvidiousDiv = document.getElementById("invidious-normal");
let torInvidiousDiv = document.getElementById("invidious-tor");
if (protocol == 'normal') {
normalPipedDiv.style.display = 'block';
normalInvidiousDiv.style.display = 'block';
torInvidiousDiv.style.display = 'none';
torPipedDiv.style.display = 'none';
}
else if (protocol == 'tor') {
normalPipedDiv.style.display = 'none';
normalInvidiousDiv.style.display = 'none';
torInvidiousDiv.style.display = 'block';
torPipedDiv.style.display = 'block';
}
}
youtubeHelper.init().then(() => { youtubeHelper.init().then(() => {
disableYoutubeElement.checked = !youtubeHelper.getDisable(); disableYoutubeElement.checked = !youtubeHelper.getDisable();
themeElement.checked = youtubeHelper.getTheme(); themeElement.checked = youtubeHelper.getTheme();
@ -115,6 +144,10 @@ youtubeHelper.init().then(() => {
youtubeFrontendElement.value = frontend; youtubeFrontendElement.value = frontend;
changeFrontendsSettings(frontend); changeFrontendsSettings(frontend);
let protocol = youtubeHelper.getprotocol();
protocolElement.value = protocol;
changeProtocolSettings(protocol);
let freetubeFrontend = youtubeHelper.getFreetubeFrontend() let freetubeFrontend = youtubeHelper.getFreetubeFrontend()
freetubeFrontendElement.value = freetubeFrontend freetubeFrontendElement.value = freetubeFrontend
if (frontend == "freetube") changeFreetubeFrontendsSettings(freetubeFrontend); if (frontend == "freetube") changeFreetubeFrontendsSettings(freetubeFrontend);

View File

@ -141,35 +141,18 @@
</svg> </svg>
<h4>Medium</h4> <h4>Medium</h4>
</div> </div>
<input id="disable-medium" type="checkbox" checked /> <input id="disable-medium" type="checkbox" checked />
</div> </div>
<div class="buttons"> <div class="buttons">
<a class="button" id="more-options"> <a class="button" id="more-options">
<span data-localise="__MSG_moreOptions__">More Options&nbsp;</span> <span>Settings&nbsp;</span>
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512"> <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24"
<path d="M384,224V408a40,40,0,0,1-40,40H104a40,40,0,0,1-40-40V168a40,40,0,0,1,40-40H271.48" style=" width="24px" fill="currentColor">
fill: none; <g>
stroke: inherit; <path
stroke-linecap: round; d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z" />
stroke-linejoin: round; </g>
stroke-width: 32px;
" />
<polyline points="336 64 448 64 448 176" style="
fill: none;
stroke: inherit;
stroke-linecap: round;
stroke-linejoin: round;
stroke-width: 32px;
" />
<line x1="224" y1="288" x2="440" y2="72" style="
fill: none;
stroke: inherit;
stroke-linecap: round;
stroke-linejoin: round;
stroke-width: 32px;
" />
</svg> </svg>
</a> </a>
</div> </div>

View File

@ -1,5 +1,4 @@
body { body {
width: 230px; width: 230px;
min-height: auto; min-height: auto;
background-color: var(--bg-main);
} }