您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Eina definitiva, amb correccions d'objectius. Amaga els elements que vulguis, incloses les pestanyes de perfil de "Reposts" i "M'agrada".
// ==UserScript== // @name El Nostre Tauler de Control per a TikTok // @name:es Nuestro Panel de Control para TikTok // @name:en Our TikTok Control Panel // @namespace El nostre espai privat a TikTok. // @namespace:es Nuestro espacio privado en TikTok. // @namespace:en Our private space on TikTok. // @match *://www.tiktok.com/* // @grant GM_registerMenuCommand // @grant GM_getValue // @grant GM_setValue // @version 8.5 // @author Anna (corregit i refinat per Margu) // @description Eina definitiva, amb correccions d'objectius. Amaga els elements que vulguis, incloses les pestanyes de perfil de "Reposts" i "M'agrada". // @description:es Herramienta definitiva, con correcciones de objetivos. Oculta los elementos que quieras, incluidas las pestañas de perfil de "Reposts" y "Me gusta". // @description:en The ultimate tool, with target corrections. Hide the elements you want, including the "Reposts" and "Likes" profile tabs. // @license MIT // ==/UserScript== (async function() { 'use strict'; // ========================================================================= // PART 1: EL MAPA DEL TRESOR (Versió Corregida) // ca: Objectius actualitzats segons les teves ordres. Més precisió. // es: Objetivos actualizados según tus órdenes. Más precisión. // en: Targets updated per your orders. More precision. // ========================================================================= const elementMap = { scrollingContent: { name: 'Barra lateral', selector: '.e1196arh5.css-10pqo95-DivScrollingContentContainer' }, buttonPanel: { name: 'Likes, Missatges', selector: '.efrkfhz0.css-12aeehi-DivButtonPanelWrapper' }, repostTab: { name: 'Pestanya de "Reposts" del perfil', selector: '.e19uy6s72.css-1pkoxxg-PRepost' }, likedVideosTab: { name: 'Pestanya de "Likes" del perfil', selector: '.e19uy6s74.css-1y2r3y8-PLike' }, thirdMainTab: { name: 'Ordenar per mes antic', selector: 'button.TUXSegmentedControl-item.TUXUnstyledButton:nth-of-type(3)' } }; // ========================================================================= // PART 2, 3 i 4: La maquinària interna (amb memòria reiniciada) // ========================================================================= // ca: Usem una clau nova per assegurar que la teva configuració vella no interfereixi amb la nova estructura. Neteja total. // es: Usamos una clave nueva para asegurar que tu configuración vieja no interfiera con la nueva estructura. Limpieza total. // en: We use a new key to ensure your old settings don't interfere with the new structure. A clean slate. let hiddenElements = JSON.parse(await GM_getValue('tiktokControlPanelSettings_v3', '{}')); const toggleVisibility = async (key) => { hiddenElements[key] = !hiddenElements[key]; await GM_setValue('tiktokControlPanelSettings_v3', JSON.stringify(hiddenElements)); window.location.reload(); }; for (const key in elementMap) { const isHidden = hiddenElements[key]; const menuText = `${isHidden ? '✅ Mostrar' : '❌ Amagar'} ${elementMap[key].name}`; GM_registerMenuCommand(menuText, () => toggleVisibility(key)); } const selectorsToHide = Object.keys(hiddenElements) .filter(key => hiddenElements[key] && elementMap[key]) .map(key => elementMap[key].selector); if (selectorsToHide.length > 0) { const style = document.createElement('style'); style.textContent = `${selectorsToHide.join(',\n')} { display: none !important; }`; if (document.head) document.head.appendChild(style); else document.addEventListener('DOMContentLoaded', () => document.head.appendChild(style)); console.log('[Tauler de Control TikTok] Regles de visibilitat corregides i aplicades.'); } // ========================================================================= // PART 5: El Guardià d'Errors (es queda, és el nostre executor) // ========================================================================= const errorSelector = '.emuynwa0.css-1tttox1-DivErrorContainer'; const errorObserver = new MutationObserver((mutationsList, observer) => { if (document.querySelector(errorSelector)) { console.log('[Guardià d\'Errors] Enemic detectat. Executant reinici forçat...'); observer.disconnect(); window.location.reload(); } }); errorObserver.observe(document.body, { childList: true, subtree: true }); console.log('[Tauler de Control TikTok] Sistema de control total operatiu i corregit.'); })();