// ==UserScript== // @name TikTok Video Downloader - Ultimate // @namespace none // @version 1.20 // @description Download TikTok Videos Without A Watermark // @author altaireh // @match *://*.tiktok.com/* // @icon https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcRA-YRvXcW4n9Uv8FvTYubFk4uLqV2A4J___55paaZmd3y1TT8q // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; const ICON_URL = 'https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcRA-YRvXcW4n9Uv8FvTYubFk4uLqV2A4J___55paaZmd3y1TT8q'; function createDownloadButton(video) { const img = document.createElement('img'); img.src = ICON_URL; img.className = 'download-btn'; img.style = ` position: absolute; left: 10px; top: 50%; transform: translateY(-50%); z-index: 1000; width: 50px; height: 50px; cursor: pointer; border-radius: 50%; object-fit: cover; border: 2px solid rgba(255, 255, 255, 0.8); `; img.addEventListener('click', () => { const videoUrl = video.src || video.querySelector('source')?.src; if (videoUrl) { const a = document.createElement('a'); a.href = videoUrl; a.target = '_blank'; a.download = ''; document.body.appendChild(a); a.click(); document.body.removeChild(a); } else { console.error('Video URL not found'); } }); return img; } function addDownloadButton(video) { if (!video.nextElementSibling?.classList.contains('download-btn')) { video.parentNode.insertBefore(createDownloadButton(video), video.nextSibling); } } function initialize() { const observer = new MutationObserver(() => { document.querySelectorAll('video').forEach(addDownloadButton); }); observer.observe(document.body, { childList: true, subtree: true }); // Initial check document.querySelectorAll('video').forEach(addDownloadButton); } initialize(); })();