From 378fab21c081735311f4b3dab9d3423d955b400b Mon Sep 17 00:00:00 2001 From: Hygna Date: Mon, 26 Sep 2022 18:32:32 +0100 Subject: Changes Changed some regex Made ejs no longer need extra config member variable Added url reversal --- src/assets/javascripts/services.js | 42 +- src/assets/javascripts/utils.js | 8 +- src/config/config.json | 1012 ++++++++++++++++----------------- src/instances/get_instances.py | 30 +- src/pages/options/index.ejs | 6 +- src/pages/options/widgets/general.js | 3 +- src/pages/options/widgets/services.js | 3 +- src/pages/popup/popup.ejs | 4 +- src/pages/popup/popup.js | 3 +- src/pages/widgets/links.ejs | 8 +- 10 files changed, 556 insertions(+), 563 deletions(-) (limited to 'src') diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js index 309d5528..25e998d2 100644 --- a/src/assets/javascripts/services.js +++ b/src/assets/javascripts/services.js @@ -11,8 +11,7 @@ async function getConfig() { fetch("/config/config.json") .then(response => response.text()) .then(data => { - const tmp = JSON.parse(data) - config = tmp.config + config = JSON.parse(data) resolve() }) }) @@ -55,7 +54,7 @@ function all(service) { for (const frontend in config.services[service].frontends) { if (config.services[service].frontends[frontend].instanceList) { for (const network in config.networks) { - tmp.push(...redirects[frontend][network]) + tmp.push(...redirects[frontend][network], ...options[frontend][network].custom) } } else if (config.services[service].frontends[frontend].singleInstance != undefined) tmp.push(config.services[service].frontends[frontend].singleInstance) } @@ -168,10 +167,10 @@ function redirect(url, type, initiator) { } else if (url.pathname.split("/").includes("tweets")) return `${randomInstance}${url.pathname.replace("/tweets", "")}${url.search}` else if (url.host == "t.co") return `${randomInstance}/t.co${url.pathname}` else return `${randomInstance}${url.pathname}${url.search}` - case "yatte": + case "yattee": return url.href.replace(/^https?:\/{2}/, "yattee://") case "freetube": - return `freetube://https://youtube.com${url.pathname}${url.search}` + return `freetube://https://youtu.be${url.pathname}${url.search}`.replace(/watch\?v=/, "") case "simplyTranslate": return `${randomInstance}/${url.search}` case "osm": { @@ -462,9 +461,9 @@ function switchInstance(url) { return new Promise(async resolve => { await init() await getConfig() + const protocolHost = utils.protocolHost(url) for (const service in config.services) { if (!options[service].enabled) continue - const protocolHost = utils.protocolHost(url) if (!all(service).includes(protocolHost)) continue let instancesList = [...options[options[service].frontend][options.network].checks, ...options[options[service].frontend][options.network].custom] @@ -485,15 +484,44 @@ function switchInstance(url) { // This is to make instance switching work when the instance depends on the pathname, eg https://darmarit.org/searx // Doesn't work because of .includes array method, not a top priotiry atm resolve(oldUrl.replace(oldInstance, randomInstance)) + return } resolve() }) } +function reverse(url) { + return new Promise(async resolve => { + await init() + await getConfig() + let protocolHost = utils.protocolHost(url) + let currentService + for (const service in config.services) { + if (!all(service).includes(protocolHost)) continue + currentService = service + } + switch (currentService) { + case "instagram": + if (url.pathname.startsWith("/p")) resolve(`https://instagram.com${url.pathname.replace("/p", "")}${url.search}`) + if (url.pathname.startsWith("/u")) resolve(`https://instagram.com${url.pathname.replace("/u", "")}${url.search}`) + case "youtube": + case "imdb": + case "imgur": + case "tiktok": + case "twitter": + resolve(config.services[currentService].url + url.pathname + url.search) + return + default: + resolve() + return + } + }) +} + export default { redirect, initDefaults, computeService, switchInstance, - init, + reverse, } diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js index 371838ff..c28af018 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -408,13 +408,7 @@ function copyRaw(test, copyRawElement) { return } - let newUrl = await youtubeHelper.reverse(url) - 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 libremdbHelper.reverse(url) - if (!newUrl) newUrl = await imgurHelper.reverse(url) + let newUrl = await servicesHelper.reverse(url) if (newUrl) { resolve(newUrl) diff --git a/src/config/config.json b/src/config/config.json index 84f430fa..ca835d51 100644 --- a/src/config/config.json +++ b/src/config/config.json @@ -1,548 +1,546 @@ { - "config": { - "networks": { - "clearnet": { - "tld": "org", - "name": "Clearnet" - }, - "tor": { - "tld": "onion", - "name": "Tor" - }, - "i2p": { - "tld": "i2p", - "name": "I2P" - }, - "loki": { - "tld": "loki", - "name": "Lokinet" - } + "networks": { + "clearnet": { + "tld": "org", + "name": "Clearnet" }, - "services": { - "youtube": { - "frontends": { - "invidious": { - "preferences": { - "cookies": ["PREFS"] - }, - "name": "Invidious", - "embeddable": true, - "instanceList": true - }, - "piped": { - "preferences": { - "localstorage": [ - "bufferGoal", - "comments", - "disableLBRY", - "enabledCodecs", - "hl", - "homepage", - "instance", - "listen", - "minimizeDescription", - "playerAutoPlay", - "proxyLBRY", - "quality", - "region", - "selectedSkip", - "sponsorblock", - "theme", - "volume", - "watchHistory" - ] - }, - "name": "Piped", - "embeddable": true, - "instanceList": true - }, - "pipedMaterial": { - "preferences": { - "localstorage": ["PREFERENCES"] - }, - "name": "Piped-Material", - "embeddable": false, - "instanceList": true - }, - "cloudtube": { - "preferences": { - "token": "token", - "fetchEndpoint": "/api/settings", - "setEndpoint": "/settings" - }, - "name": "CloudTube", - "embeddable": false, - "instanceList": true + "tor": { + "tld": "onion", + "name": "Tor" + }, + "i2p": { + "tld": "i2p", + "name": "I2P" + }, + "loki": { + "tld": "loki", + "name": "Lokinet" + } + }, + "services": { + "youtube": { + "frontends": { + "invidious": { + "preferences": { + "cookies": ["PREFS"] }, - "freetube": { - "name": "FreeTube", - "embeddable": false, - "instanceList": false + "name": "Invidious", + "embeddable": true, + "instanceList": true + }, + "piped": { + "preferences": { + "localstorage": [ + "bufferGoal", + "comments", + "disableLBRY", + "enabledCodecs", + "hl", + "homepage", + "instance", + "listen", + "minimizeDescription", + "playerAutoPlay", + "proxyLBRY", + "quality", + "region", + "selectedSkip", + "sponsorblock", + "theme", + "volume", + "watchHistory" + ] }, - "yattee": { - "name": "Yattee", - "embeddable": false, - "instanceList": false - } + "name": "Piped", + "embeddable": true, + "instanceList": true }, - "targets": [ - "^https?:\\/{2}(?:www\\.|m\\.|)youtube.com(?!iframe_api\\/.*)", - "^https?:\\/{2}img\\.youtube.com\\/vi\\/.*\\/..*", - "^https?:\\/{2}(?:i|s)\\.ytimg.com\\/vi\\/.*\\/..*", - "^https?:\\/{2}(?:www\\.|music\\.|)youtube.com\\/watch?v=..*", - "^https?:\\/{2}youtu\\.be\\/..*", - "^https?:\\/{2}(?:www\\.|)(youtube|youtube-nocookie)\\.com\\/embed\\/..*" - ], - "name": "Youtube", - "options": { - "enabled": true, - "redirectType": "both", - "frontend": "invidious", - "embedFrontend": "invidious" + "pipedMaterial": { + "preferences": { + "localstorage": ["PREFERENCES"] + }, + "name": "Piped-Material", + "embeddable": false, + "instanceList": true }, - "imageType": "png", - "embeddable": true, - "url": "https://youtube.com" - }, - "youtubeMusic": { - "frontends": { - "beatbump": { - "preferences": { - "localstorage": ["settings"], - "indexeddb": "beatbump" - }, - "name": "Beatbump", - "instanceList": true + "cloudtube": { + "preferences": { + "token": "token", + "fetchEndpoint": "/api/settings", + "setEndpoint": "/settings" }, - "hyperpipe": { - "preferences": { - "localstorage": ["api", "authapi", "codec", "locale", "next", "pipedapi", "quality", "theme", "vol"], - "indexeddb": ["hyperpipedb"] - }, - "name": "HyperPipe", - "instanceList": true - } + "name": "CloudTube", + "embeddable": false, + "instanceList": true }, - "targets": ["^https?:\\/{2}music\\.youtube\\.com(\\/.*|$)"], - "name": "YT Music", - "options": { - "enabled": true, - "frontend": "beatbump" + "freetube": { + "name": "FreeTube", + "embeddable": false, + "instanceList": false }, - "imageType": "png", - "embeddable": false, - "url": "https://music.youtube.com" + "yattee": { + "name": "Yattee", + "embeddable": false, + "instanceList": false + } }, - "twitter": { - "frontends": { - "nitter": { - "preferences": { - "cookies": [ - "theme", - "infiniteScroll", - "stickyProfile", - "bidiSupport", - "hideTweetStats", - "hideBanner", - "hidePins", - "hideReplies", - "squareAvatars", - "mp4Playback", - "hlsPlayback", - "proxyVideos", - "muteVideos", - "autoplayGifs", - "replaceInstagram", - "replaceReddit", - "replaceTwitter", - "replaceYouTube" - ] - }, - "name": "Nitter", - "embeddable": true, - "instanceList": true - } - }, - "targets": ["^https?:\\/{2}(www\\.|mobile\\.|)twitter\\.com", "^https?:\\/{2}(pbs\\.|video\\.|)twimg\\.com", "^https?:\\/{2}platform\\.twitter\\.com/embed", "^https?:\\/{2}t\\.co"], - "name": "Twitter", - "options": { - "enabled": true, - "redirectType": "both" - }, - "imageType": "png", - "embeddable": true, - "url": "https://twitter.com" + "targets": [ + "^https?:\\/{2}(?:www\\.|m\\.|)youtube.com(?!iframe_api\\/.*)", + "^https?:\\/{2}img\\.youtube.com\\/vi\\/.*\\/..*", + "^https?:\\/{2}(?:i|s)\\.ytimg.com\\/vi\\/.*\\/..*", + "^https?:\\/{2}(?:www\\.|music\\.|)youtube.com\\/watch?v=..*", + "^https?:\\/{2}youtu\\.be\\/..*", + "^https?:\\/{2}(?:www\\.|)(youtube|youtube-nocookie)\\.com\\/embed\\/..*" + ], + "name": "Youtube", + "options": { + "enabled": true, + "redirectType": "both", + "frontend": "invidious", + "embedFrontend": "invidious" }, - "instagram": { - "frontends": { - "bibliogram": { - "preferences": { - "token": "token", - "fetchEndpoint": "/settings.json", - "setEndpoint": "/applysettings" - }, - "name": "Bibliogram", - "instanceList": true - } + "imageType": "png", + "embeddable": true, + "url": "https://youtube.com" + }, + "youtubeMusic": { + "frontends": { + "beatbump": { + "preferences": { + "localstorage": ["settings"], + "indexeddb": "beatbump" + }, + "name": "Beatbump", + "instanceList": true }, - "targets": ["^https?:\\/{2}(www\\.)?instagram\\.com"], - "name": "Instagram", - "options": { "enabled": true }, - "imageType": "png", - "embeddable": false, - "url": "https://instagram.com" + "hyperpipe": { + "preferences": { + "localstorage": ["api", "authapi", "codec", "locale", "next", "pipedapi", "quality", "theme", "vol"], + "indexeddb": ["hyperpipedb"] + }, + "name": "HyperPipe", + "instanceList": true + } }, - "tiktok": { - "frontends": { - "proxiTok": { - "preferences": { - "cookies": ["api-test_endpoints", "theme"] - }, - "name": "ProxiTok", - "instanceList": true - } - }, - "targets": ["^https?:\\/{2}(www\\.|)tiktok\\.com.*"], - "name": "TikTok", - "options": { "enabled": true }, - "imageType": "png", - "embeddable": false, - "url": "https://tiktok.com" + "targets": ["^https?:\\/{2}music\\.youtube\\.com(\\/.*|$)"], + "name": "YT Music", + "options": { + "enabled": true, + "frontend": "beatbump" }, - "reddit": { - "frontends": { - "libreddit": { - "preferences": { - "cookies": ["theme", "front_page", "layout", "wide", "post_sort", "comment_sort", "show_nsfw", "autoplay_videos", "use_hls", "hide_hls_notification", "subscriptions", "filters"] - }, - "name": "Libreddit", - "instanceList": true + "imageType": "png", + "embeddable": false, + "url": "https://music.youtube.com" + }, + "twitter": { + "frontends": { + "nitter": { + "preferences": { + "cookies": [ + "theme", + "infiniteScroll", + "stickyProfile", + "bidiSupport", + "hideTweetStats", + "hideBanner", + "hidePins", + "hideReplies", + "squareAvatars", + "mp4Playback", + "hlsPlayback", + "proxyVideos", + "muteVideos", + "autoplayGifs", + "replaceInstagram", + "replaceReddit", + "replaceTwitter", + "replaceYouTube" + ] }, - "teddit": { - "preferences": { - "cookies": [ - "collapse_child_comments", - "domain_instagram", - "domain_twitter", - "domain_youtube", - "flairs", - "highlight_controversial", - "nsfw_enabled", - "post_media_max_height", - "show_upvoted_percentage", - "show_upvotes", - "theme", - "videos_muted" - ] - }, - "name": "Teddit", - "instanceList": true - } - }, - "targets": ["^https?:\\/{2}(www\\.|old\\.|np\\.|new\\.|amp\\.|)reddit\\.com", "^https?:\\/{2}(i\\.|preview\\.)redd\\.it"], - "name": "Reddit", - "options": { - "enabled": true, - "frontend": "libreddit" - }, - "imageType": "png", - "embeddable": false, - "url": "https://reddit.com" + "name": "Nitter", + "embeddable": true, + "instanceList": true + } }, - "imgur": { - "frontends": { - "rimgo": { - "name": "rimgo", - "instanceList": true - } - }, - "targets": ["^https?:\\/{2}([im]\\.)?imgur\\.(com|io)(\\/|$)"], - "name": "Imgur", - "options": { "enabled": true }, - "imageType": "png", - "embeddable": false, - "url": "https://imgur.com" - }, - "wikipedia": { - "frontends": { - "wikiless": { - "preferences": { - "cookies": ["theme", "default_lang"] - }, - "name": "Wikiless", - "instanceList": true - } - }, - "targets": ["^https?:\\/{2}(?:[a-z]+\\.)*wikipedia\\.org"], - "name": "Wikipedia", - "options": { "enabled": false }, - "imageType": "svg", - "embeddable": false, - "url": "https://wikipedia.com" + "targets": ["^https?:\\/{2}(www\\.|mobile\\.|)twitter\\.com", "^https?:\\/{2}(pbs\\.|video\\.|)twimg\\.com", "^https?:\\/{2}platform\\.twitter\\.com/embed", "^https?:\\/{2}t\\.co"], + "name": "Twitter", + "options": { + "enabled": true, + "redirectType": "both" }, - "medium": { - "frontends": { - "scribe": { - "name": "Scribe", - "instanceList": true - } - }, - "targets": [ - "(?:.*\\.)*(? <%- include('src/pages/widgets/head') -%> - <%- include('src/pages/widgets/links', {config: config}) -%> + <%- include('src/pages/widgets/links', {services: services}) -%>
- <%- include('src/pages/options/widgets/general', {config: config}) -%> - <%- include('src/pages/options/widgets/services', {config: config}) -%> + <%- include('src/pages/options/widgets/general', {config: {networks, services}}) -%> + <%- include('src/pages/options/widgets/services', {config: {networks, services}}) -%> <%- include('src/pages/options/widgets/about') -%>
diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js index 2249f830..cfc95df2 100644 --- a/src/pages/options/widgets/general.js +++ b/src/pages/options/widgets/general.js @@ -22,8 +22,7 @@ async function getConfig() { fetch("/config/config.json") .then(response => response.text()) .then(data => { - const tmp = JSON.parse(data) - config = tmp.config + config = JSON.parse(data) resolve() }) }) diff --git a/src/pages/options/widgets/services.js b/src/pages/options/widgets/services.js index b595943e..dbb66dec 100644 --- a/src/pages/options/widgets/services.js +++ b/src/pages/options/widgets/services.js @@ -9,8 +9,7 @@ function getConfig() { fetch("/config/config.json") .then(response => response.text()) .then(data => { - const tmp = JSON.parse(data) - config = tmp.config + config = JSON.parse(data) resolve() }) }) diff --git a/src/pages/popup/popup.ejs b/src/pages/popup/popup.ejs index efb73e5c..5b3bb026 100644 --- a/src/pages/popup/popup.ejs +++ b/src/pages/popup/popup.ejs @@ -8,13 +8,13 @@
- <%- include('src/pages/widgets/switches', {config: config}) -%> + <%- include('src/pages/widgets/switches', {config: {networks, services}}) -%>

- <%- include('src/pages/widgets/switches', {config: config}) -%> + <%- include('src/pages/widgets/switches', {config: {networks, services}}) -%>

diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js index fce451cb..c28f2d94 100644 --- a/src/pages/popup/popup.js +++ b/src/pages/popup/popup.js @@ -27,8 +27,7 @@ async function getConfig() { fetch("/config/config.json") .then(response => response.text()) .then(data => { - const tmp = JSON.parse(data) - config = tmp.config + config = JSON.parse(data) resolve() }) }) diff --git a/src/pages/widgets/links.ejs b/src/pages/widgets/links.ejs index 24a02e90..6fa9514c 100644 --- a/src/pages/widgets/links.ejs +++ b/src/pages/widgets/links.ejs @@ -1,13 +1,13 @@
<% }; -%>
<%- include ('src/assets/images/about-icon.svg') %>About
-- cgit 1.4.1