Youtube Video Download Linker

By jk- Last update Mar 25, 2011 — Installed 18,644 times.

There are 24 previous versions of this script.

// ==UserScript==
// @name           Youtube Video Download Linker
// @namespace      http://www.digivill.net/~joykillr
// @description    A video download linker for youtube.  Provides download links on youtube video pages.  Does not need javascript enabled for youtube.com and does not use a third-party website.
// @include        http://*.youtube.com/*
// @include        http://youtube.com/*
// ==/UserScript==

//v 1.9.8.8

var a1,a2,a22,b3,na,nasp,xp,scrhead = document.getElementsByTagName("script"), titlevar = parseTV(document.getElementById("eow-title").innerHTML.toString());

function addBox(strR,last,tln) {
	cnt1 = cnt1 + 1;
	var flv = document.getElementById("gmdltd").getElementsByTagName("a");
	if (cnt1>1) {
	for (var fl = 0; fl < flv.length; fl++) {
		flv[fl].id = "";
		if (fl<2) {if (flv[fl].href.indexOf("&title")==-1) {flv[fl].href+="\&title\="+titlevar+".mp4";}}
		else {if (flv[fl].href.indexOf("&title")==-1) {flv[fl].href+="\&title\="+titlevar}}
	}}
	var URLDLbox = document.createElement("a");
	URLDLbox.title = titlevar;
	URLDLbox.className = "gm-action-button";
	URLDLbox.href = strR;
	URLDLbox.setAttribute("style", "text-align:center; width:auto; color: rgb(0, 51, 204); display: inline; height: auto; margin-left: auto; margin-right: auto; padding-left:5px; padding-right:5px;");
	//URLDLbox.id = "GMdownloadButton";
	URLDLbox.id = "gmlinklast";
	var dlb1 = document.createElement("span");
	dlb1.className = "action-button-leftcap";
	dlb1.setAttribute("style", "vertical-align:baseline!important; padding-left:5px; margin-left: auto;");
	URLDLbox.appendChild(dlb1);
	var dlb2 = document.createElement("span");
	dlb2.className = "action-button-text";
	if (cnt1==1) {dlb2.textContent = "Download MP4";}
	else if (last==1) {dlb2.textContent = "Download FLV";}
	else {dlb2.textContent = "Download";}
	dlb2.setAttribute("style", "vertical-align:baseline!important;");
	URLDLbox.appendChild(dlb2);
	var dlb3 = document.createElement("span");
	dlb3.className = "action-button-rightcap";
	dlb3.setAttribute("style", "vertical-align:baseline!important; padding-right:5px; margin-right: auto;");
	URLDLbox.appendChild(dlb3);
		document.getElementById("gmdltable").setAttribute("style","display: block !important; visibility: visible !important; text-align: center!important; margin-left: auto!important; margin-right: auto!important; width:auto; height:auto; padding-left:25%; padding-right:20%;");
		document.getElementById("gmdltd").appendChild(URLDLbox);
}

function parseTV(h) {
	h = unescape(h);
	h = h.replace(",","_").replace("!","").replace(" ","_").replace("&","_").replace("*","-").replace("@","_").replace("#","_").replace("$,","_").replace("%","_").replace("^","_").replace("~","_").replace("\/","_").replace("\\","_").replace("'","_").replace('"','_').replace(';','_').replace(':','_');
	while (!h.charAt(0).match(/[a-zA-Z0-9]/i)&&h.length>1) {
		h = h.substr(1);
	}
	return(h);
}

function cleanArg(bb){
	if (bb.indexOf('"')>=10) {bb = bb.split('"')[0];}
	else if (bb.indexOf('"')<10) {bb = bb.split('"')[1].split('"')[0];}
	return bb;
}

