Greasy Fork is available in English.
Youtube-værktøjer Alt i ét lokalt Download mp4, MP3
Du vil måske også kunne lide Brugerdefinerede stickers
- // ==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.3.3// @author DeveloperMDCM// @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/// ==/UserScript==(function () {'use strict';let validoUrl = document.location.href;const $e = (el) => document.querySelector(el); // any elementconst $id = (el) => document.getElementById(el); // element by idconst $m = (el) => document.querySelectorAll(el); // multiple all elementsconst $cl = (el) => document.createElement(el); // create elementconst $sp = (el, pty) => document.documentElement.style.setProperty(el, pty); // set property variable cssconst $ap = (el) => document.body.appendChild(el); // append elementconst apiDislikes = "https://returnyoutubedislikeapi.com/Votes?videoId="; // Api dislikesfunction 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 parametrosreturn parametrosURL.get('v');}// Dislikes videoasync 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 = `<svg class="svg-dislike-icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M7 13v-8a1 1 0 0 0 -1 -1h-2a1 1 0 0 0 -1 1v7a1 1 0 0 0 1 1h3a4 4 0 0 1 4 4v1a2 2 0 0 0 4 0v-5h3a2 2 0 0 0 2 -2l-1 -5a2 3 0 0 0 -2 -2h-7a3 3 0 0 0 -3 3" /></svg>${FormatterNumber(dislikes, 0)}`;}} catch (error) {console.log(error);}}}// dislikes shortsasync function shortDislike() {validoUrl = document.location.href;const validoVentanaShort = $m('#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 loadlet prevUrl;let showDislikes = false;setInterval(() => {const svgDislike = $e('.svg-dislike-ico'); // Check svg in domconst 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 policyconst policy = window.trustedTypes?.createPolicy('default', {createHTML: (input) => input,});// Styles for our enhancement panelGM_addStyle(`#cinematics {position: absolute !important;width: 90vw !important;height: 100vh ;}#cinematics div {position: fixed;inset: 0px;pointer-events: none;transform: scale(1.5, 2);}#cinematics > div > div > canvas:nth-child(1), #cinematics > div > div > canvas:nth-child(2) {position: absolute !important;width: 90vw !important;height: 100vh ;}// .html5-video-player.unstarted-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%;margin: 0;padding: 0;border: none;background: none;}.slider {width: 100%;}#toggle-panel {position: fixed;top: 10px;right: 115px;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;opacity: 1 !important;}#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-button-active {background-color: #ff0000;color: white;border: none;border-radius: 2px;}.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;}.tab-button:hover {background-color: #ec3203 !important;color: #ffffff !important;cursor: pointer;}#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;}.containerButtons > button:hover {cursor: pointer;}#container.ytd-masthead {height: 56px;padding: 0 16px;display: flexbox;display: flex;flex-direction: row;align-items: center;justify-content: start;}body {padding: 0;margin: 0;overflow-y: scroll;overflow-x: hidden;}.style-scope.ytd-comments {overflow-y: auto;overflow-x: hidden;height: auto;}ytd-comment-view-model[is-reply] #author-thumbnail.ytd-comment-view-model yt-img-shadow.ytd-comment-view-model, ytd-comment-view-model[is-creator-reply] #author-thumbnail.ytd-comment-view-model yt-img-shadow.ytd-comment-view-model {width: 40px;height: 40px;border-radius: 50%;}img.yt-img-shadow {border-radius: 50% !important;}#author-thumbnail.ytd-comment-view-model yt-img-shadow.ytd-comment-view-model {width: 40px;height: 40px;border-radius: 50%;overflow: visible;}ytd-item-section-renderer.ytd-watch-next-secondary-r###lts-renderer {--ytd-item-section-item-margin: 8px;overflow-y: auto;overflow-x: hidden;height: auto;}.right-section.ytcp-header {display: flex;flex: 1;align-items: center;gap: 45px;justify-content: end;}#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;}#export-config, #import-config {width: 100%;display: flex;align-items: center;justify-content: center;gap: 10px;background-color: #ec3203;color: #ffffff;border: none;padding: 5px;}#export-config:hover, #import-config:hover {background-color: #ff0000;color: #ffffff;cursor: pointer;}.yt-image-avatar-download {position: absolute;bottom: -10px;right: -14px;border: none;z-index: 1000;background: transparent;color: var(--ytcp-text-primary);cursor: pointer;}#custom-classic-btn {display: flex;align-items: center;justify-content: center;background-color: rgba(255,255,255,0.1);border-radius: 50%;border: none;width: 48px;height: 48px;color: var(--yt-spec-icon-inactive);font-size: 24px;margin: 0px 8px;cursor: pointer;}#custom-classic-btn:hover {background-color: rgba(255,255,255,0.2);}`);// botons bottom video playerconst thumbnailVideo = `<button title="Image video" class="botones_div" type="button" id="imagen"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-photo-down" width="24"height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M15 8h.01"></path><path d="M12.5 21h-6.5a3 3 0 0 1 -3 -3v-12a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v6.5"></path><path d="M3 16l5 -5c.928 -.893 2.072 -.893 3 0l4 4"></path><path d="M14 14l1 -1c.653 -.629 1.413 -.815 2.13 -.559"></path><path d="M19 16v6"></path><path d="M22 19l-3 3l-3 -3"></path></svg></button>`;const filterEyes = `<div style="position:relative; "><button title="Filter eyes" class="botones_div" type="button"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brightness-half"width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M12 9a3 3 0 0 0 0 6v-6z"></path><pathd="M6 6h3.5l2.5 -2.5l2.5 2.5h3.5v3.5l2.5 2.5l-2.5 2.5v3.5h-3.5l-2.5 2.5l-2.5 -2.5h-3.5v-3.5l-2.5 -2.5l2.5 -2.5z"></path></svg><input id="eyes" list="presetColors" type="color" value="#ffffff"><datalist id="presetColors"><option value="#000000" /><option value="#fbff00" /><option value="#ff0000" /><option value="#00ff00" /><option value="#0000ff" /></datalist><div id="ojosprotect"style="position: fixed; pointer-events: none; width: 100%; height: 100%; left: 0px; top: 0px; opacity: 0.2; z-index: 10; display: block;"></div></div></button>`;const resetButton = `<button title="reset" class="botones_div" type="button" id="reset_button"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-power" width="24"height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M7 6a7.75 7.75 0 1 0 10 0"></path><path d="M12 4l0 8"></path></svg></button>`;const repeatVideo = `<button title="Repeat video" class="botones_div" type="button" id="repeatvideo"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-repeat" width="24"height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M4 12v-3a3 3 0 0 1 3 -3h13m-3 -3l3 3l-3 3"></path><path d="M20 12v3a3 3 0 0 1 -3 3h-13m3 3l-3 -3l3 -3"></path></svg></button>`;const downloadMp4Mp3 = `<button title="MP4" type="button" class="btn1 botones_div"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-download"width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M14 3v4a1 1 0 0 0 1 1h4"></path><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"></path><path d="M12 17v-6"></path><path d="M9.5 14.5l2.5 2.5l2.5 -2.5"></path></svg></button><button title="MP3" type="button" class="btn2 botones_div"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-music" width="24"height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M14 3v4a1 1 0 0 0 1 1h4"></path><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"></path><path d="M11 16m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M12 16l0 -5l2 1"></path></svg></button><button title="Close" type="button" class="btn3 botones_div"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-circle-x" width="24"height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"></path><path d="M10 10l4 4m0 -4l-4 4"></path></svg></button>`;const donwloadExternal = `<button title="External Download" type="button" class="external_link botones_div"><svg class="icon icon-tabler icon-tabler-external-link" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"></path><path d="M11 13l9 -9"></path><path d="M15 4h5v5"></path></svg></button>`;const viewExternalVideo = `<button title="view External no cookie" type="button" class="view_external_link botones_div"><svg width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M3 16m0 1a1 1 0 0 1 1 -1h3a1 1 0 0 1 1 1v3a1 1 0 0 1 -1 1h-3a1 1 0 0 1 -1 -1z" /><path d="M4 12v-6a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-6" /><path d="M12 8h4v4" /><path d="M16 8l-5 5" /></svg></button>`;const pictureToPicture = `<button title="Picture to picture" type="button" class="video_picture_to_picture botones_div"><svg width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M11 19h-6a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v4" /><path d="M14 14m0 1a1 1 0 0 1 1 -1h5a1 1 0 0 1 1 1v3a1 1 0 0 1 -1 1h-5a1 1 0 0 1 -1 -1z" /></svg></button>`;const screenShot = `<button title="Screenshot video" type="button" class="screenshot_video botones_div"><svg width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M15 8h.01" /><path d="M6 13l2.644 -2.644a1.21 1.21 0 0 1 1.712 0l3.644 3.644" /><path d="M13 13l1.644 -1.644a1.21 1.21 0 0 1 1.712 0l1.644 1.644" /><path d="M4 8v-2a2 2 0 0 1 2 -2h2" /><path d="M4 16v2a2 2 0 0 0 2 2h2" /><path d="M16 4h2a2 2 0 0 1 2 2v2" /><path d="M16 20h2a2 2 0 0 0 2 -2v-2" /></svg></button>`;const checkUpdates = `<button title="Check new updates" type="button" class="checked_updates botones_div"><svg width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4" /><path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4" /></svg></button>`;const bufferVideo = `<button title="Buffer video" type="button" class="buffer_video botones_div"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-align-box-right-stretch"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M15 17h2" /><path d="M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14z" /><path d="M11 12h6" /><path d="M13 7h4" /></svg></button>`;const menuBotones = `<main><div class="container"><form><div class="containerButtons">${thumbnailVideo}${bufferVideo}${filterEyes}${resetButton}${repeatVideo}${downloadMp4Mp3}${donwloadExternal}${viewExternalVideo}${pictureToPicture}${screenShot}${checkUpdates}</div><div></div></form></div><div class="content_collapsible_colors" style="margin-top: 10px"><form class="formulariodescarga" action=""><div class="containerall"><select class="selectcalidades ocultarframe" required><option selected disabled>Calidad del video / Quality video</option><option value="360">360p Mp4</option><option value="480">480p Mp4</option><option value="720">720p HD Mp4 Default</option><option value="1080">1080p FULL HD Mp4</option><option value="4k">2160p 4K WEBM</option><option value="8k">4320p 8K WEBM</option></select><iframe id="descargando" style="z-index: 99; border: none; height: 27.4px; width: 50%;" class="containerall ocultarframe" src="" frameborder="0"></iframe></div></form><form class="formulariodescargaaudio" action=""><div class="containerall"><select class="selectcalidadesaudio ocultarframeaudio" required><option selected disabled>Calidad del Audio / Quality Audio</option><option value="flac">Audio FLAC UHQ</option><option value="wav">Audio WAV UHQ</option><option value="mp3">Audio MP3 Default</option><option value="m4a">Audio M4A</option><option value="aac">Audio AAC</option><option value="opus">Audio OPUS</option><option value="ogg">Audio OGG</option></select><iframe id="descargandomp3" style="z-index: 99; border: none; height: 27.4px; width: 50%;" class="containerall ocultarframeaudio" src="" frameborder="0"></iframe></iframe></div></form></main></html>`;// Define themesconst themes = [{name: 'Default / Reload Page',gradient: '',textColor: '',raised: '',btnTranslate: '',CurrentProgressVideo: '',videoDuration: '',colorIcons: '',textLogo: '',primaryColor: '',secondaryColor: '',},{name: 'Midnight Blue',gradient: 'linear-gradient(135deg, #1e3a8a, #3b82f6)',textColor: '#ffffff',raised: '#f00',btnTranslate: '#000',CurrentProgressVideo: '#0f0',videoDuration: '#fff',colorIcons: '#fff',textLogo: '#f00',},{name: 'Forest Green',gradient: 'linear-gradient(135deg, #14532d, #22c55e)',textColor: '#ffffff',raised: '#303131',btnTranslate: '#000',CurrentProgressVideo: '#0f0',videoDuration: '#fff',colorIcons: '#fff',textLogo: '#f00',},{name: 'Sunset Orange',gradient: 'linear-gradient(135deg, #7c2d12, #f97316)',textColor: '#ffffff',raised: '#303131',btnTranslate: '#000',CurrentProgressVideo: '#0f0',videoDuration: '#fff',colorIcons: '#fff',textLogo: '#f00',},{name: 'Royal Purple',gradient: 'linear-gradient(135deg, #4c1d95, #8b5cf6)',textColor: '#ffffff',raised: '#303131',btnTranslate: '#000',CurrentProgressVideo: '#0f0',videoDuration: '#fff',colorIcons: '#fff',textLogo: '#f00',},{name: 'Cherry Blossom',gradient: 'linear-gradient(135deg, #a9005c, #fc008f)',textColor: '#ffffff',raised: '#fc008f',btnTranslate: '#000',CurrentProgressVideo: '#0f0',videoDuration: '#fff',colorIcons: '#fff',textLogo: '#f00',},{name: 'Red Dark',gradient: 'linear-gradient(135deg, #790909, #f70131)',textColor: '#ffffff',raised: '#303131',btnTranslate: '#000',CurrentProgressVideo: '#0f0',videoDuration: '#fff',colorIcons: '#fff',textLogo: '#f00',},{name: 'Raind ',gradient: 'linear-gradient(90deg, #3f5efb 0%, #fc466b) 100%',textColor: '#ffffff',raised: '#303131',btnTranslate: '#000',CurrentProgressVideo: '#0f0',videoDuration: '#fff',colorIcons: '#fff',textLogo: '#f00',},{name: 'Neon',gradient: 'linear-gradient(273deg, #ee49fd 0%, #6175ff 100%)',textColor: '#ffffff',raised: '#303131',btnTranslate: '#000',CurrentProgressVideo: '#0f0',videoDuration: '#fff',colorIcons: '#fff',textLogo: '#f00',},{name: 'Azure',gradient: 'linear-gradient(273deg, #0172af 0%, #74febd 100%)',textColor: '#ffffff',raised: '#303131',btnTranslate: '#000',CurrentProgressVideo: '#0f0',videoDuration: '#fff',colorIcons: '#fff',textLogo: '#f00',},{name: 'Butterfly',gradient: 'linear-gradient(273deg, #ff4060 0%, #fff16a 100%)',textColor: '#ffffff',raised: '#303131',btnTranslate: '#000',CurrentProgressVideo: '#0f0',videoDuration: '#fff',colorIcons: '#fff',textLogo: '#f00',},{name: 'Colombia',gradient:'linear-gradient(174deg, #fbf63f 0%, #0000bb 45%, #ff0000 99%)',textColor: '#ffffff',raised: '#303131',btnTranslate: '#000',CurrentProgressVideo: '#0f0',videoDuration: '#fff',colorIcons: '#fff',textLogo: '#f00',},];// Create our enhancement panelconst panel = $cl('div');panel.id = 'yt-enhancement-panel';// Generate theme options HTMLconst themeOptionsHTML = themes.map((theme, index) => `<label ><div class="theme-option"><div class="theme-preview" style="background: ${theme.gradient};"></div><input type="radio" name="theme" value="${index}" ${index === 0 ? 'checked' : ''}><span style="${theme.name === 'Default / Reload Page' ? 'color: red; ' : '' }" class="theme-name">${theme.name}</span></div></label>`).join('');// find atribute dark in domconst htmlElement = $e('html');const isDarkMode = htmlElement.hasAttribute('dark');let isDarkModeActive = isDarkMode;// Use Trusted Types to set innerHTMLconst panelHTML = policy? policy.createHTML(`<div style="display: flex;justify-content: space-between;align-items: center;gap: 3px;margin-bottom: 10px;"><h4 style="display: flex;align-items: center;gap: 10px;">YouTube Tools v2.3.3 <a target="_blank" href="https://github.com/DeveloperMDCM/Youtube-tools-extension"><svg style="background-color: white; border-radius: 5px;color: #000;" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" ><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" /></svg></a></h4><div style="display: flex; gap: 5px;"><span id="menu-settings-icon">⚙️</span><a href="https://update.greasyfork.org/scripts/460680/Youtube%20Tools%20All%20in%20one%20local%20download%20mp3%20mp4%20HIGT%20QUALITY%20return%20dislikes%20and%20more.user.js" target="_blank" class="checked_updates">🔄️</a><span style="cursor: pointer" class="close_menu_settings">❎</span></div></div><div class="tab-buttons"><button class="tab-button active" data-tab="general">General</button><button class="tab-button" data-tab="themes">Themes</button><button class="tab-button" data-tab="sidebar">Sidebar</button><button class="tab-button" data-tab="headers">Header</button></div><div id="general" class="tab-content active"><div class="enhancement-option"><label><input type="checkbox" id="hide-comments-toggle"> Hide Comments</label></div><div class="enhancement-option"><label><input type="checkbox" id="hide-sidebar-toggle"> Hide Sidebar</label></div><div class="enhancement-option"><label><input type="checkbox" id="autoplay-toggle"> Disable Autoplay</label></div><div class="enhancement-option"><label><input type="checkbox" id="subtitles-toggle"> Disable Subtitles</label></div><div class="enhancement-option"><label><input type="checkbox" id="dislikes-toggle"> Show Dislikes / Reload page</label></div><div class="enhancement-option"><label><input type="checkbox" id="themes-toggle"> Active Themes / Reload page</label></div><div class="enhancement-option"><label><input type="checkbox" id="translation-toggle"> Translate comments / Reload page</label></div><div class="enhancement-option"><label><input type="checkbox" id="reverse-mode-toggle"> Reverse mode</label></div><div class="enhancement-option"><label>Video Player Size: <span id="player-size-value">100</span>%</label> <button class="tab-button-active" id="reset-player-size">Reset video size</button><input type="range" id="player-size-slider" class="slider" min="50" max="150" value="100"></div><div class="enhancement-option"><label>Default video player quality: </label><select class="tab-button-active" id="select-video-qualitys-select"><option value="144">144</option><option value="240">240</option><option value="360">360</option><option value="480">480</option><option value="720">720</option><option value="1080">1080</option><option value="1440">1440</option><option value="2160">2160</option></select></div></div><div id="themes" class="tab-content" style="height: auto; max-height: 350px; overflow-y: auto;"><div class="themes-hidden"><h4>Choose a Theme</h4><p>Disable cinematic Lighting</p><label><div class="theme-option"><div class="theme-preview" style="background: dark;"></div><input type="radio" name="theme" value="custom"><span class="theme-name">Custom</span></div></label><label><div class="theme-option theme-selected-normal"><div class="theme-preview" style="background: dark;"></div><input type="radio" name="theme" value="normal"><span class="theme-name">Selected Themes</span></div></label><p>${isDarkModeActive ? '' : 'activate dark mode to use themes'}</p><div class="themes-options">${themeOptionsHTML}</div><div class="theme-custom-options"><div class="enhancement-option"><label>Progressbar Video:</label><input type="color" id="progressbar-color-picker" class="color-picker" value="#ff0000"></div><div class="enhancement-option"><label>Background Color:</label><input type="color" id="bg-color-picker" class="color-picker" value="#000000"></div><div class="enhancement-option"><label>Primary Color:</label><input type="color" id="primary-color-picker" class="color-picker" value="#ffffff"></div><div class="enhancement-option"><label>Secondary Color:</label><input type="color" id="secondary-color-picker" class="color-picker" value="#ffffff"></div><div class="enhancement-option"><label>Header Color:</label><input type="color" id="header-color-picker" class="color-picker" value="#000000"></div><div class="enhancement-option"><label>Icons Color:</label><input type="color" id="icons-color-picker" class="color-picker" value="#ffffff"></div><div class="enhancement-option"><label>Menu Color:</label><input type="color" id="menu-color-picker" class="color-picker" value="#000000"></div><div class="enhancement-option"><label>Line Color Preview:</label><input type="color" id="line-color-picker" class="color-picker" value="#ff0000"></div><div class="enhancement-option"><label>Time Color Preview:</label><input type="color" id="time-color-picker" class="color-picker" value="#ffffff"></div></div></div></div><div id="sidebar" class="tab-content"><h4>Available in next update</h4></div><div id="headers" class="tab-content"><h4>Available in next update</h4></div><div id="menu-settings" class="tab-content"><h4 style="margin: 10px 0">Menu Appearance</h4><div class="enhancement-option"><label>Menu Background Color:</label><input type="color" id="menu-bg-color-picker" class="color-picker" value="#000000"></div><div class="enhancement-option"><label>Menu Text Color:</label><input type="color" id="menu-text-color-picker" class="color-picker" value="#ff0000"></div>"</div><div id="import-export"><div style="display: flex;width: 100%;justify-content: space-between;"><button id="export-config">Export<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" ><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z" /><path d="M9 15h6" /><path d="M12.5 17.5l2.5 -2.5l-2.5 -2.5" /></svg></button><button id="import-config">Import<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z" /><path d="M15 15h-6" /><path d="M11.5 17.5l-2.5 -2.5l2.5 -2.5" /></svg></button></div><textarea id="config-data" placeholder="Paste configuration here to import"></textarea></div>`): `<div style="display: flex;justify-content: space-between;align-items: center;gap: 3px;margin-bottom: 10px;"><h4 style="display: flex;align-items: center;gap: 10px;">YouTube Tools v2.3.3 <a target="_blank" href="https://github.com/DeveloperMDCM/Youtube-tools-extension"><svg style="background-color: white; border-radius: 5px;color: #000;" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" ><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" /></svg></a></h4><div style="display: flex; gap: 5px;"><span id="menu-settings-icon">⚙️</span><a href="https://update.greasyfork.org/scripts/460680/Youtube%20Tools%20All%20in%20one%20local%20download%20mp3%20mp4%20HIGT%20QUALITY%20return%20dislikes%20and%20more.user.js" target="_blank" class="checked_updates">🔄️</a><span style="cursor: pointer" class="close_menu_settings">❎</span></div></div><div class="tab-buttons"><button class="tab-button active" data-tab="general">General</button><button class="tab-button" data-tab="themes">Themes</button><button class="tab-button" data-tab="sidebar">Sidebar</button><button class="tab-button" data-tab="headers">Header</button></div><div id="general" class="tab-content active"><div class="enhancement-option"><label><input type="checkbox" id="hide-comments-toggle"> Hide Comments</label></div><div class="enhancement-option"><label><input type="checkbox" id="hide-sidebar-toggle"> Hide Sidebar</label></div><div class="enhancement-option"><label><input type="checkbox" id="autoplay-toggle"> Disable Autoplay</label></div><div class="enhancement-option"><label><input type="checkbox" id="subtitles-toggle"> Disable Subtitles</label></div><div class="enhancement-option"><label><input type="checkbox" id="dislikes-toggle"> Show Dislikes / Reload page</label></div><div class="enhancement-option"><label><input type="checkbox" id="themes-toggle"> Active Themes / Reload page</label></div><div class="enhancement-option"><label><input type="checkbox" id="translation-toggle"> Translate comments / Reload page</label></div><div class="enhancement-option"><label><input type="checkbox" id="reverse-mode-toggle"> Reverse mode</label></div><div class="enhancement-option"><label>Video Player Size: <span id="player-size-value">100</span>%</label> <button class="tab-button-active" id="reset-player-size">Reset video size</button><input type="range" id="player-size-slider" class="slider" min="50" max="150" value="100"></div><div class="enhancement-option"><label>Default video player quality: </label><select class="tab-button-active" id="select-video-qualitys-select"><option value="144">144</option><option value="240">240</option><option value="360">360</option><option value="480">480</option><option value="720">720</option><option value="1080">1080</option><option value="1440">1440</option><option value="2160">2160</option></select></div></div><div id="themes" class="tab-content" style="height: auto; max-height: 350px; overflow-y: auto;"><div class="themes-hidden"><h4>Choose a Theme</h4><p>Disable cinematic Lighting</p><label><div class="theme-option"><div class="theme-preview" style="background: dark;"></div><input type="radio" name="theme" value="custom"><span class="theme-name">Custom</span></div></label><label><div class="theme-option theme-selected-normal"><div class="theme-preview" style="background: dark;"></div><input type="radio" name="theme" value="normal"><span class="theme-name">Selected Themes</span></div></label><p>${isDarkModeActive ? '' : 'activate dark mode to use themes'}</p><div class="themes-options">${themeOptionsHTML}</div><div class="theme-custom-options"><div class="enhancement-option"><label>Progressbar Video:</label><input type="color" id="progressbar-color-picker" class="color-picker" value="#ff0000"></div><div class="enhancement-option"><label>Background Color:</label><input type="color" id="bg-color-picker" class="color-picker" value="#000000"></div><div class="enhancement-option"><label>Primary Color:</label><input type="color" id="primary-color-picker" class="color-picker" value="#ffffff"></div><div class="enhancement-option"><label>Secondary Color:</label><input type="color" id="secondary-color-picker" class="color-picker" value="#ffffff"></div><div class="enhancement-option"><label>Header Color:</label><input type="color" id="header-color-picker" class="color-picker" value="#000000"></div><div class="enhancement-option"><label>Icons Color:</label><input type="color" id="icons-color-picker" class="color-picker" value="#ffffff"></div><div class="enhancement-option"><label>Menu Color:</label><input type="color" id="menu-color-picker" class="color-picker" value="#000000"></div><div class="enhancement-option"><label>Line Color Preview:</label><input type="color" id="line-color-picker" class="color-picker" value="#ff0000"></div><div class="enhancement-option"><label>Time Color Preview:</label><input type="color" id="time-color-picker" class="color-picker" value="#ffffff"></div></div></div></div><div id="sidebar" class="tab-content"><h4>Available in next update</h4></div><div id="headers" class="tab-content"><h4>Available in next update</h4></div><div id="menu-settings" class="tab-content"><h4 style="margin: 10px 0">Menu Appearance</h4><div class="enhancement-option"><label>Menu Background Color:</label><input type="color" id="menu-bg-color-picker" class="color-picker" value="#000000"></div><div class="enhancement-option"><label>Menu Text Color:</label><input type="color" id="menu-text-color-picker" class="color-picker" value="#ff0000"></div></div><div id="import-export"><div style="display: flex;width: 100%;justify-content: space-between;"><button id="export-config" style="width: 100%;display: flex;align-items: center;justify-content: center;">Export<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" ><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z" /><path d="M9 15h6" /><path d="M12.5 17.5l2.5 -2.5l-2.5 -2.5" /></svg></button><button id="import-config" style="width: 100%;display: flex;align-items: center;justify-content: center;">Import<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z" /><path d="M15 15h-6" /><path d="M11.5 17.5l-2.5 -2.5l2.5 -2.5" /></svg></button></div><textarea id="config-data" placeholder="Paste configuration here to import"></textarea></div>`;panel.innerHTML = panelHTML;$ap(panel);// Create toggle buttonconst toggleButton = $cl('div');toggleButton.id = 'toggle-panel';const icon = $cl('img');icon.id = 'icon-menu-settings';icon.src ='https://cdn.iconscout.com/icon/premium/png-512-thumb/settings-782-1095915.png?f=webp&w=256';toggleButton.appendChild(icon);// Add panel and toggle button to the page$ap(panel);$ap(toggleButton);// Toggle panel visibilitylet openMenu = false;toggleButton.addEventListener('click', () => {openMenu = !openMenu;// openMenu// ? (toggleButton.style.backgroundColor = '#f00')// : (toggleButton.style.backgroundColor = 'transparent');panel.style.display = panel.style.display === 'none' ? 'block' : 'none';});const close_menu_settings = $e('.close_menu_settings');close_menu_settings.addEventListener('click', () => {openMenu = !openMenu;panel.style.display = panel.style.display === 'none' ? 'block' : 'none';});// Tab functionalityconst tabButtons = $m('.tab-button');const tabContents = $m('.tab-content');tabButtons.forEach((button) => {button.addEventListener('click', () => {const tabName = button.getAttribute('data-tab');tabButtons.forEach((btn) => btn.classList.remove('active'));tabContents.forEach((content) => content.classList.remove('active'));button.classList.add('active');$id(tabName).classList.add('active');});});// Menu settings icon functionality$id('menu-settings-icon').addEventListener('click', () => {tabButtons.forEach((btn) => btn.classList.remove('active'));tabContents.forEach((content) => content.classList.remove('active'));$id('menu-settings').classList.add('active');});// Function to save settingsfunction saveSettings() {const settings = {theme: $e('input[name="theme"]:checked').value,bgColorPicker: $id('bg-color-picker').value,progressbarColorPicker: $id('progressbar-color-picker').value,primaryColorPicker: $id('primary-color-picker').value,secondaryColorPicker: $id('secondary-color-picker').value,headerColorPicker: $id('header-color-picker').value,iconsColorPicker: $id('icons-color-picker').value,menuColorPicker: $id('menu-color-picker').value,lineColorPicker: $id('line-color-picker').value,timeColorPicker: $id('time-color-picker').value,dislikes: $id('dislikes-toggle').checked,themes: $id('themes-toggle').checked,translation: $id('translation-toggle').checked,reverseMode: $id('reverse-mode-toggle').checked,hideComments: $id('hide-comments-toggle').checked,hideSidebar: $id('hide-sidebar-toggle').checked,disableAutoplay: $id('autoplay-toggle').checked,// cinematicLighting: $id('cinematic-lighting-toggle').checked,disabl###btitles: $id('subtitles-toggle').checked,// fontSize: $id('font-size-slider').value,playerSize: $id('player-size-slider').value,selectVideoQuality: $id('select-video-qualitys-select').value,menuBgColor: $id('menu-bg-color-picker').value,menuTextColor: $id('menu-text-color-picker').value,// menuFontSize: $id('menu-font-size-slider').value,};GM_setValue('ytSettingsMDCM', JSON.stringify(settings));}// Function to load settingsfunction loadSettings() {const settings = JSON.parse(GM_getValue('ytSettingsMDCM', '{}'));if (settings.theme) {$e(`input[name="theme"][value="${settings.theme}"]`).checked = true;}$id('bg-color-picker').value = settings.bgColorPicker || '#000000';$id('progressbar-color-picker').value = settings.progressbarColorPicker || '#ff0000';$id('primary-color-picker').value = settings.primaryColorPicker || '#ffffff';$id('secondary-color-picker').value = settings.secondaryColorPicker || '#ffffff';$id('header-color-picker').value = settings.headerColorPicker || '#000';$id('icons-color-picker').value = settings.iconsColorPicker || '#ffffff';$id('menu-color-picker').value = settings.menuColorPicker || '#000';$id('line-color-picker').value = settings.lineColorPicker || '#ff0000';$id('time-color-picker').value = settings.timeColorPicker || '#ffffff';$id('dislikes-toggle').checked = settings.dislikes || true;$id('themes-toggle').checked = settings.themes || false;$id('translation-toggle').checked = settings.translation || false;$id('reverse-mode-toggle').checked = settings.reverseMode || false;$id('hide-comments-toggle').checked = settings.hideComments || false;$id('hide-sidebar-toggle').checked = settings.hideSidebar || false;$id('autoplay-toggle').checked = settings.disableAutoplay || false;// $id('cinematic-lighting-toggle').checked = settings.cinematicLighting || false;$id('subtitles-toggle').checked = settings.disabl###btitles || false;// $id('font-size-slider').value = settings.fontSize || 16;$id('player-size-slider').value = settings.playerSize || 100;$id('select-video-qualitys-select').value = settings.selectVideoQuality || '720';$id('menu-bg-color-picker').value = settings.menuBgColor || '#000000';$id('menu-text-color-picker').value = settings.menuTextColor || '#ffffff';// $id('menu-font-size-slider').value = settings.menuFontSize || 14;updateSliderValues();setTimeout(() => {applySettings();if(settings.dislikes) {videoDislike();shortDislike();showDislikes = true;}}, 500);}// Function to update slider valuesfunction updateSliderValues() {// $id('font-size-value').textContent = $id('font-size-slider').value;$id('player-size-value').textContent = $id('player-size-slider').value;// $id('menu-font-size-value').textContent = $id('menu-font-size-slider').value;}$id('reset-player-size').addEventListener('click', () => {$id('player-size-slider').value = 100;updateSliderValues();applySettings();});// Function to apply settingsfunction applySettings() {const formulariodescarga = $e('.formulariodescarga');const formulariodescargaaudio = $e('.formulariodescargaaudio');if (formulariodescarga != undefined) {formulariodescarga.classList.add('ocultarframe');formulariodescargaaudio.classList.add('ocultarframe');}const settings = {theme: $e('input[name="theme"]:checked').value,bgColorPicker: $id('bg-color-picker').value,progressbarColorPicker: $id('progressbar-color-picker').value,primaryColorPicker: $id('primary-color-picker').value,secondaryColorPicker: $id('secondary-color-picker').value,headerColorPicker: $id('header-color-picker').value,iconsColorPicker: $id('icons-color-picker').value,menuColorPicker: $id('menu-color-picker').value,lineColorPicker: $id('line-color-picker').value,timeColorPicker: $id('time-color-picker').value,dislikes: $id('dislikes-toggle').checked,themes: $id('themes-toggle').checked,translation: $id('translation-toggle').checked,reverseMode: $id('reverse-mode-toggle').checked,hideComments: $id('hide-comments-toggle').checked,hideSidebar: $id('hide-sidebar-toggle').checked,disableAutoplay: $id('autoplay-toggle').checked,// cinematicLighting: $id('cinematic-lighting-toggle').checked,disabl###btitles: $id('subtitles-toggle').checked,// fontSize: $id('font-size-slider').value,playerSize: $id('player-size-slider').value,selectVideoQuality: $id('select-video-qualitys-select').value,menuBgColor: $id('menu-bg-color-picker').value,menuTextColor: $id('menu-text-color-picker').value,// menuFontSize: $id('menu-font-size-slider').value,};renderizarButtons();function isFullscreen() {return document.fullscreenElement !== null;}document.addEventListener("fullscreenchange", () => {let panel = $e('#toggle-panel');if (isFullscreen()) {panel.style.opacity = 0;} else {panel.style.opacity = 1;}});// Hide commentsconst commentsSection = $id('comments');if (commentsSection) {commentsSection.style.display = settings.hideComments ? 'none' : 'block';}// Active inactive Themesconst themesMenuSection = $e('.themes-hidden');if (themesMenuSection) {themesMenuSection.style.display = settings.themes ? 'block' : 'none';}// Hide sidebarconst sidebarSection = $e('#secondary > #secondary-inner');if (sidebarSection) {sidebarSection.classList.add('side-moi');const sidebarSection2 = $e('.side-moi');sidebarSection2.style.display = settings.hideSidebar ? 'none' : 'block';}// Disable autoplayconst autoplayToggle = $e('.ytp-autonav-toggle-button');if (autoplayToggle) {const isCurrentlyOn =autoplayToggle.getAttribute('aria-checked') === 'true';if (settings.disableAutoplay && isCurrentlyOn) {autoplayToggle.click();} else if (!settings.disableAutoplay && !isCurrentlyOn) {autoplayToggle.click();}}// Disable subtitlesconst subtitleToggle = $e('.ytp-subtitles-button');if (subtitleToggle) {const isCurrentlyOn =subtitleToggle.getAttribute('aria-pressed') === 'true';if (settings.disabl###btitles && isCurrentlyOn) {subtitleToggle.click();} else if (!settings.disabl###btitles && !isCurrentlyOn) {subtitleToggle.click();}}// Disable cinematicLighting// const buttonSettingVideo = $e(".ytp-settings-button");// if(buttonSettingVideo && !settings.cinematicLighting) {// buttonSettingVideo.click();// setTimeout(() => {// buttonSettingVideo.click();// },50)// }// Adjust font size// $e('body').style.fontSize = `${settings.fontSize}px`;// Adjust player sizeconst player = $e('video');if (player) {player.style.transform = `scale(${settings.playerSize / 100})`;}// selected video qualityconst video = $e('div#movie_player');let ytPlayerQuality = localStorage.getItem('yt-player-quality');$e('#select-video-qualitys-select').addEventListener('change', () => {applySettings();})if (video != undefined) {if (ytPlayerQuality) {let qualitySettings = JSON.parse(ytPlayerQuality);qualitySettings.data = JSON.stringify({ quality: settings.selectVideoQuality, previousQuality: 240 });localStorage.setItem('yt-player-quality', JSON.stringify(qualitySettings));} else {let defaultQualitySettings = {data: JSON.stringify({ quality: 720, previousQuality: 240 }),expiration: Date.now() + (365 * 24 * 60 * 60 * 1000),creation: Date.now()};localStorage.setItem('yt-player-quality', JSON.stringify(defaultQualitySettings));}}// Apply menu appearance settings$sp('--yt-enhance-menu-bg', settings.menuBgColor);$sp('--yt-enhance-menu-text', settings.menuTextColor);// $sp('--yt-enhance-menu-font-size', `${settings.menuFontSize}px`);// Apply themeconst selectedTheme = themes[settings.theme];const isThemeCustom = $e(`input[name="theme"][value="custom"]`).checked;const isThemeNormal = $e(`input[name="theme"][value="normal"]`).checked;const themeCustomOptions = $e('.theme-custom-options');const themeNormal = $e('.theme-selected-normal');if(isThemeCustom != undefined) {themeNormal.style.display = "block"themeCustomOptions.style.display = "block";$e('.themes-options').style.display = "none";}if(isThemeNormal) {$e(`input[name="theme"][value="custom"]`).checked = false;}function checkDarkMode() {if(settings.themes) {if (isDarkMode && !isThemeCustom) {// Apply theme$e('.themes-options').style.display = "block";themeNormal.style.display = "none";themeCustomOptions.style.display = "none";if(settings.theme === 'normal') {$e(`input[name="theme"][value="0"]`).checked = true;// applySettings();} else {$sp('--yt-spec-base-background', selectedTheme.gradient);$sp('--yt-spec-text-primary', selectedTheme.textColor);$sp('--yt-spec-text-secondary', selectedTheme.textColor);$sp('--yt-spec-menu-background', selectedTheme.gradient);$sp('--yt-spec-icon-inactive', selectedTheme.textColor);$sp('--yt-spec-brand-icon-inactive', selectedTheme.textColor);$sp('--yt-spec-brand-icon-active', selectedTheme.gradient);$sp('--yt-spec-static-brand-red', selectedTheme.gradient); // line current time$sp('--yt-spec-raised-background', selectedTheme.raised);$sp('--yt-spec-static-brand-red', selectedTheme.CurrentProgressVideo);$sp('--yt-spec-static-brand-white', selectedTheme.textColor);$sp('--ytd-searchbox-background', selectedTheme.gradient);$sp('--ytd-searchbox-text-color', selectedTheme.textColor);$sp('--ytcp-text-primary', settings.textColor);GM_addStyle(`.botones_div {background-color: transparent;border: none;color: #999999;user-select: none;}.ytp-menuitem[aria-checked=true] .ytp-menuitem-toggle-checkbox {background: ${selectedTheme.gradient} !important;}#background.ytd-masthead { background: ${selectedTheme.gradient} !important; }.ytp-swatch-background-color {background: ${selectedTheme.gradient} !important;}#shorts-container, #page-manager.ytd-app {background: ${selectedTheme.gradient.replace(/(#[0-9a-fA-F]{6})/g, `$1${36}`)};}ytd-engagement-panel-title-header-renderer[shorts-panel] #header.ytd-engagement-panel-title-header-renderer {background: ${selectedTheme.gradient} !important;}.buttons-tranlate {background: ${selectedTheme.btnTranslate} !important;}.badge-shape-wiz--thumbnail-default {color: ${selectedTheme.videoDuration} !important;background: ${selectedTheme.gradient} !important;}#logo-icon {color: ${selectedTheme.textLogo} !important;}.yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--text {color: ${selectedTheme.iconsColor} !important;}.ytd-topbar-menu-button-renderer #button.ytd-topbar-menu-button-renderer {color: ${selectedTheme.iconsColor} !important;}.yt-spec-icon-badge-shape--style-overlay .yt-spec-icon-badge-shape__icon {color: ${selectedTheme.iconsColor} !important;}.ytp-svg-fill {fill: ${selectedTheme.iconsColor} !important;}#ytp-id-30,#ytp-id-17,#ytp-id-19,#ytp-id-20{fill: ${selectedTheme.iconsColor} !important;}`);}} else {$sp('--yt-spec-base-background', settings.bgColorPicker);$sp('--yt-spec-text-primary', settings.primaryColorPicker);$sp('--yt-spec-text-secondary', settings.secondaryColorPicker);$sp('--yt-spec-menu-background', settings.menuColorPicker);$sp('--yt-spec-icon-inactive', settings.iconsColorPicker);$sp('--yt-spec-brand-icon-inactive', settings.primaryColorPicker);$sp('--yt-spec-brand-icon-active', settings.primaryColorPicker);$sp('--yt-spec-raised-background', settings.headerColorPicker);$sp('--yt-spec-static-brand-red', settings.lineColorPicker);$sp('--yt-spec-static-brand-white', settings.timeColorPicker);$sp('--ytd-searchbox-background', settings.primaryColorPicker);$sp('--ytd-searchbox-text-color', settings.secondaryColorPicker);$sp('--ytcp-text-primary', settings.primaryColorPicker);GM_addStyle(`.html5-video-player {color: ${settings.primaryColorPicker} !important;}.ytp-volume-slider-handle:before, .ytp-volume-slider-handle, .ytp-tooltip.ytp-preview:not(.ytp-text-detail) {background-color: ${settings.iconsColorPicker} !important;}.ytp-autonav-toggle-button[aria-checked=true] {background-color: ${settings.iconsColorPicker} !important;}.tp-yt-iron-icon {fill: ${settings.iconsColorPicker} !important;}#columns.style-scope.ytd-watch-flexy {flex-direction: ${settings.reverseMode ? 'row-reverse' : 'row'} !important;}.botones_div {background-color: transparent;border: none;color: ${settings.iconsColorPicker} !important;user-select: none;}.ytp-volume-slider-handle:before, .ytp-volume-slider-handle, .ytp-tooltip.ytp-preview:not(.ytp-text-detail){background-color:}#container.ytd-searchbox {color: red !important;}.ytp-menuitem[aria-checked=true] .ytp-menuitem-toggle-checkbox {background: ${settings.primaryColorPicker} !important;}.yt-spec-icon-shape {display: flex;align-items: center;justify-content: center;width: 100%;height: 100%;color: ${settings.iconsColorPicker} !important;}.ytp-time-current, .ytp-time-separator, .ytp-time-duration {color: ${settings.iconsColorPicker} !important;}#background.ytd-masthead { background: ${settings.headerColorPicker} !important; }.ytp-swatch-background-color {background: ${settings.progressbarColorPicker} !important;}#shorts-container, #page-manager.ytd-app {background: ${settings.bgColorPicker}36;}ytd-engagement-panel-title-header-renderer[shorts-panel] #header.ytd-engagement-panel-title-header-renderer {background: ${settings.bgColorPicker} !important;}.badge-shape-wiz--thumbnail-default {color: ${settings.timeColorPicker} !important;background: ${settings.secondaryColor} !important;}#logo-icon {color: ${settings.primaryColorPicker} !important;}.yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--text {color: ${settings.iconsColorPicker} !important;}.ytd-topbar-menu-button-renderer #button.ytd-topbar-menu-button-renderer {color: ${settings.iconsColorPicker} !important;}.yt-spec-icon-badge-shape--style-overlay .yt-spec-icon-badge-shape__icon {color: ${settings.iconsColorPicker} !important;}.ytp-svg-fill {fill: ${settings.iconsColorPicker} !important;}#ytp-id-30,#ytp-id-17,#ytp-id-19,#ytp-id-20{fill: ${settings.iconsColorPicker} !important;}`);}} else {GM_addStyle(`.botones_div {background-color: transparent;border: none;color: #ccc !important;user-select: none;}`)}}checkDarkMode();let currentUrl = window.location.href;let urlCheckInterval = setInterval(function () {if (window.location.href !== currentUrl) {currentUrl = window.location.href;checkUrlChange();}}, 1000);function checkUrlChange() {setTimeout(() => {applySettings();}, 1000);clearInterval(urlCheckInterval);}let traducido; // Texto traducidolet urlLista; // Url listaasync function traductor() {const texto = $m('#content-text');if ($e('.buttons-tranlate')) return;let o = `?client=dict-chrome-ex&sl=auto&tl=${navigator.language}&q=`;for (let i = 0; i < texto.length; i++) {const botonTraducir = $cl('BUTTON');botonTraducir.classList.add('buttons-tranlate');botonTraducir.textContent = 'Translate';botonTraducir.setAttribute('id', `btn${i}`);texto[i].insertAdjacentElement('afterend', botonTraducir);const mdcm = $m(`.buttons-tranlate`);mdcm[i].onclick = function () {traducido = o;urlLista = traducido + texto[i].textContent;fetch('https://translate.googleapis.com/translate_a/t' + urlLista) //API.then((response) => response.json()).then((datos) => {texto[i].textContent = datos[0][0];mdcm[i].textContent = 'Translated';});};}}function limpiarHTML(selector) {$m(selector).forEach((button) => button.remove());}const debounce = (func, delay) => {let timeout;return (...args) => {clearTimeout(timeout);timeout = setTimeout(() => func(...args), delay);};};const detectarScroll = () => {const avatars = $m('#author-thumbnail-button #img.style-scope.yt-img-shadow');if (avatars.length > 0) {limpiarHTML('.yt-image-avatar-download');agregarBotonesDescarga();}const divEl = $e('#content-text');const divEl2 = $e('ytd-item-section-renderer[static-comments-header] #contents');if (settings.translation) {if (divEl !== undefined || divEl2 !== undefined) {limpiarHTML('.buttons-tranlate');traductor();}}};const detectarScrollDebounced = debounce(detectarScroll, 500);window.addEventListener('scroll', detectarScrollDebounced, { passive: true });const observarScrollEnElementos = () => {document.querySelectorAll('*').forEach((el) => {if (el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth) {el.addEventListener('scroll', detectarScrollDebounced, { passive: true });}});};observarScrollEnElementos();const observer = new MutationObserver(observarScrollEnElementos);observer.observe(document.body, { childList: true, subtree: true });function agregarBotonesDescarga() {const avatars = $m('#author-thumbnail-button #img.style-scope.yt-img-shadow');avatars.forEach((img) => {if (img.parentElement.querySelector('.yt-image-avatar-download')) return;const button = $cl('button');button.innerHTML = '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-photo-down"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M15 8h.01" /><path d="M12.5 21h-6.5a3 3 0 0 1 -3 -3v-12a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v6.5" /><path d="M3 16l5 -5c.928 -.893 2.072 -.893 3 0l4 4" /><path d="M14 14l1 -1c.653 -.629 1.413 -.815 2.13 -.559" /><path d="M19 16v6" /><path d="M22 19l-3 3l-3 -3" /></svg>';button.classList.add('yt-image-avatar-download');// Asigna la funcionalidad de descargabutton.onclick = async function () {try {const imageUrl = img.src.split('=')[0];const response = await fetch(imageUrl);const blob = await response.blob();const blobUrl = URL.createObjectURL(blob);const parentComment = img.closest('ytd-comment-thread-renderer, ytd-comment-renderer');const nameElement = parentComment?.querySelector('#author-text');let authorName = nameElement ? nameElement.textContent.trim() : 'avatar';authorName = authorName.replace(/[\/\\:*?"<>|]/g, '');const link = $cl('a');link.href = blobUrl;link.download = `${authorName}_avatar.jpg` || 'avatar.jpg';document.body.appendChild(link);link.click();document.body.removeChild(link);URL.revokeObjectURL(blobUrl);} catch (error) {console.error('Error al descargar la imagen:', error);}};// Agrega el botón al contenedor de la imagenimg.parentElement.style.position = 'relative'; // Asegura que el botón se posicione correctamenteimg.parentElement.appendChild(button);});}const BUTTON_ID = 'custom-classic-btn';const redirectToClassic = () => {const videoId = window.location.pathname.split('/').pop();const classicUrl = `https://www.youtube.com/watch?v=${videoId}`;window.open(classicUrl, '_blank');const videoElement = document.querySelector('video');if (videoElement) {videoElement.pause();} else {console.warn('No se encontró el elemento de video');}};const createButton = () => {const button = document.createElement('button');button.id = BUTTON_ID;button.innerHTML = '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-screen-share"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M21 12v3a1 1 0 0 1 -1 1h-16a1 1 0 0 1 -1 -1v-10a1 1 0 0 1 1 -1h9" /><path d="M7 20l10 0" /><path d="M9 16l0 4" /><path d="M15 16l0 4" /><path d="M17 4h4v4" /><path d="M16 9l5 -5" /></svg>'; // Cambia el icono si quieresbutton.title = 'Classic mode';button.onclick = redirectToClassic;return button;};const insertButtons = () => {const ShortVisible = document.location.href.split('/')[3] === 'shorts';if(ShortVisible) {document.querySelectorAll('#actions').forEach(actionsContainer => {if (!actionsContainer.querySelector(`#${BUTTON_ID}`)) {actionsContainer.prepend(createButton());}});}};const observeDOM = () => {const observer = new MutationObserver(() => {insertButtons();});observer.observe(document.body, {childList: true,subtree: true});};insertButtons();observeDOM();const targetNode = $e('body');if (targetNode != undefined) {const element = $e('ytd-item-section-renderer[static-comments-header] #contents');if(element != undefined && settings.theme !== 'custom') {const observerElementDom = (elem) => {const observer = new IntersectionObserver(entries => {if(entries[0].isIntersecting) {element.style.background = `${selectedTheme.gradient ?? ''}`;} else {return}})return observer.observe($e(`${elem}`))}observerElementDom('ytd-item-section-renderer[static-comments-header] #contents')}}saveSettings();}let validoBotones = true;function renderizarButtons() {const addButton = $e('.style-scope .ytd-watch-metadata');const addButton2 = $e('#contents');if (addButton != undefined && validoBotones) {validoBotones = false;const isVisible = !!(addButton.offsetWidth ||addButton.offsetHeight ||addButton.getClientRects().length);if (isVisible) {addButton.insertAdjacentHTML("beforebegin", menuBotones);} else if (addButton2 != undefined) {addButton.insertAdjacentHTML("beforebegin", menuBotones);}}// Formulario de botones para descargar// Elementos del DOMconst formulariodescarga = $e('.formulariodescarga');const formulariodescargaaudio = $e('.formulariodescargaaudio');const framedescarga = $e('#descargando');const framedescargamp3 = $e('#descargandomp3');const btn1mp4 = $e('.btn1');const btn2mp3 = $e('.btn2');const btn3cancel = $e('.btn3');const selectcalidades = $e('.selectcalidades');const selectcalidadesaudio = $e('.selectcalidadesaudio');// Previene el envío de formularios[formulariodescarga, formulariodescargaaudio].forEach((form) => {form?.addEventListener('click', (e) => e.preventDefault());});// Manejo del cambio de calidadselectcalidades?.addEventListener('change', (e) => {framedescarga.src = `https://loader.to/api/button/?url=${window.location.href}&f=${e.target.value}&color=0af`;framedescarga.classList.remove('ocultarframe');});selectcalidadesaudio?.addEventListener('change', (e) => {framedescargamp3.src = `https://loader.to/api/button/?url=${window.location.href}&f=${e.target.value}&color=049c16`;framedescargamp3.classList.remove('ocultarframeaudio');});// Ocultar formularios al cancelarbtn3cancel?.addEventListener('click', () => {formulariodescarga.style.display = 'none';formulariodescargaaudio.style.display = 'none';});// Función para alternar visibilidad de formulariosconst mostrarFormulario = (formulario, select, frame, otroFormulario, otroSelect, otroFrame) => {formulario.classList.remove('ocultarframe');formulario.style.display = '';select.classList.remove('ocultarframeaudio');frame.classList.add('ocultarframeaudio');// Ocultar el otro formulario y sus elementosotroFormulario.classList.add('ocultarframe');otroSelect.classList.add('ocultarframeaudio');otroFrame.classList.add('ocultarframeaudio');// Reiniciar formularioformulario.reset();};// Mostrar formulario MP4btn1mp4?.addEventListener('click', () => {mostrarFormulario(formulariodescarga, selectcalidades, framedescarga,formulariodescargaaudio, selectcalidadesaudio, framedescargamp3);});// Mostrar formulario MP3btn2mp3?.addEventListener('click', () => {mostrarFormulario(formulariodescargaaudio, selectcalidadesaudio, framedescargamp3,formulariodescarga, selectcalidades, framedescarga);});// Invertir contenido// const background_image = $e('#background_image');// const color_bg = $e('#color_bg');// const alertShown = localStorage.getItem('alertShown');// const alertShownBg = localStorage.getItem('alertShownBg');// if (!alertShown) {// color_bg.addEventListener('change', () => {// alert('disable cinematic mode in the video');// localStorage.setItem('alertShown', true);// });// }// if (!alertShownBg) {// background_image.addEventListener('input', () => {// alert('disable cinematic mode in the video');// localStorage.setItem('alertShownBg', true);// });// }const btnImagen = $e('#imagen');const formularioButtons = $e('#eyes');function initClickEvent() {const bufferVideo = $e('.buffer_video');if (!bufferVideo) {return;}// Evita duplicar el eventoif (!bufferVideo.dataset.listenerAdded) {bufferVideo.addEventListener("click", () => {const video = document.querySelector("video");if (!video) {console.log("No se encontró el video en la página.");return;}// Simular clic derechoconst event = new MouseEvent("contextmenu", {bubbles: true,cancelable: true});video.dispatchEvent(event);setTimeout(() => {const option = document.querySelector("body > div.ytp-popup.ytp-contextmenu > div > div > div:nth-child(7)");if (option) {option.click();} else {console.log("Opción no encontrada, intenta aumentar el tiempo de espera.");}}, 1000);});bufferVideo.dataset.listenerAdded = "true";console.log("Evento registrado con éxito.");}}setInterval(initClickEvent, 2000);// valido modo oscuro y venta de video// Repeat video buttonlet countRepeat = 0; // countconst repeat = $e('#repeatvideo'); // Repeat buttonconst imarepeat = $e('.icon-tabler-repeat'); // img repeatconst videoFull = $e('#movie_player > div.html5-video-container > video');if(repeat != undefined) {repeat.onclick = () => {if ($e('#cinematics > div') != undefined ||videoFull != undefined) {countRepeat += 1;setInterval(() => {switch (countRepeat) {case 1:document.querySelector('#movie_player > div.html5-video-container > video').setAttribute('loop', 'true');imarepeat.innerHTML = ` <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-repeat-off" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M4 12v-3c0 -1.336 .873 -2.468 2.08 -2.856m3.92 -.144h10m-3 -3l3 3l-3 3"></path><path d="M20 12v3a3 3 0 0 1 -.133 .886m-1.99 1.984a3 3 0 0 1 -.877 .13h-13m3 3l-3 -3l3 -3"></path><path d="M3 3l18 18"></path></svg> `; // img repeatbreak;case 2:countRepeat = 0;document.querySelector('#movie_player > div.html5-video-container > video').removeAttribute('loop');imarepeat.innerHTML = ` <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-repeat" width="24"height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M4 12v-3a3 3 0 0 1 3 -3h13m-3 -3l3 3l-3 3"></path><path d="M20 12v3a3 3 0 0 1 -3 3h-13m3 3l-3 -3l3 -3"></path></svg>`;break;}}, 1000);}}}// Background transparentconst cinematica = $e('#cinematics > div');if (cinematica != undefined) {cinematica.style ='position: fixed; inset: 0px; pointer-events: none; transform: scale(1.5, 2)';}const btnReset = $e('#reset_button'); // Reset buttonif (btnReset != undefined) {btnReset.addEventListener('click', function () {if (localStorage.getItem('colores') != null) {localStorage.removeItem('colores');$e('#ojosprotect').style.backgroundColor ='transparent';setTimeout(() => {location.reload();}, 400);}});}if (btnImagen != undefined) {btnImagen.onclick = () => {if ($e('#cinematics > div') != undefined ||videoFull != undefined) {const parametrosURL = new URLSearchParams(window.location.search);let enlace = parametrosURL.get('v');// Construir la URL de la imagenconst imageUrl = `https://i.ytimg.com/vi/${enlace}/maxresdefault.jpg`;// Realizar la solicitud para obtener la imagenfetch(imageUrl).then((response) => {if (!response.ok) {throw new Error(`HTTP error! Status: ${response.status}`);}return response.blob();}).then((blob) => {// Obtener el tamaño de la imagen en kilobytesconst imageSizeKB = blob.size / ####;// Verificar si el tamaño de la imagen es menor o igual a 20 KBif (imageSizeKB >= 20) {window.open(`https://i.ytimg.com/vi/${enlace}/maxresdefault.jpg`,'popUpWindow','height=500,width=400,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes');// Crear una URL para la imagenconst imageUrlObject = URL.createObjectURL(blob);// Crear un enlace para descargar la imagenconst enlaceDescarga = $cl('a');enlaceDescarga.href = imageUrlObject;const titleVideo = $e('h1.style-scope.ytd-watch-metadata').innerText;enlaceDescarga.download = `${titleVideo}_maxresdefault.jpg`;// Simular un clic en el enlace para iniciar la descargaenlaceDescarga.click();// Limpiar la URL del objeto después de la descargaURL.revokeObjectURL(imageUrlObject);} else {console.log('La imagen no excede los 20 KB. No se descargará.');}}).catch((error) => {alert('No found image');console.error('Error al obtener la imagen:', error);});}};}// for background image file photo higt quality// const fileInput = document.getElementById('background_image');// const backgroundDiv = $e('ytd-app');// const storedImage = localStorage.getItem('backgroundImage');// if (storedImage) {// backgroundDiv.style = `background-size: contain; background-repeat: repeat; background-image: url(${storedImage}) !important`;// }// fileInput.addEventListener('change', (event) => {// const file = event.target.files[0];// if (file) {// const reader = new FileReader();// reader.onload = function (e) {// const imageUrl = e.target.r###lt;// localStorage.setItem('backgroundImage', imageUrl);// backgroundDiv.style.backgroundImage = `url(${imageUrl})`;// };// reader.readAsDataURL(file);// }// });const externalLink = $e('.external_link');if (externalLink != undefined) {externalLink.onclick = () => {const parametrosURL = new URLSearchParams(window.location.search); // Url parametroslet enlace;enlace = parametrosURL.get('v');window.open(`https://www.y2mate.com/es/convert-youtube/${enlace}`,'popUpWindow','height=800,width=1000,left=50%,top=100,resizable=no,scrollbars=yes,toolbar=no,menubar=yes,location=no,directories=yes, status=no');};}const viewExternalLink = $e('.view_external_link');if (viewExternalLink != undefined) {viewExternalLink.onclick = () => {$e('video').click();const parametrosURL = new URLSearchParams(window.location.search); // Url parametroslet enlace;enlace = parametrosURL.get('v');window.open(`https://www.youtube.com/embed/${enlace}?rel=0&controls=2&color=white&iv_load_policy=3&showinfo=0&modestbranding=1&autoplay=1`);};}const viewPictureToPicture = $e('.video_picture_to_picture');if (viewPictureToPicture != undefined) {viewPictureToPicture.onclick = () => {const video = $e('video');// Verifica si el navegador admite Picture-in-Pictureif ('pictureInPictureEnabled' in document) {// Verifica si el video aún no está en modo Picture-in-Pictureif (!document.pictureInPictureElement) {// Intenta activar el modo Picture-in-Picturevideo.requestPictureInPicture().then(() => {// El video está ahora en modo Picture-in-Picture}).catch((error) => {console.error('Error al activar el modo Picture-in-Picture:',error);});} else {// video picture}} else {alert('Picture-in-Picture not supported');}};// Filtro de pantallaif (formularioButtons != undefined) {formularioButtons.addEventListener('input', function () {if ($e('#cinematics > div') != undefined ||videoFull != undefined) {$e('#ojosprotect').style.backgroundColor =formularioButtons.value;}});}clearInterval(renderizarButtons);}const checked_updates = $e('.checked_updates');if (checked_updates != undefined) {checked_updates.onclick = () => {window.open(`https://update.greasyfork.org/scripts/460680/Youtube%20Tools%20All%20in%20one%20local%20download%20mp3%20mp4%20HIGT%20QUALITY%20return%20dislikes%20and%20more.user.js`);};}const screenShotVideo = $e('.screenshot_video');if (screenShotVideo != undefined) {screenShotVideo.onclick = () => {const video = $e('video');const canvas = $cl('canvas');canvas.width = video.videoWidth;canvas.height = video.videoHeight;const context = canvas.getContext('2d');context.drawImage(video, 0, 0, canvas.width, canvas.height);const imagenURL = canvas.toDataURL('image/png');const enlaceDescarga = $cl('a');enlaceDescarga.href = imagenURL;const titleVideo = $e('h1.style-scope.ytd-watch-metadata').innerText;enlaceDescarga.download = `${video.currentTime.toFixed(0)}s_${titleVideo}.png`;enlaceDescarga.click();};} else {const containerButtons = $e('.containerButtons');if (containerButtons != undefined) {containerButtons.innerHTML = '';}}clearInterval(renderizarButtons);}console.log('Scrip en ejecución by: DeveloperMDCM MDCM');const HEADER_STYLE = 'color: #F00; font-size: 24px; font-family: sans-serif;';const MESSAGE_STYLE = 'color: #00aaff; font-size: 16px; font-family: sans-serif;';const CODE_STYLE = 'font-size: 14px; font-family: monospace;';console.log('%cYoutube Tools Extension NEW UI\n' +'%cRun %c(v2.3.3)\n' +'By: DeveloperMDCM.',HEADER_STYLE,CODE_STYLE,MESSAGE_STYLE);// Add event listeners to all inputsconst inputs = $m('input');inputs.forEach((input) => {input.addEventListener('change', applySettings);if (input.type === 'range') {input.addEventListener('change', () => {updateSliderValues();applySettings();});}});// Export configuration// Settings saved// const settings = GM_getValue('ytSettingsMDCM', '{}');// $id('config-data').value = settings;$id('export-config').addEventListener('click', () => {const settings = GM_getValue('ytSettingsMDCM', '{}');$id('config-data').value = settings;const configData = settings;try {JSON.parse(configData); // Validate JSONGM_setValue('ytSettingsMDCM', configData);alert('Configuration export successfully!');} catch (e) {alert('Invalid configuration data. Please check and try again.');}});// Import configuration$id('import-config').addEventListener('click', () => {const configData = $id('config-data').value;try {JSON.parse(configData); // Validate JSONGM_setValue('ytSettingsMDCM', configData);alert('Configuration imported successfully!');window.location.reload();} catch (e) {alert('Invalid configuration data. Please check and try again.');}});panel.style.display = 'none'; // Ensure panel is hidden on load// Load saved settings// Visible element DOMfunction checkElement(selector, callback) {const interval = setInterval(() => {if ($e(selector)) {clearInterval(interval);callback();}}, 100);}checkElement('ytd-topbar-menu-button-renderer', loadSettings);})();