// ==UserScript== // @name 更好的蔡徐坤 // @namespace http://tampermonkey.net/ // @version 0.4 // @description 把所有检测到的图片替换为蔡徐坤图片,并支持动态加载 // @author BAIYU // @match *://*/* // @grant none // @require https://code.jquery.com/jquery-3.6.0.min.js // @license MIT // @license GPL-3.0 // @license Apache-2.0 // @license BSD // @downloadURL none // ==/UserScript== (function() { 'use strict'; // 蔡徐坤的图片直链 const caiXukunImages = [ 'https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/920ac09b6e0ee714317940f0d38ca10f845f2b9aecd164d5b72d0e62f9009eac44411ed83f20ef14dae8895101511665?pictype=scale&from=30111&version=3.3.3.3&fname=Kk1.gif&size=320', 'https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/2321bf24da1477d92fe882f8ffd178d9360df085215c9d26af90870620c9256f48f0e9844eb94a1d8dfcf92a217e000f?pictype=scale&from=30111&version=3.3.3.3&fname=Kk2.png&size=320', 'https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/14c6728dcb28e48f90c5cf155ec0a5c5ee5f4b8de31e3d7fbbd82f99e36d3929964f759095cc9d3c0e97d215c5302403?pictype=scale&from=30111&version=3.3.3.3&fname=Kk.jpg&size=320' ]; const enableLogging = true; function log(message) { if (enableLogging) { console.log(message); } } waitForKeyElements("img", function(jNode) { if (!jNode.data('replaced')) { const randomImage = caiXukunImages[Math.floor(Math.random() * caiXukunImages.length)]; jNode.attr("src", randomImage); jNode.attr("srcset", ''); jNode.data('replaced', true); log(`图片替换为:${randomImage}`); } }); $(window).on('resize', function() { waitForKeyElements("img", function(jNode) { if (!jNode.data('replaced')) { const randomImage = caiXukunImages[Math.floor(Math.random() * caiXukunImages.length)]; jNode.attr("src", randomImage); jNode.attr("srcset", ''); jNode.data('replaced', true); log(`图片替换为:${randomImage} 在窗口调整大小时`); } }); }); function waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector) { function findInShadowRoots(root, selector) { let elements = $(root).find(selector).toArray(); $(root).find('*').each(function () { const shadowRoot = this.shadowRoot; if (shadowRoot) { elements = elements.concat(findInShadowRoots(shadowRoot, selector)); } }); return elements; } var targetElements; if (iframeSelector) { targetElements = $(iframeSelector).contents(); } else { targetElements = $(document); } let allElements = findInShadowRoots(targetElements, selectorTxt); if (allElements.length > 0) { allElements.forEach(function (element) { var jThis = $(element); var alreadyFound = jThis.data('alreadyFound') || false; if (!alreadyFound) { var cancelFound = actionFunction(jThis); if (cancelFound) { return false; } else { jThis.data('alreadyFound', true); } } }); } var controlObj = waitForKeyElements.controlObj || {}; var controlKey = selectorTxt.replace(/[^\w]/g, "_"); var timeControl = controlObj[controlKey]; if (allElements.length > 0 && bWaitOnce && timeControl) { clearInterval(timeControl); delete controlObj[controlKey]; } else { if (!timeControl) { timeControl = setInterval(function () { waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector); }, 50); controlObj[controlKey] = timeControl; } } waitForKeyElements.controlObj = controlObj; } })();