this site is ass
// ==UserScript==
// @name donutgang fixer
// @namespace http://tampermonkey.net/
// @version 1.4
// @description this site is ass
// @author aprilfools
// @match *://donutgang.vercel.app/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// List of Family Guy clip URLs
const clips = [
'https://www.youtube.com/embed/lO5UR0cIThQ?autoplay=1',
'https://www.youtube.com/embed/qMTY4l8_miI?autoplay=1',
'https://www.youtube.com/embed/VvALFQDWj6Q?autoplay=1',
'https://www.youtube.com/embed/bQ5kejGjA4Y?autoplay=1',
'https://www.youtube.com/embed/h_r8sVdY7do?autoplay=1',
'https://www.youtube.com/embed/7ghSziUQnhs?autoplay=1',
'https://www.youtube.com/embed/dvjy6V4vLlI?autoplay=1',
'https://www.youtube.com/embed/L_fcrOyoWZ8?autoplay=1',
'https://www.youtube.com/embed/ObhmrE6FyNs?autoplay=1',
'https://www.youtube.com/embed/fXCUaRE-5Rc?autoplay=1',
'https://www.youtube.com/embed/u7kdVe8q5zs?autoplay=1',
'https://www.youtube.com/embed/vXc0Jmn-frw?autoplay=1',
'https://www.youtube.com/embed/uVKxtdMgJVU?autoplay=1',
'https://www.youtube.com/embed/ZtLrNBdXT7M?autoplay=1',
'https://www.youtube.com/embed/2LaCKzfTEoA?autoplay=1'
];
let spawningEnabled = true;
let limitedto10 = false;
let howMuchTo10 = 0;
let bounceSpeed = 4; // Default bounce speed
function spawnIframe() {
// Randomly select a clip
const randomClip = clips[Math.floor(Math.random() * clips.length)];
// Create an iframe element
const iframe = document.createElement('iframe');
iframe.width = '300'; // Set smaller width for easier bouncing
iframe.height = '170';
iframe.src = randomClip;
iframe.frameBorder = '0';
iframe.allow = 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture';
iframe.allowFullscreen = true;
// Initial position of the iframe (center of the screen)
iframe.style.position = 'fixed';
iframe.style.top = `${(window.innerHeight / 2) - (iframe.height / 2)}px`;
iframe.style.left = `${(window.innerWidth / 2) - (iframe.width / 2)}px`;
iframe.style.zIndex = '1000';
// Append the iframe to the body
document.body.appendChild(iframe);
// Bouncing logic
let x = Math.random() * 2 + bounceSpeed;
let y = Math.random() * 2 + bounceSpeed;
const interval = setInterval(() => {
let rect = iframe.getBoundingClientRect();
// Reverse direction if hitting a boundary
if (rect.left + x < 0 || rect.right + x > window.innerWidth) {
x = -x;
if (spawningEnabled && !limitedto10) {
spawnIframe();
howMuchTo10 += 1;
}
}
if (rect.top + y < 0 || rect.bottom + y > window.innerHeight) {
y = -y;
if (spawningEnabled && !limitedto10) {
spawnIframe();
howMuchTo10 += 1;
}
}
// Move the iframe
iframe.style.left = rect.left + x + 'px';
iframe.style.top = rect.top + y + 'px';
}, 10);
// Add the interval ID to the iframe so it can be cleared when removed
iframe.dataset.intervalId = interval;
}
// Button to stop spawning new iframes
const stopButton = document.createElement('button');
stopButton.textContent = 'Stop Spawning Iframes';
stopButton.style.position = 'fixed';
stopButton.style.bottom = '50px';
stopButton.style.left = '10px';
stopButton.style.zIndex = '10000';
stopButton.onclick = () => {
spawningEnabled = false;
};
document.body.appendChild(stopButton);
// Input box and button to set the iframe limit
const limitInput = document.createElement('input');
limitInput.type = 'number';
limitInput.placeholder = 'Set IFrame Limit';
limitInput.style.position = 'fixed';
limitInput.style.bottom = '90px';
limitInput.style.left = '10px';
limitInput.style.zIndex = '10000';
document.body.appendChild(limitInput);
const limitButton = document.createElement('button');
limitButton.textContent = 'Set Limit';
limitButton.style.position = 'fixed';
limitButton.style.bottom = '90px';
limitButton.style.left = '140px';
limitButton.style.zIndex = '10000';
limitButton.onclick = () => {
limitedto10 = true;
howMuchTo10 = parseInt(limitInput.value) || 0;
};
document.body.appendChild(limitButton);
// Button and input to change bounce speed
const speedInput = document.createElement('input');
speedInput.type = 'number';
speedInput.placeholder = 'Set Bounce Speed';
speedInput.style.position = 'fixed';
speedInput.style.bottom = '130px';
speedInput.style.left = '10px';
speedInput.style.zIndex = '10000';
document.body.appendChild(speedInput);
const speedButton = document.createElement('button');
speedButton.textContent = 'Set Speed';
speedButton.style.position = 'fixed';
speedButton.style.bottom = '130px';
speedButton.style.left = '140px';
speedButton.style.zIndex = '10000';
speedButton.onclick = () => {
bounceSpeed = parseFloat(speedInput.value) || 4;
};
document.body.appendChild(speedButton);
// Button to remove the last iframe
const removeButton = document.createElement('button');
removeButton.textContent = 'Remove Last Iframe';
removeButton.style.position = 'fixed';
removeButton.style.bottom = '10px';
removeButton.style.left = '10px';
removeButton.style.zIndex = '10000';
removeButton.onclick = () => {
const iframes = document.querySelectorAll('iframe');
if (iframes.length > 0) {
const lastIframe = iframes[iframes.length - 1];
clearInterval(lastIframe.dataset.intervalId); // Clear the bouncing interval
lastIframe.remove(); // Remove the iframe
howMuchTo10 -= 1;
}
};
document.body.appendChild(removeButton);
// Start by spawning the first iframe
spawnIframe();
})();