Add two download buttons to YouTube videos that allow you to download MP3 or Video without leaving the page with the option to choose the quality.
// ==UserScript==
// @name Simple YouTube MP3/VIDEO Buttons
// @namespace https://youtubemp3api.com/
// @version 0.8
// @description Add two download buttons to YouTube videos that allow you to download MP3 or Video without leaving the page with the option to choose the quality.
// @author Arari, dLehr, Rene (edited)
// @include http*://*.youtube.com/*
// @include http*://youtube.com/*
// @include http*://*.youtu.be/*
// @include http*://youtu.be/*
// @run-at document-end
// ==/UserScript==
var lastId = ""
function getYTId(url){
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
var match = url.match(regExp);
return (match&&match[7].length==11)? match[7] : false;
}
function audioMp3(){
/* Create button */
var buttonDiv = document.createElement("div");
buttonDiv.style.width = "100%";
buttonDiv.id = "parentButton";
var addButton = document.createElement("button");
addButton.appendChild(document.createTextNode("Download MP3"));
if(typeof(document.getElementById("iframeDownloadButton")) != 'undefined' && document.getElementById("iframeDownloadButton") !== null)
{
document.getElementById("iframeDownloadButton").remove();
}
addButton.style.width = "100%";
addButton.style.backgroundColor = "#181717";
addButton.style.color = "white";
addButton.style.textAlign = "center";
addButton.style.padding = "10px";
addButton.style.marginTop = "5px";
addButton.style.fontSize = "14px";
addButton.style.border = "0";
addButton.style.cursor = "pointer";
addButton.style.borderRadius = "2px";
addButton.style.fontFamily = "Roboto, Arial, sans-serif";
addButton.onclick = function () {
if(document.getElementById("iframeDownloadButton") !== null)
{
document.getElementById("iframeDownloadButton").remove();
}
/* Add large button on click */
var ytId = getYTId(location.href);
if(!ytId)return;
var addIframe = document.createElement("iframe");
addIframe.src = '//www.recordmp3.co/#/watch?v='+ytId + '&layout=button';
addIframe.style.width = "300px";
addIframe.style.height = "60px";
addIframe.style.marginTop = "0px";
addIframe.border = "0px";
addIframe.overflow = "hidden";
addIframe.id = "iframeDownloadButton";
var targetElement = document.querySelectorAll("[id='meta']");
for(var i = 0; i < targetElement.length; i++){
if(targetElement[i].className.indexOf("ytd-watch") > -1)
{
targetElement[i].insertBefore(addIframe, targetElement[i].childNodes[0]);
}
}
};
buttonDiv.appendChild(addButton);
/* Find and add to target */
var targetElement = document.querySelectorAll("[id='subscribe-button']");
for(var i = 0; i < targetElement.length; i++){
if(targetElement[i].className.indexOf("ytd-video-secondary-info-renderer") > -1){
targetElement[i].appendChild(buttonDiv);
}
}
}
function videoMp4(){
/* Create button */
var buttonDiv = document.createElement("div");
buttonDiv.style.width = "100%";
buttonDiv.id = "parentButton";
var addButton = document.createElement("button");
addButton.appendChild(document.createTextNode("Download VIDEO"));
if(typeof(document.getElementById("iframeDownloadButton")) != 'undefined' && document.getElementById("iframeDownloadButton") !== null){
document.getElementById("iframeDownloadButton").remove();
}
addButton.style.width = "100%";
addButton.style.backgroundColor = "#181717";
addButton.style.color = "white";
addButton.style.textAlign = "center";
addButton.style.padding = "10px";
addButton.style.marginTop = "5px";
addButton.style.fontSize = "14px";
addButton.style.border = "0";
addButton.style.cursor = "pointer";
addButton.style.borderRadius = "2px";
addButton.style.fontFamily = "Roboto, Arial, sans-serif";
addButton.onclick = function () {
if(document.getElementById("iframeDownloadButton") !== null)
{
document.getElementById("iframeDownloadButton").remove();
}
/* Add large button on click */
var ytId = getYTId(location.href);
if(!ytId)return;
var addIframe = document.createElement("iframe");
addIframe.src = '//www.recordmp3.co/#/watch?v=' + ytId + '&layout=button&format=video&t_press_to_start=Click%20to%20Convert';
addIframe.style.width = "300px";
addIframe.style.height = "40px";
addIframe.style.marginTop = "0px";
addIframe.border = "0px";
addIframe.id = "iframeDownloadButton";
var targetElement = document.querySelectorAll("[id='meta']");
for(var i = 0; i < targetElement.length; i++){
if(targetElement[i].className.indexOf("ytd-watch") > -1){
targetElement[i].insertBefore(addIframe, targetElement[i].childNodes[0]);
}
}
};
buttonDiv.appendChild(addButton);
/* Find and add to target */
var targetElement = document.querySelectorAll("[id='subscribe-button']");
for(var i = 0; i < targetElement.length; i++){
if(targetElement[i].className.indexOf("ytd-video-secondary-info-renderer") > -1){
targetElement[i].appendChild(buttonDiv);
}
}
}
if(document.getElementById("polymer-app") || document.getElementById("masthead") || window.Polymer){
setInterval(function(){
if(window.location.href.indexOf("watch?v=") < 0){
return false;
}
if(document.getElementById("count") && document.getElementById("parentButton") === null){
audioMp3(), videoMp4();
}
}, 100);
}
else{
standardInject();
}