您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Worlds most advanced YouTube Downloader
// ==UserScript== // @name yLoader | YouTube Downloader & MP3 Converter // @namespace http://yloader.ws/ // @description Worlds most advanced YouTube Downloader // @author yLoader.ws // @match https://www.youtube.com/* // @grant none // @license MIT // @run-at document-end // @version 0.6 // ==/UserScript== const buttons = ["MP3", "▼"]; const cssText = ` .dropdown-menu { position: absolute; top: 40px; width: 145px; background-color: #e02f2f; padding: 0; z-index: 9999; border-radius: 20px; } .dropdown-menu-short { position: absolute; top: 54px; width: 145px; background-color: #e02f2f; padding: 0; z-index: 9999; border-radius: 20px; right: 0px; } .dropdown-item { border: solid #ac0101; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; padding: 9px; cursor: pointer; transition: background-color 0.3s ease; color: white; font-size: var(--ytd-tab-system-font-size, 1.2rem); font-weight: var(--ytd-tab-system-font-weight, 500); letter-spacing: var(--ytd-tab-system-letter-spacing, .007px); text-align: center; user-select: none; display: flex; } .dropdown-item-icon{ background-position: center; background-repeat: no-repeat; background-size: cover; width: 14px; height: 14px; margin-right: 8px; margin-top: 1px; } .dropdown-item-text{ height: 14px; font-weight: bold; color: white; font-size: 14px; margin-top: -1px; } .dropdown-item-top{ border-radius: 20px 20px 0px 0px; border-width: 2px 2px 1px 2px; } .dropdown-item-bottom{ border-radius: 0px 0px 20px 20px; border-width: 1px 2px 2px 2px; } .dropdown-item-top-short{ border-radius: 20px 20px 0px 0px; border-width: 2px 2px 1px 2px; } .dropdown-item-middle-short{ border-radius: 0px; border-width: 1px 2px 1px 2px; } .dropdown-item-bottom-short{ border-radius: 0px 0px 20px 20px; border-width: 1px 2px 2px 2px; } .dropdown-item:hover { background-color: #eb4747; } .download-button { border: solid #ac0101; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; display: flex; flex-direction: row; cursor: pointer; background-color: #e02f2f; color: white; padding: var(--yt-button-padding); padding-top: 8px; margin: auto var(--ytd-subscribe-button-margin, 0px); white-space: nowrap; max-height: 36px; font-size: var(--ytd-tab-system-font-size, 1.2rem); font-weight: var(--ytd-tab-system-font-weight, 500); letter-spacing: var(--ytd-tab-system-letter-spacing, .007px); text-transform: var(--ytd-tab-system-text-transform, uppercase); transition: background-color 0.1s ease-out 20ms; user-select: none; } .left-button{ border-radius: 20px 0px 0px 20px; border-width: 2px 1px 2px 2px; padding-right: 14px; } .right-button{ border-radius: 0px 20px 20px 0px; border-width: 2px 2px 2px 1px; padding-right: 10px; padding-left: 10px; background-position: center; background-repeat: no-repeat; background-size: 40%; height: 36px; width: 38px; } .download-button:hover{ background-color: #eb4747; } .download-button-text { --yt-formatted-string-deemphasize_-_display: initial; --yt-formatted-string-deemphasize-color: var(--yt-spec-text-secondary); --yt-formatted-string-deemphasize_-_margin-left: 4px; font-weight: bold; } .download-button-icon { background-position: center; background-repeat: no-repeat; background-size: cover; width: 14px; height: 14px; margin-top: 1px; } .download-button-container { display: flex; flex-direction: row; position: relative; } .download-button-container-shorts { display: flex; flex-direction: column; position: relative; } .download-playlist-button { margin-right: 8px; margin-left: 0px; } .download-playlist-button-text { color: #E4E4E4; } .download-button-shorts { border: solid #ac0101; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; border-width: 2px; border-radius: 30px; height: 48px; width: 48px; text-align: center; line-height: 48px; cursor: pointer; background-color: #e02f2f; color: white; white-space: nowrap; font-size: 13px; font-weight: var(--ytd-tab-system-font-weight, 500); letter-spacing: var(--ytd-tab-system-letter-spacing, .007px); text-transform: var(--ytd-tab-system-text-transform, uppercase); transition: background-color 0.3s ease; background-position: center; background-repeat: no-repeat; background-size: 60%; } .download-button-shorts:hover{ background-color: #eb4747; } `; (function () { var rightbtn; if (window.location.href.startsWith("https://www.youtube.com")) { ("use strict"); let dropdownVisible = false; let dropdownShortsVisible = false; let youtubeshorts = false; function disableDropdown() { document.getElementById("dropdown-menu").remove(); document.querySelector(".left-button").style.borderRadius = "20px 0px 0px 20px"; document.querySelector(".left-button").style.borderBottomWidth = "2px"; document.querySelector(".right-button").style.borderRadius = "0px 20px 20px 0px"; document.querySelector(".right-button").style.borderBottomWidth = "2px"; dropdownVisible = false; var iconDownSvg = '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M11.178 19.569a.998.998 0 0 0 1.644 0l9-13A.999.999 0 0 0 21 5H3a1.002 1.002 0 0 0-.822 1.569l9 13z" fill="#ffffff" class="fill-000000"></path></svg>'; rightbtn.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconDownSvg) + '")'; } function disableShortsDropdown() { document.getElementById("dropdown-menu-short").remove(); dropdownShortsVisible = false; } function run() { setTimeout(function () { if (window.location.href.includes("youtube.com/watch")) { document.getElementById("downloadshorts").remove(); youtubeshorts = false; } }, 1000); } // playlist pages will try to add the buttons repeatedly let playlistButtonsAdded = false; function addButtons() { setTimeout(() => { // apply css const style = document.createElement("style"); style.type = "text/css"; style.innerHTML = cssText; document.head.appendChild(style); // check for playlist and create appropriate query let query = "#analytics-button:not(.download-panel)"; let inPlaylist = location.href.includes("/playlist"); if (inPlaylist && !playlistButtonsAdded) { query += ", div.metadata-buttons-wrapper:not(.download-panel)"; playlistButtonsAdded = true; } if (window.location.toString().includes("youtube.com/shorts/")) { // check for youtube shorts youtubeshorts = true; query = "#actions:not(.download-panel)"; } document.addEventListener("click", function (event) { var dropdownMenu = document.getElementById("analytics-button"); var targetElement = event.target; if ( !dropdownMenu.contains(targetElement) && youtubeshorts === false ) { disableDropdown(); dropdownVisible = false; } }); document.querySelectorAll(query).forEach((panel) => { const container = document.createElement("div"); if (youtubeshorts) { container.classList.add("download-button-container-shorts"); container.id = "downloadshorts"; const button = document.createElement("div"); button.classList.add("download-button-shorts"); var iconDownloadSvg = '<svg viewBox="0 0 512 512" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 512 512"><path d="M383.6 322.7 278.6 423c-5.8 6-13.7 9-22.4 9s-16.5-3-22.4-9L128.4 322.7c-12.5-11.9-12.5-31.3 0-43.2 12.5-11.9 32.7-11.9 45.2 0l50.4 48.2v-217c0-16.9 14.3-30.6 32-30.6s32 13.7 32 30.6v217l50.4-48.2c12.5-11.9 32.7-11.9 45.2 0s12.5 31.2 0 43.2z" fill="#ffffff" class="fill-000000"></path></svg>'; var iconCloseSvg = '<svg viewBox="0 0 512 512" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 512 512"><path d="M437.5 386.6 306.9 256l130.6-130.6c14.1-14.1 14.1-36.8 0-50.9-14.1-14.1-36.8-14.1-50.9 0L256 205.1 125.4 74.5c-14.1-14.1-36.8-14.1-50.9 0-14.1 14.1-14.1 36.8 0 50.9L205.1 256 74.5 386.6c-14.1 14.1-14.1 36.8 0 50.9 14.1 14.1 36.8 14.1 50.9 0L256 306.9l130.6 130.6c14.1 14.1 36.8 14.1 50.9 0 14-14.1 14-36.9 0-50.9z" fill="#ffffff" class="fill-000000"></path></svg>'; button.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconDownloadSvg) + '")'; button.addEventListener("click", () => { if (dropdownShortsVisible) { disableShortsDropdown(); button.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconDownloadSvg) + '")'; button.style.backgroundSize = "60%"; } else { button.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconCloseSvg) + '")'; button.style.backgroundSize = "45%"; const dropdownMenu = document.createElement("div"); dropdownMenu.id = "dropdown-menu-short"; dropdownMenu.classList.add("dropdown-menu-short"); for (let j = 0; j < 3; j++) { if (j == 0) { const dropdownItem = document.createElement("div"); dropdownItem.classList.add("dropdown-item"); dropdownItem.classList.add("dropdown-item-top-short"); var iconCameraSvg = '<svg viewBox="0 0 512 512" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 512 512"><path d="M115.2 378C87 378 64 400.9 64 429s23 51 51.2 51h37.2c15.3 0 28.9-6.8 38.3-17.4.1-.1.3-.1.4-.2.6-.6 1-1.5 1.5-2.1 1.3-1.6 2.5-3.2 3.5-5 9.5-14.2 14-32.9 14-47.2V207.5c.8-14.2 11.2-25.7 25.1-28.9 1.7-.4 5.4-1.2 5.4-1.2L390.5 149c.7-.1 1.3-.2 2-.3.8-.1 1.5-.1 2.4-.1 12.1 0 21.1 9.5 21.1 21.2v131.4c0 25.5 2.9 31.9-40.5 31.9h-20.1c-28.3 0-51.2 22.9-51.2 51s22.9 51 51.2 51h37.2c18.2 0 34.1-9.4 43.2-23.6 0-.1.1 0 .2 0 9-12.2 11.9-30.6 11.9-55.3V53.4c0-11.7-9.9-21.2-22-21.2-.7 0-1.4.1-2 .1l-3.1.5L203.3 74c-13.8 3.7-26.3 16.9-27.3 31.4v250.5c0 13.9 2 22.2-47.7 22.2h-13.1z" fill="#ffffff" class="fill-000000"></path></svg>'; const dropdownItemIcon = document.createElement("div"); dropdownItemIcon.classList.add("dropdown-item-icon"); dropdownItemIcon.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconCameraSvg) + '")'; const dropdownItemText = document.createElement("div"); dropdownItemText.classList.add("dropdown-item-text"); dropdownItemText.innerHTML = "download MP3"; dropdownItem.addEventListener("click", () => { let url = window.location.toString(); let videoId = url.split("/").pop(); window.open("https://yloader.ws/yturlmp3/" + videoId); disableShortsDropdown(); button.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconDownloadSvg) + '")'; button.style.backgroundSize = "60%"; }); dropdownItem.appendChild(dropdownItemIcon); dropdownItem.appendChild(dropdownItemText); dropdownMenu.appendChild(dropdownItem); } else if (j == 1) { const dropdownItem = document.createElement("div"); dropdownItem.classList.add("dropdown-item"); dropdownItem.classList.add("dropdown-item-middle-short"); var iconCameraSvg = '<svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M0 3h10v10H0V3ZM12 6l3-3h1v10h-1l-3-3V6Z" fill="#ffffff" class="fill-030708"></path></svg>'; const dropdownItemIcon = document.createElement("div"); dropdownItemIcon.classList.add("dropdown-item-icon"); dropdownItemIcon.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconCameraSvg) + '")'; const dropdownItemText = document.createElement("div"); dropdownItemText.classList.add("dropdown-item-text"); dropdownItemText.innerHTML = "download MP4"; dropdownItem.addEventListener("click", () => { let url = window.location.toString(); let videoId = url.split("/").pop(); window.open("https://yloader.ws/yturlmp4/" + videoId); disableShortsDropdown(); button.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconDownloadSvg) + '")'; button.style.backgroundSize = "60%"; }); dropdownItem.appendChild(dropdownItemIcon); dropdownItem.appendChild(dropdownItemText); dropdownMenu.appendChild(dropdownItem); } else if (j == 2) { const dropdownItem = document.createElement("div"); dropdownItem.classList.add("dropdown-item"); dropdownItem.classList.add("dropdown-item-bottom-short"); var iconImageSvg = '<svg viewBox="0 0 24 24" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24"><path d="M24 6c0-2.2-1.8-4-4-4H4C1.8 2 0 3.8 0 6v12c0 2.2 1.8 4 4 4h16c2.2 0 4-1.8 4-4V6zM6 6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm16 12c0 1.1-.9 2-2 2H4.4c-.9 0-1.3-1.1-.7-1.7l3.6-3.6c.4-.4 1-.4 1.4 0l.6.6c.4.4 1 .4 1.4 0l6.6-6.6c.4-.4 1-.4 1.4 0l3 3c.2.2.3.4.3.7V18z" fill="#ffffff" class="fill-000000"></path></svg>'; const dropdownItemIcon = document.createElement("div"); dropdownItemIcon.classList.add("dropdown-item-icon"); dropdownItemIcon.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconImageSvg) + '")'; const dropdownItemText = document.createElement("div"); dropdownItemText.classList.add("dropdown-item-text"); dropdownItemText.innerHTML = "get Thumbnail"; dropdownItem.addEventListener("click", () => { let url = window.location.toString(); let videoId = url.split("/").pop(); window.open( "https://yloader.ws/ytthumbnail/" + videoId ); disableShortsDropdown(); button.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconDownloadSvg) + '")'; button.style.backgroundSize = "60%"; }); dropdownItem.appendChild(dropdownItemIcon); dropdownItem.appendChild(dropdownItemText); dropdownMenu.appendChild(dropdownItem); } } container.appendChild(dropdownMenu); dropdownShortsVisible = true; } }); container.appendChild(button); } else { container.classList.add("download-button-container"); for (let i = 0; i < buttons.length; i++) { const button = document.createElement("div"); button.classList.add("download-button"); if (inPlaylist) { button.classList.add("download-playlist-button"); } const buttonText = document.createElement("span"); buttonText.classList.add("download-button-text"); if (i === 0) { button.id = "leftbtn"; button.classList.add("left-button"); buttonText.innerHTML = "MP3"; button.title = "download MP3 from video"; button.appendChild(buttonText); button.addEventListener("click", () => { var videoId = new URL(window.location.href).searchParams.get( "v" ); window.open("https://yloader.ws/yturlmp3/" + videoId); if (dropdownVisible) { disableDropdown(); } }); } else if (i === 1) { button.classList.add("right-button"); var iconDownSvg = '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M11.178 19.569a.998.998 0 0 0 1.644 0l9-13A.999.999 0 0 0 21 5H3a1.002 1.002 0 0 0-.822 1.569l9 13z" fill="#ffffff" class="fill-000000"></path></svg>'; var iconUpSvg = '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 19h18a1.002 1.002 0 0 0 .823-1.569l-9-13c-.373-.539-1.271-.539-1.645 0l-9 13A.999.999 0 0 0 3 19z" fill="#ffffff" class="fill-000000"></path></svg>'; button.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconDownSvg) + '")'; button.title = ""; button.addEventListener("click", () => { if (dropdownVisible) { disableDropdown(); } else { button.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconUpSvg) + '")'; const dropdownMenu = document.createElement("div"); dropdownMenu.id = "dropdown-menu"; dropdownMenu.classList.add("dropdown-menu"); for (let j = 0; j < buttons.length; j++) { if (j == 0) { const dropdownItem = document.createElement("div"); dropdownItem.classList.add("dropdown-item"); dropdownItem.classList.add("dropdown-item-top"); var iconCameraSvg = '<svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M0 3h10v10H0V3ZM12 6l3-3h1v10h-1l-3-3V6Z" fill="#ffffff" class="fill-030708"></path></svg>'; const dropdownItemIcon = document.createElement("div"); dropdownItemIcon.classList.add("dropdown-item-icon"); dropdownItemIcon.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconCameraSvg) + '")'; const dropdownItemText = document.createElement("div"); dropdownItemText.classList.add("dropdown-item-text"); dropdownItemText.innerHTML = "download MP4"; dropdownItem.addEventListener("click", () => { var videoId = new URL( window.location.href ).searchParams.get("v"); window.open( "https://yloader.ws/yturlmp4/" + videoId ); disableDropdown(); }); dropdownItem.appendChild(dropdownItemIcon); dropdownItem.appendChild(dropdownItemText); dropdownMenu.appendChild(dropdownItem); } else if (j == 1) { const dropdownItem = document.createElement("div"); dropdownItem.classList.add("dropdown-item"); dropdownItem.classList.add("dropdown-item-bottom"); var iconImageSvg = '<svg viewBox="0 0 24 24" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24"><path d="M24 6c0-2.2-1.8-4-4-4H4C1.8 2 0 3.8 0 6v12c0 2.2 1.8 4 4 4h16c2.2 0 4-1.8 4-4V6zM6 6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm16 12c0 1.1-.9 2-2 2H4.4c-.9 0-1.3-1.1-.7-1.7l3.6-3.6c.4-.4 1-.4 1.4 0l.6.6c.4.4 1 .4 1.4 0l6.6-6.6c.4-.4 1-.4 1.4 0l3 3c.2.2.3.4.3.7V18z" fill="#ffffff" class="fill-000000"></path></svg>'; const dropdownItemIcon = document.createElement("div"); dropdownItemIcon.classList.add("dropdown-item-icon"); dropdownItemIcon.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconImageSvg) + '")'; const dropdownItemText = document.createElement("div"); dropdownItemText.classList.add("dropdown-item-text"); dropdownItemText.innerHTML = "get Thumbnail"; dropdownItem.addEventListener("click", () => { var videoId = new URL( window.location.href ).searchParams.get("v"); window.open( "https://yloader.ws/ytthumbnail/" + videoId ); disableDropdown(); button.style.backgroundImage = 'url("data:image/svg+xml,' + encodeURIComponent(iconDownSvg) + '")'; }); dropdownItem.appendChild(dropdownItemIcon); dropdownItem.appendChild(dropdownItemText); dropdownMenu.appendChild(dropdownItem); } } container.appendChild(dropdownMenu); dropdownVisible = true; } }); } container.appendChild(button); rightbtn = button; } } panel.classList.add("download-panel"); panel.insertBefore(container, panel.firstElementChild); }); }, 200); } window.onload = function () { run(); addButtons(); window.addEventListener("yt-navigate-start", run, true); window.addEventListener("yt-navigate-start", addButtons); window.addEventListener("yt-navigate-finish", addButtons); }; } })();