摄影图库
http://www.sytuk.com/
分享者: jianghubailei (2226)发布时间: 4小时前
做了下小小的修改
{
"articleStyle": 2,
"cacheFirst": true,
"customOrder": 65,
"enableJs": true,
"enabled": true,
"enabledCookieJar": false,
"lastUpdateTime": 1770086362188,
"loadWithBaseUrl": true,
"preload": false,
"ruleArticles": "#list li||.img li",
"ruleContent": "<!DOCTYPE html>\n<html>\n<head>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n <link rel=\"stylesheet\" href=\"https:\/\/cdn.bootcdn.net\/ajax\/libs\/viewerjs\/1.10.1\/viewer.min.css\">\n <script src=\"https:\/\/cdn.bootcdn.net\/ajax\/libs\/viewerjs\/1.10.1\/viewer.min.js\"><\/script>\n <script src=\"http:\/\/libs.baidu.com\/jquery\/2.0.0\/jquery.min.js\"><\/script>\n {{@@tag.title@html}}\n <style>\n body {\n background: #000000;\n margin: 0;\n padding: 0;\n }\n\n \/*标题相关*\/\n h3{text-align:center}\n h6{margin-bottom:0}\n \n \/*图片*\/\n \timg {\n display: block;\n width: 100%;\n height: auto;\n border: none;\n margin: 0 auto;\n }\n h5{margin-bottom:0;padding-left:5;text-align:center;font-size:12px;}\n\n \/*加载中的动画效果*\/\n #loading {\n text-align: center;\n font-size: 1rem;\n line-height: 1.8;\n padding: 20px 0;\n }\n\n .loading-line {\n display: block;\n margin-bottom: 5px;\n }\n\n .loading-text {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .loading-dots {\n display: inline-flex;\n margin-left: 6px;\n gap: 4px;\n }\n\n .dot {\n width: 5px;\n height: 5px;\n background: #e94560;\n border-radius: 50%;\n animation: bounce 1.4s infinite ease-in-out both;\n }\n\n .dot:nth-child(1) { animation-delay: -0.32s; }\n .dot:nth-child(2) { animation-delay: -0.16s; }\n .dot:nth-child(3) { animation-delay: 0s; }\n\n @keyframes bounce {\n 0%, 80%, 100% {\n transform: scale(0.4);\n opacity: 0.4;\n }\n 40% {\n transform: scale(1);\n opacity: 1;\n }\n }\n\n \/*白色文字*\/\n h3,h5,#loading {\n color:#ffffff\n }\n \n \/*加载完成\/失败的提示样式*\/\n .load-complete {\n color: #00d9ff;\n }\n .load-fail {\n color: #ff4444;\n }\n \n \/*下一页链接样式*\/\n .next-page-link {\n color: #00d9ff;\n text-decoration: none;\n border-bottom: 1px solid transparent;\n transition: border-color 0.3s;\n }\n .next-page-link:hover {\n border-bottom-color: #00d9ff;\n }\n <\/style>\n<\/head>\n\n<body>\n <h3>{{@@.h@tag.h1@text}}<\/h3>\n <div id=\"box\">{{@@#picg@img@html}}<\/div>\n <div id=\"loading\">\n <div class=\"loading-line\">\n <span class=\"loading-text\">\n 加载中\n <span class=\"loading-dots\">\n <span class=\"dot\"><\/span>\n <span class=\"dot\"><\/span>\n <span class=\"dot\"><\/span>\n <\/span>\n <\/span>\n <\/div>\n <div class=\"loading-line\" id=\"nextPageUrl\">\n {{baseUrl.replace(\/.*\\\/\/,'')}}\n <\/div>\n <\/div>\n\n <script>\n var loads;\n var box;\n \/\/ 节流相关变量\n var isLoading = false;\n var loadCooldown = false;\n \/\/ 基础URL,用于计算下一页链接\n var baseUrl = \"{{baseUrl.replace('.html','_')}}\";\n \n $(document).ready(function () {\n box = document.getElementById(\"box\");\n loads = document.getElementById(\"loading\");\n new Viewer(box, { title: false, interval: 3000 });\n \n var i = 2;\n \/\/ 尝试获取总页数,如果获取失败默认给个大一点的数字或者1\n var pageStr = \"{{@@class.pagelist.0@tag.a.-2@textNodes##\\n}}\";\n var page = parseInt(pageStr);\n if(isNaN(page)) page = 100; \/\/ 容错处理\n \n new IntersectionObserver(entries => {\n if (entries[0].intersectionRatio <= 0) return;\n \n \/\/ 节流:如果正在加载或冷却中,直接返回\n if (isLoading || loadCooldown) return;\n \n \/\/ 如果超过总页数\n if (i > page) {\n $('#loading').html('<span class=\"load-complete\">已显示全部<\/span>');\n return;\n }\n \n \/\/ 开始加载,设置标志\n isLoading = true;\n \n fetchHtml(i, page, function(success) {\n \/\/ 回调:加载完成,解除标志,页码+1\n isLoading = false;\n if (success) {\n i += 1;\n \n \/\/ 加载完后冷却 300ms,防止立即触发下一次\n loadCooldown = true;\n setTimeout(function() {\n loadCooldown = false;\n }, 300);\n }\n });\n \n }).observe(loads);\n });\n\n function fetchHtml(currentPage, totalPage, callback) {\n var startTime = Date.now();\n var minLoadTime = 600; \/\/ 最少显示600ms动画\n var nurl = baseUrl + currentPage + '.html';\n \/\/ 计算下一页链接(当前加载页+1)\n var nextPageUrl = baseUrl + (currentPage + 1) + '.html';\n \n $.ajax({\n url: nurl,\n dataType: 'html',\n success: function (html) {\n var elapsed = Date.now() - startTime;\n var remaining = minLoadTime - elapsed;\n \n setTimeout(function() {\n $('#box').append('<h5>' + currentPage + '\/' + totalPage + '<\/h5>');\n \n \/\/ 修正:使用 #picg img 选择器,与主规则一致\n var newImg = $(html).find('#picg img');\n if(newImg.length === 0) {\n \/\/ 备用选择器,防止ID变化\n newImg = $(html).find('.content img, img');\n }\n \n $('#box').append(newImg);\n box.viewer.update();\n \n \/\/ 只有最后一页才改文字,否则恢复动画结构并更新下一页链接\n if (currentPage >= totalPage) {\n $('#loading').html('<span class=\"load-complete\">已显示全部<\/span>');\n } else {\n \/\/ 短暂显示\"已加载\"然后恢复\"加载中...\"并更新下一页链接\n $('#loading').html('<div class=\"loading-line\"><span class=\"load-complete\">已加载<\/span><\/div>');\n setTimeout(function() {\n \/\/ 恢复动画结构,使用计算好的下一页链接\n $('#loading').html(`\n <div class=\"loading-line\">\n <span class=\"loading-text\">\n 加载中\n <span class=\"loading-dots\">\n <span class=\"dot\"><\/span>\n <span class=\"dot\"><\/span>\n <span class=\"dot\"><\/span>\n <\/span>\n <\/span>\n <\/div>\n <div class=\"loading-line\" id=\"nextPageUrl\">\n ${nextPageUrl.replace(\/.*\\\/\/,'')}\n <\/div>\n `);\n }, 400);\n }\n \n \/\/ 执行回调,通知加载成功\n callback(true);\n \n }, Math.max(0, remaining));\n },\n error: function (xhr) { \n var elapsed = Date.now() - startTime;\n var remaining = minLoadTime - elapsed;\n \n setTimeout(function() {\n $('#loading').html('<span class=\"load-fail\">加载失败<\/span>');\n callback(false); \/\/ 错误也要解除标志\n }, Math.max(0, remaining));\n }\n });\n }\n <\/script>\n<\/body>\n<\/html>",
"ruleImage": "img@lazy-src||img@src",
"ruleLink": "a.0@href",
"ruleNextPage": "@js:\nlet match = baseUrl.match(\/_(\\d+)\/)\nif(match){\n\t let next = +match[1] + 1;\n\t baseUrl.replace(\/_\\d+\/, \"_\"+next)\n}",
"ruleTitle": ".Title a@text||.title a@text",
"showWebLog": false,
"singleUrl": false,
"sortUrl": "首页::\/\n萌妹萝莉::\/shey\/yingtiiurm\/11_1.html\n精品套图::\/shey\/yingtiiurm\/18_1.html\n无圣光::\/shey\/yingtiiurm\/25_1.html\n日韩套图::\/shey\/yingtiiurm\/2_1.html\n内衣丝袜::\/shey\/yingtiiurm\/9_1.html\n高清套图::\/shey\/yingtiiurm\/24_1.html\n性感美女::\/shey\/yingtiiurm\/1_1.html",
"sourceGroup": "🔞图片",
"sourceIcon": "http:\/\/www.sytuk.com\/favicon.ico",
"sourceName": "摄影图库",
"sourceUrl": "http:\/\/www.sytuk.com\/",
"type": 0
}