From ae29c4c70aa12095a8159884f49a7a9c31ccb9d5 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Wed, 23 Feb 2022 19:48:04 +0300 Subject: [PATCH] Added translate tor support #32 --- src/assets/javascripts/helpers/medium.js | 4 +- src/assets/javascripts/helpers/translate.js | 183 +++++++++++++----- .../javascripts/helpers/youtube/youtube.js | 2 - src/instances/data.json | 4 +- src/instances/get_instances.py | 1 + src/pages/options/reddit/reddit.js | 1 - src/pages/options/translate/translate.html | 146 ++++++++++---- src/pages/options/translate/translate.js | 70 ++++++- 8 files changed, 300 insertions(+), 111 deletions(-) diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js index cd45917..7bd5aa6 100644 --- a/src/assets/javascripts/helpers/medium.js +++ b/src/assets/javascripts/helpers/medium.js @@ -100,8 +100,8 @@ let protocol; const getProtocol = () => protocol; function setProtocol(val) { protocol = val; - browser.storage.local.set({ mediumProtocol: val }) - console.log("mediumProtocol: ", val) + browser.storage.local.set({ mediumProtocol: val }); + console.log("mediumProtocol: ", val); } function isMedium(url, initiator) { diff --git a/src/assets/javascripts/helpers/translate.js b/src/assets/javascripts/helpers/translate.js index 18d6ff5..72ba8a5 100644 --- a/src/assets/javascripts/helpers/translate.js +++ b/src/assets/javascripts/helpers/translate.js @@ -9,31 +9,13 @@ const targets = [ let redirects = { "simplyTranslate": { - "normal": [ - "https://simplytranslate.org", - "https://st.alefvanoon.xyz", - "https://translate.josias.dev", - "https://translate.namazso.eu", - "https://translate.riverside.rocks", - "https://manerakai.asuscomm.com:447", - "https://translate.bus-hit.me", - "https://simplytranslate.pussthecat.org", - "https://translate.northboot.xyz" - ], - "tor": [ - "http://fyng2tsmzmvxmojzbbwmfnsn2lrcyftf4cw6rk5j2v2huliazud3fjid.onion", - "http://xxtbwyb5z5bdvy2f6l2yquu5qilgkjeewno4qfknvb3lkg3nmoklitid.onion" - ] + "normal": [], + "tor": [] }, "lingva": { - "normal": [ - "https://lingva.ml", - "https://translate.alefvanoon.xyz", - "https://translate.igna.rocks", - "https://lingva.pussthecat.org", - "https://translate.datatunnel.xyz", - ] + "normal": [], + "tor": [] } }; @@ -42,10 +24,12 @@ const getRedirects = () => redirects; const getCustomRedirects = function () { return { "simplyTranslate": { - "normal": [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] + "normal": [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects], + "tor": [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] }, "lingva": { - "normal": [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects] + "normal": [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects], + "tor": [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects] } }; }; @@ -60,6 +44,13 @@ function setSimplyTranslateRedirects(val) { if (index !== -1) simplyTranslateNormalRedirectsChecks.splice(index, 1); } setSimplyTranslateNormalRedirectsChecks(simplyTranslateNormalRedirectsChecks); + + for (const item of simplyTranslateTorRedirectsChecks) + if (!redirects.simplyTranslate.normal.includes(item)) { + var index = simplyTranslateTorRedirectsChecks.indexOf(item); + if (index !== -1) simplyTranslateTorRedirectsChecks.splice(index, 1); + } + setSimplyTranslateTorRedirectsChecks(simplyTranslateTorRedirectsChecks); } let simplyTranslateNormalRedirectsChecks; @@ -70,6 +61,14 @@ function setSimplyTranslateNormalRedirectsChecks(val) { console.log("simplyTranslateNormalRedirectsChecks: ", val) } +let simplyTranslateTorRedirectsChecks; +const getSimplyTranslateTorRedirectsChecks = () => simplyTranslateTorRedirectsChecks; +function setSimplyTranslateTorRedirectsChecks(val) { + simplyTranslateTorRedirectsChecks = val; + browser.storage.local.set({ simplyTranslateTorRedirectsChecks }) + console.log("simplyTranslateTorRedirectsChecks: ", val) +} + let simplyTranslateNormalCustomRedirects = []; const getSimplyTranslateNormalCustomRedirects = () => simplyTranslateNormalCustomRedirects; function setSimplyTranslateNormalCustomRedirects(val) { @@ -78,6 +77,14 @@ function setSimplyTranslateNormalCustomRedirects(val) { console.log("simplyTranslateNormalCustomRedirects: ", val) } +let simplyTranslateTorCustomRedirects = []; +const getSimplyTranslateTorCustomRedirects = () => simplyTranslateTorCustomRedirects; +function setSimplyTranslateTorCustomRedirects(val) { + simplyTranslateTorCustomRedirects = val; + browser.storage.local.set({ simplyTranslateTorCustomRedirects }) + console.log("simplyTranslateTorCustomRedirects: ", val) +} + function setLingvaRedirects(val) { redirects.lingva = val; browser.storage.local.set({ translateRedirects: redirects }) @@ -88,6 +95,13 @@ function setLingvaRedirects(val) { if (index !== -1) lingvaNormalRedirectsChecks.splice(index, 1); } setLingvaNormalRedirectsChecks(lingvaNormalRedirectsChecks); + + for (const item of lingvaTorRedirectsChecks) + if (!redirects.lingva.normal.includes(item)) { + var index = lingvaTorRedirectsChecks.indexOf(item); + if (index !== -1) lingvaTorRedirectsChecks.splice(index, 1); + } + setLingvaTorRedirectsChecks(lingvaTorRedirectsChecks); } let lingvaNormalRedirectsChecks; @@ -98,6 +112,14 @@ function setLingvaNormalRedirectsChecks(val) { console.log("lingvaNormalRedirectsChecks: ", val) } +let lingvaTorRedirectsChecks; +const getLingvaTorRedirectsChecks = () => lingvaTorRedirectsChecks; +function setLingvaTorRedirectsChecks(val) { + lingvaTorRedirectsChecks = val; + browser.storage.local.set({ lingvaTorRedirectsChecks }) + console.log("lingvaTorRedirectsChecks: ", val) +} + let lingvaNormalCustomRedirects = []; const getLingvaNormalCustomRedirects = () => lingvaNormalCustomRedirects; function setLingvaNormalCustomRedirects(val) { @@ -106,6 +128,14 @@ function setLingvaNormalCustomRedirects(val) { console.log("lingvaNormalCustomRedirects: ", val) } +let lingvaTorCustomRedirects = []; +const getLingvaTorCustomRedirects = () => lingvaTorCustomRedirects; +function setLingvaTorCustomRedirects(val) { + lingvaTorCustomRedirects = val; + browser.storage.local.set({ lingvaTorCustomRedirects }) + console.log("lingvaTorCustomRedirects: ", val) +} + let disable; const getDisable = () => disable; function setDisable(val) { @@ -122,6 +152,14 @@ function setFrontend(val) { console.log("translateFrontend: ", frontend) } +let protocol; +const getProtocol = () => protocol; +function setProtocol(val) { + protocol = val; + browser.storage.local.set({ translateProtocol: val }) + console.log("translateProtocol: ", val) +} + let from; const getFrom = () => from; function setFrom(val) { @@ -152,17 +190,26 @@ function redirect(url) { myMap[pair[0]] = pair[1]; } if (frontend == 'simplyTranslate') { - let instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; + let instancesList; + if (protocol == 'normal') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; + if (protocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; if (instancesList.length === 0) return null; let randomInstance = commonHelper.getRandomInstance(instancesList) if (myMap.sl && myMap.tl && myMap.text) return `${randomInstance}/${url.search}`; - else - return `${randomInstance}/?sl=${from}&tl=${to}` + else { + if (from != "DEFAULT") url.searchParams.append("sl", from); + if (to != "DEFAULT") url.searchParams.append("tl", to); + return `${randomInstance}/${url.search}` + } + + } else if (frontend == 'lingva') { - let instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; + let instancesList; + if (protocol == 'normal') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; + if (protocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; if (instancesList.length === 0) return null; let randomInstance = commonHelper.getRandomInstance(instancesList) @@ -175,37 +222,56 @@ function redirect(url) { async function init() { return new Promise((resolve) => { - browser.storage.local.get( - [ - "translateDisable", - "translateFrontend", - "translateRedirects", - "simplyTranslateNormalRedirectsChecks", - "simplyTranslateNormalCustomRedirects", - "lingvaNormalRedirectsChecks", - "lingvaNormalCustomRedirects", - "translateFrom", - "translateTo", - ], - (result) => { - disable = result.translateDisable ?? false; - frontend = result.translateFrontend ?? "simplyTranslate"; + fetch('/instances/data.json').then(response => response.text()).then(data => { + let dataJson = JSON.parse(data); + browser.storage.local.get( + [ + "translateDisable", + "translateFrontend", + "translateProtocol", + "translateRedirects", - from = result.translateFrom ?? "auto"; - to = result.translateTo ?? 'en'; + "simplyTranslateNormalRedirectsChecks", + "simplyTranslateNormalCustomRedirects", + "simplyTranslateTorRedirectsChecks", + "simplyTranslateTorCustomRedirects", - if (result.translateRedirects) redirects = result.translateRedirects + "lingvaNormalRedirectsChecks", + "lingvaNormalCustomRedirects", + "lingvaTorRedirectsChecks", + "lingvaTorCustomRedirects", - simplyTranslateNormalRedirectsChecks = result.simplyTranslateNormalRedirectsChecks ?? [...redirects.simplyTranslate.normal]; - simplyTranslateNormalCustomRedirects = result.simplyTranslateNormalCustomRedirects ?? []; + "translateFrom", + "translateTo", + ], + (result) => { + disable = result.translateDisable ?? false; + frontend = result.translateFrontend ?? "simplyTranslate"; + protocol = result.translateProtocol ?? 'normal'; - lingvaNormalRedirectsChecks = result.lingvaNormalRedirectsChecks ?? [...redirects.lingva.normal]; - lingvaNormalCustomRedirects = result.lingvaNormalCustomRedirects ?? []; + from = result.translateFrom ?? "DEFAULT"; + to = result.translateTo ?? 'DEFAULT'; - resolve(); - }); + redirects.simplyTranslate = dataJson.simplyTranslate; + redirects.lingva = dataJson.lingva; + if (result.translateRedirects) redirects = result.translateRedirects; + + simplyTranslateNormalRedirectsChecks = result.simplyTranslateNormalRedirectsChecks ?? [...redirects.simplyTranslate.normal]; + simplyTranslateNormalCustomRedirects = result.simplyTranslateNormalCustomRedirects ?? []; + + simplyTranslateTorRedirectsChecks = result.simplyTranslateTorRedirectsChecks ?? [...redirects.simplyTranslate.tor]; + simplyTranslateTorCustomRedirects = result.simplyTranslateTorCustomRedirects ?? []; + + lingvaNormalRedirectsChecks = result.lingvaNormalRedirectsChecks ?? [...redirects.lingva.normal]; + lingvaNormalCustomRedirects = result.lingvaNormalCustomRedirects ?? []; + + lingvaTorRedirectsChecks = result.lingvaTorRedirectsChecks ?? [...redirects.lingva.tor]; + lingvaTorCustomRedirects = result.lingvaTorCustomRedirects ?? []; + + resolve(); + }); + }); }); - } export default { @@ -222,6 +288,9 @@ export default { getFrontend, setFrontend, + getProtocol, + setProtocol, + getFrom, setFrom, getTo, @@ -229,15 +298,23 @@ export default { getSimplyTranslateNormalRedirectsChecks, setSimplyTranslateNormalRedirectsChecks, + getSimplyTranslateTorRedirectsChecks, + setSimplyTranslateTorRedirectsChecks, getSimplyTranslateNormalCustomRedirects, setSimplyTranslateNormalCustomRedirects, + getSimplyTranslateTorCustomRedirects, + setSimplyTranslateTorCustomRedirects, getLingvaNormalRedirectsChecks, setLingvaNormalRedirectsChecks, + getLingvaTorRedirectsChecks, + setLingvaTorRedirectsChecks, getLingvaNormalCustomRedirects, setLingvaNormalCustomRedirects, + getLingvaTorCustomRedirects, + setLingvaTorCustomRedirects, redirect, init, diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js index 2feb64a..8d4b67d 100644 --- a/src/assets/javascripts/helpers/youtube/youtube.js +++ b/src/assets/javascripts/helpers/youtube/youtube.js @@ -134,7 +134,6 @@ function setDisable(val) { console.log("disableYoutube: ", disable) } - let protocol; const getProtocol = () => protocol; function setProtocol(val) { @@ -511,7 +510,6 @@ async function init() { redirects.invidious = dataJson.invidious; if (result.youtubeRedirects) redirects = result.youtubeRedirects; - disable = result.disableYoutube ?? false; protocol = result.youtubeProtocol ?? 'normal'; frontend = result.youtubeFrontend ?? 'piped'; diff --git a/src/instances/data.json b/src/instances/data.json index 80f6d43..66fbf75 100644 --- a/src/instances/data.json +++ b/src/instances/data.json @@ -64,7 +64,6 @@ "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", @@ -186,7 +185,8 @@ "https://lingva.pussthecat.org", "https://translate.datatunnel.xyz", "https://lingva.esmailelbob.xyz" - ] + ], + "tor": [] }, "searx": { "normal": [ diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index 8f95af1..e3e5668 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -134,6 +134,7 @@ r = requests.get( rJson = json.loads(r.text) lingvaList = {} lingvaList['normal'] = [] +lingvaList['tor'] = [] for item in rJson: lingvaList['normal'].append(item) mightyList['lingva'] = lingvaList diff --git a/src/pages/options/reddit/reddit.js b/src/pages/options/reddit/reddit.js index 57702dc..549822a 100644 --- a/src/pages/options/reddit/reddit.js +++ b/src/pages/options/reddit/reddit.js @@ -57,7 +57,6 @@ function changeProtocolSettings(protocol) { } } - redditHelper.init().then(() => { disableRedditElement.checked = !redditHelper.getDisableReddit(); diff --git a/src/pages/options/translate/translate.html b/src/pages/options/translate/translate.html index 4ef2622..92ac1db 100644 --- a/src/pages/options/translate/translate.html +++ b/src/pages/options/translate/translate.html @@ -120,12 +120,21 @@ +
+

