您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Converts Youtube links to Invidious ones.
// ==UserScript== // @name Invidious Teleporter // @namespace lousando // @match https://*/* // @match http://*/* // @exclude-match https://invidiou.site* // @ezclude-match https://invidious.snopyta.org* // @exclude-match https://yewtu.be* // @exclude-match https://invidious.tube* // @exclude-match https://invidious.xyz* // @grant GM_getValue // @run-at document-end // @version 0.7 // @author Louis Sandoval // @description Converts Youtube links to Invidious ones. // ==/UserScript== // allow for overriding of Invidious instance const invidiousDomain = GM_getValue("invidious_domain", "invidiou.site"); const youtubeTextRegex = /youtu*.be(\.com)?/i; const isYoutubeUrl = uri => { const parseURI = new URL(uri); return parseURI.hostname.includes("youtube.com") || parseURI.hostname.includes("youtu.be"); }; const convertYoutubeLinks = (youtubeElements) => { // links youtubeElements.filter(e => e.tagName === "A").filter(link => { return isYoutubeUrl(link.href); }).forEach(link => { link.innerText = link.innerText.replace(youtubeTextRegex, invidiousDomain); const newUrl = new URL(link.href); newUrl.hostname = invidiousDomain; link.setAttribute("href", newUrl.href); }); // iframes youtubeElements.filter(e => e.tagName === "IFRAME").filter(iframe => { return isYoutubeUrl(iframe.src); }).forEach(iframe => { const newUrl = new URL(iframe.src); newUrl.hostname = invidiousDomain; iframe.setAttribute("src", newUrl.href); }); }; convertYoutubeLinks([ ...Array.from(document.body.querySelectorAll("a[href],iframe[src]")) ]); // Create an observer instance linked to the callback function const observer = new MutationObserver(mutationList => { convertYoutubeLinks([ ...Array.from(document.body.querySelectorAll("a[href],iframe[src]")) ]); }); // Start observing the target node for configured mutations observer.observe(document.body, { childList: true, subtree: true, attributes: true });
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址