Simple YouTube MP3/VIDEO Buttons

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.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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();
  

}