aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-03-03 22:13:17 +0300
committerManeraKai <manerakai@protonmail.com>2022-03-03 22:13:17 +0300
commit3ef2aa7cc112a9c0dad8cf4dc71afcb657ba095d (patch)
treea8159db9cebfa406ad2cef2d827031f04da8bfca /src
parentBump version to 1.4.7 (diff)
downloadlibredirect-3ef2aa7cc112a9c0dad8cf4dc71afcb657ba095d.zip
Added Piped-Material #51
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js25
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js137
-rw-r--r--src/manifest.json3
-rw-r--r--src/pages/background/background.js1
-rw-r--r--src/pages/options/youtube/piped.js8
-rw-r--r--src/pages/options/youtube/pipedMaterial.js25
-rw-r--r--src/pages/options/youtube/youtube.html54
-rw-r--r--src/pages/options/youtube/youtube.js42
8 files changed, 268 insertions, 27 deletions
diff --git a/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js b/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
new file mode 100644
index 00000000..c47b8c86
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
@@ -0,0 +1,25 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.get(
+ [
+ "youtubeTheme",
+ "youtubeAutoplay"
+ ],
+ res => {
+ let prefs = JSON.parse(
+ decodeURIComponent(
+ localStorage.getItem("PREFERENCES")
+ )
+ ) ?? {};
+ let oldPrefs = { ...prefs };
+
+ if (res.youtubeTheme == 'dark') prefs.darkMode = true;
+ if (res.youtubeTheme == 'light') prefs.darkMode = false;
+
+ if (res.youtubeAutoplay != "DEFAULT") prefs.playerAutoplay = res.youtubeAutoplay;
+
+ if (oldPrefs != prefs) localStorage.setItem("PREFERENCES", encodeURIComponent(JSON.stringify(prefs)));
+ }
+)
+
+window.onunload = () => localStorage.removeItem("PREFERENCES"); \ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index 0277221c..3866f72e 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -35,8 +35,8 @@ let redirects = {
},
"pipedMaterial": {
"normal": [
- "https://piped-material.১.net/",
- "https://piped-material.ftp.sh/",
+ "https://piped-material.xn--17b.net",
+ "https://piped-material.ftp.sh",
],
"tor": []
}
@@ -79,7 +79,6 @@ function setInvidiousNormalCustomRedirects(val) {
console.log("invidiousNormalCustomRedirects: ", val)
}
-
let invidiousTorRedirectsChecks;
const getInvidiousTorRedirectsChecks = () => invidiousTorRedirectsChecks;
function setInvidiousTorRedirectsChecks(val) {
@@ -96,7 +95,6 @@ function setInvidiousTorCustomRedirects(val) {
console.log("invidiousTorCustomRedirects: ", val)
}
-
let pipedNormalRedirectsChecks;
const getPipedNormalRedirectsChecks = () => pipedNormalRedirectsChecks;
function setPipedNormalRedirectsChecks(val) {
@@ -113,7 +111,6 @@ function setPipedNormalCustomRedirects(val) {
console.log("pipedNormalCustomRedirects: ", val)
}
-
let pipedTorRedirectsChecks;
const getPipedTorRedirectsChecks = () => pipedTorRedirectsChecks;
function setPipedTorRedirectsChecks(val) {
@@ -136,6 +133,44 @@ function setPipedRedirects(val) {
console.log("pipedRedirects: ", val)
}
+let pipedMaterialNormalRedirectsChecks;
+const getPipedMaterialNormalRedirectsChecks = () => pipedMaterialNormalRedirectsChecks;
+function setPipedMaterialNormalRedirectsChecks(val) {
+ pipedMaterialNormalRedirectsChecks = val;
+ browser.storage.local.set({ pipedMaterialNormalRedirectsChecks })
+ console.log("pipedMaterialNormalRedirectsChecks: ", val)
+}
+
+let pipedMaterialNormalCustomRedirects = [];
+const getPipedMaterialNormalCustomRedirects = () => pipedMaterialNormalCustomRedirects;
+function setPipedMaterialNormalCustomRedirects(val) {
+ pipedMaterialNormalCustomRedirects = val;
+ browser.storage.local.set({ pipedMaterialNormalCustomRedirects })
+ console.log("pipedMaterialNormalCustomRedirects: ", val)
+}
+
+let pipedMaterialTorRedirectsChecks;
+const getPipedMaterialTorRedirectsChecks = () => pipedMaterialTorRedirectsChecks;
+function setPipedMaterialTorRedirectsChecks(val) {
+ pipedMaterialTorRedirectsChecks = val;
+ browser.storage.local.set({ pipedMaterialTorRedirectsChecks })
+ console.log("pipedMaterialTorRedirectsChecks: ", val)
+}
+
+let pipedMaterialTorCustomRedirects = [];
+const getPipedMaterialTorCustomRedirects = () => pipedMaterialTorCustomRedirects;
+function setPipedMaterialTorCustomRedirects(val) {
+ pipedMaterialTorCustomRedirects = val;
+ browser.storage.local.set({ pipedMaterialTorCustomRedirects })
+ console.log("pipedMaterialTorCustomRedirects: ", val)
+}
+
+function setPipedMaterialRedirects(val) {
+ redirects.pipedMaterial = val;
+ browser.storage.local.set({ youtubeRedirects: redirects })
+ console.log("pipedMaterialRedirects: ", val)
+}
+
let disable;
const getDisable = () => disable;
function setDisable(val) {
@@ -386,28 +421,55 @@ function redirect(url, details, initiator) {
return `${randomInstance}${url.pathname}${url.search}`;
}
+ else if (frontend == 'pipedMaterial' ||
+ ((frontend == 'freetube' || frontend == 'yatte') && youtubeEmbedFrontend == 'pipedMaterial' && details.type === "sub_frame")) {
+ if (OnlyEmbeddedVideo == 'onlyEmbedded' && details.type !== "sub_frame") return null;
+ if (
+ OnlyEmbeddedVideo == 'onlyNotEmbedded' && details.type !== "main_frame" &&
+ !((frontend == 'freetube' || frontend == 'yatte') && youtubeEmbedFrontend == 'pipedMaterial' && details.type == "sub_frame")
+ ) return null;
+
+ let instancesList;
+ if (protocol == 'normal') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
+ else if (protocol == 'tor') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects];
+ let randomInstance = commonHelper.getRandomInstance(instancesList);
+
+ return `${randomInstance}${url.pathname}${url.search}`;
+ }
return 'CANCEL';
}
function changeInstance(url) {
+ console.log("changeInstance Youtube");
let protocolHost = `${url.protocol}//${url.host}`;
+ console.log("protocolHost", protocolHost);
+
if (
protocol == 'normal' &&
![
...redirects.invidious.normal,
...redirects.piped.normal,
+ ...redirects.pipedMaterial.normal,
+
...invidiousNormalCustomRedirects,
- ...pipedNormalCustomRedirects
+ ...pipedNormalCustomRedirects,
+ ...pipedMaterialNormalCustomRedirects
+ ].includes(protocolHost)
+ ) return null;
+
+ if (protocol == 'tor' &&
+ ![
+ ...redirects.invidious.tor,
+ ...redirects.piped.tor,
+ ...redirects.pipedMaterial.tor,
+
+ ...invidiousTorCustomRedirects,
+ ...pipedTorCustomRedirects,
+ ...pipedMaterialTorCustomRedirects
].includes(protocolHost)
) return null;
- if (protocol == 'tor' && ![
- ...redirects.invidious.tor,
- ...redirects.piped.tor,
- ...invidiousTorCustomRedirects,
- ...pipedTorCustomRedirects
- ].includes(protocolHost)) return null;
let instancesList;
if (frontend == 'invidious') {
@@ -418,6 +480,11 @@ function changeInstance(url) {
if (protocol == 'normal') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
else if (protocol == 'tor') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
}
+ else if (frontend == 'pipedMaterial') {
+
+ if (protocol == 'normal') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
+ else if (protocol == 'tor') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects];
+ }
console.log("instancesList", instancesList);
let index = instancesList.indexOf(protocolHost);
@@ -468,6 +535,14 @@ function isUrlPipedorInvidious(url, frontend) {
...pipedTorCustomRedirects,
].includes(protocolHost);
+ if (frontend == 'pipedMaterial')
+ return [
+ ...redirects.pipedMaterial.normal,
+ ...redirects.pipedMaterial.tor,
+ ...pipedMaterialNormalCustomRedirects,
+ ...pipedMaterialTorCustomRedirects,
+ ].includes(protocolHost);
+
return [
...redirects.invidious.normal,
...redirects.invidious.tor,
@@ -567,6 +642,16 @@ function initPipedLocalStorage(tabId) {
);
}
+function initPipedMaterialLocalStorage(tabId) {
+ browser.tabs.executeScript(
+ tabId,
+ {
+ file: "/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js",
+ runAt: "document_start"
+ }
+ );
+}
+
function initInvidiousCookies(tabId) {
browser.tabs.executeScript(
tabId,
@@ -605,6 +690,12 @@ async function init() {
"pipedNormalRedirectsChecks",
"pipedNormalCustomRedirects",
+ "pipedMaterialNormalRedirectsChecks",
+ "pipedMaterialNormalCustomRedirects",
+
+ "pipedMaterialTorRedirectsChecks",
+ "pipedMaterialTorCustomRedirects",
+
"pipedTorRedirectsChecks",
"pipedTorCustomRedirects",
"alwaysUsePreferred",
@@ -646,6 +737,13 @@ async function init() {
pipedTorRedirectsChecks = result.pipedTorRedirectsChecks ?? [...redirects.piped.tor];
pipedTorCustomRedirects = result.pipedTorCustomRedirects ?? [];
+
+ pipedMaterialNormalRedirectsChecks = result.pipedMaterialNormalRedirectsChecks ?? [...redirects.pipedMaterial.normal];
+ pipedMaterialNormalCustomRedirects = result.pipedMaterialNormalCustomRedirects ?? [];
+
+ pipedMaterialTorRedirectsChecks = result.pipedMaterialTorRedirectsChecks ?? [...redirects.pipedMaterial.tor];
+ pipedMaterialTorCustomRedirects = result.pipedMaterialTorCustomRedirects ?? [];
+
persistInvidiousPrefs = result.persistInvidiousPrefs ?? false;
alwaysUsePreferred = result.alwaysUsePreferred ?? true;
@@ -665,6 +763,7 @@ export default {
setBypassWatchOnYoutube,
initInvidiousCookies,
initPipedLocalStorage,
+ initPipedMaterialLocalStorage,
getFrontend,
setFrontend,
@@ -741,6 +840,20 @@ export default {
getPipedTorCustomRedirects,
setPipedTorCustomRedirects,
+ getPipedMaterialNormalRedirectsChecks,
+ setPipedMaterialNormalRedirectsChecks,
+
+ getPipedMaterialNormalCustomRedirects,
+ setPipedMaterialNormalCustomRedirects,
+
+ getPipedMaterialTorRedirectsChecks,
+ setPipedMaterialTorRedirectsChecks,
+
+ getPipedMaterialTorCustomRedirects,
+ setPipedMaterialTorCustomRedirects,
+
+ setPipedMaterialRedirects,
+
getExceptions,
setExceptions,
isException,
diff --git a/src/manifest.json b/src/manifest.json
index ec72ba91..c4e73a35 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -38,6 +38,7 @@
"open_in_tab": true
},
"web_accessible_resources": [
- "assets/javascripts/helpers/youtube/piped-preferences.js"
+ "assets/javascripts/helpers/youtube/piped-preferences.js",
+ "assets/javascripts/helpers/youtube/pipedMaterial-preferences.js"
]
} \ No newline at end of file
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index c35e240c..7098f6e0 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -110,5 +110,6 @@ browser.tabs.onRemoved.addListener((tabId) => {
browser.tabs.onUpdated.addListener(
(tabId, changeInfo, _) => {
if (changeInfo.url && youtubeHelper.isUrlPipedorInvidious(changeInfo.url, 'piped')) youtubeHelper.initPipedLocalStorage(tabId);
+ if (changeInfo.url && youtubeHelper.isUrlPipedorInvidious(changeInfo.url, 'pipedMaterial')) youtubeHelper.initPipedMaterialLocalStorage(tabId);
// if (changeInfo.url && youtubeHelper.isUrlPipedorInvidious(changeInfo.url, 'invidious')) youtubeHelper.initInvidiousCookies(tabId);
}); \ No newline at end of file
diff --git a/src/pages/options/youtube/piped.js b/src/pages/options/youtube/piped.js
index 6c541a8d..c6517966 100644
--- a/src/pages/options/youtube/piped.js
+++ b/src/pages/options/youtube/piped.js
@@ -23,11 +23,3 @@ youtubeHelper.init().then(() => {
youtubeHelper.setPipedTorCustomRedirects
);
});
-
-
-
-
-
-
-
-
diff --git a/src/pages/options/youtube/pipedMaterial.js b/src/pages/options/youtube/pipedMaterial.js
new file mode 100644
index 00000000..9a8a9610
--- /dev/null
+++ b/src/pages/options/youtube/pipedMaterial.js
@@ -0,0 +1,25 @@
+import youtubeHelper from "../../../assets/javascripts/helpers/youtube/youtube.js";
+import commonHelper from "../../../assets/javascripts/helpers/common.js";
+
+youtubeHelper.init().then(() => {
+ commonHelper.processDefaultCustomInstances(
+ 'pipedMaterial',
+ 'normal',
+ youtubeHelper,
+ document,
+ youtubeHelper.getPipedMaterialNormalRedirectsChecks,
+ youtubeHelper.setPipedMaterialNormalRedirectsChecks,
+ youtubeHelper.getPipedMaterialNormalCustomRedirects,
+ youtubeHelper.setPipedMaterialNormalCustomRedirects
+ );
+ commonHelper.processDefaultCustomInstances(
+ 'pipedMaterial',
+ 'tor',
+ youtubeHelper,
+ document,
+ youtubeHelper.getPipedMaterialTorRedirectsChecks,
+ youtubeHelper.setPipedMaterialTorRedirectsChecks,
+ youtubeHelper.getPipedMaterialTorCustomRedirects,
+ youtubeHelper.setPipedMaterialTorCustomRedirects
+ );
+});
diff --git a/src/pages/options/youtube/youtube.html b/src/pages/options/youtube/youtube.html
index add3276c..27c0ceff 100644
--- a/src/pages/options/youtube/youtube.html
+++ b/src/pages/options/youtube/youtube.html
@@ -112,6 +112,7 @@
<select id="youtube-embed-frontend">
<option value="invidious">Invidious</option>
<option value="piped">Piped</option>
+ <option value="pipedMaterial">Piped-Material</option>
<option value="youtube">Youtube</option>
</select>
</div>
@@ -321,6 +322,58 @@
</div>
</div>
+ <div id="pipedMaterial">
+ <hr>
+
+ <div id="pipedMaterial-normal">
+ <div class="some-block option-block">
+ <h4>Default Instances</h4>
+ </div>
+ <div class="checklist" id="pipedMaterial-normal-checklist"></div>
+ <hr>
+ <div class="some-block option-block">
+ <h4>Custom Instances</h4>
+ </div>
+ <form id="custom-pipedMaterial-normal-instance-form">
+ <div class="some-block option-block">
+ <input id="pipedMaterial-normal-custom-instance" placeholder="https://piped-material.com" type="url" />
+ <button type="submit" class="add" id="pipedMaterial-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="pipedMaterial-normal-custom-checklist"></div>
+ </div>
+
+ <div id="pipedMaterial-tor">
+ <div class="some-block option-block">
+ <h4>Default Instances</h4>
+ </div>
+ <div class="checklist" id="pipedMaterial-tor-checklist"></div>
+ <hr>
+ <div class="some-block option-block">
+ <h4>Custom Instances</h4>
+ </div>
+ <form id="custom-pipedMaterial-tor-instance-form">
+ <div class="some-block option-block">
+ <input id="pipedMaterial-tor-custom-instance" placeholder="https://pipedMaterial.com" type="url" />
+ <button type="submit" class="add" id="pipedMaterial-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="pipedMaterial-tor-custom-checklist"></div>
+ </div>
+ </div>
+
<hr>
<div class="some-block option-block">
@@ -355,6 +408,7 @@
<script type="module" src="./youtube.js"></script>
<script type="module" src="./invidious.js"></script>
<script type="module" src="./piped.js"></script>
+ <script type="module" src="./pipedMaterial.js"></script>
<script type="module" src="./embed-exceptions.js"></script>
<!-- <script src="../../assets/javascripts/localise.js"></script> -->
</body>
diff --git a/src/pages/options/youtube/youtube.js b/src/pages/options/youtube/youtube.js
index 168a9d30..61c02e98 100644
--- a/src/pages/options/youtube/youtube.js
+++ b/src/pages/options/youtube/youtube.js
@@ -5,26 +5,44 @@ let disableYoutubeElement = document.getElementById("disable-invidious");
let youtubeFrontendElement = document.getElementById("youtube-frontend");
let invidiousDivElement = document.getElementById("invidious");
let pipedDivElement = document.getElementById("piped");
+let pipedMaterialDivElement = document.getElementById("pipedMaterial");
let invidiousPipedDivElement = document.getElementById("invidious-piped");
let freetubeYatteeDivElement = document.getElementById("freetube-yatte");
function changeFrontendsSettings(frontend) {
- if (frontend == 'piped') {
+ if (frontend == 'invidious') {
invidiousPipedDivElement.style.display = 'block'
+ invidiousDivElement.style.display = 'block';
+ pipedDivElement.style.display = 'none';
+ pipedMaterialDivElement.style.display = 'none';
+ freetubeYatteeDivElement.style.display = 'none';
+ }
+ else if (frontend == 'piped') {
+ invidiousPipedDivElement.style.display = 'block'
+ invidiousDivElement.style.display = 'none';
pipedDivElement.style.display = 'block';
+ pipedMaterialDivElement.style.display = 'none';
+ freetubeYatteeDivElement.style.display = 'none';
+ }
+ else if (frontend == 'piped') {
+ invidiousPipedDivElement.style.display = 'block'
invidiousDivElement.style.display = 'none';
+ pipedDivElement.style.display = 'block';
+ pipedMaterialDivElement.style.display = 'none';
freetubeYatteeDivElement.style.display = 'none';
}
- else if (frontend == 'invidious') {
+ else if (frontend == 'pipedMaterial') {
invidiousPipedDivElement.style.display = 'block'
+ invidiousDivElement.style.display = 'none';
pipedDivElement.style.display = 'none';
- invidiousDivElement.style.display = 'block';
+ pipedMaterialDivElement.style.display = 'block';
freetubeYatteeDivElement.style.display = 'none';
}
else if (frontend == 'freetube' || frontend == 'yatte') {
invidiousPipedDivElement.style.display = 'none'
- pipedDivElement.style.display = 'none';
invidiousDivElement.style.display = 'none';
+ pipedDivElement.style.display = 'none';
+ pipedMaterialDivElement.style.display = 'none';
freetubeYatteeDivElement.style.display = 'block';
changeYoutubeEmbedFrontendsSettings(youtubeHelper.getYoutubeEmbedFrontend());
}
@@ -118,19 +136,31 @@ function changeProtocolSettings(protocol) {
let normalPipedDiv = document.getElementById("piped-normal");
let torPipedDiv = document.getElementById("piped-tor");
+ let normalPipedMaterialDiv = document.getElementById("pipedMaterial-normal");
+ let torPipedMaterialDiv = document.getElementById("pipedMaterial-tor");
+
let normalInvidiousDiv = document.getElementById("invidious-normal");
let torInvidiousDiv = document.getElementById("invidious-tor");
+
if (protocol == 'normal') {
- normalPipedDiv.style.display = 'block';
normalInvidiousDiv.style.display = 'block';
torInvidiousDiv.style.display = 'none';
+
+ normalPipedDiv.style.display = 'block';
torPipedDiv.style.display = 'none';
+
+ normalPipedMaterialDiv.style.display = 'block';
+ torPipedMaterialDiv.style.display = 'none';
}
else if (protocol == 'tor') {
- normalPipedDiv.style.display = 'none';
normalInvidiousDiv.style.display = 'none';
torInvidiousDiv.style.display = 'block';
+
+ normalPipedDiv.style.display = 'none';
torPipedDiv.style.display = 'block';
+
+ normalPipedMaterialDiv.style.display = 'none';
+ torPipedMaterialDiv.style.display = 'block';
}
}