Protocol

+ +
+

From

-

To

- +

Default Instances

- -
+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
-
-

Default Instances

-
-
-
-
-
-

Custom Instances

-
-
+
- - +

Default Instances

- -
+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
diff --git a/src/pages/options/translate/translate.js b/src/pages/options/translate/translate.js index 266814b..7626f34 100644 --- a/src/pages/options/translate/translate.js +++ b/src/pages/options/translate/translate.js @@ -32,27 +32,56 @@ translateFrontendElement.addEventListener("change", } ); +let protocolElement = document.getElementById("protocol") +protocolElement.addEventListener("change", + (event) => { + let protocol = event.target.options[protocolElement.selectedIndex].value + translateHelper.setProtocol(protocol); + changeProtocolSettings(protocol); + } +); + +function changeProtocolSettings(protocol) { + let normalSimplyTranslateDiv = document.getElementById("simplyTranslate-normal"); + let torSimplyTranslateDiv = document.getElementById("simplyTranslate-tor"); + + let normalLingvaDiv = document.getElementById("lingva-normal"); + let torLingvaDiv = document.getElementById("lingva-tor"); + if (protocol == 'normal') { + normalSimplyTranslateDiv.style.display = 'block'; + normalLingvaDiv.style.display = 'block'; + torLingvaDiv.style.display = 'none'; + torSimplyTranslateDiv.style.display = 'none'; + } + else if (protocol == 'tor') { + normalSimplyTranslateDiv.style.display = 'none'; + normalLingvaDiv.style.display = 'none'; + torLingvaDiv.style.display = 'block'; + torSimplyTranslateDiv.style.display = 'block'; + } +} + let fromElement = document.getElementById("from"); fromElement.addEventListener("change", - (event) => { - let from = event.target.options[fromElement.selectedIndex].value; - translateHelper.setFrom(from); - } + event => translateHelper.setFrom(event.target.options[fromElement.selectedIndex].value) ); let toElement = document.getElementById("to"); toElement.addEventListener("change", - (event) => { - let to = event.target.options[toElement.selectedIndex].value; - translateHelper.setTo(to); - } + event => translateHelper.setTo(event.target.options[toElement.selectedIndex].value) ); translateHelper.init().then(() => { disableElement.checked = !translateHelper.getDisable(); + let frontend = translateHelper.getFrontend(); translateFrontendElement.value = frontend; changeFrontendsSettings(frontend); + + let protocol = translateHelper.getProtocol(); + protocolElement.value = protocol; + changeProtocolSettings(protocol); + fromElement.value = translateHelper.getFrom(); toElement.value = translateHelper.getTo(); @@ -65,7 +94,19 @@ translateHelper.init().then(() => { translateHelper.setSimplyTranslateNormalRedirectsChecks, translateHelper.getSimplyTranslateNormalCustomRedirects, translateHelper.setSimplyTranslateNormalCustomRedirects - ) + ); + + commonHelper.processDefaultCustomInstances( + 'simplyTranslate', + 'tor', + translateHelper, + document, + translateHelper.getSimplyTranslateTorRedirectsChecks, + translateHelper.setSimplyTranslateTorRedirectsChecks, + translateHelper.getSimplyTranslateTorCustomRedirects, + translateHelper.setSimplyTranslateTorCustomRedirects + ); + commonHelper.processDefaultCustomInstances( 'lingva', @@ -76,5 +117,16 @@ translateHelper.init().then(() => { translateHelper.setLingvaNormalRedirectsChecks, translateHelper.getLingvaNormalCustomRedirects, translateHelper.setLingvaNormalCustomRedirects + ); + + commonHelper.processDefaultCustomInstances( + 'lingva', + 'tor', + translateHelper, + document, + translateHelper.getLingvaTorRedirectsChecks, + translateHelper.setLingvaTorRedirectsChecks, + translateHelper.getLingvaTorCustomRedirects, + translateHelper.setLingvaTorCustomRedirects ) }); \ No newline at end of file