diff options
Diffstat (limited to 'scripts-greasemonkey/invidio_embed.user.js')
-rw-r--r-- | scripts-greasemonkey/invidio_embed.user.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/scripts-greasemonkey/invidio_embed.user.js b/scripts-greasemonkey/invidio_embed.user.js new file mode 100644 index 0000000..217333e --- /dev/null +++ b/scripts-greasemonkey/invidio_embed.user.js @@ -0,0 +1,82 @@ +// ==UserScript== +// @name Invidious embed +// @namespace InvidiousEmbed +// @author Jesús E. +// @license GPL-3.0 +// @description Replace YouTube embeds with invidious instance +// @homepageURL https://libregit.org/heckyel/book/src/branch/master/scripts-greasemonkey +// @include * +// @exclude /^http(s|)://(www[.]|)youtube[.]com/.*$/ +// @exclude /^http(s|)://(www[.]|)invidio[.]us/.*$/ +// @exclude /^http(s|)://(www[.]|proxy[.]|)invidious[.]snopyta[.]org/.*$/ +// @exclude /^http(s|)://(www[.]|)vid[.]wxzm[.]sx/.*$/ +// @exclude /^http(s|)://(www[.]|)invidious[.]kabi[.]tk/.*$/ +// @exclude /^http(s|)://(www[.]|)invidiou[.]sh/.*$/ +// @exclude /^http(s|)://(www[.]|)invidious[.]enkirton[.]net/.*$/ +// @exclude /^http(s|)://(www[.]|)tube[.]poal[.]co/.*$/ +// @exclude /^http(s|)://(www[.]|)invidious[.]13ad[.]de/.*$/ +// @version 1.0.0 +// @grant none +// ==/UserScript== + +let instance = 'invidio.us' // set instance + +let i, j, k, index; +let video_id, video_url, video_link; + +let risky_elements, risky_attributes, risky_node; +let risky_tags = ["object", "embed", "iframe"]; + +let bad_elements = []; +let bad_ids = []; + +for (i = 0; i < risky_tags.length; i++) { + risky_elements = document.getElementsByTagName(risky_tags[i]); + for (j = 0; j < risky_elements.length; j++) { + index = 0; + risky_attributes = risky_elements[j].attributes; + for (k = 0; k < risky_attributes.length; k++) { + risky_node = risky_attributes[k].nodeValue; + if ((risky_node.indexOf("youtube.com") >= 0) || (risky_node.indexOf("ytimg.com") >= 0) || (risky_node.indexOf("youtube-nocookie.com") >= 0)) { + risky_elements[j].style.display = "none"; + if (risky_node.indexOf("/v/") >= 0) { + index = risky_node.indexOf("/v/") + 3; + } else if (risky_node.indexOf("?v=") >= 0) { + index = risky_node.indexOf("?v=") + 3; + } else if (risky_node.indexOf("/embed/") >= 0) { + index = risky_node.indexOf("/embed/") + 7; + } + if (index > 0) { + video_id = risky_node.substring(index, index + 11); + bad_elements.push(risky_elements[j]); + bad_ids.push(video_id); + } + break; + } + } + } +} + +for (i = 0; i < bad_ids.length; i++) { + video_id = bad_ids[i]; + video_url = "//" + instance + "/embed/" + video_id; + video_link = document.createElement("iframe"); + video_link.setAttribute("src", video_url); + + // Set the width, if present + width = bad_elements[i].getAttribute("width"); + if ( width !== null ) { + video_link.setAttribute("width", width); + } + + // Set the height, if present + height = bad_elements[i].getAttribute("height"); + if ( height !== null ) { + video_link.setAttribute("height", height); + } + + video_link.setAttribute("frameborder", "0"); + video_link.setAttribute("allowfullscreen", "1"); + + bad_elements[i].parentNode.replaceChild(video_link, bad_elements[i]); +} |