您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds buttons to open images via direct links with vocabulary replacements
// ==UserScript== // @name Fapello.su Image Link Helper // @namespace http://fapello.su // @version 0.4 // @description Adds buttons to open images via direct links with vocabulary replacements // @match *://fapello.su/* // @license MIT // @grant none // ==/UserScript== (function () { 'use strict'; // Dictionary for replacing parts of the image URL const replacements = { '_t': '_o', 'thumbs2': 'images2', '.md': '', '.th': '', // Add more replacements as needed }; function replaceUrl(url) { let newUrl = url; for (const [original, replacement] of Object.entries(replacements)) { newUrl = newUrl.replace(original, replacement); } return newUrl; } // Function to add a button to an image function addButtonToImage(image) { const modifiedUrl = replaceUrl(image.src); const button = document.createElement('a'); button.href = modifiedUrl; button.textContent = 'Source IMG'; button.style.position = 'absolute'; button.style.top = '5px'; button.style.right = '5px'; button.style.zIndex = '1000'; button.style.background = 'white'; button.style.border = '1px solid black'; button.style.padding = '2px 5px'; button.style.borderRadius = '5px'; button.style.textDecoration = 'none'; button.style.color = 'black'; button.style.fontSize = '12px'; button.style.fontWeight = 'bold'; image.parentNode.style.position = 'relative'; image.parentNode.appendChild(button); } // Function to process all images in the #content div function processImages() { const contentDiv = document.getElementById('content'); if (contentDiv) { const images = contentDiv.querySelectorAll('img'); images.forEach(addButtonToImage); } } // Observe for new images loaded by lazyload.js const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.addedNodes) { mutation.addedNodes.forEach(node => { if (node.tagName === 'IMG') { addButtonToImage(node); } }); } }); }); // Start observing the #content div for changes const contentDiv = document.getElementById('content'); if (contentDiv) { observer.observe(contentDiv, { childList: true, subtree: true }); } // Initial processing of images processImages(); // Re-process images on page scroll window.addEventListener('scroll', processImages); })();