From bab3f02a3680c9f29e3dee40033c97c87750081b Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Sat, 11 Jun 2022 14:14:14 +0300 Subject: [PATCH] Added quetre #230 --- src/assets/images/quora.png | Bin 0 -> 5499 bytes src/assets/javascripts/general.js | 2 + src/assets/javascripts/quora.js | 160 ++++++++++++++++++++++ src/assets/javascripts/utils.js | 4 + src/assets/javascripts/youtube/youtube.js | 5 +- src/instances/data.json | 18 ++- src/instances/get_instances.py | 22 +++ src/pages/background/background.js | 4 + src/pages/options/index.html | 79 +++++++++++ src/pages/options/index.pug | 1 + src/pages/options/widgets/general.js | 2 + src/pages/options/widgets/general.pug | 6 + src/pages/options/widgets/quora.js | 42 ++++++ src/pages/options/widgets/quora.pug | 26 ++++ src/pages/popup/popup.html | 4 + src/pages/popup/popup.js | 4 + src/pages/popup/popup.pug | 6 + src/pages/widgets/links.pug | 4 + 18 files changed, 383 insertions(+), 6 deletions(-) create mode 100644 src/assets/images/quora.png create mode 100644 src/assets/javascripts/quora.js create mode 100644 src/pages/options/widgets/quora.js create mode 100644 src/pages/options/widgets/quora.pug diff --git a/src/assets/images/quora.png b/src/assets/images/quora.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a069544e020ce4fdd3b009c5a040b7db0a92dd GIT binary patch literal 5499 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 x1BVbC5>k{ILi&XiMMBCV;nlvhGY}(E_ { + redirects.quetre = val; + quetreNormalRedirectsChecks = [...redirects.quetre.normal]; + for (const instance of r.cloudflareBlackList) { + const a = quetreNormalRedirectsChecks.indexOf(instance); + if (a > -1) quetreNormalRedirectsChecks.splice(a, 1); + } + browser.storage.local.set({ + quoraRedirects: redirects, + quetreNormalRedirectsChecks + }) + }) +} + +let + disableQuora, + quoraProtocol, + quoraRedirects, + quetreNormalRedirectsChecks, + quetreNormalCustomRedirects, + quetreTorRedirectsChecks, + quetreTorCustomRedirects; + +function init() { + return new Promise(async resolve => { + browser.storage.local.get( + [ + "disableQuora", + "quoraProtocol", + "quoraRedirects", + "quetreNormalRedirectsChecks", + "quetreNormalCustomRedirects", + "quetreTorRedirectsChecks", + "quetreTorCustomRedirects", + ], + r => { + disableQuora = r.disableQuora; + quoraProtocol = r.quoraProtocol; + quoraRedirects = r.quoraRedirects; + quetreNormalRedirectsChecks = r.quetreNormalRedirectsChecks; + quetreNormalCustomRedirects = r.quetreNormalCustomRedirects; + quetreTorRedirectsChecks = r.quetreTorRedirectsChecks; + quetreTorCustomRedirects = r.quetreTorCustomRedirects; + resolve(); + } + ) + }) +} + +init(); +browser.storage.onChanged.addListener(init) + +// https://www.quora.com/@keysikaspol/video/7061265241887345946 +// https://www.quora.com/@keysikaspol +function redirect(url, type, initiator) { + if (disableQuora) return; + if (type != "main_frame") return; + const all = [ + ...quoraRedirects.quetre.normal, + ...quetreNormalCustomRedirects + ]; + if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; + if (!targets.some(rx => rx.test(url.href))) return; + + let instancesList; + if (quoraProtocol == 'normal') instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects]; + if (quoraProtocol == 'tor') instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects]; + if (instancesList.length === 0) return; + + const randomInstance = utils.getRandomInstance(instancesList); + return `${randomInstance}${url.pathname}`; +} + +function reverse(url) { + return new Promise(async resolve => { + await init(); + let protocolHost = utils.protocolHost(url); + const all = [ + ...quoraRedirects.quetre.normal, + ...quoraRedirects.quetre.tor, + ...quetreNormalCustomRedirects, + ...quetreTorCustomRedirects + ]; + if (!all.includes(protocolHost)) { resolve(); return; } + + resolve(`https://quora.com${url.pathname}${url.search}`); + }) +} + +function switchInstance(url) { + return new Promise(async resolve => { + await init(); + let protocolHost = utils.protocolHost(url); + const all = [ + ...quoraRedirects.quetre.tor, + ...quoraRedirects.quetre.normal, + + ...quetreNormalCustomRedirects, + ...quetreTorCustomRedirects, + ]; + if (!all.includes(protocolHost)) { resolve(); return; } + + let instancesList; + if (quoraProtocol == 'normal') instancesList = [...quetreNormalCustomRedirects, ...quetreNormalRedirectsChecks]; + else if (quoraProtocol == 'tor') instancesList = [...quetreTorCustomRedirects, ...quetreTorRedirectsChecks]; + + const i = instancesList.indexOf(protocolHost); + if (i > -1) instancesList.splice(i, 1); + if (instancesList.length === 0) { resolve(); return; } + + const randomInstance = utils.getRandomInstance(instancesList); + resolve(`${randomInstance}${url.pathname}${url.search}`); + }) +} + +function initDefaults() { + return new Promise(async resolve => { + fetch('/instances/data.json').then(response => response.text()).then(async data => { + let dataJson = JSON.parse(data); + redirects.quetre = dataJson.quetre; + browser.storage.local.set({ + disableQuora: false, + quoraProtocol: "normal", + + quoraRedirects: redirects, + + quetreNormalRedirectsChecks: [...redirects.quetre.normal], + quetreNormalCustomRedirects: [], + + quetreTorRedirectsChecks: [...redirects.quetre.tor], + quetreTorCustomRedirects: [], + }, () => resolve()); + }); + }) +} + +export default { + setRedirects, + + redirect, + reverse, + switchInstance, + + initDefaults +}; diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js index e0b9ec9..53a5bb2 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -11,6 +11,7 @@ import peertubeHelper from "./peertube.js"; import lbryHelper from "./lbry.js"; import sendTargetsHelper from "./sendTargets.js"; import tiktokHelper from "./tiktok.js"; +import quoraHelper from "./quora.js" import imgurHelper from "./imgur.js"; import localise from './localise.js' @@ -47,6 +48,7 @@ function updateInstances() { searchHelper.setRedirects({ 'searx': instances.searx, 'searxng': instances.searxng, 'whoogle': instances.whoogle }); wikipediaHelper.setRedirects(instances.wikiless); mediumHelper.setRedirects(instances.scribe); + quoraHelper.setRedirects(instances.query); sendTargetsHelper.setRedirects(instances.send); tiktokHelper.setRedirects(instances.proxiTok); @@ -363,6 +365,7 @@ function copyRaw(test, copyRawElement) { if (!newUrl) newUrl = await twitterHelper.reverse(url); if (!newUrl) newUrl = await instagramHelper.reverse(url); if (!newUrl) newUrl = await tiktokHelper.reverse(url); + if (!newUrl) newUrl = await quoraHelper.reverse(url); if (!newUrl) newUrl = await imgurHelper.reverse(url); if (newUrl) { @@ -435,6 +438,7 @@ function switchInstance(test) { if (!newUrl) newUrl = await searchHelper.switchInstance(url); if (!newUrl) newUrl = await translateHelper.switchInstance(url); if (!newUrl) newUrl = await mediumHelper.switchInstance(url); + if (!newUrl) newUrl = await quoraHelper.switchInstance(url); if (!newUrl) newUrl = await tiktokHelper.switchInstance(url); if (!newUrl) newUrl = await sendTargetsHelper.switchInstance(url); if (!newUrl) newUrl = await peertubeHelper.switchInstance(url); diff --git a/src/assets/javascripts/youtube/youtube.js b/src/assets/javascripts/youtube/youtube.js index 9caf675..e11578f 100644 --- a/src/assets/javascripts/youtube/youtube.js +++ b/src/assets/javascripts/youtube/youtube.js @@ -445,8 +445,9 @@ function removeXFrameOptions(e) { let newSecurity = ''; for (const item of securityPolicyList) { if (item.trim() == '') continue - console.log('item', item); - let [, key, vals] = item.match(/([a-z-]{0,}) (.*)/); + let regex = item.match(/([a-z-]{0,}) (.*)/) + if (regex == null) continue + let [, key, vals] = regex; if (key == 'frame-src') vals = vals + ' ' + instancesList.join(' '); newSecurity += key + ' ' + vals + '; '; } diff --git a/src/instances/data.json b/src/instances/data.json index 6b71796..07a11e8 100644 --- a/src/instances/data.json +++ b/src/instances/data.json @@ -316,6 +316,14 @@ ], "tor": [] }, + "quetre": { + "normal": [ + "https://quetre.herokuapp.com", + "https://quora.vern.cc", + "https://quetre.pussthecat.org" + ], + "tor": [] + }, "simplyTranslate": { "normal": [ "https://simplytranslate.org", @@ -357,7 +365,6 @@ "searx": { "tor": [ "http://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion", - "http://4n53nafyi77iplnbrpmxnp3x4exbswwxigujaxy3b37fvr7bvlopxeyd.onion", "http://z34ambyi6makk6ta7ksog2sljly2ctt2sa3apekb7wkllk72sxecdtad.onion", "http://yra4tke2pwcnatxjkufpw6kvebu3h3ti2jca2lcdpgx3mpwol326lzid.onion", "http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion", @@ -371,7 +378,6 @@ ], "normal": [ "https://anon.sx", - "https://asowneryt.cloudns.nz", "https://dynabyte.ca", "https://jsearch.pw", "https://nibblehole.com", @@ -390,7 +396,6 @@ "https://searx.josie.lol", "https://searx.kujonello.cf", "https://searx.mastodontech.de", - "https://searx.mha.fi", "https://searx.mxchange.org", "https://searx.nakhan.net", "https://searx.netzspielplatz.de", @@ -427,7 +432,9 @@ "searxng": { "tor": [ "http://w5rl6wsd7mzj4bdkbuqvzidet5osdsm5jhg2f7nvfidakfq5exda5wid.onion", + "http://4n53nafyi77iplnbrpmxnp3x4exbswwxigujaxy3b37fvr7bvlopxeyd.onion", "http://fpamcnxokg4lzz6b2y7jdwoujmnixfxrh7ptddehctqzoptn4wpdvjid.onion", + "http://gbat2pbpg7ys3fi3pbp64667tt5x66mg45xok35bxdw7v55brm7a27yd.onion", "http://searxdr3pqz4nydgnqocsia2xbywptxbkympa2emn7zlgggrir4bkfad.onion", "http://searx.micohauwkjbyw5meacrb4ipicwvwg4xtzl7y7viv53kig2mdcsvwkyyd.onion", "http://rq2w52kyrif3xpfihkgjnhqm3a5aqhoikpv72z3drpjglfzc2wr5z4yd.onion", @@ -435,6 +442,7 @@ ], "i2p": [], "normal": [ + "https://asowneryt.cloudns.nz", "https://darmarit.org/searx", "https://etsi.me", "https://northboot.xyz", @@ -449,6 +457,7 @@ "https://search.privacyguides.net", "https://search.rabbit-company.com", "https://search.roombob.cat", + "https://search.sapti.me", "https://search.vojkovic.xyz", "https://search.zzls.xyz", "https://searx.albony.xyz", @@ -458,6 +467,7 @@ "https://searx.fmac.xyz", "https://searx.gnous.eu", "https://searx.loafland.xyz", + "https://searx.mha.fi", "https://searx.namejeff.xyz", "https://searx.orion-hub.fr", "https://searx.ppeb.me", @@ -515,6 +525,7 @@ ] }, "peertube": [ + "https://syop.tv", "https://watch.thelema.social", "https://tube.miegl.cz", "https://mov.clov.fr", @@ -891,7 +902,6 @@ "https://phoenixproject.group", "https://peertube.sebu77.com", "https://www.orion-hub.fr", - "https://quantube.win", "https://tv.orion-serv.fr", "https://video.interru.io", "https://tube.cnr.it", diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index b6bba60..18870f3 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -239,6 +239,27 @@ def scribe(): print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Scribe') +def quetre(): + r = requests.get( + 'https://raw.githubusercontent.com/zyachel/quetre/main/README.md') + _list = {} + _list['normal'] = [] + _list['tor'] = [] + + tmp = re.findall( + r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|", r.text) + + tmp = filterLastSlash(tmp) + + for item in tmp: + if item.endswith('.onion'): + _list['tor'].append(item) + else: + _list['normal'].append(item) + mightyList['quetre'] = _list + print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Quetre') + + def simplytranslate(): r = requests.get('https://simple-web.org/instances/simplytranslate') simplyTranslateList = {} @@ -370,6 +391,7 @@ libreddit() teddit() wikiless() scribe() +quetre() simplytranslate() linvgatranslate() searx_searxng() diff --git a/src/pages/background/background.js b/src/pages/background/background.js index a1ac27d..07e7512 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -18,6 +18,7 @@ import tiktokHelper from "../../assets/javascripts/tiktok.js"; import sendTargetsHelper from "../../assets/javascripts/sendTargets.js"; import peertubeHelper from "../../assets/javascripts/peertube.js"; import lbryHelper from "../../assets/javascripts/lbry.js"; +import quoraHelper from "../../assets/javascripts/quora.js"; window.browser = window.browser || window.chrome; @@ -41,6 +42,7 @@ browser.runtime.onInstalled.addListener( searchHelper.initDefaults(); translateHelper.initDefaults(); mediumHelper.initDefaults(); + quoraHelper.initDefaults(); redditHelper.initDefaults(); wikipediaHelper.initDefaults(); imgurHelper.initDefaults(); @@ -98,6 +100,7 @@ browser.webRequest.onBeforeRequest.addListener( if (!newUrl) newUrl = mapsHelper.redirect(url, initiator); if (!newUrl) newUrl = redditHelper.redirect(url, details.type, initiator); if (!newUrl) newUrl = mediumHelper.redirect(url, details.type, initiator); + if (!newUrl) newUrl = quoraHelper.redirect(url, details.type, initiator); if (!newUrl) newUrl = imgurHelper.redirect(url, details.type, initiator); if (!newUrl) newUrl = tiktokHelper.redirect(url, details.type, initiator); if (!newUrl) newUrl = sendTargetsHelper.redirect(url, details.type, initiator); @@ -174,6 +177,7 @@ async function redirectOfflineInstance(url, tabId) { if (!newUrl) newUrl = await searchHelper.switchInstance(url); if (!newUrl) newUrl = await translateHelper.switchInstance(url); if (!newUrl) newUrl = await mediumHelper.switchInstance(url); + if (!newUrl) newUrl = await quoraHelper.switchInstance(url); if (!newUrl) newUrl = await tiktokHelper.switchInstance(url); if (!newUrl) newUrl = await imgurHelper.switchInstance(url); if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url); diff --git a/src/pages/options/index.html b/src/pages/options/index.html index 8d19b3a..dd09950 100644 --- a/src/pages/options/index.html +++ b/src/pages/options/index.html @@ -30,6 +30,7 @@ Medium +
@@ -209,6 +210,12 @@
+
+
+ Quora +
+ +
PeerTube @@ -1097,6 +1104,78 @@
+
+
+

