您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Enable users to seamlessly access and appreciate the latest backgrounds on SC.
// ==UserScript== // @name latestBGonStripChat // @namespace http://carllx.com/ // @version 0.1.5.2 // @description Enable users to seamlessly access and appreciate the latest backgrounds on SC. // @author carllx // @match https://stripchat.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=stripchat.com // @grant none // ==/UserScript== (function () { "use strict"; // function replaceTimestamp(url) { // const timestampRegex = /\d+(?=\/)/; // const newTimestamp = Math.floor(Date.now() / 1000) - 19; // return url.replace(timestampRegex, newTimestamp); // } function updateSrcInHTML() { const users = []; // console.error(`users.length:`); const aWrapperElements = document.querySelectorAll(".model-list-item-link"); const viewportWidth = window.innerWidth; const viewportHeight = window.innerHeight; aWrapperElements.forEach((wrapElement) => { const rect = wrapElement.getBoundingClientRect(); const isInView = rect.width > 0 && rect.height > 0 && rect.top >= 0 && rect.bottom <= viewportHeight && rect.left >= 0 && rect.right <= viewportWidth; if (isInView) { const imgElement = wrapElement.querySelector( ".image-background" ); const src = imgElement.getAttribute("src"); const usernamePath = wrapElement.getAttribute("href"); //'/MiaBakker' // XXXXXXXXXXXX users.push({ n: usernamePath, el: imgElement }); // XXXXXXXXXXXX } }); // XXXXXXXXXXXX console.log(`users.length:${users.length}`); getUserofCam(users); // XXXXXXXXXXXX } function executeFunctionEverySec(fn , sec) { const intervalId = setInterval(fn, sec); const eventListener = () => { clearInterval(intervalId); document.removeEventListener("stop", eventListener); // Additional code to handle the 'stop' event if needed }; document.addEventListener("stop", eventListener); } // return fetch(`https://stripchat.com/api/front/v2/models/username${n}/cam`) function getUserofCam(users) { // users : [ {n:, el:},] const fetchUserData = async (user) => { const { n, el } = user; const resolvedEl = await Promise.resolve(el); return fetch(`https://stripchat.com/api/front/v2/models/username/${n}/cam`) .then((res) => { if (res.ok) { return res.json(); } throw new Error("Something went wrong"); }) .then((ob) => { const snapshotTimestamp = ob.user.user.snapshotTimestamp; // https://img.strpst.com/thumbs/1695366450/104138876_webp const orgSrc = resolvedEl.getAttribute("src"); const timestampRegex = /\d+(?=\/)/; // debugger const newSrc = orgSrc.replace(timestampRegex, snapshotTimestamp); resolvedEl.setAttribute("src", newSrc); resolvedEl.onerror = function () { this.onerror = null; this.src = orgSrc; this.classList.remove('image-background__image--is-hidden') console.log(this) }; return true; }); }; Promise.all(users.map(fetchUserData)).then((results) => { console.log("ok"); // log name property of first user }); } executeFunctionEverySec(updateSrcInHTML , 3000); })();