NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Imgbox Auto Content Select and Auto Submit // @namespace http://tampermonkey.net/ // @version 2.9 // @description Automatically set content type to "Adult content" and auto-submit on imgbox.com if images are selected and "Adult content" is set. Auto-submit when a file-item is detected in the DOM after selecting images from the popup box. // @author NiGHTCUM // @license MIT // @match https://imgbox.com/* // @grant none // ==/UserScript== (function() { 'use strict'; let adultContentSelected = false; // Track if "Adult content" is already selected let submitTimeoutId = null; // To track and control the form submission timeout // Function to select the "Adult content" option function selectAdultContent() { const contentTypeDropdown = document.querySelector('.dropdown-menu.open'); if (contentTypeDropdown) { console.log("Content type dropdown is open, attempting to select Adult content"); const adultOption = Array.from(contentTypeDropdown.querySelectorAll('a')) .find(option => option.textContent.trim() === "Adult Content"); if (adultOption) { console.log("Adult content option found, clicking it..."); adultOption.click(); // Trigger a click on the Adult content option adultContentSelected = true; // Mark that "Adult content" is selected console.log("Adult content selected"); // Check if file-item is already present and start delay submission if so if (isFileItemPresent()) { startDelayedSubmit(); // Use the delayed submission function } } else { console.log("Adult content option not found within open dropdown"); } } else { console.log("Content type dropdown is not open or not found"); } } // Function to check if the file-item is present in the DOM function isFileItemPresent() { const fileItems = document.querySelectorAll('.file-item.template-upload.in'); if (fileItems.length > 0) { console.log('File items found in the DOM:', fileItems.length); return true; // Return true if any file items are found } console.log('File items not found in the DOM.'); return false; // Return false if no file items are found } // Function to submit the form automatically after a delay function startDelayedSubmit() { if (submitTimeoutId) { clearTimeout(submitTimeoutId); // Clear any existing timeout to prevent multiple triggers } console.log("Starting 5-second delay before submitting the form..."); submitTimeoutId = setTimeout(() => { // Introduce a 5-second delay before submitting the form const submitButton = document.querySelector('button[type="submit"], input[type="submit"]'); // Select the submit button if (submitButton) { console.log("5 seconds passed, submitting the form..."); submitButton.click(); // Trigger a click on the submit button to submit the form console.log("Form submitted automatically."); } else { console.log("Submit button not found. Could not auto-submit the form."); } }, 1000); // 1 seconds delay } // Function to handle settings based on the current state function setAutoSettings() { if (!adultContentSelected) { selectAdultContent(); // Select "Adult content" } } // Function to attempt setting values multiple times function attemptSettingValues(retries = 20, interval = 1500) { let attempts = 0; const intervalId = setInterval(() => { console.log(`Attempt ${attempts + 1} to set values`); setAutoSettings(); attempts++; if (adultContentSelected || attempts >= retries) { clearInterval(intervalId); console.log('Settings applied or maximum attempts reached. Stopping attempts.'); } }, interval); } // MutationObserver to detect the presence of file-item elements in the DOM function observeFileItems() { const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.addedNodes.length > 0) { mutation.addedNodes.forEach(node => { if (node.nodeType === 1 && node.matches('.file-item.template-upload.in')) { // Check if the added node matches the target class console.log('File item detected in the DOM:', node); if (adultContentSelected) { console.log("Adult content is set. Starting delay before submitting the form..."); startDelayedSubmit(); // Start delayed submit when file item is detected } } }); } }); }); // Start observing the body for the addition of file-item elements observer.observe(document.body, { childList: true, subtree: true }); console.log("Started observing for file items..."); } // MutationObserver to detect changes in the page's DOM const pageObserver = new MutationObserver(() => { console.log("DOM mutation detected, will attempt to set settings..."); setTimeout(() => { attemptSettingValues(); // Attempt to set the values multiple times after a short delay }, 500); // Short delay to ensure elements are fully rendered }); // Start observing the body for changes pageObserver.observe(document.body, { childList: true, subtree: true }); console.log("Started observing DOM mutations..."); // Initial call to set the settings in case elements are already loaded attemptSettingValues(); observeFileItems(); // Start observing file items })();