Randomise instances when empty (#48)
This commit is contained in:
parent
67dc5fcc3b
commit
ae6f4f6a6c
|
@ -1,6 +1,20 @@
|
|||
'use strict';
|
||||
"use strict";
|
||||
|
||||
const nitterDefault = 'https://nitter.net';
|
||||
const nitterInstances = [
|
||||
"https://nitter.net",
|
||||
"https://nitter.snopyta.org",
|
||||
"https://nitter.42l.fr",
|
||||
"https://nitter.nixnet.services",
|
||||
"https://nitter.13ad.de",
|
||||
"https://nitter.pussthecat.org",
|
||||
"https://nitter.mastodont.cat",
|
||||
"https://nitter",
|
||||
"https://nitter.tedomum.net",
|
||||
"https://nitter.cattube.org",
|
||||
"https://nitter.fdn.fr",
|
||||
"https://nitter.1d4.us",
|
||||
"https://nitter.kavin.rocks",
|
||||
];
|
||||
|
||||
let disableNitter;
|
||||
let nitterInstance;
|
||||
|
@ -9,61 +23,67 @@ let exceptions;
|
|||
|
||||
window.browser = window.browser || window.chrome;
|
||||
|
||||
function getRandomInstance() {
|
||||
return nitterInstances[~~(nitterInstances.length * Math.random())];
|
||||
}
|
||||
|
||||
function isNotException(url) {
|
||||
return !exceptions.some(regex => (regex.test(url.href)));
|
||||
return !exceptions.some((regex) => regex.test(url.href));
|
||||
}
|
||||
|
||||
function shouldRedirect(url) {
|
||||
return !redirectBypassFlag &&
|
||||
return (
|
||||
!redirectBypassFlag &&
|
||||
isNotException(url) &&
|
||||
!disableNitter &&
|
||||
url.host !== nitterInstance &&
|
||||
!url.pathname.includes('/home');
|
||||
!url.pathname.includes("/home")
|
||||
);
|
||||
}
|
||||
|
||||
function redirectTwitter(url) {
|
||||
if (url.host.split('.')[0] === 'pbs') {
|
||||
if (url.host.split(".")[0] === "pbs") {
|
||||
return `${nitterInstance}/pic/${encodeURIComponent(url.href)}`;
|
||||
} else if (url.host.split('.')[0] === 'video') {
|
||||
} else if (url.host.split(".")[0] === "video") {
|
||||
return `${nitterInstance}/gif/${encodeURIComponent(url.href)}`;
|
||||
} else {
|
||||
return `${nitterInstance}${url.pathname}${url.search}`;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
browser.storage.sync.get(
|
||||
[
|
||||
'nitterInstance',
|
||||
'disableNitter',
|
||||
'removeTwitterSW',
|
||||
'redirectBypassFlag',
|
||||
'exceptions'
|
||||
"nitterInstance",
|
||||
"disableNitter",
|
||||
"removeTwitterSW",
|
||||
"redirectBypassFlag",
|
||||
"exceptions",
|
||||
],
|
||||
(result) => {
|
||||
redirectBypassFlag = result.redirectBypassFlag;
|
||||
browser.storage.sync.set({
|
||||
redirectBypassFlag: false
|
||||
redirectBypassFlag: false,
|
||||
});
|
||||
if (!result.removeTwitterSW) {
|
||||
disableNitter = result.disableNitter;
|
||||
nitterInstance = result.nitterInstance || nitterDefault;
|
||||
exceptions = result.exceptions ? result.exceptions.map(e => {
|
||||
return new RegExp(e);
|
||||
}) : [];
|
||||
navigator.serviceWorker.getRegistrations().then(registrations => {
|
||||
nitterInstance = result.nitterInstance || getRandomInstance();
|
||||
exceptions = result.exceptions
|
||||
? result.exceptions.map((e) => {
|
||||
return new RegExp(e);
|
||||
})
|
||||
: [];
|
||||
navigator.serviceWorker.getRegistrations().then((registrations) => {
|
||||
for (let registration of registrations) {
|
||||
if (registration.scope === 'https://twitter.com/') {
|
||||
if (registration.scope === "https://twitter.com/") {
|
||||
registration.unregister();
|
||||
console.log('Unregistered Twitter SW', registration);
|
||||
console.log("Unregistered Twitter SW", registration);
|
||||
}
|
||||
}
|
||||
});
|
||||
const url = new URL(window.location);
|
||||
if (shouldRedirect()) {
|
||||
const redirect = redirectTwitter(url);
|
||||
console.info(
|
||||
'Redirecting', `"${url.href}"`, '=>', `"${redirect}"`
|
||||
);
|
||||
console.info("Redirecting", `"${url.href}"`, "=>", `"${redirect}"`);
|
||||
window.location = redirect;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
"use strict";
|
||||
|
||||
const invidiousDefault = "https://invidious.snopyta.org";
|
||||
const youtubeDomains = [
|
||||
"m.youtube.com",
|
||||
"youtube.com",
|
||||
|
@ -22,7 +21,6 @@ const invidiousInstances = [
|
|||
"https://invidious.fdn.fr",
|
||||
"https://invidious.toot.koeln",
|
||||
];
|
||||
const nitterDefault = "https://nitter.net";
|
||||
const twitterDomains = [
|
||||
"twitter.com",
|
||||
"www.twitter.com",
|
||||
|
@ -30,7 +28,20 @@ const twitterDomains = [
|
|||
"pbs.twimg.com",
|
||||
"video.twimg.com",
|
||||
];
|
||||
const bibliogramDefault = "https://bibliogram.art";
|
||||
const nitterInstances = [
|
||||
"https://nitter.net",
|
||||
"https://nitter.snopyta.org",
|
||||
"https://nitter.42l.fr",
|
||||
"https://nitter.nixnet.services",
|
||||
"https://nitter.13ad.de",
|
||||
"https://nitter.pussthecat.org",
|
||||
"https://nitter.mastodont.cat",
|
||||
"https://nitter.tedomum.net",
|
||||
"https://nitter.cattube.org",
|
||||
"https://nitter.fdn.fr",
|
||||
"https://nitter.1d4.us",
|
||||
"https://nitter.kavin.rocks",
|
||||
];
|
||||
const instagramDomains = [
|
||||
"instagram.com",
|
||||
"www.instagram.com",
|
||||
|
@ -64,6 +75,13 @@ const bibliogramBypassPaths = /\/(accounts\/|embeds?.js)/;
|
|||
const bibliogramInstances = [
|
||||
"https://bibliogram.art",
|
||||
"https://bibliogram.snopyta.org",
|
||||
"https://bibliogram.pussthecat.org",
|
||||
"https://bibliogram.nixnet.services",
|
||||
"https://bg.endl.site",
|
||||
"https://bibliogram.13ad.de ",
|
||||
"https://bibliogram.stemy.me ",
|
||||
"https://bibliogram.hamster.dance",
|
||||
"https://bibliogram.ggc-project.de",
|
||||
];
|
||||
const osmDefault = "https://openstreetmap.org";
|
||||
const googleMapsRegex = /https?:\/\/(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/;
|
||||
|
@ -128,9 +146,9 @@ browser.storage.sync.get(
|
|||
disableInvidious = result.disableInvidious;
|
||||
disableBibliogram = result.disableBibliogram;
|
||||
disableOsm = result.disableOsm;
|
||||
nitterInstance = result.nitterInstance || nitterDefault;
|
||||
invidiousInstance = result.invidiousInstance || invidiousDefault;
|
||||
bibliogramInstance = result.bibliogramInstance || bibliogramDefault;
|
||||
nitterInstance = result.nitterInstance;
|
||||
invidiousInstance = result.invidiousInstance;
|
||||
bibliogramInstance = result.bibliogramInstance;
|
||||
osmInstance = result.osmInstance || osmDefault;
|
||||
alwaysProxy = result.alwaysProxy;
|
||||
onlyEmbeddedVideo = result.onlyEmbeddedVideo;
|
||||
|
@ -150,14 +168,13 @@ browser.storage.sync.get(
|
|||
|
||||
browser.storage.onChanged.addListener((changes) => {
|
||||
if ("nitterInstance" in changes) {
|
||||
nitterInstance = changes.nitterInstance.newValue || nitterDefault;
|
||||
nitterInstance = changes.nitterInstance.newValue;
|
||||
}
|
||||
if ("invidiousInstance" in changes) {
|
||||
invidiousInstance = changes.invidiousInstance.newValue || invidiousDefault;
|
||||
invidiousInstance = changes.invidiousInstance.newValue;
|
||||
}
|
||||
if ("bibliogramInstance" in changes) {
|
||||
bibliogramInstance =
|
||||
changes.bibliogramInstance.newValue || bibliogramDefault;
|
||||
bibliogramInstance = changes.bibliogramInstance.newValue;
|
||||
}
|
||||
if ("osmInstance" in changes) {
|
||||
osmInstance = changes.osmInstance.newValue || osmDefault;
|
||||
|
@ -205,6 +222,10 @@ browser.storage.onChanged.addListener((changes) => {
|
|||
}
|
||||
});
|
||||
|
||||
function getRandomInstance(instanceList) {
|
||||
return instanceList[~~(instanceList.length * Math.random())];
|
||||
}
|
||||
|
||||
function addressToLatLng(address, callback) {
|
||||
const xmlhttp = new XMLHttpRequest();
|
||||
xmlhttp.onreadystatechange = () => {
|
||||
|
@ -248,6 +269,7 @@ function redirectYouTube(url, initiator, type) {
|
|||
if (
|
||||
initiator &&
|
||||
(initiator.origin === invidiousInstance ||
|
||||
invidiousInstances.includes(initiator.origin) ||
|
||||
youtubeDomains.includes(initiator.host))
|
||||
) {
|
||||
return null;
|
||||
|
@ -284,7 +306,9 @@ function redirectYouTube(url, initiator, type) {
|
|||
}
|
||||
url.searchParams.append("autoplay", invidiousAutoplay ? 1 : 0);
|
||||
|
||||
return `${invidiousInstance}${url.pathname}${url.search}`;
|
||||
return `${invidiousInstance || getRandomInstance(invidiousInstances)}${
|
||||
url.pathname
|
||||
}${url.search}`;
|
||||
}
|
||||
|
||||
function redirectTwitter(url, initiator) {
|
||||
|
@ -298,6 +322,7 @@ function redirectTwitter(url, initiator) {
|
|||
isFirefox() &&
|
||||
initiator &&
|
||||
(initiator.origin === nitterInstance ||
|
||||
nitterInstances.includes(initiator.origin) ||
|
||||
twitterDomains.includes(initiator.host))
|
||||
) {
|
||||
browser.storage.sync.set({
|
||||
|
@ -306,15 +331,21 @@ function redirectTwitter(url, initiator) {
|
|||
return null;
|
||||
}
|
||||
if (url.host.split(".")[0] === "pbs") {
|
||||
return `${nitterInstance}/pic/${encodeURIComponent(url.href)}`;
|
||||
return `${
|
||||
nitterInstance || getRandomInstance(nitterInstances)
|
||||
}/pic/${encodeURIComponent(url.href)}`;
|
||||
} else if (url.host.split(".")[0] === "video") {
|
||||
return `${nitterInstance}/gif/${encodeURIComponent(url.href)}`;
|
||||
return `${
|
||||
nitterInstance || getRandomInstance(nitterInstances)
|
||||
}/gif/${encodeURIComponent(url.href)}`;
|
||||
} else if (url.pathname.includes("tweets")) {
|
||||
return `${nitterInstance}${url.pathname.replace("/tweets", "")}${
|
||||
url.search
|
||||
}`;
|
||||
return `${
|
||||
nitterInstance || getRandomInstance(nitterInstances)
|
||||
}${url.pathname.replace("/tweets", "")}${url.search}`;
|
||||
} else {
|
||||
return `${nitterInstance}${url.pathname}${url.search}`;
|
||||
return `${nitterInstance || getRandomInstance(nitterInstances)}${
|
||||
url.pathname
|
||||
}${url.search}`;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -326,6 +357,7 @@ function redirectInstagram(url, initiator, type) {
|
|||
if (
|
||||
initiator &&
|
||||
(initiator.origin === bibliogramInstance ||
|
||||
bibliogramInstances.includes(initiator.origin) ||
|
||||
instagramDomains.includes(initiator.host))
|
||||
) {
|
||||
return null;
|
||||
|
@ -338,10 +370,14 @@ function redirectInstagram(url, initiator, type) {
|
|||
url.pathname === "/" ||
|
||||
instagramReservedPaths.includes(url.pathname.split("/")[1])
|
||||
) {
|
||||
return `${bibliogramInstance}${url.pathname}${url.search}`;
|
||||
return `${bibliogramInstance || getRandomInstance(bibliogramInstances)}${
|
||||
url.pathname
|
||||
}${url.search}`;
|
||||
} else {
|
||||
// Likely a user profile, redirect to '/u/...'
|
||||
return `${bibliogramInstance}/u${url.pathname}${url.search}`;
|
||||
return `${bibliogramInstance || getRandomInstance(bibliogramInstances)}/u${
|
||||
url.pathname
|
||||
}${url.search}`;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -482,14 +518,7 @@ browser.webRequest.onBeforeRequest.addListener(
|
|||
);
|
||||
|
||||
browser.runtime.onInstalled.addListener((details) => {
|
||||
if (details.reason === "install") {
|
||||
browser.storage.sync.set({
|
||||
bibliogramInstance:
|
||||
bibliogramInstances[~~(bibliogramInstances.length * Math.random())],
|
||||
invidiousInstance:
|
||||
invidiousInstances[~~(invidiousInstances.length * Math.random())],
|
||||
});
|
||||
} else if (details.reason === "update") {
|
||||
if (details.reason === "update") {
|
||||
browser.storage.sync.get(
|
||||
["whitelist", "exceptions", "invidiousInstance"],
|
||||
(result) => {
|
||||
|
@ -502,13 +531,9 @@ browser.runtime.onInstalled.addListener((details) => {
|
|||
whitelist: null,
|
||||
});
|
||||
}
|
||||
if (
|
||||
result.invidiousInstance === "https://invidio.us" ||
|
||||
result.invidiousInstance === null
|
||||
) {
|
||||
if (result.invidiousInstance === "https://invidio.us") {
|
||||
browser.storage.sync.set({
|
||||
invidiousInstance:
|
||||
invidiousInstances[~~(invidiousInstances.length * Math.random())],
|
||||
invidiousInstance: null,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "__MSG_extensionName__",
|
||||
"description": "__MSG_extensionDescription__",
|
||||
"version": "1.1.40",
|
||||
"version": "1.1.41",
|
||||
"manifest_version": 2,
|
||||
"background": {
|
||||
"scripts": ["background.js"],
|
||||
|
|
|
@ -127,7 +127,7 @@
|
|||
id="nitter-instance"
|
||||
type="url"
|
||||
name="nitter-instance"
|
||||
placeholder="https://nitter.net"
|
||||
placeholder="Random instance (none selected)"
|
||||
/>
|
||||
</div>
|
||||
</section>
|
||||
|
@ -137,7 +137,7 @@
|
|||
<input
|
||||
id="invidious-instance"
|
||||
type="url"
|
||||
placeholder="https://invidious.snopyta.org"
|
||||
placeholder="Random instance (none selected)"
|
||||
/>
|
||||
</div>
|
||||
</section>
|
||||
|
@ -147,7 +147,7 @@
|
|||
<input
|
||||
id="bibliogram-instance"
|
||||
type="url"
|
||||
placeholder="https://bibliogram.art"
|
||||
placeholder="Random instance (none selected)"
|
||||
/>
|
||||
</div>
|
||||
</section>
|
||||
|
@ -228,9 +228,8 @@
|
|||
<option value="">Default</option>
|
||||
<option value="hd720">720p</option>
|
||||
<option value="medium">480p</option>
|
||||
<option value="dash"
|
||||
>DASH (Dynamic Adaptive Streaming over HTTP)</option
|
||||
>
|
||||
<option value="dash">DASH (Dynamic Adaptive Streaming over HTTP)</option>
|
||||
</option>
|
||||
</select>
|
||||
</section>
|
||||
<section class="settings-block">
|
||||
|
@ -257,7 +256,9 @@
|
|||
</table>
|
||||
</section>
|
||||
<section class="settings-block">
|
||||
<h1 data-localise="__MSG_invidiousVolume__">Invidious Volume</h1>
|
||||
<h1 data-localise="__MSG_invidiousVolume__">
|
||||
Invidious Volume
|
||||
</h1>
|
||||
<input
|
||||
id="invidious-volume"
|
||||
name="invidious-volume"
|
||||
|
@ -265,7 +266,7 @@
|
|||
min="0"
|
||||
max="100"
|
||||
step="1"
|
||||
/>
|
||||
/><span id="volume-value"></span>
|
||||
</section>
|
||||
<section class="settings-block">
|
||||
<h1 data-localise="__MSG_invidiousPlayerStyle__">
|
||||
|
|
|
@ -140,6 +140,9 @@ browser.storage.sync.get(
|
|||
exceptions = result.exceptions || [];
|
||||
exceptions.forEach(prependExceptionsItem);
|
||||
invidiousVolume.value = result.invidiousVolume;
|
||||
document.querySelector("#volume-value").textContent = result.invidiousVolume
|
||||
? `${result.invidiousVolume}%`
|
||||
: " - ";
|
||||
invidiousPlayerStyle.value = result.invidiousPlayerStyle || "";
|
||||
invidiousSubtitles.value = result.invidiousSubtitles || "";
|
||||
invidiousAutoplay.checked = result.invidiousAutoplay;
|
||||
|
@ -313,11 +316,12 @@ persistInvidiousPrefs.addEventListener("change", (event) => {
|
|||
});
|
||||
|
||||
let invidiousVolumeChange = debounce(() => {
|
||||
if (invidiousInstance.checkValidity()) {
|
||||
browser.storage.sync.set({
|
||||
invidiousVolume: invidiousVolume.value,
|
||||
});
|
||||
}
|
||||
document.querySelector(
|
||||
"#volume-value"
|
||||
).textContent = `${invidiousVolume.value}%`;
|
||||
browser.storage.sync.set({
|
||||
invidiousVolume: invidiousVolume.value,
|
||||
});
|
||||
}, 500);
|
||||
invidiousVolume.addEventListener("input", invidiousVolumeChange);
|
||||
|
||||
|
|
|
@ -457,3 +457,7 @@ input[type="range"]::-moz-range-thumb {
|
|||
background-color: var(--bg-secondary);
|
||||
}
|
||||
}
|
||||
|
||||
#volume-value {
|
||||
float: right;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue