There are 21 previous versions of this script.
// ==UserScript==
// @name VLCTube
// @namespace 0d92f6be108e4fbee9a6a0ee4366b72e
// @include http://*youtube.com/watch*
// @version 13
// ==/UserScript==
//Note to self, check 9 times , upload once -_-
var js_server = "http://furyy.planet.ee/VLCcontrols.async/";
//var vlc_version = "0.8.6";
//VLC has some issues with dynamic resizing (it doesn't do it)
var width = 640;
var height = 360; //640 * 9 / 16;
var vlc_id = 'mymovie';
var fmt = "&fmt=18"; //But breaks random videos sometimes
/* Player */
var player = document.getElementById('watch-player-div');
if(!player)
player = document.getElementById('watch-player');
function getArg(args, idx, def){
return idx in args ? args[idx] : (def ? def : '');
}
if(player) {
var z = null;
try{
var yt = unsafeWindow['yt'];
var swf_args = yt.getConfig('SWF_ARGS',null);
if(!swf_args)
swf_args = yt.getConfig('SWF_CONFIG',null) ['args'];
z = [0, swf_args['video_id'], swf_args['t']];
if(!yt.getConfig('IS_WIDESCREEN',false)) height = width * 3/4;
if(yt.getConfig('IS_HD_AVAILABLE',false)) fmt = "&fmt=22";
}catch(e){
GM_log(e);
var scripts = document.getElementsByTagName('script');
for(var i = 0; i < scripts.length && z == null; ++i) {
z = scripts[i].text.match(/video_id": "([^"]+).+, "t": "([^"]+)/); //"
}
}
if(z == null) {
insertYTmessage ('VlcTube: Unable to find video source');
return;
}
var f = window.location.href.match(/fmt=(\d+)/);
if( f ){ fmt = '&fmt=' + f[1] }
var src = 'http://' + document.domain + '/get_video?video_id=' + z[1]+ '&t=' + z[2] + fmt;
var vlc = document.createElement('div');
vlc.id = "vlccontent";
vlc.setAttribute('style', 'line-height: 100%; font-size:8pt;color: #000;text-align:left; ');
addScriptSrc(js_server + "ExternalLibLoader.js");//"SimpleSlider.js";
addScriptSrc(js_server + "VLCobject.js");
addScriptSrc(js_server + "VLCcontrols.js");
var s0 = document.createElement('script');
var s1 =
'var myvlc = new VLCObject("'+vlc_id+'", "'+width+'", "'+height+ /*'", "'+vlc_version+*/ '"); \
myvlc.write("vlccontent"); \
var vlc_controls = new VLCcontrols(myvlc); \
vlc_controls.onready = function(){ \
vlc_controls.options.set("show-intf"); \
vlc_controls.play("'+ src +'"); \
};';
s0.appendChild(document.createTextNode(s1));
player.innerHTML="";//"<div id='vlctube_message'>VLCTUBE</div>";
player.appendChild(vlc);
player.appendChild(s0);
var settings_loaded = false;
player.addEventListener('load', function(ev){
if(settings_loaded)return;
settings_loaded = restoreSettings(ev);
}, true);
window.addEventListener('unload', saveSettings,true);
}
function restoreSettings(ev){
if(unsafeWindow['vlc_controls'] && unsafeWindow['vlc_controls'].loaded){
//insertYTmessage("Scripts loaded: " +ev.target.id);
//insertYTmessage(unsafeWindow['vlc_controls'].target.audio.volume = GM_getValue('vlc_vol', 100));
unsafeWindow['vlc_controls'].target.audio.volume = GM_getValue('vlc_vol', 100);
setHTML(vlc_id + '_vollabel', GM_getValue('vlc_vol', 100));
unsafeWindow['vlc_controls'].options.set("http-caching",GM_getValue('vlc_http-caching', 5000));
setValue('VLC_controller_options_http-caching', GM_getValue('vlc_http-caching', 5000) / 1000);
return true;
}
return false;
}
function saveSettings(ev){
GM_setValue('vlc_vol', unsafeWindow['vlc_controls'].target.audio.volume);
GM_setValue('vlc_http-caching', unsafeWindow['vlc_controls'].options.get("http-caching"));
}
function setValue(id, val){
var el = document.getElementById(id);
if(el){
el.setAttribute('value',val);
}
}
function setHTML(id, val){
var el = document.getElementById(id);
if(el){
el.innerHTML = val;
}
}
function insertYTmessage(message){
var baseDiv,container,msg;
msg = document.getElementById('iytmsg');
if(!msg){
baseDiv = document.getElementById('baseDiv');
container = document.createElement('div');
msg = document.createElement('pre');
msg.id = "iytmsg";
container.setAttribute("style","background: #FFA0A0; color: #800000; border: 1px solid; border-color: #F00;");
msg.setAttribute("style","text-align:center; margin-top:1em; margin-bottom:1em;");
container.appendChild(msg);
baseDiv.insertBefore(container,/*baseDiv.childNodes[2]*/
document.getElementById( /*'watch-vid-title'*/ 'content'));
}else{
message = "\r\n" + message;
}
msg.appendChild(document.createTextNode(message));
}
function replaceYTmessage(message){
document.getElementById('iytmsg').innerHTML=message;
}
function addScriptSrc(src) {
var head, script;
head = document.getElementsByTagName('head')[0];
if (!head) { return; }
script = document.createElement('script');
script.type = 'text/javascript';
script.setAttribute('src', src);
head.appendChild(script);
}