function procURLS(na) {
	na = cleanArg(na);
	na = unescape(na);
	na = na.replace(/\\\//mgi,"/");
	nasp = na.split(/\|/);

nasp = cleanArray(nasp);	

	for (x=0;x<nasp.length;x++) {
		if (nasp[x].indexOf("http")==-1||(nasp[x].indexOf("lscache")==-1&&nasp[x].indexOf(".lga")==-1&&nasp[x].indexOf(".cache")==-1)) {
			nasp.splice(x,1);
		}
	}
	for (x=0;x<nasp.length;x++) {
		if (nasp[x].indexOf("http")!=-1&&(nasp[x].indexOf("lscache")!=-1||nasp[x].indexOf(".lga")!=-1||nasp[x].indexOf(".cache")!=-1||nasp[x].indexOf("nonxt")!=-1)&&nasp[x].indexOf("videoplayback")!=-1) {
			nasp[x] = nasp[x].replace(/\\u0026/gmi,"&");
			var fpt = nasp[x].split("&signature")[0]+"&signature";
			if (nasp[x].split("&signature")[1].indexOf(",")!=-1) {nasp[x] = fpt+nasp[x].split("&signature")[1].split(/\,/)[0];}
			if (nasp[x].indexOf("&csi_page_type")!=-1) {nasp[x] = nasp[x].split("&csi_page_type")[0];}
			if (nasp[x].indexOf("&redirect_counter")!=-1) {nasp[x] = nasp[x].split("&redirect_counter")[0];}
			if ((x+1)==nasp.length) {xp = 1;} else {xp = 0;}
			if (document.getElementById("gmdltd").innerHTML.indexOf(decodeURIComponent(nasp[x]).replace(/\&/g,'&amp;'))==-1) {
				addBox(decodeURIComponent(nasp[x]),xp,nasp.length);
			}
			var fpt = "";
		}
	}
}

function cleanArray(act){
  var newAr = new Array();
  for(var x = 0; x<act.length; x++){
      if (act[x]){
        newAr.push(act[x].toString());
	  }
  }
  return newAr;
}


function runIt(a1) {
	a2 = ""; a22 = "";
	for (b3=0; b3<a1.length; b3++) {
		if (a1[b3].innerHTML.indexOf("swfArgs")!=-1||a1[b3].innerHTML.indexOf("CFG_SWF_ARGS")!=-1||a1[b3].innerHTML.indexOf("SWF_ARGS")!=-1||a1[b3].innerHTML.indexOf("swfHTML")!=-1) {
			if (a1[b3].innerHTML.indexOf("fmt_url_map")!=-1&&a1[b3].innerHTML.indexOf("GMdownloadButton")==-1) {
				if (a1[b3].innerHTML.indexOf('"fmt_url_map"')!=-1) {
					a2 = a1[b3].innerHTML.split('"fmt_url_map"')[1].split("}")[0];
				} else if (a1[b3].innerHTML.indexOf('&fmt_url_map=')!=-1){
					a2 = a1[b3].innerHTML.split('&fmt_url_map=')[1].split("}")[0];
				}
				if (a2.indexOf(",")!=-1) {a2 = a2.split(",")[0];}
				break;
			}
		}
	}
	
	if (a2!=""&&a2!=null) {
		procURLS(a2);
	} else {
		for (b3=0; b3<a1.length; b3++) {
		if (a1[b3].innerHTML.indexOf("fmt_url_map")!=-1&&a1[b3].innerHTML.indexOf("GMdownloadButton")==-1) {
				a22 = a1[b3].innerHTML.split('fmt_url_map')[1].split("}")[0];
				var n12 = a22.indexOf("http");
				if (n12>0) {
					a22 = a22.substr(n12);
					}
				procURLS(a22);
				break;
			}
		}
	}
}

var wclh = window.content.location.href.toString();

if (typeof GM_addStyle === 'function') {GM_addStyle('#browser-upgrade-box, #browser-upgrade-outer-box {display: none !important; visibility: hidden !important;}');}
else if (document.getElementsByTagName("style")[0]) {document.getElementsByTagName("style")[0].innerHTML = document.getElementsByTagName("style")[0].innerHTML+"#browser-upgrade-box, #browser-upgrade-outer-box {display: none !important; visibility: hidden !important;}"}

if (scrhead!=null&&scrhead!=""&&(wclh.indexOf("/watch?")!=-1)) {
  if (window.navigator.cookieEnabled) {
	document.cookie = "GEO=;"; 
    document.cookie = "use_hitbox=;"; 
	document.cookie = "VISITOR_INFO1_LIVE=;"; 
document.cookie = "recently_watched_video_id_list=;"
	}
	var dldiv = document.createElement("div");
	dldiv.setAttribute("style","text-align: center!important; margin-left: auto!important; margin-right: auto!important; width:auto; height:auto;");
	var dltable = document.createElement("table");
	dltable.innerHTML = '<tbody style="text-align: center!important; margin-left: auto!important; margin-right: auto!important;"><tr><td id="gmdltd" style="margin-left: auto!important; margin-right: auto!important; text-align: center!important;"></td></tr></tbody>';
	dltable.id  = "gmdltable";
	dltable.setAttribute("style","text-align: center!important; display: none; visibility: hidden;");
	dldiv.appendChild(dltable);
	if (document.getElementById("pagetop")) {document.getElementById("pagetop").appendChild(dldiv); } else {document.body.insertBefore(dldiv, document.body.firstChild);}
	cnt1 = 0;
	runIt(scrhead);
}

if (document.getElementById("gmlinklast")) {
	var g = document.getElementById("gmlinklast");
	g.textContent = "Download FLV";
	if (g.href.indexOf("&title")==-1) {
		g.href+="\&title\="+titlevar+".flv";
	}
}