秀人集v22

http://25.xiuren005.top/

分享者: logique (204)发布时间: 03/10 09:07

该用户很懒,什么介绍也没有写!
二维码导入
{
    "articleStyle": 2,
    "concurrentRate": "1000",
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\r\n\"User-Agent\": \"Dalvik\/2.1.0 (Linux; U; Android 10; BAH3-W09 Build\/HUAWEIBAH3-W09)\"\r\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "ruleArticles": "[email protected]@class.sousuo||[email protected]",
    "ruleContent": "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n    <title>{{@@[email protected]@text}}<\/title>\r\n    <style>\r\n        .lazy-img {\r\n            width: 100%;\r\n            height: auto;\r\n            margin: 0 0;\r\n            opacity: 0;\r\n            transition: opacity 0.3s;\r\n            background-size: contain;\r\n        }\r\n        #loads {\r\n            text-align: center;\r\n            padding: 20px;\r\n            color: #666;\r\n        }\r\n        .img-container {\r\n            position: relative;\r\n            margin: 0 0;\r\n            border: 1px solid #eee;\r\n        }\r\n        .url-debug {\r\n            font-size: 12px;\r\n            color: #999;\r\n            word-break: break-all;\r\n            padding: 5px;\r\n            background: #f5f5f5;\r\n        }\r\n        #loadMoreBtn {\r\n            display: block;\r\n            width: 80%;\r\n            margin: 20px auto;\r\n            padding: 12px;\r\n            background: #4CAF50;\r\n            color: white;\r\n            border: none;\r\n            border-radius: 25px;\r\n            font-size: 16px;\r\n            cursor: pointer;\r\n        }\r\n        #loadMoreBtn:disabled {\r\n            background: #cccccc;\r\n            cursor: not-allowed;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <h3>{{@@[email protected]@text}}<\/h3>\r\n    <h5>{{@class.jianjie@text}}<\/h5>\r\n    <div>{{@@[email protected]@html}}<\/div>\r\n    <div id=\"box\"><\/div>\r\n    <button id=\"loadMoreBtn\">加载更多<\/button>\r\n    <div id=\"loads\"><\/div>\r\n\r\n    <script>\r\n        const CONFIG = {\r\n            totalPage: {{@@[email protected]@textNodes##\\n}},\r\n            baseUrl: \"{{baseUrl.replace('.html','_')}}\",\r\n            loadingText: (currentPage, timeLeft) => `正在加载第 ${currentPage}到${currentPage+1} 页 (${timeLeft}s)`,\r\n            errorText: \"加载失败,点击重试\",\r\n            endText: \"已加载全部内容\",\r\n            maxRetries: 3,\r\n            countdownDuration: 120\r\n        };\r\n\r\n        let page = 1;\r\n        let isLoading = false;\r\n        let countdownTimer = null;\r\n        let allImages = [];\r\n    \r\n\r\n\r\n        const loadMoreBtn = document.getElementById('loadMoreBtn');\r\n        \r\n        function updateButtonState() {\r\n            loadMoreBtn.disabled = isLoading || page > CONFIG.totalPage;\r\n            if (page > CONFIG.totalPage) {\r\n                loadMoreBtn.style.display = 'none';\r\n                document.getElementById('loads').textContent = CONFIG.endText;\r\n            }\r\n        }\r\n\r\n        function startCountdown(duration, currentPage) {\r\n            let timeLeft = duration;\r\n            \r\n            countdownTimer = setInterval(() => {\r\n                document.getElementById('loads').textContent = \r\n                    CONFIG.loadingText(currentPage, timeLeft);\r\n                timeLeft--;\r\n                \r\n                if(timeLeft < 0) {\r\n                    clearInterval(countdownTimer);\n                    isLoading = false;\r\n                updateButtonState();\r\n                }\r\n            }, 1000);\r\n        }\r\n\r\n        async function fetchPage(p, retryCount = 0) {\r\n            try {\r\n                const response = await fetch(`${CONFIG.baseUrl}${p}.html`);\r\n                const text = await response.text();\r\n                const doc = new DOMParser().parseFromString(text, 'text\/html');\r\n                return Array.from(doc.querySelectorAll('p img'))\r\n                    .slice(0, 3)\r\n                    .map(img => img.src);\r\n            } catch (error) {\r\n                if(retryCount < CONFIG.maxRetries) {\r\n                    return fetchPage(p, retryCount + 1);\r\n                }\r\n                throw new Error(`第${p}页加载失败`);\r\n            }\r\n        }\r\n\r\n        async function loadImages() {\r\n            if (page > CONFIG.totalPage || isLoading) return;\r\n            \r\n            isLoading = true;\r\n            updateButtonState();\r\n            startCountdown(CONFIG.countdownDuration, page);\r\n\r\n            try {\r\n                \/\/ 同时加载两页\r\n                const [page1, page2] = await Promise.all([\r\n                    fetchPage(page),\r\n                    page+1 <= CONFIG.totalPage ? fetchPage(page+1) : Promise.resolve([])\r\n                ]);\r\n                \r\n                allImages.push(...page1, ...page2);\n                appendImages();\n                page += 2;\n\r\n                if (page > CONFIG.totalPage) {\r\n                    document.getElementById('loads').textContent = CONFIG.endText;\r\n                }\r\n            } catch (error) {\r\n                console.error(error);\r\n                document.getElementById('loads').innerHTML = \r\n                    `<span style=\"color:red\">${CONFIG.errorText}<\/span>`;\r\n                loadMoreBtn.textContent = \"重试\";\r\n                loadMoreBtn.onclick = () => {\r\n                    document.getElementById('loads').textContent = CONFIG.loadingText(page, CONFIG.countdownDuration);\r\n                    loadImages();\r\n                };\r\n            } finally {\r\n                clearInterval(countdownTimer);\r\n                isLoading = false;\r\n                updateButtonState();\n                loadImages();\r\n            }\r\n        }\r\n\r\n        function appendImages() {\r\n            const fragment = document.createDocumentFragment();\r\n            allImages.splice(0, 6).forEach(src => {\r\n                const container = document.createElement('div');\r\n                container.className = 'img-container';\r\n\r\n                const img = document.createElement('img');\r\n               \r\n                img.src = src;\r\n                img.alt = '写真';\r\n\r\n                container.appendChild(img);\r\n                fragment.appendChild(container);\r\n                \r\n                \r\n            });\r\n            document.getElementById('box').appendChild(fragment);\r\n        }\r\n\r\n        \/\/ 事件监听\r\n        loadMoreBtn.addEventListener('click', loadImages);\r\n        window.addEventListener('scroll', () => {\r\n            if (window.innerHeight + window.scrollY >= document.documentElement.offsetHeight - 100) {\r\n                loadImages();\r\n            }\r\n        });\r\n        window.addEventListener('touchmove', () => {\r\n            if (window.innerHeight + window.scrollY >= document.documentElement.offsetHeight - 100) {\r\n                loadImages();\r\n            }\r\n        });\r\n        loadImages();\r\n        updateButtonState();\r\n    <\/script>\r\n<\/body>\r\n<\/html>\r\n",
    "ruleDescription": "",
    "ruleImage": "[email protected]@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": ".current~a.0@href",
    "rulePubDate": "{{@class.meta-post@textNodes}}_浏览:{{@class.cx_like@textNodes}}",
    "ruleTitle": "{{@tag.a@title##\\[.*\\]## }}{{@class.meta-title@text##\\[.*\\]##}} {{@tag.span.0@text##\\n ##\\[.*\\]##}}{{@[email protected]@text##\\[.*\\]##}}",
    "singleUrl": false,
    "sortUrl": "最新::\/new.html\n随机::\/XiuRen\/index{{ Math.ceil(Math.random()*100) }}.html\n搜索::\/plus\/search\/index.asp?keyword={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('粉色薄纱'):source.getVariable()}}&searchtype=titlekeywords\r\n一周推荐::\/hot.html\n秀人网:: \/XiuRen\/\r\nImiss爱蜜社::\/IMiss\/\r\n模范学院::\/MFStar\/\r\n嗲囡囡::\/FeiLin\/\r\n尤蜜荟::\/YouMi\/\r\n画语界::\/XiaoYu\/\r\n花漾::\/HuaYang\/\r\n星颜社::\/XingYan\/\r\n顽味生活::\/Taste\/",
    "sourceComment": "",
    "sourceGroup": "🔞",
    "sourceIcon": "https:\/\/images.weserv.nl\/?url=https:\/\/article.biliimg.com\/bfs\/article\/ded67638d944a7e0ef4452b721fd6434a22de16d.png",
    "sourceName": "秀人集v22",
    "sourceUrl": "http:\/\/25.xiuren005.top\/",
    "style": "\/*标题相关*\/\r\nh3{text-align:center}\r\nh6{margin-bottom:0}\r\nimg{width:100%}\nh5{margin-bottom:0;padding-left:5;}",
    "variableComment": "搜索关键词"
}
广告