rendered paste body
/**javascript console***/
function LOG(msg) {
var consoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
consoleService.logStringMessage(msg);
}
// Get the "extensions.myext." branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
prefs = prefs.getBranch("extensions.youtubealternateplayer.");
function iCanHazTubes(fv, vidID, pD, page, vidTitle, toReplace){
var getBod = page.getElementsByTagName('body')[0];
var srcWithT = 'http://'+page.domain+'/get_video?video_id='+vidID+'&t='+fv.split("t=")[1].split("&")[0];
function embedVID(respHead){
//bit dodgy but meh
getBod.setAttribute('finalLink', respHead);
var whichPlaya = "FlowPlayer";
var e = document.createElement('embed');
e.width = "480";
e.height = "395";
e.setAttribute('type', 'application/x-shockwave-flash');
e.allowscriptaccess = "always";
e.quality="high";
e.allowfullscreen="true"
var fVars = [];
function setVars(key, value){
fVars.push(key+value);
}
if( prefs.getCharPref("flow.whichPlayer") == "JW"){
e.id = "mediaplayer";
e.setAttribute('name', "mediaplayer");
e.setAttribute('src', "http://gmflowplayer.googlecode.com/files/mediaplayeralt.swf");
//http://www.jeroenwijering.com/?item=Supported_Flashvars
setVars('height=', '395');
setVars('width=', '480');
setVars('file=', respHead+'.flv');
setVars('image=', 'http://img.youtube.com/vi/'+vidID+'/default.jpg');
setVars('overstretch=', prefs.getBoolPref("JW.overstretch"));
setVars('showdigits=', prefs.getBoolPref("JW.showdigits"));
setVars('autostart=', prefs.getBoolPref("JW.autostart"));
setVars('bufferlength=', prefs.getIntPref("JW.bufferlength"));
setVars('repeat=', prefs.getBoolPref("JW.repeat"));
setVars('volume=', prefs.getIntPref("JW.volume"));
setVars('javascriptid=', 'mediaplayer');
setVars('autobuffer=', prefs.getBoolPref("JW.autoBuffering"));
var fVJoined = fVars.join('&');
e.setAttribute('flashvars', fVJoined);
pD.appendChild(e);
}
else if( prefs.getCharPref("flow.whichPlayer") == "flow"){
var pl;
/*if(prefs.getBoolPref("flow.autoPlay")){
pl = "[{ url: '"+respHead+".flv'}]";
}
else{
pl = "[ { url: 'http://img.youtube.com/vi/"+vidID+"/default.jpg', overlayId: 'play' }, { url: '"+respHead+".flv'}]";
}*/
e.id = "FlowPlayer";
e.name = "FlowPlayer";
e.setAttribute('src', "http://gmflowplayer.googlecode.com/files/FlowPlayerLatest.swf");
setVars('allowfullscreen:', prefs.getBoolPref("flow.allowfullscreen"));
setVars('showPlayListButtons:', prefs.getBoolPref("flow.showPlayListButtons"));
setVars('initialScale:', "'"+prefs.getCharPref('flow.initialScale')+"'");
setVars('showLoopButton:', prefs.getBoolPref("flow.showLoopButton"));
setVars('allowResize:', prefs.getBoolPref("flow.allowResize"));
setVars('useNativeFullScreen:', prefs.getBoolPref("flow.useNativeFullScreen"));
setVars('autoBuffering:', prefs.getBoolPref("flow.autoBuffering"));
setVars('autoPlay:', prefs.getBoolPref("flow.autoPlay"));
setVars('loop:', prefs.getBoolPref("flow.loop"));
setVars('usePlayOverlay:', prefs.getBoolPref("flow.usePlayOverlay"));
setVars('splashImageFile:', '\'http://img.youtube.com/vi/'+vidID+'/default.jpg\'');
setVars('videoFile:', "'"+respHead+"'");
setVars('scaleSplash:', prefs.getBoolPref("flow.scaleSplash"));
setVars('bufferLength:', prefs.getIntPref("flow.bufferLength"));
setVars('showStopButton:', prefs.getBoolPref("flow.showStopButton"));
var fVJoined = fVars.join(',');
e.setAttribute('flashvars', 'config={'+fVJoined+'}');
LOG('here1');
LOG(pD);
LOG(e);
LOG(toReplace);
pD.appendChild(e);
}
else if( prefs.getCharPref("flow.whichPlayer") == "defaultEmbeded"){
var l = fv.slice( fv.indexOf('&l=')+3, fv.indexOf( '&', fv.indexOf('&l=')+3 ) );
var t = fv.slice( fv.indexOf('&t=')+3, fv.indexOf( '&', fv.indexOf('&t=')+3 ) );
pD.innerHTML = '<embed id="movie_player" flashvars="&rs=1&sn=1&hl=en&iurl=http%3A//img.youtube.com/vi/'+vidID+'/default.jpg"'+
'type="application/x-shockwave-flash" wmode="transparent" src="/player2.swf?video_id='+vidID+'&t='+t+'&l='+l+'"'+
'height="395px" width="480px"></embed>';
}
//I don't get it either, but it wont show up without a mini refresh.
pD.innerHTML = pD.innerHTML;
}
/***Thanks to Sergei Zhirikov for the code ***/
// accepted HTTP status codes
var redirect = {300: null, 301: null, 302: null, 303: null, 307: null};
var listener = {
onStartRequest: function(request, context) {},
onStopRequest: function(request, context, status) {
if (status == 0x804B001F) { // NS_ERROR_REDIRECT_LOOP
var channel = request.QueryInterface(Components.interfaces.nsIHttpChannel);
if (channel.responseStatus in redirect) {
var respHead = null;
try {
respHead = channel.getResponseHeader('Location');
}
catch (exc) {
// no 'Location' header sent with the redirect;
LOG('no Location header sent with the redirect '+exc);
}
if (respHead != null) {
embedVID(encodeURIComponent(respHead));
}
}
}
},
onDataAvailable: function(request, context, stream, offset, length) {
// abort the request in case we didn't get redirected
request.cancel(Components.results.NS_ERROR_UNEXPECTED);
},
QueryInterface: function(iid) {
if (iid.equals(Components.interfaces.nsISupports) || iid.equals(Components.interfaces.nsIStreamListener) || iid.equals(Components.interfaces.nsIRequestObserver)) {
return this;
}
else {
throw Components.results.NS_NOINTERFACE;
}
},
};
var channel = null, context = null;
try {
channel = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService).newChannel(srcWithT, null, null).QueryInterface(Components.interfaces.nsIHttpChannel)
}
catch (exc) {
// something went wrong when creating a channel instance
LOG('something went wrong when creating a channel instance '+exc);
}
if (channel) {
channel.redirectionLimit = 0;
channel.asyncOpen(listener, context);
}
} //end of: function icanhaztubes
function runFromS(player){
var curBrow = getBrowser().selectedBrowser.contentDocument;
var vidURL = decodeURIComponent(curBrow.evaluate( "//body" ,curBrow, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.getAttribute('finalLink'));
var vTitle = curBrow.evaluate( "//div[@id='vidTitle']" ,curBrow, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.textContent;
if(player == 'download'){
if ( typeof JSLoader == "undefined" ){
var JSLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader);
JSLoader.loadSubScript("chrome://youtubealternateplayer/content/io.js");
}
/*** Original Code by Wojciech Walewski. license - MPL 1.1/GPL 2.0/LGPL 2.1 (taken from the "youplayer" extension code) ... GPL FTW!! ***/
// open filepicker dialog
var nsIFilePicker = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
fp.init(window, null, nsIFilePicker.modeSave);
fp.appendFilter("Flash Video Files (*.flv)", "*.flv");
vTitle = vTitle.replace(/[^a-zA-Z0-9\.\-]/g, "_") + ".flv";
fp.defaultString = vTitle;
fp.defaultExtension = "flv";
if(fp.show() == nsIFilePicker.returnCancel)
return;
var io_service = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var source_uri = io_service.newURI(vidURL, null, null);
var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
.createInstance(Components.interfaces.nsIWebBrowserPersist);
persist.persistFlags = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
.createInstance(Components.interfaces.nsIWebBrowserPersist).PERSIST_FLAGS_REPLACE_EXISTING_FILES;
// save the movie to a file
var transfer = Components.classes["@mozilla.org/transfer;1"]
.createInstance(Components.interfaces.nsITransfer);
transfer.init(source_uri, fp.fileURL, "", null, null, null, persist);
persist.progressListener = transfer;
persist.saveURI(source_uri, null, null, null, null, fp.file);
/*** end Walewski code***/
}
else if(player == 'restore'){
var getEmbeds;
if(curBrow.URL.match('watch?')){
getEmbeds = curBrow.evaluate( "//div[@id='playerDiv']//embed", curBrow, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
}
else if(curBrow.URL.match('/user/') ){
getEmbeds = curBrow.evaluate( "/html/body/div[@id='baseDiv']/div[3]/div[2]/div[1]/object//embed", curBrow, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
}
for(var s = 0; s < getEmbeds.snapshotLength; s++){
var sEm = getEmbeds.snapshotItem(s);
(sEm.style.display == 'none')? sEm.style.display = 'block': sEm.style.display = 'none';
}
}
}