diff options
| -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> |
