Replace youtube redirect links with direct links and extend links text to its full length
目前為
// ==UserScript==
// @name Replace youtube redirect links
// @description Replace youtube redirect links with direct links and extend links text to its full length
// @author MK
// @namespace max44
// @homepage https://greasyfork.org/en/users/309172-max44
// @match *://*.youtube.com/*
// @match *://*.youtu.be/*
// @icon https://cdn.icon-icons.com/icons2/1488/PNG/512/5295-youtube-i_102568.png
// @version 1.2
// @license MIT
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @run-at document-idle
// ==/UserScript==
(function() {
'use strict';
//Check URL changes
const rootCallback = function (mutationsList, observer) {
document.querySelectorAll("a[href*='/redirect?']").forEach(replaceRedirect);
}
const rootNode = document.querySelector("body");
if (rootNode != null) {
const rootObserver = new MutationObserver(rootCallback);
rootObserver.observe(rootNode, {childList: true, subtree: true});
}
/*document.querySelectorAll("a[href*='/redirect?']").forEach(replaceRedirect);
$( window ).scroll(function() {
document.querySelectorAll("a[href*='/redirect?']").forEach(replaceRedirect);
});*/
function replaceRedirect(link) {
//Remove redirection
link.href = decodeURIComponent(link.href.replace (/^.*\?(.*&)q=([^&]+)(&.*)?$/, '$2'));
const wrpLink = link.wrappedJSObject || link;
if (wrpLink.data && wrpLink.data.urlEndpoint) {
wrpLink.data.urlEndpoint.url = link.href;
}
//Show link's full length
if (link.innerText.substring(0, 20) == link.href.substring(0, 20) && link.innerText.substring(link.innerText.length-3, link.innerText.length) === "...") {
link.innerText = link.href;
}
}
})();