Added librarian #78

This commit is contained in:
ManeraKai 2022-03-16 10:59:34 +03:00
parent 77d042edda
commit c89f9cd785
No known key found for this signature in database
GPG Key ID: 5ABC31FFD562E337
36 changed files with 594 additions and 56 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -118,6 +118,7 @@ let allPopupFrontends = [
"wikipedia",
"medium",
"peertube",
"lbry",
"sendTargets"
];

View File

@ -3,7 +3,7 @@ window.browser = window.browser || window.chrome;
import commonHelper from './common.js'
const targets = [
/^https?:\/\/(i|).?imgur\.com(\/.*)?$/
/^https?:\/{2}(i|).?imgur\.com(\/.*)?$/
];
let redirects = {

View File

@ -0,0 +1,205 @@
window.browser = window.browser || window.chrome;
import commonHelper from './common.js'
let targets = ["odysee.com"];
let redirects = {
"librarian": {
"normal": [
"https://lbry.bcow.xyz",
"https://odysee.076.ne.jp",
"https://lbry.ix.tc",
"https://librarian.pussthecat.org",
"https://lbry.mutahar.rocks",
"https://librarian.esmailelbob.xyz",
],
"tor": [
"http://ecc5mi5ncdw6mxhjz6re6g2uevtpbzxjvxgrxia2gyvrlnil3srbnhyd.onion",
"http://vrmbc4brkgkaysmi3fenbzkayobxjh24slmhtocambn3ewe62iuqt3yd.onion",
]
}
}
const getRedirects = () => redirects;
const getCustomRedirects = function () {
return {
"librarian": {
"normal": [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]
},
};
};
function setRedirects(val) {
redirects.librarian = val;
browser.storage.local.set({ lbryTargetsRedirects: redirects })
console.log("lbryTargetsRedirects: ", val)
for (const item of librarianNormalRedirectsChecks)
if (!redirects.librarian.normal.includes(item)) {
var index = librarianNormalRedirectsChecks.indexOf(item);
if (index !== -1) librarianNormalRedirectsChecks.splice(index, 1);
}
setLibrarianNormalRedirectsChecks(librarianNormalRedirectsChecks);
for (const item of librarianTorRedirectsChecks)
if (!redirects.librarian.normal.includes(item)) {
var index = librarianTorRedirectsChecks.indexOf(item);
if (index !== -1) librarianTorRedirectsChecks.splice(index, 1);
}
setLibrarianTorRedirectsChecks(librarianTorRedirectsChecks);
}
let librarianNormalRedirectsChecks;
const getLibrarianNormalRedirectsChecks = () => librarianNormalRedirectsChecks;
function setLibrarianNormalRedirectsChecks(val) {
librarianNormalRedirectsChecks = val;
browser.storage.local.set({ librarianNormalRedirectsChecks })
console.log("librarianNormalRedirectsChecks: ", val)
}
let librarianTorRedirectsChecks;
const getLibrarianTorRedirectsChecks = () => librarianTorRedirectsChecks;
function setLibrarianTorRedirectsChecks(val) {
librarianTorRedirectsChecks = val;
browser.storage.local.set({ librarianTorRedirectsChecks })
console.log("librarianTorRedirectsChecks: ", val)
}
let librarianNormalCustomRedirects = [];
const getLibrarianNormalCustomRedirects = () => librarianNormalCustomRedirects;
function setLibrarianNormalCustomRedirects(val) {
librarianNormalCustomRedirects = val;
browser.storage.local.set({ librarianNormalCustomRedirects })
console.log("librarianNormalCustomRedirects: ", val)
}
let librarianTorCustomRedirects = [];
const getLibrarianTorCustomRedirects = () => librarianTorCustomRedirects;
function setLibrarianTorCustomRedirects(val) {
librarianTorCustomRedirects = val;
browser.storage.local.set({ librarianTorCustomRedirects })
console.log("librarianTorCustomRedirects: ", val)
}
let disable;
const getDisable = () => disable;
function setDisable(val) {
disable = val;
browser.storage.local.set({ disableLbryTargets: disable })
}
let protocol;
const getProtocol = () => protocol;
function setProtocol(val) {
protocol = val;
browser.storage.local.set({ lbryTargetsProtocol: val })
console.log("lbryTargetsProtocol: ", val)
}
function changeInstance(url) {
let protocolHost = `${url.protocol}//${url.host}`;
let librarianList = [
...redirects.librarian.normal,
...redirects.librarian.tor,
...librarianNormalCustomRedirects,
...librarianTorCustomRedirects,
];
if (!librarianList.includes(protocolHost)) return;
let instancesList;
if (protocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
else if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
console.log("instancesList", instancesList);
let index = instancesList.indexOf(protocolHost);
if (index > -1) instancesList.splice(index, 1);
if (instancesList.length === 0) return null;
let randomInstance = commonHelper.getRandomInstance(instancesList);
return `${randomInstance}${url.pathname}${url.search}`;
}
function redirect(url, type, initiator) {
if (disable) return null;
if (initiator && ([...redirects.librarian.normal, ...librarianNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))) return null;
if (!targets.includes(url.host)) return null;
if (type != "main_frame") return null;
let instancesList;
if (protocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
if (instancesList.length === 0) return null;
let randomInstance = commonHelper.getRandomInstance(instancesList);
return `${randomInstance}${url.pathname}${url.search}`;
}
async function init() {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(data => {
let dataJson = JSON.parse(data);
browser.storage.local.get(
[
"disableLbryTargets",
"lbryTargetsRedirects",
"librarianNormalRedirectsChecks",
"librarianNormalCustomRedirects",
"librarianTorRedirectsChecks",
"librarianTorCustomRedirects",
"lbryTargetsProtocol"
],
r => {
disable = r.disableLbryTargets ?? true;
protocol = r.lbryTargetsProtocol ?? "normal";
if (r.lbryTargetsRedirects) redirects = r.lbryTargetsRedirects;
librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks ?? [...redirects.librarian.normal];
librarianNormalCustomRedirects = r.librarianNormalCustomRedirects ?? [];
librarianTorRedirectsChecks = r.librarianTorRedirectsChecks ?? [...redirects.librarian.tor];
librarianTorCustomRedirects = r.librarianTorCustomRedirects ?? [];
resolve();
}
)
});
});
}
export default {
getRedirects,
getCustomRedirects,
setRedirects,
getDisable,
setDisable,
getProtocol,
setProtocol,
getLibrarianNormalRedirectsChecks,
setLibrarianNormalRedirectsChecks,
getLibrarianTorRedirectsChecks,
setLibrarianTorRedirectsChecks,
getLibrarianTorCustomRedirects,
setLibrarianTorCustomRedirects,
getLibrarianNormalCustomRedirects,
setLibrarianNormalCustomRedirects,
changeInstance,
redirect,
init,
};

View File

@ -1,7 +1,7 @@
window.browser = window.browser || window.chrome;
import commonHelper from './common.js'
const targets = /^https?:\/\/(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/;
const targets = /^https?:\/{2}(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/;
let redirects = {
'osm': {
"normal": [

View File

@ -3,7 +3,7 @@ window.browser = window.browser || window.chrome;
import commonHelper from './common.js'
const targets = [
/^https?:\/\/(www\.|)pixiv\.net.*/
/^https?:\/{2}(www\.|)pixiv\.net.*/
];
let redirects = {

View File

@ -3,8 +3,8 @@ window.browser = window.browser || window.chrome;
import commonHelper from './common.js'
const targets = [
/^https?:\/\/(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/,
/^https?:\/\/(i\.|preview\.)redd\.it/,
/^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/,
/^https?:\/{2}(i\.|preview\.)redd\.it/,
];
let redirects = {
// modern UI

View File

@ -4,8 +4,8 @@ import commonHelper from './common.js'
const targets = [
/^https?:\/{2}(www\.|search\.|)google(\.[a-z]{2,3}){1,2}(\/search(\?.*|$)|\/$)/,
/^https?:\/\/libredirect\.invalid/
// /^https?:\/\/yandex\.com(\...|)(\/search\/..*|\/$)/,
/^https?:\/{2}libredirect\.invalid/
// /^https?:\/{2}yandex\.com(\...|)(\/search\/..*|\/$)/,
];
let redirects = {
"searx": {

View File

@ -3,9 +3,9 @@ window.browser = window.browser || window.chrome;
import commonHelper from './common.js'
const targets = [
/^https?:\/\/send.invalid\/$/,
/^https?:\/{2}send.invalid\/$/,
/^ https ?: \/\/send\.firefox\.com\/$/,
/^https?:\/\/sendfiles\.online\/$/
/^https?:\/{2}sendfiles\.online\/$/
];
let redirects = {

View File

@ -3,7 +3,7 @@ window.browser = window.browser || window.chrome;
import commonHelper from './common.js'
const targets = [
/^https?:\/\/(www\.|)tiktok\.com.*/
/^https?:\/{2}(www\.|)tiktok\.com.*/
];
let redirects = {

View File

@ -3,10 +3,10 @@ window.browser = window.browser || window.chrome;
import commonHelper from './common.js'
const targets = [
/^https?:\/\/(www\.|mobile\.|)twitter\.com/,
/^https?:\/\/(pbs\.|video\.|)twimg\.com/,
/^https?:\/\/platform\.twitter\.com\/embed/,
/^https?:\/\/t\.co/
/^https?:\/{2}(www\.|mobile\.|)twitter\.com/,
/^https?:\/{2}(pbs\.|video\.|)twimg\.com/,
/^https?:\/{2}platform\.twitter\.com\/embed/,
/^https?:\/{2}t\.co/
];
let redirects = {

View File

@ -2,7 +2,7 @@ window.browser = window.browser || window.chrome;
import commonHelper from './common.js'
const targets = /^https?:\/\/(.*\.|)wikipedia\.org/
const targets = /^https?:\/{2}(.*\.|)wikipedia\.org/
let redirects = {
"wikiless": {

View File

@ -70,16 +70,16 @@ import {
} from './options.js';
const targets = [
/^https?:\/\/(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
/^https?:\/{2}(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
/^https?:\/\/img\.youtube\.com\/vi\/.*\/..*/, // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api
/^https?:\/\/(i|s)\.ytimg\.com\/vi\/.*\/..*/,
/^https?:\/{2}img\.youtube\.com\/vi\/.*\/..*/, // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api
/^https?:\/{2}(i|s)\.ytimg\.com\/vi\/.*\/..*/,
/^https?:\/\/(www\.|music\.|)youtube\.com\/watch\?v\=..*/,
/^https?:\/{2}(www\.|music\.|)youtube\.com\/watch\?v\=..*/,
/^https?:\/\/youtu\.be\/..*/,
/^https?:\/{2}youtu\.be\/..*/,
/^https?:\/\/(www\.|)(youtube|youtube-nocookie)\.com\/embed\/..*/,
/^https?:\/{2}(www\.|)(youtube|youtube-nocookie)\.com\/embed\/..*/,
];
let redirects = {
"invidious": {
@ -383,7 +383,7 @@ function redirect(url, details, initiator) {
if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return null; // Don't redirect YouTube Player API.
if (frontend == 'yatte' && details.type === "main_frame")
return url.href.replace(/^https?:\/\//, 'yattee://');
return url.href.replace(/^https?:\/{2}/, 'yattee://');
else if (frontend == 'freetube' && details.type === "main_frame")
return `freetube://${url}`;

View File

@ -5,7 +5,7 @@ import commonHelper from './common.js'
window.browser = window.browser || window.chrome;
const targets = [
/^https?:\/\/music\.youtube\.com(\/.*|$)/,
/^https?:\/{2}music\.youtube\.com(\/.*|$)/,
];
let redirects = {
"beatbump": {

View File

@ -14,28 +14,30 @@ import tiktokHelper from "../../assets/javascripts/helpers/tiktok.js";
import pixivHelper from "../../assets/javascripts/helpers/pixiv.js";
import sendTargetsHelper from "../../assets/javascripts/helpers/sendTargets.js";
import peertubeHelper from "../../assets/javascripts/helpers/peertube.js";
import lbryHelper from "../../assets/javascripts/helpers/lbry.js";
import generalHelper from "../../assets/javascripts/helpers/general.js";
import youtubeMusicHelper from "../../assets/javascripts/helpers/youtubeMusic.js";
window.browser = window.browser || window.chrome;
async function wholeInit() {
await youtubeHelper.init()
await youtubeMusicHelper.init()
await twitterHelper.init()
await instagramHelper.init()
await mapsHelper.init()
await searchHelper.init()
await translateHelper.init()
await mediumHelper.init()
await redditHelper.init()
await wikipediaHelper.init()
await imgurHelper.init()
await tiktokHelper.init()
await pixivHelper.init()
await sendTargetsHelper.init()
await peertubeHelper.init()
await generalHelper.init()
await youtubeHelper.init();
await youtubeMusicHelper.init();
await twitterHelper.init();
await instagramHelper.init();
await mapsHelper.init();
await searchHelper.init();
await translateHelper.init();
await mediumHelper.init();
await redditHelper.init();
await wikipediaHelper.init();
await imgurHelper.init();
await tiktokHelper.init();
await pixivHelper.init();
await sendTargetsHelper.init();
await peertubeHelper.init();
await lbryHelper.init();
await generalHelper.init();
}
await wholeInit();
@ -77,6 +79,8 @@ browser.webRequest.onBeforeRequest.addListener(
if (!newUrl) newUrl = peertubeHelper.redirect(url, details.type, initiator);
if (!newUrl) newUrl = lbryHelper.redirect(url, details.type, initiator);
if (!newUrl) newUrl = translateHelper.redirect(url);
if (!newUrl) newUrl = searchHelper.redirect(url)
@ -108,19 +112,19 @@ browser.webRequest.onBeforeRequest.addListener(
["blocking"]
);
browser.tabs.onRemoved.addListener((tabId) => {
let index = BYPASSTABs.indexOf(tabId);
if (index > -1) {
BYPASSTABs.splice(index, 1);
console.log("Removed BYPASSTABs", tabId);
browser.tabs.onRemoved.addListener(
tabId => {
let i = BYPASSTABs.indexOf(tabId);
if (i > -1) {
BYPASSTABs.splice(i, 1);
console.log("Removed BYPASSTABs", tabId);
}
}
});
);
browser.webRequest.onResponseStarted.addListener(
details => {
let autoRedirect = generalHelper.getAutoRedirect();
if (!autoRedirect) return null;
if (!generalHelper.getAutoRedirect()) return null;
console.log("statusCode", details.statusCode);
if (details.type == 'main_frame' && details.statusCode >= 500) {
@ -143,9 +147,11 @@ browser.webRequest.onResponseStarted.addListener(
if (!newUrl) newUrl = imgurHelper.changeInstance(url);
if (!newUrl) newUrl = wikipediaHelper.changeInstance(url)
if (!newUrl) newUrl = wikipediaHelper.changeInstance(url);
if (!newUrl) newUrl = peertubeHelper.changeInstance(url)
if (!newUrl) newUrl = peertubeHelper.changeInstance(url);
if (!newUrl) newUrl = lbryHelper.changeInstance(url);
if (newUrl) {
browser.tabs.update({ url: '/pages/errors/instance_offline.html' });

View File

@ -68,6 +68,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
@ -313,6 +317,13 @@
</div>
<input type="checkbox" id="peertube" />
</div>
<div>
<div>
<img src="../../../assets/images/lbry-icon.png">
LBRY/Odysee
</div>
<input type="checkbox" id="lbry" />
</div>
<div>
<div>
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">

View File

@ -69,6 +69,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -70,6 +70,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -0,0 +1,176 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="../../../assets/images/libredirect.svg" />
<link href="../../stylesheets/styles.css" rel="stylesheet" />
<title>LibRedirect Options: TikTok</title>
</head>
<body class="option">
<section class="links">
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="26px" viewBox="0 0 24 24"
width="26px" fill="currentColor">
<path
d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z" />
</svg>
<a href="../general/general.html">General</a>
</div>
<div class="title">
<img src="../../../assets/images/youtube-icon.png" />
<a href="../youtube/youtube.html">YouTube</a>
</div>
<div class="title">
<img src="../../../assets/images/youtube-music-icon.png" />
<a href="../youtubeMusic/youtubeMusic.html">YT Music</a>
</div>
<div class="title">
<img src="../../../assets/images/twitter-icon.png" />
<a href="../twitter/twitter.html">Twitter</a>
</div>
<div class="title">
<img src="../../../assets/images/instagram-icon.png" />
<a href="../instagram/instagram.html">Instagram</a>
</div>
<div class="title">
<img src="../../../assets/images/tiktok-icon.png" />
<a href="../tiktok/tiktok.html">TikTok</a>
</div>
<div class="title">
<img src="../../../assets/images/reddit-icon.png" />
<a href="../reddit/reddit.html">Reddit</a>
</div>
<div class="title">
<img src="../../../assets/images/imgur-icon.png" />
<a href="../imgur/imgur.html">Imgur</a>
</div>
<div class="title">
<img src="../../../assets/images/pixiv-icon.svg" />
<a href="../pixiv/pixiv.html">Pixiv</a>
</div>
<div class="title">
<img src="../../../assets/images/wikipedia-icon.svg" />
<a href="../wikipedia/wikipedia.html">Wikipedia</a>
</div>
<div class="title">
<!-- https://markentier.tech/posts/2020/10/medium-icon-svg/ -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1770 1000" fill="currentColor">
<circle cx="500" cy="500" r="500" />
<ellipse ry="475" rx="250" cy="501" cx="1296" />
<ellipse cx="1682" cy="502" rx="88" ry="424" />
</svg>
<a href="../medium/medium.html">Medium</a>
</div>
<div class="title">
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html" class="selected">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path
d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" />
</svg>
<a href="../search/search.html">Search</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path
d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z" />
</svg>
<a href="../translate/translate.html">Translate</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
<path
d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z" />
</svg>
<a href="../maps/maps.html">Maps</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
<path
d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z" />
</svg>
<a href="../sendTargets/sendTargets.html">Send Files</a>
</div>
</section>
<section class="option-block">
<div class="some-block option-block">
<h4>Enable</h4>
<input id="disable-lbry" type="checkbox" checked />
</div>
<div class="some-block option-block">
<h4>Protocol</h4>
<select id="protocol">
<option value="normal">Normal</option>
<option value="tor">Tor</option>
</select>
</div>
<hr>
<div id="normal">
<div class="some-block option-block">
<h4>Default Instances</h4>
</div>
<div class="checklist" id="librarian-normal-checklist"></div>
<hr>
<div class="some-block option-block">
<h4>Custom Instances</h4>
</div>
<form id="custom-librarian-normal-instance-form">
<div class="some-block option-block">
<input id="librarian-normal-custom-instance" placeholder="https://librarian.com" type="url" />
<button type="submit" class="add" id="librarian-normal-add-instance">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</svg>
</button>
</div>
</form>
<div class="checklist" id="librarian-normal-custom-checklist"></div>
</div>
<div id="tor">
<div class="some-block option-block">
<h4>Default Instances</h4>
</div>
<div class="checklist" id="librarian-tor-checklist"></div>
<hr>
<div class="some-block option-block">
<h4>Custom Instances</h4>
</div>
<form id="custom-librarian-tor-instance-form">
<div class="some-block option-block">
<input id="librarian-tor-custom-instance" placeholder="https://librarian.com" type="url" />
<button type="submit" class="add" id="librarian-tor-add-instance">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</svg>
</button>
</div>
</form>
<div class="checklist" id="librarian-tor-custom-checklist"></div>
</div>
</section>
<script type="module" src="../init.js"></script>
<script type="module" src="./lbry.js"></script>
<!-- <script src="../../assets/javascripts/localise.js"></script> -->
</body>
</html>

View File

@ -0,0 +1,59 @@
import lbryHelper from "../../../assets/javascripts/helpers/lbry.js";
import commonHelper from "../../../assets/javascripts/helpers/common.js";
let disableLbryElement = document.getElementById("disable-lbry");
disableLbryElement.addEventListener("change",
(event) => lbryHelper.setDisable(!event.target.checked)
);
let protocolElement = document.getElementById("protocol")
protocolElement.addEventListener("change",
event => {
let protocol = event.target.options[protocolElement.selectedIndex].value
lbryHelper.setProtocol(protocol);
changeProtocolSettings(protocol);
}
);
function changeProtocolSettings(protocol) {
let normalDiv = document.getElementById("normal");
let torDiv = document.getElementById("tor");
if (protocol == 'normal') {
normalDiv.style.display = 'block';
torDiv.style.display = 'none';
}
else if (protocol == 'tor') {
normalDiv.style.display = 'none';
torDiv.style.display = 'block';
}
}
lbryHelper.init().then(() => {
disableLbryElement.checked = !lbryHelper.getDisable();
let protocol = lbryHelper.getProtocol();
protocolElement.value = protocol;
changeProtocolSettings(protocol);
commonHelper.processDefaultCustomInstances(
'librarian',
'normal',
lbryHelper,
document,
lbryHelper.getLibrarianNormalRedirectsChecks,
lbryHelper.setLibrarianNormalRedirectsChecks,
lbryHelper.getLibrarianNormalCustomRedirects,
lbryHelper.setLibrarianNormalCustomRedirects
);
commonHelper.processDefaultCustomInstances(
'librarian',
'tor',
lbryHelper,
document,
lbryHelper.getLibrarianTorRedirectsChecks,
lbryHelper.setLibrarianTorRedirectsChecks,
lbryHelper.getLibrarianTorCustomRedirects,
lbryHelper.setLibrarianTorCustomRedirects
)
})

View File

@ -70,6 +70,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -69,6 +69,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -69,6 +69,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html" class="selected">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -1,8 +1,8 @@
import peertubeHelper from "../../../assets/javascripts/helpers/peertube.js";
import commonHelper from "../../../assets/javascripts/helpers/common.js";
let disableTiktokElement = document.getElementById("disable-peertube");
disableTiktokElement.addEventListener("change",
let disablePeertubeElement = document.getElementById("disable-peertube");
disablePeertubeElement.addEventListener("change",
(event) => peertubeHelper.setDisable(!event.target.checked)
);
@ -29,7 +29,7 @@ function changeProtocolSettings(protocol) {
}
peertubeHelper.init().then(() => {
disableTiktokElement.checked = !peertubeHelper.getDisable();
disablePeertubeElement.checked = !peertubeHelper.getDisable();
let protocol = peertubeHelper.getProtocol();
protocolElement.value = protocol;

View File

@ -69,6 +69,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -69,6 +69,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -69,6 +69,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -69,6 +69,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -69,6 +69,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -69,6 +69,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -70,6 +70,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -69,6 +69,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -70,6 +70,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -70,6 +70,10 @@
<img src="../../../assets/images/peertube-icon.svg" />
<a href="../peertube/peertube.html">Peertube</a>
</div>
<div class="title">
<img src="../../../assets/images/lbry-icon.png" />
<a href="../lbry/lbry.html">LBRY/Odysee</a>
</div>
<div class="title">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<path d="M0 0h24v24H0V0z" fill="none" />

View File

@ -106,6 +106,14 @@
<input id="disable-peertube" type="checkbox" checked />
</div>
<div id="lbry" class="some-block">
<a class="title" href="https://odysee.com">
<img src="../../../assets/images/lbry-icon.png" />
<h4>LBRY</h4>
</a>
<input id="disable-lbry" type="checkbox" checked />
</div>
<div id="search" class="some-block">
<a class="title" href="http://libredirect.onion">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">

View File

@ -17,6 +17,7 @@ import tiktokHelper from "../../assets/javascripts/helpers/tiktok.js";
import pixivHelper from "../../assets/javascripts/helpers/pixiv.js";
import sendTargetsHelper from "../../assets/javascripts/helpers/sendTargets.js";
import peertubeHelper from "../../assets/javascripts/helpers/peertube.js";
import lbryHelper from "../../assets/javascripts/helpers/lbry.js";
import generalHelper from "../../assets/javascripts/helpers/general.js";
let disableTwitterElement = document.getElementById("disable-nitter");
@ -30,6 +31,7 @@ let disableElement = document.getElementById("disable-simplyTranslate");
let disableWikipediaElement = document.getElementById("disable-wikipedia");
let disableMediumElement = document.getElementById("disable-medium");
let disablePeertubeElement = document.getElementById("disable-peertube");
let disableLbryElement = document.getElementById("disable-lbry");
let disableSendTargetsElement = document.getElementById("disable-sendTargets");
let disableImgurElement = document.getElementById("disable-imgur");
let disableTiktokElement = document.getElementById("disable-tiktok");
@ -50,6 +52,7 @@ async function wholeInit() {
await pixivHelper.init();
await sendTargetsHelper.init();
await peertubeHelper.init();
await lbryHelper.init();
await mediumHelper.init();
};
@ -68,6 +71,11 @@ wholeInit().then(() => {
disablePixivElement.checked = !pixivHelper.getDisable();
disableMediumElement.checked = !mediumHelper.getDisable();
disablePeertubeElement.checked = !peertubeHelper.getDisable();
disableLbryElement.checked = !lbryHelper.getDisable();
let changeInstanceElement = document.getElementById("change-instance")
changeInstanceElement.disabled = !changeInstance();
changeInstanceElement.addEventListener("click", changeInstance);
})
disableTwitterElement.addEventListener("change",
@ -126,6 +134,10 @@ disablePeertubeElement.addEventListener("change",
event => peertubeHelper.setDisable(!event.target.checked)
);
disableLbryElement.addEventListener("change",
event => lbryHelper.setDisable(!event.target.checked)
);
disableSendTargetsElement.addEventListener("change",
event => sendTargetsHelper.setDisable(!event.target.checked)
);
@ -163,6 +175,8 @@ function changeInstance() {
if (!newUrl) newUrl = peertubeHelper.changeInstance(tabUrl);
if (!newUrl) newUrl = lbryHelper.changeInstance(tabUrl);
if (!newUrl) newUrl = imgurHelper.changeInstance(tabUrl);
if (!newUrl) newUrl = wikipediaHelper.changeInstance(tabUrl);
@ -175,9 +189,7 @@ function changeInstance() {
})
return false;
}
let changeInstanceElement = document.getElementById("change-instance")
changeInstanceElement.disabled = !changeInstance();
changeInstanceElement.addEventListener("click", changeInstance);
let popupFrontends;