// ==UserScript== // @name Stop videos looping // @namespace http://tampermonkey.net/ // @version 0.3 // @description Stop videos looping (Youtube, Twitter, Tiktok, Instagram) // @author @dmtri // @match https://*.youtube.com/* // @match https://*.twitter.com/* // @match https://*.tiktok.com/* // @match https://*.instagram.com/* // @license MIT // @icon // @grant none // @downloadURL none // ==/UserScript== (function () { "use strict"; // Get the video element const init = () => { const vids = document.querySelectorAll("video"); vids.forEach((vid) => { // Remove the loop attribute vid.removeAttribute("loop"); const vidLen = vid.duration let vidCurr = vid.currentTime let a = setTimeout(() => { vid.pause() }, vidLen * 1000 - vidCurr * 1000 - 200) vid.addEventListener('seeked', () => { clearTimeout(a) a = setTimeout(() => { vid.pause() }, vidLen * 1000 - vidCurr * 1000 - 200) }); vid.addEventListener("ended", () => { setTimeout(vid.pause(), 200); }); // Add an event listener for the 'ended' event vid.addEventListener("play", () => { vidCurr = vid.currentTime clearTimeout(a) a = setTimeout(() => { vid.pause() }, vidLen * 1000 - vidCurr * 1000 - 200) }); }); }; setInterval(init, 2000); })();