您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add a download button for YouTube!
当前为
// ==UserScript== // @name Download MP3 & Video for YouTube // @description Add a download button for YouTube! // @namespace https://gf.qytechs.cn/ // @homepageURL https://gf.qytechs.cn/scripts/34613 // @supportURL https://gf.qytechs.cn/scripts/34613/feedback // @author Punisher // @version 1.4 // @date 2017-11-15 // @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* // ==/UserScript== (function () { var FORMAT_TYPE={'mp3':'mp3'}; var FORMAT_ORDER=[]; var BUTTON_TEXT={'bg':'Изтегляне','cs':'Stáhnout','de':'Herunterladen','en':'Download','es':'Descargar','fr':'Télécharger','hu':'Letöltés','id':'Unduh','it':'Scarica','ja':'ダウンロード','pl':'Pobierz','pt':'Baixar','ru':'Загрузить','ro':'Descărcare','sk':'Prenesi','sv':'Ladda ner','zh':'下载','zh-TW':'下载'}; var BUTTON_TOOLTIP={'bg':'Изтегляне','cs':'Stáhnout','de':'Herunterladen','en':'Download','es':'Descargar','fr':'Télécharger','hu':'Letöltés','id':'Unduh','it':'Scarica','ja':'ダウンロード','pl':'Pobierz','pt':'Baixar','ru':'Загрузить','ro':'Descărcare','sk':'Prenesi','sv':'Ladda ner','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; i<mutation.addedNodes.length; i++) { if (mutation.addedNodes[i].id=='watch7-container' || mutation.addedNodes[i].id=='watch7-main-container') { run(); break; } } } }); }); observer.observe(content, {childList: true, subtree: true}); } } function onNodeInserted(e) { if (e && e.target && (e.target.id=='watch7-container' || e.target.id=='watch7-main-container')) { run(); } } function run() { var operaTable=new Array(); var language=document.documentElement.getAttribute('lang'); var textDirection='left'; if (document.body.getAttribute('dir')=='rtl') { textDirection='right'; } if (document.getElementById('watch7-action-buttons')) { fixTranslations(language, textDirection); } var args=null; var usw=(typeof this.unsafeWindow !== 'undefined')?this.unsafeWindow:window; if (typeof window.opera !== 'undefined' && window.opera && typeof opera.extension !== 'undefined') { opera.extension.onmessage = function(event) { var index=findMatch(event.data.action, /xhr\-([0-9]+)\-response/); if (index && operaTable[parseInt(index,10)]) { index=parseInt(index,10); var trigger=(operaTable[index])['onload']; if (typeof trigger === 'function' && event.data.readyState == 4) { if (trigger) { trigger(event.data); } } } } } var downloadCodeList=[]; for (var i=0;i<FORMAT_ORDER.length;i++) { var format=FORMAT_ORDER[i]; if (!SHOW_DASH_FORMATS && format.length>2) 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': 'http://api.yt-mp3.com/watch?v=' + encodeURIComponent(location.href), 'format': 'mp3', 'label': 'MP3 or VIDEO', '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<downloadCodeList.length;i++) { var listItem=document.createElement('li'); var listLink=document.createElement('a'); listLink.setAttribute('style', 'text-decoration:none;'); listLink.setAttribute('href', downloadCodeList[i].url); if (downloadCodeList[i].popup) { listLink.onclick = (function (href, e) { e.preventDefault(); window.open(href,href,'height=327,width=954,location=yes,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no'); }).bind(null, downloadCodeList[i].url); } else { listLink.setAttribute('download', videoTitle+'.'+FORMAT_TYPE[downloadCodeList[i].format]); } var listButton=document.createElement('span'); listButton.setAttribute('class', 'yt-uix-button-menu-item'); listButton.setAttribute('loop', i+''); listButton.setAttribute('id', LISTITEM_ID+downloadCodeList[i].format); listButton.appendChild(document.createTextNode(downloadCodeList[i].label)); listLink.appendChild(listButton); listItem.appendChild(listLink); listItems.appendChild(listItem); } mainSpan.appendChild(listItems); var buttonElement=document.createElement('button'); buttonElement.setAttribute('id', BUTTON_ID); if (newWatchPage) { buttonElement.setAttribute('class', 'yt-uix-button yt-uix-button-size-default yt-uix-button-opacity yt-uix-tooltip'); } else { buttonElement.setAttribute('class', 'yt-uix-button yt-uix-tooltip yt-uix-button-empty yt-uix-button-text'); buttonElement.setAttribute('style', 'margin-top:4px; margin-left:'+((textDirection=='left')?5:10)+'px;'); } buttonElement.setAttribute('data-tooltip-text', buttonLabel); buttonElement.setAttribute('type', 'button'); buttonElement.setAttribute('role', 'button'); buttonElement.addEventListener('click', function(){return false;}, false); buttonElement.appendChild(mainSpan); var containerSpan=document.createElement('span'); containerSpan.setAttribute('id', CONTAINER_ID); containerSpan.appendChild(document.createTextNode(' ')); containerSpan.appendChild(buttonElement); if (!newWatchPage) { parentElement.appendChild(containerSpan); } else { parentElement.insertBefore(containerSpan, parentElement.firstChild); } function createHiddenElem(tag, id) { var elem=document.createElement(tag); document.body.appendChild(elem); } function fixTranslations(language, textDirection) { var likeButton=document.getElementById('watch-like'); if (likeButton) { var spanElements=likeButton.getElementsByClassName('yt-uix-button-content'); if (spanElements) { spanElements[0].style.display='none'; } } var marginPixels=10, marginPixels=1; injectStyle('#watch7-secondary-actions .yt-uix-button{margin-'+textDirection+':'+marginPixels+'px!important}'); } function crossXmlHttpRequest(details) { if (typeof GM_xmlhttpRequest === 'function') { GM_xmlhttpRequest(details); } else if (typeof window.opera !== 'undefined' && window.opera && typeof opera.extension !== 'undefined' && typeof opera.extension.postMessage !== 'undefined') { var index=operaTable.length; opera.extension.postMessage({'action':'xhr-'+index, 'url':details.url, 'method':details.method}); operaTable[index]=details; } else if (typeof window.opera === 'undefined' && typeof XMLHttpRequest === 'function') { var xhr=new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if (details['onload']) { details['onload'](xhr); } } } xhr.open(details.method, details.url, true); xhr.send(); } } } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址