diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/assets/javascripts/services.js | 42 | ||||
-rw-r--r-- | src/assets/javascripts/utils.js | 8 | ||||
-rw-r--r-- | src/config/config.json | 1012 | ||||
-rw-r--r-- | src/instances/get_instances.py | 30 | ||||
-rw-r--r-- | src/pages/options/index.ejs | 6 | ||||
-rw-r--r-- | src/pages/options/widgets/general.js | 3 | ||||
-rw-r--r-- | src/pages/options/widgets/services.js | 3 | ||||
-rw-r--r-- | src/pages/popup/popup.ejs | 4 | ||||
-rw-r--r-- | src/pages/popup/popup.js | 3 | ||||
-rw-r--r-- | src/pages/widgets/links.ejs | 8 |
10 files changed, 556 insertions, 563 deletions
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": [ - "(?:.*\\.)*(?<!(link\\.|cdn\\-images\\-\\d+\\.))medium\\.com(\\/.*)?$", - "^towardsdatascience\\.com", - "^uxdesign\\.cc", - "^uxplanet\\.org", - "^betterprogramming\\.pub", - "^aninjusticemag\\.com", - "^betterhumans\\.pub", - "^psiloveyou\\.xyz", - "^entrepreneurshandbook\\.co", - "^blog\\.coinbase\\.com", - "^levelup\\.gitconnected\\.com", - "^javascript\\.plainenglish\\.io", - "^blog\\.bitsrc\\.io", - "^itnext\\.io", - "^codeburst\\.io", - "^infosecwriteups\\.com", - "^blog\\.devgenius\\.io", - "^writingcooperative\\.com" - ], - "name": "Medium", - "options": { "enabled": true }, - "imageType": "svgMono", - "embeddable": false, - "url": "https://medium.com" + "imageType": "png", + "embeddable": true, + "url": "https://twitter.com" + }, + "instagram": { + "frontends": { + "bibliogram": { + "preferences": { + "token": "token", + "fetchEndpoint": "/settings.json", + "setEndpoint": "/applysettings" + }, + "name": "Bibliogram", + "instanceList": true + } }, - "quora": { - "frontends": { - "quetre": { - "preferences": { - "localstorage": ["theme"] - }, - "name": "Quetre", - "instanceList": true - } - }, - "targets": ["^https?:\\/{2}([a-z]+\\.)*quora\\.com.*"], - "name": "Quora", - "options": { "enabled": true }, - "imageType": "png", - "embeddable": false, - "url": "https://quora.com" + "targets": ["^https?:\\/{2}(www\\.)?instagram\\.com"], + "name": "Instagram", + "options": { "enabled": true }, + "imageType": "png", + "embeddable": false, + "url": "https://instagram.com" + }, + "tiktok": { + "frontends": { + "proxiTok": { + "preferences": { + "cookies": ["api-test_endpoints", "theme"] + }, + "name": "ProxiTok", + "instanceList": true + } }, - "imdb": { - "frontends": { - "libremdb": { - "preferences": { - "localstorage": ["theme"] - }, - "name": "libremdb", - "instanceList": true - } + "targets": ["^https?:\\/{2}(www\\.|)tiktok\\.com.*"], + "name": "TikTok", + "options": { "enabled": true }, + "imageType": "png", + "embeddable": false, + "url": "https://tiktok.com" + }, + "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 }, - "targets": ["^https?:\\/{2}(?:www\\.|)imdb\\.com.*"], - "name": "IMDb", - "options": { "enabled": false }, - "imageType": "svg", - "embeddable": false, - "url": "https://imdb.com" + "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 + } }, - "reuters": { - "frontends": { - "neuters": { - "name": "Neuters", - "instanceList": true - } - }, - "targets": ["^https?:\\/{2}(www\\.|)reuters\\.com.*"], - "name": "Reuters", - "options": { "enabled": false }, - "imageType": "svg", - "embeddable": false, - "url": "https://reuters.com" + "targets": ["^https?:\\/{2}(www\\.|old\\.|np\\.|new\\.|amp\\.|)reddit\\.com", "^https?:\\/{2}(i\\.|preview\\.)redd\\.it"], + "name": "Reddit", + "options": { + "enabled": true, + "frontend": "libreddit" }, - "peertube": { - "frontends": { - "simpleertube": { - "name": "SimpleerTube", - "instanceList": true - } - }, - "targets": "datajson", - "name": "PeerTube", - "options": { "enabled": false }, - "imageType": "svg", - "embeddable": false, - "url": "https://search.joinpeertube.org" + "imageType": "png", + "embeddable": false, + "url": "https://reddit.com" + }, + "imgur": { + "frontends": { + "rimgo": { + "name": "rimgo", + "instanceList": true + } }, - "lbry": { - "frontends": { - "librarian": { - "preferences": { - "cookies": ["nsfw", "theme"], - "localstorage": ["autoplay", "autoplayNextVid", "collapseComments", "plyr", "sb_categories", "showRelated"] - }, - "name": "Librarian", - "embeddable": true, - "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"] }, - "lbryDesktop": { - "name": "LBRY Desktop", - "embeddable": false, - "instanceList": false - } - }, - "targets": ["^https?:\\/{2}odysee\\.com", "^https?:\\/{2}lbry\\.tv"], - "name": "LBRY", - "options": { - "enabled": false, - "frontend": "librarian", - "redirectType": "both", - "embedFrontend": "librarian" - }, - "imageType": "png", - "embeddable": true, - "url": "https://odysee.com" + "name": "Wikiless", + "instanceList": true + } + }, + "targets": ["^https?:\\/{2}(?:[a-z]+\\.)*wikipedia\\.org"], + "name": "Wikipedia", + "options": { "enabled": false }, + "imageType": "svg", + "embeddable": false, + "url": "https://wikipedia.com" + }, + "medium": { + "frontends": { + "scribe": { + "name": "Scribe", + "instanceList": true + } }, - "search": { - "frontends": { - "searx": { - "preferences": { - "cookies": [ - "advanced_search", - "autocomplete", - "categories", - "disabled_engines", - "disabled_plugins", - "doi_resolver", - "enabled_engines", - "enabled_plugins", - "image_proxy", - "language", - "locale", - "method", - "oscar-style", - "results_on_new_tab", - "safesearch", - "theme", - "tokens" - ] - }, - "name": "SearX", - "instanceList": true + "targets": [ + "(?:.*\\.)*(?<!(link\\.|cdn\\-images\\-\\d+\\.))medium\\.com(\\/.*)?$", + "^towardsdatascience\\.com", + "^uxdesign\\.cc", + "^uxplanet\\.org", + "^betterprogramming\\.pub", + "^aninjusticemag\\.com", + "^betterhumans\\.pub", + "^psiloveyou\\.xyz", + "^entrepreneurshandbook\\.co", + "^blog\\.coinbase\\.com", + "^levelup\\.gitconnected\\.com", + "^javascript\\.plainenglish\\.io", + "^blog\\.bitsrc\\.io", + "^itnext\\.io", + "^codeburst\\.io", + "^infosecwriteups\\.com", + "^blog\\.devgenius\\.io", + "^writingcooperative\\.com" + ], + "name": "Medium", + "options": { "enabled": true }, + "imageType": "svgMono", + "embeddable": false, + "url": "https://medium.com" + }, + "quora": { + "frontends": { + "quetre": { + "preferences": { + "localstorage": ["theme"] }, - "searxng": { - "preferences": { - "cookies": [ - "autocomplete", - "categories", - "disabled_engines", - "disabled_plugins", - "doi_resolver", - "enabled_plugins", - "enabled_engines", - "image_proxy", - "infinite_scroll", - "language", - "locale", - "maintab", - "method", - "query_in_title", - "results_on_new_tab", - "safesearch", - "simple_style", - "theme", - "tokens" - ] - }, - "name": "SearXNG", - "instanceList": true + "name": "Quetre", + "instanceList": true + } + }, + "targets": ["^https?:\\/{2}([a-z]+\\.)*quora\\.com.*"], + "name": "Quora", + "options": { "enabled": true }, + "imageType": "png", + "embeddable": false, + "url": "https://quora.com" + }, + "imdb": { + "frontends": { + "libremdb": { + "preferences": { + "localstorage": ["theme"] }, - "whoogle": { - "name": "Whoogle", - "instanceList": true + "name": "libremdb", + "instanceList": true + } + }, + "targets": ["^https?:\\/{2}(?:www\\.|)imdb\\.com.*"], + "name": "IMDb", + "options": { "enabled": false }, + "imageType": "svg", + "embeddable": false, + "url": "https://imdb.com" + }, + "reuters": { + "frontends": { + "neuters": { + "name": "Neuters", + "instanceList": true + } + }, + "targets": ["^https?:\\/{2}(www\\.|)reuters\\.com.*"], + "name": "Reuters", + "options": { "enabled": false }, + "imageType": "svg", + "embeddable": false, + "url": "https://reuters.com" + }, + "peertube": { + "frontends": { + "simpleertube": { + "name": "SimpleerTube", + "instanceList": true + } + }, + "targets": "datajson", + "name": "PeerTube", + "options": { "enabled": false }, + "imageType": "svg", + "embeddable": false, + "url": "https://search.joinpeertube.org" + }, + "lbry": { + "frontends": { + "librarian": { + "preferences": { + "cookies": ["nsfw", "theme"], + "localstorage": ["autoplay", "autoplayNextVid", "collapseComments", "plyr", "sb_categories", "showRelated"] }, - "librex": { - "preferences": { - "cookies": ["bibliogram", "disable_frontends", " disable_special", "invidious", "libreddit", "nitter", "proxitok", "save", "theme", "wikiless"] - }, - "name": "LibreX", - "instanceList": true - } + "name": "Librarian", + "embeddable": true, + "instanceList": true }, - "targets": ["^https?:\\/{2}search\\.libredirect\\.invalid"], - "name": "Search", - "options": { - "enabled": true, - "frontend": "searxng" - }, - "imageType": "svgMono", - "embeddable": false, - "url": "https://search.libredirect.invalid" + "lbryDesktop": { + "name": "LBRY Desktop", + "embeddable": false, + "instanceList": false + } + }, + "targets": ["^https?:\\/{2}odysee\\.com", "^https?:\\/{2}lbry\\.tv"], + "name": "LBRY", + "options": { + "enabled": false, + "frontend": "librarian", + "redirectType": "both", + "embedFrontend": "librarian" }, - "translate": { - "frontends": { - "simplyTranslate": { - "preferences": { - "cookies": ["from_lang", "to_lang", "tts_enabled", "use_text_fields"] - }, - "name": "SimplyTranslate", - "instanceList": true + "imageType": "png", + "embeddable": true, + "url": "https://odysee.com" + }, + "search": { + "frontends": { + "searx": { + "preferences": { + "cookies": [ + "advanced_search", + "autocomplete", + "categories", + "disabled_engines", + "disabled_plugins", + "doi_resolver", + "enabled_engines", + "enabled_plugins", + "image_proxy", + "language", + "locale", + "method", + "oscar-style", + "results_on_new_tab", + "safesearch", + "theme", + "tokens" + ] + }, + "name": "SearX", + "instanceList": true + }, + "searxng": { + "preferences": { + "cookies": [ + "autocomplete", + "categories", + "disabled_engines", + "disabled_plugins", + "doi_resolver", + "enabled_plugins", + "enabled_engines", + "image_proxy", + "infinite_scroll", + "language", + "locale", + "maintab", + "method", + "query_in_title", + "results_on_new_tab", + "safesearch", + "simple_style", + "theme", + "tokens" + ] }, - "lingva": { - "preferences": { - "localstorage": ["isauto", "source", "target"] - }, - "name": "Lingva", - "instanceList": true - } + "name": "SearXNG", + "instanceList": true }, - "targets": ["^https?:\\/{2}translate\\.google(\\.[a-z]{2,3}){1,2}\\/"], - "name": "Translate", - "options": { - "enabled": true, - "frontend": "simplyTranslate" + "whoogle": { + "name": "Whoogle", + "instanceList": true }, - "imageType": "svgMono", - "embeddable": false, - "url": "https://translate.google.com" + "librex": { + "preferences": { + "cookies": ["bibliogram", "disable_frontends", " disable_special", "invidious", "libreddit", "nitter", "proxitok", "save", "theme", "wikiless"] + }, + "name": "LibreX", + "instanceList": true + } }, - "maps": { - "frontends": { - "facil": { - "name": "FacilMap", - "instanceList": true + "targets": ["^https?:\\/{2}search\\.libredirect\\.invalid"], + "name": "Search", + "options": { + "enabled": true, + "frontend": "searxng" + }, + "imageType": "svgMono", + "embeddable": false, + "url": "https://search.libredirect.invalid" + }, + "translate": { + "frontends": { + "simplyTranslate": { + "preferences": { + "cookies": ["from_lang", "to_lang", "tts_enabled", "use_text_fields"] }, - "osm": { - "name": "OpenStreetMap", - "instanceList": false, - "singleInstance": "https://www.openstreetmap.org" - } + "name": "SimplyTranslate", + "instanceList": true }, - "targets": ["^https?:\\/{2}(((www|maps)\\.)?(google\\.).*(\\/maps)|maps\\.(google\\.).*)"], - "name": "Maps", - "options": { - "enabled": true, - "frontend": "osm" - }, - "imageType": "svgMono", - "embeddable": false, - "url": "https://maps.google.com" + "lingva": { + "preferences": { + "localstorage": ["isauto", "source", "target"] + }, + "name": "Lingva", + "instanceList": true + } }, - "sendTargets": { - "frontends": { - "send": { - "name": "Send", - "instanceList": "true" - } + "targets": ["^https?:\\/{2}translate\\.google(\\.[a-z]{2,3}){1,2}\\/"], + "name": "Translate", + "options": { + "enabled": true, + "frontend": "simplyTranslate" + }, + "imageType": "svgMono", + "embeddable": false, + "url": "https://translate.google.com" + }, + "maps": { + "frontends": { + "facil": { + "name": "FacilMap", + "instanceList": true }, - "targets": ["^https?:\\/{2}send\\.libredirect\\.invalid\\/$", "^https?:\\/{2}send\\.firefox\\.com\\/$", "^https?:\\/{2}sendfiles\\.online\\/$"], - "name": "Send Files", - "options": { "enabled": true }, - "imageType": "svgMono", - "embeddable": false, - "url": "https://send.libredirect.invalid" - } + "osm": { + "name": "OpenStreetMap", + "instanceList": false, + "singleInstance": "https://www.openstreetmap.org" + } + }, + "targets": ["^https?:\\/{2}(((www|maps)\\.)?(google\\.).*(\\/maps)|maps\\.(google\\.).*)"], + "name": "Maps", + "options": { + "enabled": true, + "frontend": "osm" + }, + "imageType": "svgMono", + "embeddable": false, + "url": "https://maps.google.com" + }, + "sendTargets": { + "frontends": { + "send": { + "name": "Send", + "instanceList": "true" + } + }, + "targets": ["^https?:\\/{2}send\\.libredirect\\.invalid\\/$", "^https?:\\/{2}send\\.firefox\\.com\\/$", "^https?:\\/{2}sendfiles\\.online\\/$"], + "name": "Send Files", + "options": { "enabled": true }, + "imageType": "svgMono", + "embeddable": false, + "url": "https://send.libredirect.invalid" } } } diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index 85bdf1cf..3b773304 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -286,31 +286,7 @@ def send(): def nitter(): - r = requests.get('https://raw.githubusercontent.com/wiki/zedeus/nitter/Instances.md') - tmp = re.findall( - r"(?:(?:\| \[(?:\S+\.)+[a-zA-Z]+\]\((https?:\/{2}(?:\S+\.)+[a-zA-Z]+)\/?\) (?:\((?:\S+ ?\S*)\) )? *\| [^❌]{1,3} +\|(?:(?:\n)|(?: (?:❌)|(?: ✅)|(?: ❓)|(?: \[))))|(?:- \[(?:\S+\.)+(?:(?:i2p)|(?:loki))\]\((https?:\/{2}(?:\S+\.)(?:(?:i2p)|(?:loki)))\/?\)))", r.text) - - nitterList = {} - nitterList['clearnet'] = [] - nitterList['tor'] = [] - nitterList['i2p'] = [] - nitterList['loki'] = [] - for item in tmp: - for i in item: - if i == '': - continue - else: - item = i - if re.search(torRegex, item): - nitterList['tor'].append(item) - elif re.search(i2pRegex, item): - nitterList['i2p'].append(item) - elif re.search(lokiRegex, item): - nitterList['loki'].append(item) - else: - nitterList['clearnet'].append(item) - mightyList['nitter'] = nitterList - print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Nitter') + fetchRegexList('nitter', 'Nitter', 'https://raw.githubusercontent.com/wiki/zedeus/nitter/Instances.md', r"(?:(?:\| )|(?:- ))\[(?:(?:\S+\.)+[a-zA-Z0-9]+)\/?\]\((https?:\/{2}(?:\S+\.)+[a-zA-Z0-9]+)\/?\)(?:(?: (?:\((?:\S+ ?\S*)\) )? *\| [^❌]{1,4} +\|(?:(?:\n)|(?: ❌)|(?: ✅)|(?: ❓)|(?: \[)))|(?:\n))") def bibliogram(): @@ -334,11 +310,11 @@ def scribe(): def quetre(): - fetchRegexList('quetre', 'Quetre', 'https://raw.githubusercontent.com/zyachel/quetre/main/README.md', r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|") + fetchRegexList('quetre', 'Quetre', 'https://raw.githubusercontent.com/zyachel/quetre/main/README.md', r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z0-9]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|") def libremdb(): - fetchRegexList('libremdb', 'libremdb', 'https://raw.githubusercontent.com/zyachel/libremdb/main/README.md', r"\| ([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)*\|*[A-Z]{0,}.*\|.*\|") + fetchRegexList('libremdb', 'libremdb', 'https://raw.githubusercontent.com/zyachel/libremdb/main/README.md', r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z0-9]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|") def simpleertube(): diff --git a/src/pages/options/index.ejs b/src/pages/options/index.ejs index e0ce3c3c..7f09e6da 100644 --- a/src/pages/options/index.ejs +++ b/src/pages/options/index.ejs @@ -2,10 +2,10 @@ <html id="elementToShowWithJavaScript" lang="en"> <%- include('src/pages/widgets/head') -%> <body class="option" dir="auto"> - <%- include('src/pages/widgets/links', {config: config}) -%> + <%- include('src/pages/widgets/links', {services: services}) -%> <div id="pages"> - <%- 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') -%> </div> </body> 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 @@ </head> <body dir="auto"> <div class="current_site"> - <%- include('src/pages/widgets/switches', {config: config}) -%> + <%- include('src/pages/widgets/switches', {config: {networks, services}}) -%> <div id="current_site_divider"> <hr> </div> </div> <div class="all_sites"> - <%- include('src/pages/widgets/switches', {config: config}) -%> + <%- include('src/pages/widgets/switches', {config: {networks, services}}) -%> </div> <hr> <div class="some-block" id="change_instance_div"><a class="title button prevent" id="change_instance"> 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 @@ <section class="links" id="links"> <div class="title"><%- include ('src/assets/images/general-icon.svg') %><a href="#general" data-localise="__MSG_general__">General</a></div> - <% for (const service in config.services) { -%> + <% for (const service in services) { -%> <div class="title"> - <% if (config.services[service].imageType != "svgMono") { _%> - <img src="../../../assets/images/<%= service %>-icon.<%= config.services[service].imageType %>"> + <% if (services[service].imageType != "svgMono") { _%> + <img src="../../../assets/images/<%= service %>-icon.<%= services[service].imageType %>"> <% } else { _%> <%- include ('src/assets/images/' + service + '-icon.svg') %> <% } _%> - <a href="#<%= service %>" data-localise="__MSG_<%= service %>__"><%= config.services[service].name %></a></div> + <a href="#<%= service %>" data-localise="__MSG_<%= service %>__"><%= services[service].name %></a></div> <% }; -%> <div class="title"><%- include ('src/assets/images/about-icon.svg') %><a href="#about" data-localise="__MSG_about__">About</a></div> </section> |