Quora

+
+
+
+

Enable

+ +
+
+

Protocol

+ +
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

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

Default Instances

+
+
+
+
+

Custom Instances

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

PeerTube

diff --git a/src/pages/options/index.pug b/src/pages/options/index.pug index 6488ace..339b5cb 100644 --- a/src/pages/options/index.pug +++ b/src/pages/options/index.pug @@ -22,6 +22,7 @@ html#elementToShowWithJavaScript(lang="en") include ./widgets/imgur.pug include ./widgets/wikipedia.pug include ./widgets/medium.pug + include ./widgets/quora.pug include ./widgets/peertube.pug include ./widgets/lbry.pug include ./widgets/search.pug diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js index 6fe01b2..25f668a 100644 --- a/src/pages/options/widgets/general.js +++ b/src/pages/options/widgets/general.js @@ -14,6 +14,7 @@ import translateHelper from "../../../assets/javascripts/translate/translate.js" import mapsHelper from "../../../assets/javascripts/maps.js"; import wikipediaHelper from "../../../assets/javascripts/wikipedia.js"; import mediumHelper from "../../../assets/javascripts/medium.js"; +import quoraHelper from "../../../assets/javascripts/quora.js"; import imgurHelper from "../../../assets/javascripts/imgur.js"; import tiktokHelper from "../../../assets/javascripts/tiktok.js"; import sendTargetsHelper from "../../../assets/javascripts/sendTargets.js"; @@ -130,6 +131,7 @@ resetSettings.addEventListener("click", await searchHelper.initDefaults(); await translateHelper.initDefaults(); await mediumHelper.initDefaults(); + await quoraHelper.initDefaults(); await redditHelper.initDefaults(); await wikipediaHelper.initDefaults(); await imgurHelper.initDefaults(); diff --git a/src/pages/options/widgets/general.pug b/src/pages/options/widgets/general.pug index ac9f663..4123a7f 100644 --- a/src/pages/options/widgets/general.pug +++ b/src/pages/options/widgets/general.pug @@ -150,6 +150,12 @@ section#general_page.option-block x(data-localise="__MSG_medium__") Medium input#medium(type="checkbox") + div + div + img(src="../../../assets/images/quora.png") + x(data-localise="__MSG_quora__") Quora + input#quora(type="checkbox") + div div img(src="../../../assets/images/peertube-icon.svg") diff --git a/src/pages/options/widgets/quora.js b/src/pages/options/widgets/quora.js new file mode 100644 index 0000000..34e84cf --- /dev/null +++ b/src/pages/options/widgets/quora.js @@ -0,0 +1,42 @@ +import utils from "../../../assets/javascripts/utils.js"; + +const enable = document.getElementById("quora-enable"); +const protocol = document.getElementById("quora-protocol") +const quora = document.getElementById('quora_page'); + +function changeProtocolSettings() { + const normalDiv = document.getElementsByClassName("normal")[0]; + const torDiv = document.getElementsByClassName("tor")[0]; + if (protocol.value == 'normal') { + normalDiv.style.display = 'block'; + torDiv.style.display = 'none'; + } + else if (protocol.value == 'tor') { + normalDiv.style.display = 'none'; + torDiv.style.display = 'block'; + } +} + +quora.addEventListener("change", () => { + changeProtocolSettings(); + browser.storage.local.set({ + disableQuora: !enable.checked, + quoraProtocol: protocol.value, + }) +}) + +browser.storage.local.get( + [ + "disableQuora", + "quoraProtocol" + ], + r => { + enable.checked = !r.disableQuora; + protocol.value = r.quoraProtocol; + changeProtocolSettings(); + } +) + +utils.processDefaultCustomInstances('quora', 'quetre', 'normal', document); +utils.processDefaultCustomInstances('quora', 'quetre', 'tor', document); +utils.latency('quora', 'quetre', document, location) \ No newline at end of file diff --git a/src/pages/options/widgets/quora.pug b/src/pages/options/widgets/quora.pug new file mode 100644 index 0000000..8f5fe63 --- /dev/null +++ b/src/pages/options/widgets/quora.pug @@ -0,0 +1,26 @@ +section#quora_page.option-block + .some-block.option-block + h1(data-localise="__MSG_quora__") Quora + hr + .some-block.option-block + h4(data-localise="__MSG_enable__") Enable + input#quora-enable(type="checkbox") + + .some-block.option-block + h4(data-localise="__MSG_protocol__") Protocol + select#quora-protocol + option(value="normal" data-localise="__MSG_normal__") Normal + option(value="tor" data-localise="__MSG_tor__") Tor + + #quetre + hr + .normal + include ../../widgets/instances.pug + +instances('https://quetre.com') + include ../../widgets/latency.pug + +latency('quetre') + .tor + include ../../widgets/instances.pug + +instances('https://quetre.onion') + + script(type="module" src="./widgets/quora.js") \ No newline at end of file diff --git a/src/pages/popup/popup.html b/src/pages/popup/popup.html index 5b00b08..8555dca 100644 --- a/src/pages/popup/popup.html +++ b/src/pages/popup/popup.html @@ -48,6 +48,10 @@

