您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Ajoute un bouton de téléchargement sous les vidéos et images sur YouTube, Instagram, Twitter et TikTok
当前为
// ==UserScript== // @name MS Downloader // @namespace https://greasyfork.org/users/1429467 // @version 1.0 // @description Ajoute un bouton de téléchargement sous les vidéos et images sur YouTube, Instagram, Twitter et TikTok // @author Lakfu Sama // @match *://*.youtube.com/* // @match *://*.instagram.com/* // @match *://*.twitter.com/* // @match *://*.tiktok.com/* // @match *://*/* // @grant none // ==/UserScript== (function() { 'use strict'; let autoShowButtons = true; // Par défaut, les boutons DL sont visibles // Fonction pour créer un bouton de téléchargement function createDownloadButton(url) { let button = document.createElement("button"); button.innerText = "DL"; button.style.position = "absolute"; button.style.top = "5px"; button.style.right = "5px"; button.style.backgroundColor = "rgba(0, 0, 0, 0.7)"; button.style.color = "white"; button.style.border = "none"; button.style.padding = "5px 10px"; button.style.borderRadius = "5px"; button.style.cursor = "pointer"; button.style.fontSize = "12px"; button.style.zIndex = "1000"; button.style.opacity = "0.8"; button.style.transition = "opacity 0.2s"; button.style.display = autoShowButtons ? "block" : "none"; // Effet de survol pour rendre le bouton plus visible button.onmouseover = () => button.style.opacity = "1"; button.onmouseout = () => button.style.opacity = "0.8"; // Action du bouton pour télécharger la vidéo button.onclick = () => { let a = document.createElement("a"); a.href = url; a.download = "video.mp4"; // Nom générique pour le fichier document.body.appendChild(a); a.click(); document.body.removeChild(a); }; return button; } // Fonction pour ajouter le bouton de téléchargement uniquement pour les vidéos valides function addDownloadButtons() { // Sélectionner uniquement les éléments vidéo avec une source document.querySelectorAll("video").forEach(video => { if (!video.dataset.hasDownloadButton && video.src) { // Vérifie si la source vidéo est valide if (video.src && (video.src.includes(".mp4") || video.src.includes(".webm"))) { // Format MP4 ou WebM let button = createDownloadButton(video.src); video.style.position = "relative"; video.parentNode.appendChild(button); video.dataset.hasDownloadButton = "true"; } } }); // Vérification pour les vidéos intégrées (comme celles de YouTube) document.querySelectorAll("iframe").forEach(iframe => { if (!iframe.dataset.hasDownloadButton && iframe.src && iframe.src.includes("youtube.com") && iframe.src.includes("watch")) { // Extrait l'URL de la vidéo YouTube let url = iframe.src.replace("https://www.youtube.com/embed/", "https://www.youtube.com/watch?v="); let button = createDownloadButton(url); iframe.style.position = "relative"; iframe.parentNode.appendChild(button); iframe.dataset.hasDownloadButton = "true"; } }); } // Observer pour les vidéos chargées dynamiquement (scroll infini) const observer = new MutationObserver(addDownloadButtons); observer.observe(document.body, { childList: true, subtree: true }); // Touche "D" pour afficher/cacher les boutons DL document.addEventListener('keydown', function(event) { if (event.key.toLowerCase() === 'd') { autoShowButtons = !autoShowButtons; document.querySelectorAll("button").forEach(button => { if (button.innerText === "DL") { button.style.display = autoShowButtons ? "block" : "none"; } }); } }); console.log("Script DL activé :\n[d] Afficher/Cacher les boutons de téléchargement"); })();