您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Skip videos containing blacklisted tags
// ==UserScript== // @name Rule34Video Tag Skipper // @namespace http://tampermonkey.net/ // @version 1.0 // @description Skip videos containing blacklisted tags // @author You // @match https://rule34video.com/* // @grant GM_setValue // @grant GM_getValue // @grant GM_registerMenuCommand // ==/UserScript== (function() { 'use strict'; // Default settings let blacklistedTags = GM_getValue('blacklistedTags', '').split(',').map(tag => tag.trim().toLowerCase()).filter(tag => tag); let blacklistedTitles = GM_getValue('blacklistedTitles', '').split(',').map(title => title.trim().toLowerCase()).filter(title => title); let minimumPercentage = GM_getValue('minimumPercentage', 0); // Settings UI function showTagSettings() { const currentTags = GM_getValue('blacklistedTags', ''); const newTags = prompt('Enter blacklisted tags (comma separated):', currentTags); if (newTags !== null) { GM_setValue('blacklistedTags', newTags); blacklistedTags = newTags.split(',').map(tag => tag.trim().toLowerCase()).filter(tag => tag); console.log('Blacklisted tags updated:', blacklistedTags); } } function showTitleSettings() { const currentTitles = GM_getValue('blacklistedTitles', ''); const newTitles = prompt('Enter blacklisted title keywords (comma separated):', currentTitles); if (newTitles !== null) { GM_setValue('blacklistedTitles', newTitles); blacklistedTitles = newTitles.split(',').map(title => title.trim().toLowerCase()).filter(title => title); console.log('Blacklisted titles updated:', blacklistedTitles); } } function showPercentageSettings() { const currentPercentage = GM_getValue('minimumPercentage', 0); const newPercentage = prompt('Enter minimum percentage (0-100):', currentPercentage); if (newPercentage !== null) { const percentage = parseInt(newPercentage); if (!isNaN(percentage) && percentage >= 0 && percentage <= 100) { GM_setValue('minimumPercentage', percentage); minimumPercentage = percentage; console.log('Minimum percentage updated:', minimumPercentage); } else { alert('Please enter a valid percentage between 0 and 100'); } } } // Register menu commands GM_registerMenuCommand('Configure Blacklisted Tags', showTagSettings); GM_registerMenuCommand('Configure Blacklisted Titles', showTitleSettings); GM_registerMenuCommand('Set Minimum Percentage', showPercentageSettings); // Helper functions function checkBlacklistedTags() { const tagElements = document.querySelectorAll('.wrap .tag_item'); for (let tagElement of tagElements) { const tagText = tagElement.textContent.toLowerCase(); for (let blacklistedTag of blacklistedTags) { if (tagText.includes(blacklistedTag)) { console.log(`Blacklisted tag found: ${tagText} contains ${blacklistedTag}`); return true; } } } return false; } function checkBlacklistedTitles() { const titleElement = document.querySelector('h1.title_video'); if (titleElement) { const titleText = titleElement.textContent.toLowerCase(); for (let blacklistedTitle of blacklistedTitles) { if (titleText.includes(blacklistedTitle)) { console.log(`Blacklisted title keyword found: ${titleText} contains ${blacklistedTitle}`); return true; } } } return false; } function checkMinimumPercentage() { const voterElement = document.querySelector('span.voters.count'); if (voterElement) { const voterText = voterElement.textContent; const percentageMatch = voterText.match(/(\d+)%/); if (percentageMatch) { const currentPercentage = parseInt(percentageMatch[1]); if (currentPercentage < minimumPercentage) { console.log(`Video percentage too low: ${currentPercentage}% < ${minimumPercentage}%`); return true; } } } return false; } function goToNextVideo() { const nextButton = document.querySelector('a.link-video.next.js-url-next'); if (nextButton) { console.log('Clicking next video button'); nextButton.click(); } else { console.log('Next video button not found'); } } // Main monitoring function function monitorVideo() { // Check for blacklisted tags and skip if found if (checkBlacklistedTags()) { console.log('Blacklisted tags detected, skipping video'); goToNextVideo(); return; } // Check for blacklisted titles and skip if found if (checkBlacklistedTitles()) { console.log('Blacklisted title detected, skipping video'); goToNextVideo(); return; } // Check minimum percentage and skip if too low if (checkMinimumPercentage()) { console.log('Video percentage below minimum, skipping video'); goToNextVideo(); return; } } // Initialize script function init() { console.log('Rule34Video Tag Skipper initialized'); console.log('Blacklisted tags:', blacklistedTags); console.log('Blacklisted titles:', blacklistedTitles); console.log('Minimum percentage:', minimumPercentage + '%'); // Check for blacklisted tags every 1 second setInterval(monitorVideo, 1000); } // Wait for page to load if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();