Medium

+

PeerTube

diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js index 17eeb2c..a25ca6b 100644 --- a/src/pages/popup/popup.js +++ b/src/pages/popup/popup.js @@ -44,6 +44,7 @@ let disableSearchElement = document.getElementById("disable-search"); let disableElement = document.getElementById("disable-simplyTranslate"); let disableWikipediaElement = document.getElementById("disable-wikipedia"); let disableMediumElement = document.getElementById("disable-medium"); +let disableQuoraElement = document.getElementById("disable-quora"); let disablePeertubeElement = document.getElementById("disable-peertube"); let disableLbryElement = document.getElementById("disable-lbry"); let disableSendTargetsElement = document.getElementById("disable-sendTargets"); @@ -64,6 +65,7 @@ browser.storage.local.get( "disableImgur", "disableTiktok", "disableMedium", + "disableQuora", "disablePeertubeTargets", "disableLbryTargets", "disableSendTarget", @@ -83,6 +85,7 @@ browser.storage.local.get( disableImgurElement.checked = !r.disableImgur; disableTiktokElement.checked = !r.disableTiktok; disableMediumElement.checked = !r.disableMedium; + disableQuoraElement.checked = !r.disableQuora; disablePeertubeElement.checked = !r.disablePeertubeTargets; disableLbryElement.checked = !r.disableLbryTargets; disableSendTargetsElement.checked = !r.disableSendTarget; @@ -109,6 +112,7 @@ document.addEventListener("change", () => { disableImgur: !disableImgurElement.checked, disableTiktok: !disableTiktokElement.checked, disableMedium: !disableMediumElement.checked, + disableQuora: !disableQuoraElement.checked, disablePeertubeTargets: !disablePeertubeElement.checked, disableLbryTargets: !disableLbryElement.checked, disableSendTarget: !disableSendTargetsElement.checked, diff --git a/src/pages/popup/popup.pug b/src/pages/popup/popup.pug index a2c8de9..02d9165 100644 --- a/src/pages/popup/popup.pug +++ b/src/pages/popup/popup.pug @@ -62,6 +62,12 @@ html(lang="en") h4(data-localise="__MSG_medium__") Medium input#disable-medium(type="checkbox") + #quora.some-block + a.title(href="https://quora.com") + img(src="../../assets/images/quora.png") + h4(data-localise="__MSG_quora__") Quora + input#disable-quora(type="checkbox") + #peertube.some-block a.title(href="https://search.joinpeertube.org") img(src="../../assets/images/peertube-icon.svg") diff --git a/src/pages/widgets/links.pug b/src/pages/widgets/links.pug index 7a04a99..256dd9b 100644 --- a/src/pages/widgets/links.pug +++ b/src/pages/widgets/links.pug @@ -42,6 +42,10 @@ mixin links(service) +medium a(href="#medium" data-localise="__MSG_medium__") Medium + .title + img(src="../../../assets/images/quora.png") + a(href="#quora" data-localise="__MSG_quora__") Quora + .title img(src="../../../assets/images/peertube-icon.svg") a(href="#peertube" data-localise="__MSG_peertube__") PeerTube