// ==UserScript== // @name Youtube Tools All in one local download mp3 mp4 HIGT QUALITY return dislikes and more // @name:zh-TW Youtube 工具 多合一本地下載 MP4、MP3 // @name:zh-HK Youtube 工具 多合一本地下載 MP4、MP3 // @name:zh-CN Youtube 工具 多合一本地下載 MP4、MP3 // @name:ja Youtube ツール オールインワンのローカル ダウンロード MP4、MP3 // @name:kr Youtube 도구 올인원 로컬 다운로드 외부 서비스 없이 MP4, MP3 // @name:ar Youtube Tools All in one local download mp3 mp4 HIGT QUALITY return dislikes and more // @name:bg Youtube-Tools Alles in einem lokalen Download von MP4, MP3. // @name:cs Nástroje YouTube Vše v jednom místní Stahujte MP4, MP3 // @name:da Youtube-værktøjer Alt i én lokal Download MP4, MP3 // @name:de Youtube-Tools Alles in einem lokalen Download von MP4, MP3 // @name:tel Youtube టూల్స్ అన్నీ ఒకే లోకల్ డౌన్లోడ్ MP4, Mp3 // @name:es Youtube Custom Todo en uno Descarga local MP4, MP3. // @name:en Youtube Tools All in one local download mp3 mp4. // @name:fr Outils Youtube Tout-en-un local Téléchargez MP4, MP3. // @name:fr-CA Outils Youtube Tout-en-un local Téléchargez MP4, MP3. // @name:he כלים של YouTube הכל במקום אחד מקומי הורדה MP4, MP3 באיכות גבוהה ללא שירות חיצוני ועוד. // @name:hu Youtube Eszközök Minden egy helyen Letöltés MP4, MP3. // @name:id Alat Youtube Semua dalam satu lokal Unduh MP4, MP3. // @name:it Strumenti Youtube Tutto in uno Scarica locale MP4, MP3. // @name:ko Youtube 도구 올인원 로컬 외부 서비스 없이 MP4, MP3 // @name:nb Youtube-verktøy Alt i ett lokalt Last ned MP4, MP3 // @name:nl Youtube Tools Alles in één lokaal Download MP4, MP3 // @name:pl Narzędzia YouTube Wszystko w jednym lokalnym. Pobierz MP4, MP3 // @name:pt-BR Ferramentas do Youtube Tudo em um local Baixe MP4, MP3 DE ALTA QUALIDAD. // @name:ro YInstrumente Youtube Toate într-un singur local Descărcați MP4, MP3. // @name:ru Инструменты Youtube Все в одном локальном формате. Загрузите MP4, MP3. // @name:sk Nástroje YouTube Všetko v jednom miestne Stiahnite si MP4, MP3 // @name:sr Иоутубе алати Све у једном локалном Преузми МП4, МП3 // @name:sv Youtube-verktyg Allt i ett lokalt Ladda ner MP4, MP3 // @name:th เครื่องมือ Youtube ทั้งหมดในที่เดียว ดาวน์โหลด MP4, MP3 // @name:tr Youtube Araçları Hepsi bir arada yerel Harici hizmet olmadan MP4, MP3 // @name:uk Інструменти Youtube Все в одному локальному завантаженні MP4, MP3 // @name:ug Youtube قوراللىرى ھەممىسى بىر يەرلىك چۈشۈرۈش MP4,mp3 // @name:vi Công cụ Youtube Tất cả trong một cục bộ Tải xuống MP4, MP3 // @description:zh-TW Youtube 工具 多合一本地下載 mp4、MP3 // @description:zh-HK Youtube 工具 多合一本地下載 mp4、MP3 // @description:zh-CN Youtube 工具 多合一本地下載 mp4、MP3 // @description:ja Youtube ツール オールインワン ローカル ダウンロード mp4、MP3 、 // @description:kr Youtube 도구 올인원 로컬 다운로드 mp4, MP3 // @description:ar Herramientas de YouTube Todo en uno Descarga local mp4, MP3 // @description:bg Инструменти за Youtube Всичко в едно локално изтегляне mp4, // @description:cs Nástroje YouTube Vše v jednom místní Stahování mp4, MP3 // @description:da Youtube-værktøjer Alt i ét lokalt Download mp4, MP3 // @description:de YouTube-Tools Alles in einem lokalen Laden Sie MP4, MP3 // @description:tel Youtube Tools All in one local Download mp4, MP3 HIGT QUALITY, // @description:es Youtube tools todo en uno personlizada youtube a tu estilo y descarga MP4 y MP3 // @description:fr Outils Youtube Tout-en-un local Téléchargez des mp4, des MP3 // @description:fr-CA Outils Youtube Tout-en-un local Téléchargez des mp4, des MP3 // @description:he כלים של YouTube הכל במקום אחד מקומי הורד mp4, MP3 // @description:hu Youtube Eszközök Minden egyben helyi Letöltés mp4, MP3 // @description:id Alat Youtube Semua dalam satu lokal Unduh mp4, MP3 // @description:it Strumenti Youtube Tutto in uno locale Scarica mp4, MP3 // @description:ko Youtube 도구 올인원 로컬 다운로드 mp4, MP3 // @description:nb YoYoutube-verktøy Alt i ett lokalt Last ned mp4, MP3 // @description:nl YouTube-tools Alles in één lokaal Download mp4, MP3 // @description:pl Narzędzia Youtube Wszystko w jednym miejscu Pobierz mp4, MP3 // @description:pt-BR Ferramentas do YouTube Tudo em um só local Baixe mp4, MP3 // @description:ro Instrumente Youtube Toate într-un singur local Descărcați mp4, MP3 // @description:ru Инструменты Youtube Все в одном, локально. Загрузите mp4, MP3 // @description:sk Nástroje YouTube Všetko v jednom miestnom Sťahujte mp4, MP3 // @description:sr Иоутубе алати Све у једном локалном Преузми мп4, МП3 // @description:sv Youtube-verktyg Allt i ett lokalt Ladda ner mp4, MP3 // @description:th เครื่องมือ Youtube ทั้งหมดในที่เดียว ดาวน์โหลด mp4, MP3 // @description:tr Youtube Araçları Hepsi bir arada yerel Harici hizmet olmadan mp4, MP3 // @description:uk Інструменти Youtube Все в одному локальному завантаженні mp4, MP3 // @description:ug Youtube قورالىنىڭ ھەممىسى بىر يەرلىك چۈشۈرۈشتە mp4, MP3 HIGH QUAقنى قا // @description:vi Công cụ Youtube Tất cả trong một cục bộ Tải xuống mp4, MP3 // @description:en Youtube Tools All in one local Download mp4, MP3 HIGT QUALITY // @description Youtube Tools All in one local Download mp4, MP3 HIGT QUALITY // @homepage https://github.com/DeveloperMDCM/ // @version 2.2.80 // @author MDCM // @match https://*.youtube.com/* // @exclude *://music.youtube.com/* // @exclude *://*.music.youtube.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com // @grant GM_info // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant unsafeWindow // @run-at document-end // @compatible chrome // @compatible firefox // @compatible opera // @compatible safari // @compatible edge // @license MIT // @namespace https://github.com/DeveloperMDCM/ // @downloadURL none // ==/UserScript== (function () { 'use strict'; let validoUrl = document.location.href; const $e = (el) => document.querySelector(el); // any element const $id = (el) => document.getElementById(el); // element by id const $m = (el) => document.querySelectorAll(el); // multiple all elements const $cl = (el) => document.createElement(el); // create element const $sp = (el, pty) => document.documentElement.style.setProperty(el, pty); // set property variable css const $ap = (el) => document.body.appendChild(el); // append element const apiDislikes = "https://returnyoutubedislikeapi.com/Votes?videoId="; // Api dislikes function FormatterNumber(num, digits) { const lookup = [ { value: 1, symbol: '', }, { value: 1e3, symbol: ' K', }, { value: 1e6, symbol: ' M', }, ]; const rx = /\.0+$|(\.[0-9]*[1-9])0+$/; const item = lookup .slice() .reverse() .find((item) => { return num >= item.value; }); return item ? (num / item.value).toFixed(digits).replace(rx, '$1') + item.symbol : '0'; } function paramsVideoURL() { const parametrosURL = new URLSearchParams(window.location.search); // Url parametros return parametrosURL.get('v'); } // Dislikes video async function videoDislike() { validoUrl = document.location.href; const validoVentana = $e('#below > ytd-watch-metadata > div'); if (validoVentana != undefined && document.location.href.split('?v=')[0].includes('youtube.com/watch')) { validoUrl = paramsVideoURL(); const urlShorts = `${apiDislikes}${validoUrl}`; try { const respuesta = await fetch(urlShorts); const datosShort = await respuesta.json(); const { dislikes } = datosShort; const dislikes_content = $e('#top-level-buttons-computed > segmented-like-dislike-button-view-model > yt-smartimation > div > div > dislike-button-view-model > toggle-button-view-model > button-view-model > button'); if (dislikes_content !== undefined) { dislikes_content.style = 'width: 90px'; dislikes_content.innerHTML = ` ${FormatterNumber(dislikes, 0)}`; } } catch (error) { console.log(error); } } } // dislikes shorts async function shortDislike() { validoUrl = document.location.href; const validoVentanaShort = $eAll( '#dislike-button > yt-button-shape > label > div > span' ); if (validoVentanaShort != undefined && document.location.href.split('/')[3] === 'shorts') { validoUrl = document.location.href.split('/')[4]; const urlShorts = `${apiDislikes}${validoUrl}`; try { const respuesta = await fetch(urlShorts); const datosShort = await respuesta.json(); const { dislikes } = datosShort; for (let i = 0; i < validoVentanaShort.length; i++) { validoVentanaShort[i].textContent = `${FormatterNumber( dislikes, 0 )}`; } } catch (error) { console.log(error); } } } // Url change in second load let prevUrl; let showDislikes = false; setInterval(() => { const svgDislike = $e('.svg-dislike-ico'); // Check svg in dom const currUrl = window.location.href; if (prevUrl !== undefined && currUrl !== prevUrl && !svgDislike && showDislikes) { setTimeout(async() => { await videoDislike(); await shortDislike(); },2000) } prevUrl = currUrl; }, 1000); // Create a Trusted Types policy const policy = window.trustedTypes?.createPolicy('default', { createHTML: (input) => input, }); // Styles for our enhancement panel GM_addStyle(` .html5-video-player.unstarted-mode,.html5-video-player.ended-mode { background-image: url('https://avatars.githubusercontent.com/u/54366580?v=4'); background-repeat: no-repeat; background-position: 50% 50%; display: flex; justify-content: center; align-items: center; } #yt-enhancement-panel { position: fixed; top: 60px; right: 20px; background-color: var(--yt-enhance-menu-bg, #ffffff); color: var(--yt-enhance-menu-text, #000000); border: 1px solid #cccccc; border-radius: 8px; padding: 15px; z-index: 9999; box-shadow: 0 2px 10px rgba(0,0,0,0.1); width: 300px; max-height: 80vh; overflow-y: auto; font-size: var(--yt-enhance-menu-font-size, 14px); } #yt-enhancement-panel h3 { margin-top: 0; color: #ff0000; } .enhancement-option { margin-bottom: 10px; } .color-picker { width: 100%; } .slider { width: 100%; } #toggle-panel { position: fixed; top: 10px; right: 180px; z-index: 10000; color: white; padding: 5px; border: none; cursor: pointer; display: flex; justify-content: center; transition: all 0.5s ease; width: 43px; border-radius: 100px; } #toggle-panel:hover { background-color: #fff; border-radius: 100px; } #icon-menu-settings { width: 24px; height: 24px; cursor: pointer; user-select: none; } .tab-buttons { display: flex; justify-content: space-between; margin-bottom: 15px; } .tab-button { background-color: #f0f0f0; border: none; padding: 5px 10px; cursor: pointer; border-radius: 4px; } .tab-button.active { background-color: #ff0000; color: white; } .tab-content { display: none; } .tab-content.active { display: block; } #import-export { margin-top: 15px; } #import-export textarea { width: 100%; height: 100px; } #menu-settings-icon { cursor: pointer; float: right; font-size: 20px; } .theme-option { margin-bottom: 15px; } .theme-option label { display: flex; align-items: center; } .theme-option { position: relative; width: auto; margin-bottom: 10px; padding: 10px; border-radius: 4px; cursor: pointer; } .theme-preview { position: absolute; top: 0; left: 0; right: 0; bottom: 0; border-radius: 10px; border: 1px solid #000; z-index: 1; } .theme-option input[type="radio"] { position: relative; z-index: 2; margin-right: 10px; cursor: pointer; } .theme-name { position: relative; z-index: 2; font-size: 15px; color: #fff; } .theme-option label { display: flex; align-items: center; width: 100%; position: relative; z-index: 2; } .buttons-tranlate { background: #000; font-size: 10px; border: none; color: #fbf4f4 !important; padding: 3px 0; margin-left: 10px; width: 70px; border-radius: 10px;} .buttons-tranlate:hover { cursor: pointer; background-color: #6b6b6b;} button.botones_div { margin: 0; padding: 0; } button:hover { color: #ec3203; } #eyes { opacity: 0; position: absolute; height: 24px; left: 0; width: 24px; } /* width */ ::-webkit-scrollbar { width: 4px; height: 10px; } /* Track */ ::-webkit-scrollbar-track { background: ##d5d5d5; } /* Handle */ ::-webkit-scrollbar-thumb { background: #000; } .containerButtons { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 10px; } #meta.ytd-playlist-panel-video-renderer { min-width: 0; padding: 0 8px; display: flexbox; display: flex; flex-direction: column-reverse; flex: 1; flex-basis: 0.000000001px; } .containerall { display: flex; align-items: center; justify-content: center; width: 50%; margin: auto; } } .container .botoncalidades { margin: 3px 2px; width: 24.6%; } .botoncalidades:first-child { background-color: #0af; } .botoncalidades:last-child { background-color: red; width: 100px; } .selectcalidades, .botoncalidades, .selectcalidadesaudio { width: 50%; height: 27.8px; background-color: #fff; color: #000; font-size: 25px; text-align: center; border: none; font-size: 20px; margin: 2px 2px; } .botoncalidades { width: 70px; height: 30px; background-color: rgb(4, 156, 22); border: 0px solid #000; color: #fff; font-size: 20px; border-radius: 10px; margin: 2px 2px; } .botoncalidades:hover, .bntcontainer:hover { cursor: pointer; } .ocultarframe, .ocultarframeaudio { display: none; } .checked_updates { cursor: pointer; } `); // botons bottom video player const thumbnailVideo = ` `; const modeReverse = ` `; const filterEyes = `