Skip to content

Instantly share code, notes, and snippets.

@tiffany352
Last active June 27, 2021 23:10
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save tiffany352/7266437 to your computer and use it in GitHub Desktop.
Save tiffany352/7266437 to your computer and use it in GitHub Desktop.
Greasemonkey script to replace html5 video with VLC player, modified from the broken http://userscripts.org/scripts/show/167777
// ==UserScript==
// @name HTML5 video using VLC plugin
// @grant none
// @include *
// ==/UserScript==
function html5vlc(){
var videos = document.getElementsByTagName("video");
var embeds = new Array(videos.length);
for (var i = 0; i < videos.length; i++) {
var vlc = document.createElement("embed");
vlc.type = "application/x-vlc-plugin";
if (videos[i].autoplay) {
vlc.setAttribute("autoplay", videos[i].autoplay);
} else {
vlc.setAttribute("autoplay", "false");
}
if (videos[i].controls) {
vlc.setAttribute("controls", "true");
}
if (videos[i].width) {
vlc.width = videos[i].width;
}
if (videos[i].height) {
vlc.height = videos[i].height;
}
vlc.setAttribute("target", videos[i].src);
var sources = videos[i].getElementsByTagName("source");
for (var j = 0; j < sources.length; j++) {
vlc.setAttribute("target", sources[j].src);
}
let id = videos[i].getAttribute("id");
if (id) {
vlc.setAttribute("id", id);
}
let clas = videos[i].getAttribute("class");
if (clas) {
vlc.setAttribute("class", clas);
}
embeds[i] = vlc;
}
for (var i = embeds.length-1; i >= 0; i--) {
videos[i].parentNode.replaceChild(embeds[i], videos[i]);
}
}
var retry = 0;
function wait(){
if(retry++ > 100) //adjust timeout and retry value for instable connection
return;
if(document.getElementsByTagName("video").length == 0 || document.getElementsByTagName("video")[0].src == "")
setTimeout(wait,100);
else html5vlc();
}
if(window.location.href.indexOf("youtube.com") > -1)
wait();
else html5vlc();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment