// ==UserScript== // @name Auto Unmute and Reset Instagram Reels 1.0 // @namespace http://tampermonkey.net/ // @version 1.0 // @description Automatically unmutes Instagram Reels on desktop and resets playback to start // @author Grok // @match https://www.instagram.com/reel/* // @grant none // ==/UserScript== (function() { 'use strict'; // Function to unmute video and reset playback to start function unmuteVideo(retries = 5) { const unmuteButton = document.querySelector('div[aria-label="A hang némítva van."][role="button"]'); if (unmuteButton) { unmuteButton.click(); console.log('Unmute button clicked successfully'); // Find the closest video element const video = unmuteButton.closest('div').querySelector('video') || document.querySelector('video'); if (video) { video.currentTime = 0; console.log('Video playback reset to start'); } else { console.log('Video element not found for reset'); } return; } // Fallback: directly unmute any muted video elements and reset const videos = document.querySelectorAll('video'); videos.forEach(video => { if (video.muted) { video.muted = false; video.currentTime = 0; console.log('Video directly unmuted and reset to start'); } }); // Retry if button not found and retries remain if (retries > 0) { console.log(`Unmute button not found, retrying (${retries} attempts left)`); setTimeout(() => unmuteVideo(retries - 1), 500); } else { console.log('Unmute button not found after all retries'); } } // MutationObserver to detect when the unmute button is added const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.type === 'childList') { mutation.addedNodes.forEach((node) => { if (node.nodeType === 1 && node.matches('div[aria-label="A hang némítva van."][role="button"]')) { console.log('Unmute button detected in DOM'); setTimeout(() => { node.click(); console.log('Unmute button clicked via observer'); const video = node.closest('div').querySelector('video') || document.querySelector('video'); if (video) { video.currentTime = 0; console.log('Video playback reset to start via observer'); } else { console.log('Video element not found for reset via observer'); } }, 100); } }); } }); }); // Start observing the document for changes observer.observe(document.body, { childList: true, subtree: true }); // Try unmuting initially setTimeout(() => unmuteVideo(), 1000); // Listen for clicks on Reel links document.addEventListener('click', (event) => { if (event.target.tagName === 'A' && event.target.href.includes('/reel/')) { console.log('Reel link clicked, attempting to unmute and reset'); setTimeout(() => unmuteVideo(), 1000); } }); })();