Force YouTube links to open directly in NewPipe using Android intents
// ==UserScript==
// @name YouTube → NewPipe (Intent Redirect)
// @namespace https://local.newpipe.redirect/
// @version 1.1
// @description Force YouTube links to open directly in NewPipe using Android intents
// @match *://*/*
// @grant none
// @run-at document-end
// ==/UserScript==
(function () {
'use strict';
function makeIntent(videoId) {
return `intent://www.youtube.com/watch?v=${videoId}` +
`#Intent;scheme=https;package=org.schabi.newpipe;end`;
}
function rewriteLink(a) {
if (!a || !a.href) return;
try {
const url = new URL(a.href);
// youtube.com/watch?v=ID
if (url.hostname.includes("youtube.com") && url.searchParams.has("v")) {
const id = url.searchParams.get("v");
a.href = makeIntent(id);
}
// youtu.be/ID
else if (url.hostname === "youtu.be") {
const id = url.pathname.substring(1);
if (id) {
a.href = makeIntent(id);
}
}
} catch (e) {
// ignore
}
}
function rewriteAll() {
document.querySelectorAll("a[href]").forEach(rewriteLink);
}
const observer = new MutationObserver(rewriteAll);
rewriteAll();
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
})();