您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
vídeos diretamente do tiktok sem logo e marca d'água com apenas um clique. Mais recursos em breve (B E T A)
// ==UserScript== // @name TikTok Video Downloader // @namespace https://greasyfork.org/pt-BR/users/305931-emerson-bardusco // @version 0.1 // @description vídeos diretamente do tiktok sem logo e marca d'água com apenas um clique. Mais recursos em breve (B E T A) // @author Emerson bardusco // @match https://www.tiktok.com/@* // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; let contagemK = 0; // Função para criar o botão de download function createDownloadButton() { // 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); return linkElement; } // Função para adicionar o botão de download à página function addDownloadButton(videoUrl) { const button = createDownloadButton(); const videoContainer = document.querySelector(".css-1s9jpf8-ButtonBasicButtonContainer-StyledVideoSwitch.e11s2kul11") || document.querySelector(".css-ty9aj4-DivVideoContainer.eqrezik7"); videoContainer.insertAdjacentElement('afterend', button); button.addEventListener("click", () => { // Processo de download GM_setValue("statusVideo", true); setTimeout(() => { window.close(); }, 1800); }); } // Função para verificar se a página é uma página de vídeo do TikTok function isTikTokVideoPage() { return document.querySelector(".css-1s9jpf8-ButtonBasicButtonContainer-StyledVideoSwitch.e11s2kul11") !== null || document.querySelector(".css-ty9aj4-DivVideoContainer.eqrezik7") !== null; } // Função para monitorar alterações no último segmento da URL function monitorUrlChanges() { const currentUrl = window.location.pathname; const lastSegment = currentUrl.split("/").pop(); if (lastSegment !== GM_getValue("lastSegment")) { GM_setValue("lastSegment", lastSegment); updateDownloadButton(); } } // Função para atualizar o botão de download function updateDownloadButton() { const videoUrl = document.querySelector('video').src; if (videoUrl) { addDownloadButton(videoUrl); } else { console.error("Erro: vídeo não encontrado"); } } // Inicialização do script if (isTikTokVideoPage()) { updateDownloadButton(); window.addEventListener("hashchange", monitorUrlChanges); } })();