// ==UserScript== // @name Download MP3 for YouTube (Updated) // @description Add a download button for YouTube! // @namespace https://greasyfork.org/ // @homepageURL https://greasyfork.org/scripts/34613 // @supportURL https://greasyfork.org/scripts/34613/feedback // @author Punisher // @version 1.8 // @date 2018-01-01 // @compatible chrome // @compatible firefox // @compatible opera // @compatible safari // @license GNU GPL v3.0 or later. http://www.gnu.org/copyleft/gpl.html // @include http://www.youtube.com/* // @include https://www.youtube.com/* // @exclude http://www.youtube.com/embed/* // @exclude https://www.youtube.com/embed/* // @match http://www.youtube.com/* // @match https://www.youtube.com/* // @match http://s.ytimg.com/yts/jsbin/html5player* // @match https://s.ytimg.com/yts/jsbin/html5player* // @match http://manifest.googlevideo.com/* // @match https://manifest.googlevideo.com/* // @match http://*.googlevideo.com/videoplayback* // @match https://*.googlevideo.com/videoplayback* // @match http://*.youtube.com/videoplayback* // @match https://*.youtube.com/videoplayback* // @downloadURL none // ==/UserScript== (function () { var FORMAT_TYPE={'mp3':'mp3'}; var FORMAT_ORDER=[]; var BUTTON_TEXT={'ar':'تحميل','bg':'Изтегляне','cs':'Stáhnout','da':'Downloade','de':'Herunterladen','en':'Download','es':'Descargar','fi':'Lataa','fr':'Télécharger','he':'הורד','hu':'Letöltés','id':'Unduh','it':'Scarica','ja':'ダウンロード','ka':'ჩამოტვირთვა','ko':'다운로드','pl':'Pobierz','pt':'Baixar','ru':'Загрузить','ro':'Descarca','sk':'Prenesi','sv':'Ladda ner','tr':'İndir','zh':'下载','zh-TW':'下载'}; var BUTTON_TOOLTIP={'ar':'تحميل','bg':'Изтегляне','cs':'Stáhnout','da':'Downloade','de':'Herunterladen','en':'Download','es':'Descargar','fi':'Lataa','fr':'Télécharger','he':'הורד','hu':'Letöltés','id':'Unduh','it':'Scarica','ja':'ダウンロード','ka':'ჩამოტვირთვა','ko':'다운로드','pl':'Pobierz','pt':'Baixar','ru':'Загрузить','ro':'Descarca','sk':'Prenesi','sv':'Ladda ner','tr':'İndir','zh':'下载','zh-TW':'下载'}; var RANDOM=7489235179; var CONTAINER_ID='download-youtube-video'+RANDOM; var LISTITEM_ID='download-youtube-video-fmt'+RANDOM; var BUTTON_ID='download-youtube-video-button'+RANDOM; start(); function start() { var pagecontainer=document.getElementById('page-container'); if (/^https?:\/\/www\.youtube.com\/watch\?/.test(window.location.href)) run(); var content=document.getElementById('content'); var mo=window.MutationObserver||window.WebKitMutationObserver; if(typeof mo!=='undefined') { var observer=new mo(function(mutations) { mutations.forEach(function(mutation) { if(mutation.addedNodes!==null) { for (var i=0; i2) continue; if (videoURL[format]!=undefined && FORMAT_LABEL[format]!=undefined && showFormat[format]) { downloadCodeList.push({url:videoURL[format],sig:videoSignature[format],format:format,label:FORMAT_LABEL[format]}); } } downloadCodeList.push({ 'url': '//recordmp3.co/#/watch?v=' + encodeURIComponent(location.href), 'format': 'mp3', 'label': 'MP3', 'popup': true }); var newWatchPage=false; var parentElement=document.getElementById('watch7-action-buttons'); if (parentElement==null) { parentElement=document.getElementById('watch8-secondary-actions'); if (parentElement==null) { return; } else { newWatchPage=true; } } var buttonText=(BUTTON_TEXT[language])?BUTTON_TEXT[language]:BUTTON_TEXT['en']; var buttonLabel=(BUTTON_TOOLTIP[language])?BUTTON_TOOLTIP[language]:BUTTON_TOOLTIP['en']; var mainSpan=document.createElement('span'); if (newWatchPage) { var spanIcon=document.createElement('span'); spanIcon.setAttribute('class', 'yt-uix-button-icon-wrapper'); var imageIcon=document.createElement('img'); imageIcon.setAttribute('src', '//s.ytimg.com/yt/img/pixel-vfl3z5WfW.gif'); imageIcon.setAttribute('class', 'yt-uix-button-icon'); imageIcon.setAttribute('style', 'width:20px;height:20px;background-size:20px 20px;background-repeat:no-repeat;background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABG0lEQVRYR+2W0Q3CMAxE2wkYAdiEEWADmIxuACMwCmzABpCTEmRSO7YTQX+ChECV43t2nF7GYeHPuLD+0AKwC/DnWMAp/N5qimkBuAfBdRTF/+2/AV6ZYFUxVYuicAfoHegd6B3oHfhZB+ByF+JyV8FkrAB74pqH3DU5L3iGoBURhdVODIQF4EjEkWLmmhYALOQgNIBcHHke4buhxXAAaFnaAhqbQ5QAOHHkwhZ8balkx1ICCiEBWNZ+CivdB7REHIC2ZjZK2oWklDDdB1NSdCd/Js2PqQMpSIKYVcM8kE6QCwDBNRCqOBJrW0CL8kCYxL0A1k6YxWsANAiXeC2ABOEWbwHAWrwxpzgkmA/JtIqnxTOElmPnjlkc4A3FykAhA42AxwAAAABJRU5ErkJggg==);'); spanIcon.appendChild(imageIcon); mainSpan.appendChild(spanIcon); } var spanButton=document.createElement('span'); spanButton.setAttribute('class', 'yt-uix-button-content'); spanButton.appendChild(document.createTextNode(buttonText+' ')); mainSpan.appendChild(spanButton); if (!newWatchPage) { var imgButton=document.createElement('img'); imgButton.setAttribute('class', 'yt-uix-button-arrow'); imgButton.setAttribute('src', '//s.ytimg.com/yt/img/pixel-vfl3z5WfW.gif'); mainSpan.appendChild(imgButton); } var listItems=document.createElement('ol'); listItems.setAttribute('style', 'display:none;'); listItems.setAttribute('class', 'yt-uix-button-menu'); for (var i=0;i