秀人集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": "搜索关键词" }