YouTube Download

By KayKay Last update Jan 12, 2010 — Installed 124,002 times.

New Source Additions for styling of the script and compatibility with the HQ +720p script

in
Subscribe to New Source Additions for styling of the script and compatibility with the HQ +720p script 1 post, 1 voice

RottNKorpse User

I installed this script which worked fine with no issues whatsoever until I installed the YouTube HQ + 720p (http://userscripts.org/scripts/show/31864) script. This script still worked fine but the position of the links for both went crazy so I decided to tweak the script a bit in order to make the links show up correctly and while I was doing that I took it a step forward and tweaked the design of the script to blend more with the YouTube page.

I am providing before and after screenshots as well as the code itself at the bottom.


----------------------------------------------

Add this line after line 21 which would put this on line 22:
pnl_dl.setAttribute("style", "border-top:1px solid #CCCCCC;border-right:1px solid #CCCCCC;border-bottom:0px solid #CCCCCC;border-left:1px solid #CCCCCC;margin-top:10px;margin-right:0;margin-bottom:-20px;margin-left:0;padding-right:520px;");

Full Copy of the Script with the new additions:
// ==UserScript==
// @name YouTube Download
// @description Adds a small download button to every video on YouTube
// @author KayKay
// @namespace kk.tools
// @version 1.7cm
// @include http://youtube.com/watch?v=*
// @include http://*.youtube.com/watch?v=*
// ==/UserScript==
GM_setValue("version","1.7");

GM_registerMenuCommand("Switch download mode",switch_mode);

var pnl_qs = document.getElementById("watch-video-quality-setting");
if(!pnl_qs) {
pnl_qs = document.createElement("div");
pnl_qs.setAttribute("id","watch-video-quality-setting");
var pnl_views = document.getElementById("watch-views-div");
pnl_views.insertBefore(pnl_qs,pnl_views.lastChild.previousSibling);
}
var pnl_dl = document.createElement("div");
pnl_dl.setAttribute("style", "border-top:1px solid #CCCCCC;border-right:1px solid #CCCCCC;border-bottom:0px solid #CCCCCC;border-left:1px solid #CCCCCC;margin-top:10px;margin-right:0;margin-bottom:-20px;margin-left:0;padding-right:520px;");
var lnk_dl = document.createElement("a");
pnl_dl.appendChild(lnk_dl);
pnl_qs.insertBefore(pnl_dl,pnl_qs.firstChild);

switch(self.location.host.split(".")[0]) {
case "ru": lnk_txt = "скачать это видео"; break; //Russia
case "jp": lnk_txt = "このビデオをダウンロード"; break; //Japan
case "kr": lnk_txt = "이 동영상을 다운로드"; break; //Korea
case "br": lnk_txt = "baixar o vídeo"; break; //Brasil
case "de": lnk_txt = "dieses video herunterladen"; break; //Germany
case "fr": lnk_txt = "télécharger cette vidéo"; break; //France
case "in": lnk_txt = "इस वीडियो डाउनलोड"; break; //India
case "it": lnk_txt = "scaricare questo video"; break; //Italia
case "nl": lnk_txt = "download deze video"; break; //Dutch
case "pl": lnk_txt = "pobierz ten film wideo"; break; //Poland
case "hk": case "tw": lnk_txt = "下載該視頻"; break; //Taiwan, Hong Kong
case "es": case "mx": lnk_txt = "descargar este vídeo"; break; //Spain, Mexico
default: lnk_txt = "download this video"; break; //Australia, United Kingdom, Canada, Ireland, New Zealand, Global
}

lnk_dl.setAttribute("id","download-link");
lnk_dl.setAttribute("href","#");
lnk_dl.setAttribute("class","hLink");
lnk_dl.addEventListener("click", function() {
if(GM_getValue("mode","L") == "L") {
flashloaderOpen(window.document.location.href);
} else {
var link = "http://www.flashload.net/popup.php?url=" + escape(window.document.location.href) + "&direct";
window.open(link,"FlashLoader","fullscreen=no,toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=yes,directories=no,location=no,width=800,height=600,top=100,left=100");
}
}, false);
lnk_dl.appendChild(document.createTextNode(lnk_txt));

setTimeout(check_version,1000);
function check_version() {
if(typeof GM_getValue("day") == "undefined") GM_setValue("day",(new Date()).getDay());
if(GM_getValue("day") != (new Date()).getDay()) {
var script_url = "http://userscripts.org/scripts/review/28918?format=txt";
GM_xmlhttpRequest({ method:"GET",url:script_url,
onload:function(result) {
if(result.responseText.indexOf("@version "+GM_getValue("version")) == -1 &&
confirm('A new version of the "YouTube Download" userscript for Greasemonkey is available.\n\nDo you want to update now?')) top.location.href = script_url;
}
});
GM_setValue("day",(new Date()).getDay());
}
}

function switch_mode() {
if(GM_getValue("mode","L") == "L") {
GM_setValue("mode","P");
alert("Download will now open in a popup.");
} else {
GM_setValue("mode","L");
alert("Download will now open in a layer.");
}
}

var embed_display;
function flashloaderOpen(url) {
embed_display = new Array();
for(var embed_index=0;embed_index < document.embeds.length; embed_index++) {
embed_display[embed_index] = document.embeds[embed_index].style.display;
document.embeds[embed_index].style.display = "none";
}

var body = document.getElementsByTagName("body").item(0);
var div_bg = document.createElement("div");
div_bg.setAttribute("id", "flashloader_bg");
div_bg.setAttribute("style", "position: absolute;top: 0pt;left: 0pt;margin-top: 0pt;margin-right: 0pt;margin-bottom: 0pt;margin-left: 0pt;padding-top: 0pt;padding-right: 0pt;padding-bottom: 0pt;padding-left: 0pt;background-color: #000000;opacity: 0.5;display: block");
div_bg.style.zIndex = 100;
div_bg.addEventListener("click",flashloaderClose,false);
body.appendChild(div_bg);

var div_window = document.createElement("div");
div_window.setAttribute("id", "flashloader_window");
div_window.setAttribute("style", "opacity: 0.95; position: absolute;background-color: #dddddd;margin: 0pt 0pt auto auto;padding: 1px 1px 0px 0px;float: left;width: 700px;display: block");
div_window.style.zIndex = 200;
body.appendChild(div_window);

var div_close = document.createElement("div");
div_close.setAttribute("style", "float: right");
div_window.appendChild(div_close);

var p_close = document.createElement("p");
p_close.setAttribute("style", "font-size: 11px;font-family: tahoma;margin: 0px 2px 0px 0px;line-height: 16px;padding-right: 10px;padding-left: 18px;background-color: transparent;background-image: url(data:image/gif;base64,"+images["close"]+");background-repeat: no-repeat;background-attachment: scroll;background-x-position: left;background-y-position: center;color: #888888;cursor: pointer;margin-top:10px");
p_close.addEventListener("click",flashloaderClose,false);
p_close.innerHTML = "Close";
div_close.appendChild(p_close);

var div_content = document.createElement("div");
div_content.setAttribute("style", "background-color: #ffffff;margin: 0px 0px 1px 1px;padding: 10px; background-image: url(data:image/gif;base64,"+images["bg"]+");background-repeat: repeat-x;text-align: left");
div_window.appendChild(div_content);

var iframe_content = document.createElement("iframe");
iframe_content.setAttribute("height", "500px");
iframe_content.setAttribute("width", "680px");
iframe_content.setAttribute("frameborder", "0");
iframe_content.setAttribute("marginheight", "0");
iframe_content.setAttribute("marginwidth", "0");
iframe_content.setAttribute("scrolling", "auto");
iframe_content.setAttribute("allowtransparency", "true");
iframe_content.setAttribute("src", "http://www.flashload.net/popup.php?url=" + escape(url) + "&direct");
div_content.appendChild(iframe_content);

flashloaderMove();
add_handle("resize", flashloaderMove);
add_handle("scroll", flashloaderMove);
}

function flashloaderClose() {
for(var embed_index=0;embed_index < document.embeds.length; embed_index++) { document.embeds[embed_index].style.display = embed_display[embed_index]; }
if(document.getElementById("flashloader_bg")) document.getElementsByTagName("body").item(0).removeChild(document.getElementById("flashloader_bg"));
if(document.getElementById("flashloader_window")) document.getElementsByTagName("body").item(0).removeChild(document.getElementById("flashloader_window"));
remove_handle("resize", flashloaderMove);
remove_handle("scroll", flashloaderMove);
}

function flashloaderMove() {
var div_bg = document.getElementById("flashloader_bg");
div_bg.style.width = get_di(0)[0] + "px";
div_bg.style.height = get_di(0)[1] + "px";

var div_window = document.getElementById("flashloader_window");
var top = Math.round((get_di(2)[1] - parseInt(div_window.clientHeight)) / 2);
if(top < 0) { top = 0; }
top += get_di(1)[1];
var left = Math.round((get_di(2)[0] - parseInt(div_window.clientWidth)) / 2);
if(left < 0) { left = 0; }
left += get_di(1)[0];
div_window.style.top = top + "px";
div_window.style.left = left + "px";
}

function get_di(type) { var dimensions = new Array(2); switch(type) { case 0: if(window.innerHeight && window.scrollMaxY) { dimensions[0] = document.body.scrollWidth; dimensions[1] = window.innerHeight + window.scrollMaxY; } else if(document.body.scrollHeight > document.body.offsetHeight) { dimensions[0] = document.body.scrollWidth; dimensions[1] = document.body.scrollHeight; } else { dimensions[0] = document.body.offsetWidth; dimensions[1] = document.body.offsetHeight; } break; case 1: if(self.pageYOffset) { dimensions[0] = self.pageXOffset; dimensions[1] = self.pageYOffset; } else if((document.documentElement) && (document.documentElement.scrollTop)) { dimensions[0] = document.documentElement.scrollLeft; dimensions[1] = document.documentElement.scrollTop; } else if(document.body) { dimensions[0] = document.body.scrollLeft; dimensions[1] = document.body.scrollTop; } break; case 2: if(document.documentElement && document.documentElement.clientWidth) { dimensions[0] = document.documentElement.clientWidth; dimensions[1] = document.documentElement.clientHeight; } else if(self.innerWidth) { dimensions[0] = self.innerWidth; dimensions[1] = self.innerHeight; } else if(document.body) { dimensions[0] = document.body.clientWidth; dimensions[1] = document.body.clientHeight; } break; } return(dimensions); }
function add_handle(eventname, handler) { if(window.addEventListener) { window.addEventListener(eventname, handler, false); } else if(window.attachEvent) { window.attachEvent("on" + eventname, handler); } }
function remove_handle(eventname, handler) { if(window.removeEventListener) { window.removeEventListener(eventname, handler, false); } else if(window.detachEvent) { window.detachEvent("on" + eventname, handler); } }

var images = new Array();
images["bg"] = "R0lGODlhDwAwAPcAANDQ0dfX2d3d3uTk5ebm5unp6+7u7u7u8PPz9PT09Pf3+Pr6+/39/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAPADAAAAh7AAkAICCQ4MCCBQMYMKCQ4cKGDRMkECCR4sSKFRcMWKCR48aOHQs0aCCS5MiSJUceUMmywUqXDRCMlBlzpk0FI3E20Mlz5MgFP4M2ADq0AYORR40iXeqzqdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqrRoQADs=";
images["close"] = "R0lGODlhDgAOAPcAAJajrp2ptKOvuaq1wLG8xbfBybzG0MHL1MjQ2MzU3M/Y39DY39bd49rg5tzh59zi5+Dl6ujq7O7x9Pb3+Pv8/Pz8/Pz8/f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAOAA4AAAh7ACNMuECwoMEJEShAUMCwoUMIFC4kcPCgosWKDhIQTNCgo8ePGi8gYMCAIEmTDBAQPLBgAcGWLxccIGgAgU2DNhEYIFigZwGDPn9eIECUYNGhRwcoJbj0gtIBBAVInUpVKsEAWLNqxXqhQgEAYMOKLVBBggWDaC9YkBAQADs=";

Cross
Presentational HTML allowed.
Use <code> for inline code and <pre> for code blocks. Use &lt; and &gt; for literal < and >.
We help break paragraphs and link your links.
or cancel