Large

YouTube - NoFlash-Player

By m3X7M Last update Nov 1, 2009 — Installed 6,714 times.

There are 2 previous versions of this script.

// ==UserScript==
// @name          YouTube - NoFlash-Player
// @namespace     -
// @description   replaces Flash-Player
// @include       http://*.youtube.*/watch*v=*
// @include       http://youtube.*/watch*v=*
// ==/UserScript==

var conf = new Array();

// config start:
conf["quality_default"] = "hq"; // "sd", "hq" or "hd"
conf["autostart"] = true;
conf["loop"] = false;
conf["width"] = 640;
conf["height"] = 480;
// config end

function getPlayer(qual) {
	url = getURL(qual);
	player =  "<EMBED type=\"application/x-mplayer2\"";
	player += "	width=\""+conf["width"]+"\" height=\""+conf["height"]+"\"";
	player += "	src=\""+url+"\" autostart=\""+conf["autostart"]+"\" loop=\""+conf["loop"]+"\">";
	player += "</EMBED>";
	return player
}

function getURL(qual) {
	id = document.URL.split("v=")[1];
	id = id.split("&")[0];
	flashvars = document.getElementById("movie_player").getAttribute("flashvars");
	valid = flashvars.split("&t=")[1];
	valid = valid.split("&")[0];
	downloadURL = "http://"+document.domain+"/get_video?video_id="+id+"&t="+valid;
	
	switch(qual) {
		case "sd": return downloadURL; break;
		case "hq": return downloadURL + "&fmt=18"; break;
		case "hd": return downloadURL + "&fmt=22"; break;
		default: return "";
	}
}

function isHDavail() {
	flashvars = document.getElementById("movie_player").getAttribute("flashvars");
	if (flashvars.indexOf("fmt_map=22%2F2000000%2F9%2F0%2F115")>=0) {
		return true;
	}
	else {
		return false;
	}
}

function getLinks(qual) {
	cleanURL = window.location.href;
	cleanURL = cleanURL.replace(/&Quality=Standard_Definition/, "");
	cleanURL = cleanURL.replace(/&Quality=High_Quality/, "");
	cleanURL = cleanURL.replace(/&Quality=High_Definition/, "");
	
	var links;
	if (qual == "sd") {
		links = "[<b>Standard Definition</b>&nbsp;-&nbsp;<a href=\""+getURL("sd")+"\">Download</a>]&nbsp;&nbsp;&nbsp;";
	}
	else {
		links = "[<a href=\""+cleanURL+"&Quality=Standard_Definition\">Standard Definition</a>&nbsp;-&nbsp;<a href=\""+getURL("sd")+"\">Download</a>]&nbsp;&nbsp;&nbsp;";
	}
	if (qual == "hq") {
		links += "[<b>High Quality</b>&nbsp;-&nbsp;<a href=\""+getURL("hq")+"\">Download</a>]&nbsp;&nbsp;&nbsp;";
	}
	else {
		links += "[<a href=\""+cleanURL+"&Quality=High_Quality\">High Quality</a>&nbsp;-&nbsp;<a href=\""+getURL("hq")+"\">Download</a>]&nbsp;&nbsp;&nbsp;";
	}
	if (qual == "hd") {
		links += "[<b>High Definition</b>&nbsp;-&nbsp;<a href=\""+getURL("hd")+"\">Download</a>]";
	}
	else if (isHDavail()) {
		links += "[<a href=\""+cleanURL+"&Quality=High_Definition\">High Definition</a>&nbsp;-&nbsp;<a href=\""+getURL("hd")+"\">Download</a>]";
	}
	return links;
}

function replacePlayer(qual) {
	document.getElementById('watch-player-div').innerHTML = getPlayer(qual)+"<br>"+getLinks(qual);
}

function getQuality()
{
	url = document.URL;
	if (url.indexOf("Standard_Definition") >= 0) {
		return("Standard_Definition");
	}
	else if (url.indexOf("High_Quality") >= 0) {
		return("High_Quality");
	}
	else if ((url.indexOf("High_Definition") >= 0) && (isHDavail() == false)) {
		return("High_Quality");
	}
	else if ((url.indexOf("High_Definition") >= 0) && (isHDavail() == true)) {
		return("High_Definition");
	}
	else {
		if (conf["quality_default"] == "sd") {
			return("Standard_Definition");
		}
		else if (conf["quality_default"] == "hq") {
			return("High_Quality");
		}
		else if ((conf["quality_default"] == "hd") && (isHDavail() == false)) {
			return("High_Quality");
		}
		else if ((conf["quality_default"] == "hd") && (isHDavail() == true)) {
			return("High_Definition");
		}
	}
}

qualtiy = getQuality();
if (qualtiy == "Standard_Definition") {
	replacePlayer("sd");
}
else if (qualtiy == "High_Quality") {
	replacePlayer("hq");
}
else if (qualtiy == "High_Definition") {
	replacePlayer("hd");
}