您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Baixe vídeos sem logo/marca d'água. Versão experimental, mais recursos em breve.
当前为
// ==UserScript== // @name TikTok Magic (download, tools) // @namespace https://linkme.bio/jhonpergon/?userscript=tiktok_tools // @version 1.0 // @author Jhon Pérgon // @description Baixe vídeos sem logo/marca d'água. Versão experimental, mais recursos em breve. // @description:pt Baixe vídeos sem logo/marca d'água. Versão experimental, mais recursos em breve. // @description:pt-BR Baixe vídeos sem logo/marca d'água. Versão experimental, mais recursos em breve. // @description:pt-PT Baixe vídeos sem logo/marca d'água. Versão experimental, mais recursos em breve. // @license MIT // @match https://*.tiktok.com/* // @icon https://cdn.iconscout.com/icon/free/png-256/free-tiktok-4069944-3365463.png // @grant none // ==/UserScript== (function() { 'use strict'; function addBToks(){ // Criação do elemento <a> var linkElement = document.createElement('a'); linkElement.setAttribute('href', '#'); linkElement.setAttribute('class', 'linkTok'); linkElement.setAttribute('target', '_blank'); // Criação do elemento <button> var buttonElement = document.createElement('button'); buttonElement.setAttribute('data-e2e', 'arrow-right'); buttonElement.setAttribute('title', 'download magic'); buttonElement.setAttribute('role', 'button'); buttonElement.setAttribute('aria-label', 'Download Limpo'); buttonElement.setAttribute('class', 'tiktokDL'); // Criação do elemento <svg> var svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); svgElement.setAttribute('width', '26'); svgElement.setAttribute('height', '26'); svgElement.setAttribute('viewBox', '0 0 48 48'); svgElement.setAttribute('fill', '#fff'); svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg'); svgElement.setAttribute('style', '--darkreader-inline-fill: #d7d5d1;'); // Criação do elemento <path> dentro do <svg> var pathElement = document.createElementNS('http://www.w3.org/2000/svg', 'path'); pathElement.setAttribute('d', 'M21.9 7.38v19.86l-6.73-6.73a.87.87 0 0 0-1.24 0l-1.73 1.73a.88.88 0 0 0 0 1.24l11.18 11.18c.34.35.9.35 1.24 0L35.8 23.48a.88.88 0 0 0 0-1.24l-1.73-1.73a.87.87 0 0 0-1.24 0l-6.73 6.73V7.38c0-.49-.4-.88-.87-.88h-2.45c-.49 0-.88.4-.88.88ZM10.88 37.13c-.49 0-.88.39-.88.87v2.63c0 .48.4.87.88.87h26.24c.49 0 .88-.4.88-.87V38c0-.48-.4-.87-.87-.87H10.86Z'); svgElement.appendChild(pathElement); buttonElement.appendChild(svgElement); linkElement.appendChild(buttonElement); var styleElement1 = document.createElement('style'); styleElement1.innerHTML = ` .tiktokDL{ position: absolute; z-index: 1; display: flex; -moz-box-pack: center; justify-content: center; -moz-box-align: center; align-items: center; background: rgba(84, 84, 84, 0.5); border-radius: 50%; cursor: pointer; border: medium; outline: none; width: 40px; height: 40px; top: calc(50% + 62px); margin-top: -24px; right: 20px; z-index: 10; } `; var styleElement2 = document.createElement('style'); styleElement2.innerHTML = ` .tiktokDL{ position: absolute; z-index: 1; display: flex; -moz-box-pack: center; justify-content: center; -moz-box-align: center; align-items: center; background: rgba(84, 84, 84, 0.5); border-radius: 50%; cursor: pointer; border: medium; outline: none; width: 40px; height: 40px; top: calc(50% + -262px); margin-top: -24px; right: 20px; z-index: 10; } `; if(document.querySelector(".css-1s9jpf8-ButtonBasicButtonContainer-StyledVideoSwitch.e11s2kul11")){ // Selecionar o elemento com a classe específica document.head.appendChild(styleElement1); const targetElement = document.querySelector('.css-1s9jpf8-ButtonBasicButtonContainer-StyledVideoSwitch.e11s2kul11'); targetElement.insertAdjacentElement('afterend', linkElement); }else if(document.querySelector(".css-ty9aj4-DivVideoContainer.eqrezik7")){ document.head.appendChild(styleElement2); const targetElement = document.querySelector('.css-ty9aj4-DivVideoContainer.eqrezik7'); targetElement.insertAdjacentElement('afterend', linkElement); }else{ document.head.appendChild(styleElement1); document.querySelector("#app-header").appendChild(linkElement); } } // Armazena o valor após a última "/" no endereço do site var lastSegment = window.location.pathname.split('/').filter(function(segment) { return segment !== ''; }).pop(); function minhaFuncao() { console.log('O valor após a última "/" mudou para:', lastSegment); if(document.querySelector(".linkTok")){ document.querySelector(".linkTok").remove(); } if(window.location.href.includes("/video/")){ addBToks(); const videoTikTok = document.querySelector('video'); if (videoTikTok && videoTikTok.src.includes("-prime.tiktok.com/video/")) { const videoSrc = videoTikTok.src; document.querySelector(".linkTok").href = videoSrc; } else { let cancellLink = document.querySelector(".linkTok"); cancellLink.addEventListener('click', function(event) { event.preventDefault(); }); const linkTokElement = document.querySelector('.tiktokDL'); linkTokElement.addEventListener('click', function() { alert('O bruxo deu bug. Atualize a página se realmente deseja baixar esse vídeo.'); //window.location.reload(); }); } } } // Monitora as mudanças no valor após a última "/" function tokChck() { var newLastSegment = window.location.pathname.split('/').filter(function(segment) { return segment !== ''; }).pop(); // Se o valor mudou, chama a função if (lastSegment !== newLastSegment) { lastSegment = newLastSegment; minhaFuncao(); } }; if(window.location.href.includes("-prime.tiktok.com/video/")){ const videoElement = document.querySelector('video'); if (videoElement) { videoElement.pause(); const videoSrc = videoElement.src; const uniqueId = Math.floor(Math.random() * 10000); // Gera um ID único com quatro números const downloadFileName = `TikTok-Bruxo_${uniqueId}.mp4`; const downloadLink = document.createElement('a'); downloadLink.href = videoSrc; downloadLink.download = downloadFileName; downloadLink.addEventListener('click', () => { setTimeout(() => { window.close(); // Fecha a aba após iniciar o download }, 1300); // Defina um intervalo de tempo suficiente para o download começar }); downloadLink.click(); } else { console.log('Elemento de vídeo não encontrado.'); } }else{ setTimeout(function(){ minhaFuncao(); setInterval(tokChck, 1500) },2500) } })();