Autoplay and loop videos on Rule34 and Realbooru
// ==UserScript==
// @name Rule34 + Realbooru AutoPlay + Loop
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Autoplay and loop videos on Rule34 and Realbooru
// @match https://rule34.xxx/*
// @match https://www.rule34.xxx/*
// @match https://realbooru.com/*
// @match https://www.realbooru.com/*
// @grant none
// @license DallasGWS
// ==/UserScript==
(function () {
'use strict';
function log(...msg) {
console.log('[Booru-Auto]', ...msg);
}
function autoplay(video) {
const play = () => {
if (!video.isConnected) return;
video.play().catch(() => {
setTimeout(play, 200);
});
};
play();
}
function setup(video) {
if (!video || video.dataset.autoplaySetup === 'true') return;
video.dataset.autoplaySetup = 'true';
log('Video found:', video);
// Enable looping
video.loop = true;
// Autoplay
autoplay(video);
}
function findVideos() {
return document.querySelectorAll('video');
}
function checkVideos() {
findVideos().forEach(setup);
}
// Initial load
checkVideos();
// Detect videos loaded later
const observer = new MutationObserver(() => {
checkVideos();
});
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
// Also check periodically in case the site's player replaces
// the video without generating a useful mutation.
setInterval(checkVideos, 1000);
})();