[
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": -2,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773223654663,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".item",
    "ruleContent": ".post-content@img@html\n\n<js>##class=\"img\"##loading=\"lazy\"</js>\n\n\n<js>##alt.*>##></js>",
    "ruleImage": "img@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": ".item-num@text",
    "ruleTitle": ".item-link-text@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::page/{{page}}/\n萝莉COS::/index.php/mntu/1/{{page}}/\n网红COS::/index.php/mntu/2/{{page}}/\n轻兰映画::/index.php/mntu/3/{{page}}/\n韩国美女::/index.php/mntu/4/{{page}}/\n丝袜美女::/index.php/mntu/130/{{page}}/\n动漫美女::/index.php/mntu/137/{{page}}/\nJK制服::/index.php/mntu/175/{{page}}/",
    "sourceGroup": "h",
    "sourceIcon": "https://www.446m.com/icon.png",
    "sourceName": "萌图社",
    "sourceUrl": "https://www.446m.com/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 12; 22041211AC Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36\"}",
    "lastUpdateTime": 1769952203190,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".list@li",
    "ruleContent": "<js>\nvar v = result.match(/source\\s*=\\s*[\"']([^\"']*?\\.(m3u8|mp4)\\b[^\"']*)[\"']/i);\nvar p = v ? v[1].replace(/\\\\/g,'') : '';\nvar t = '@get:{t}';\nvar d = java.getString('[property=\"video:tag\"]@content');\nvar sign1 = java.base64Decode('44CQ5aSc5piO56m644CR55qE5pKt5pS+5Zmo');\nvar sign2 = java.base64Decode('5LuF5L6b5Liq5Lq65a2m5Lmg5L2/55So77yM5Lil56aB5YiG5Lqr44CB5YCS5Y2W5Y+K5Lu75L2V6L+d5rOV6KGM5Li677yB');\nvar sign3 = java.base64Decode('5L2/55So6ICF6Ieq6KGM5om/5ouF6aOO6Zmp5LiO6LSj5Lu7');\n`<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>${t}</title>\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:-apple-system,sans-serif;background:#f0f9ff;padding:10px}\n.v-box{max-width:800px;margin:0 auto;background:white;border-radius:12px;box-shadow:0 5px 15px rgba(0,0,0,0.1);overflow:hidden}\n.header{padding:12px;border-bottom:1px solid #eee;display:flex;flex-wrap:wrap;justify-content:space-between}\n.sign{background:#e9f7ff;padding:6px;border-radius:6px;margin-bottom:8px;font-size:14px;color:#1a73e8;width:100%}\n.title{font-size:18px;font-weight:600;margin-bottom:8px;width:100%}\n.tags{color:#5f6368;font-size:14px;flex:1;min-width:60%;word-break:break-all}\n.time{color:#5f6368;font-size:14px;text-align:right;flex-basis:35%}\n.v-wrap{position:relative;padding-top:56.25%;background:#000}\n.video{position:absolute;top:0;left:0;width:100%;height:100%}\n.footer{padding:8px;text-align:center;color:#5f6368;font-size:13px}\n.info-box{padding:15px;font-size:14px;line-height:1.6}\n.info-box p{margin:8px 0}\n.hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(0,0,0,0.7);color:#fff;padding:12px 20px;border-radius:20px;font-size:1.1rem;z-index:10;display:none}\n.controls{position:absolute;top:0;left:0;width:100%;height:4px;background:rgba(255,255,255,0.3);z-index:5;transition:opacity 0.3s}\n.progress{height:100%;background:#4a9eff;width:0}\n</style>\n</head>\n<body>\n<div class=\"v-box\">\n<div class=\"header\">\n<div class=\"sign\" style=\"text-align:center;padding:5px 0\">\n<div>${sign1}</div>\n<div style=\"text-align:left; padding-top:4px\">\n${sign2}<br>${sign3}</div>\n</div>\n<div class=\"title\">${t}</div>\n<div class=\"tags\">${d}</div>\n<div class=\"time\" id=\"timeDisplay\">00:00/00:00</div></div>\n<div class=\"v-wrap\">\n<div class=\"controls\"><div class=\"progress\" id=\"progressBar\"></div></div>\n<div class=\"hint\" id=\"hint\">快进中 &gt;&gt;</div>\n<video class=\"video\" id=\"v\" controls playsinline>\n<source src=\"${p}\" type=\"video/mp4\">您的浏览器不支持HTML5视频\n</video>\n</div>\n<div class=\"footer\">滑动调整进度 | 长按2倍速</div>\n</div>\n<script>\nvar v = document.getElementById('v');\nvar tDisplay = document.getElementById('timeDisplay');\nvar pBar = document.getElementById('progressBar');\nvar hint = document.getElementById('hint');\nvar startX = 0, startTime = 0;\nvar longPressTimer;\nvar sensitivity = 0.1;\nvar longPressTime = 500;\nvar hintDuration = 2000;\nfunction updateTime() {\nif (!v.duration) return;\nvar m1 = Math.floor(v.currentTime / 60);\nvar s1 = Math.floor(v.currentTime % 60);\nvar m2 = Math.floor(v.duration / 60);\nvar s2 = Math.floor(v.duration % 60);\ntDisplay.textContent = m1 + ':' + (s1 < 10 ? '0' : '') + s1 + '/' + m2 + ':' + (s2 < 10 ? '0' : '') + s2;\npBar.style.width = (v.currentTime / v.duration) * 100 + '%';}\nv.addEventListener('timeupdate', updateTime);\nv.addEventListener('loadedmetadata', updateTime);\nv.addEventListener('touchstart', function(e) {\nstartX = e.touches[0].clientX;\nstartTime = Date.now();\nif (longPressTimer) clearTimeout(longPressTimer);\nhint.style.display = 'none';\nlongPressTimer = setTimeout(function() {\nv.playbackRate = 2.0;\nhint.style.display = 'block';\nsetTimeout(function() { hint.style.display = 'none'; }, hintDuration);}, longPressTime);});\nv.addEventListener('touchmove', function(e) {\ne.preventDefault();\nclearTimeout(longPressTimer);\nvar diffX = e.touches[0].clientX - startX;\nvar change = diffX * sensitivity * v.duration / 100;\nv.currentTime = Math.max(0, Math.min(v.currentTime + change, v.duration));\nstartX = e.touches[0].clientX;updateTime();});\nv.addEventListener('touchend', function() {\nv.playbackRate = 1.0;\nclearTimeout(longPressTimer);});\n</script>\n</body>\n</html>`\n</js>",
    "ruleImage": "img@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.vodlist_img@html##(\\d+)-(\\d+)-(\\d+)##$0###}} | {{@@.vodlist_img@span.0@text}}",
    "ruleTitle": ".title@text@put:{\"t\":\"@@.title@text\"}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索 🔍::/s/page/{{page}}/wd/{{source.getVariable()}}/\n最新::/label/hot/by/time/page/{{page}}/\n日榜::/label/hot/by/hits_day/page/{{page}}/\n周榜::/label/hot/by/hits_week/page/{{page}}/\n月榜::/label/hot/by/hits_month/page/{{page}}/\n国产 🎞::/t/1-{{page}}/\n自拍::/t/5-{{page}}/\n主播大秀::/t/6-{{page}}/\n主播诱惑::/t/36-{{page}}/\n探花::/t/7-{{page}}/\n偷拍::/t/8-{{page}}/\n乱伦::/t/8-{{page}}/\n吃瓜::/t/10-{{page}}/\n抖阴::/t/11-{{page}}/\nAV::/t/12-{{page}}/\n福利姬::/t/20-{{page}}/\n侵犯::/t/37-{{page}}/\n日韩 🎞::/t/2-{{page}}/\n日韩自拍::/t/13-{{page}}/\n日本无码::/t/14-{{page}}/\n字幕::/t/15-{{page}}/\n解说::/t/17-{{page}}/\n换脸::/t/18-{{page}}/\n欧美 🎞::/t/3-{{page}}/\n自拍::/t/21-{{page}}/\n字幕::/t/22-{{page}}/\n伦理 🎞::/t/4-{{page}}/\n三级::/t/29-{{page}}/\n日韩::/t/30-{{page}}/\n动漫 🎞::/t/16-{{page}}/\n剧集::/t/26-{{page}}/\n3D::/t/27-{{page}}/\n次元::/t/28-{{page}}/\n另类 🎞::/t/39-{{page}}/\n同性恋::/t/38-{{page}}/\n变性::/t/40-{{page}}/\n重口味::/t/23-{{page}}/",
    "sourceComment": "<声明>\n//2025.8.10 作者：夜明空\n//源社区：https://taoba.cf\n//仅供个人学习使用，严禁分享、倒卖及任何违法行为！使用者自行承担风险与责任\n</声明>\n\n//网址更新频繁，有需要请到发布页自行更新\n//发布页：\nhttps://18j.18hu.link/mdce\n18j.vip\n18zy.vip\n51zy.vip",
    "sourceGroup": "h",
    "sourceIcon": "https://18oc.life/18link/18j/images/favicon.ico",
    "sourceName": "18J-夜明空",
    "sourceUrl": "https://18oc.life/label/tag/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://www.yckceo.com/favicon.ico",
    "sourceName": "源仓库",
    "sourceUrl": "https://yckceo.vip/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 2,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36\"}",
    "lastUpdateTime": 1773223359618,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": true,
    "singleUrl": true,
    "sourceGroup": "h可用",
    "sourceIcon": "",
    "sourceName": "icu",
    "sourceUrl": "https://ztopaq7zrz.hq555.icu:1678/category/102",
    "type": 2
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "coverDecodeJs": "java.createSymmetricCrypto(\"AES/CBC/NoPadding\",\"f5d965df75336270\",\"97b60394abc2fbe1\").decrypt(result)",
    "customOrder": 3,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; U; Android 13; zh-Hans-CN; PFJM10 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/135.0.4896.58 Quark/6.13.6.581 Mobile Safari/537.36\",\n\"Accept-Language\":\"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7\"}",
    "lastUpdateTime": 1774283231132,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "#body>.container>.row>div[role=\"main\"]>article:not(:has(meta[content=\"广告\"]))>a",
    "ruleContent": "@js:\nlet urls = [];\nlet resultStr = String(result);\n\nlet getM3u8 = (html = resultStr) => {\n    let url = /(https?:[^'\"\\s]*?\\.m3u8[^'\"\\s]*)/g;\n    let urlSet = new Set();\n    for (let match of (html.matchAll(url) || [])) {\n  \t   let ul = match[1].replace(/\\\\/g, \"\");\n  \t   urlSet.add(ul);\n    \t};\n    return Array.from(urlSet);\n};\n\n let updateProgress = (current, total) => {\n    let percentage = Math.round(current / total * 10000)/100;\n    let blocks = Math.floor(percentage / 10);\n    let progressBar = \"█\".repeat(blocks) + \"░\".repeat(10 - blocks);\n    java.longToast(`【加载进度】\\n${progressBar} \\n${percentage}%`);\n};\n\nif (/点我/.test(result) && /查看详情/.test(result)) {\n    let list = java.getElements('@@#post>article>.post-content>p>a');\n    let links = Array.from(list).slice(0,-1);\n    let tempUrls = []; \n    links.forEach((link, index) => {\n        updateProgress(index + 1, links.length);\n        \n        let href = String(link.attr('href'));\n        let fullUrl = `${source.key}${href}`;\n        let doc = String(java.ajax(fullUrl));\n        let pageUrls = getM3u8(doc);\n        if (pageUrls.length > 0) {\n            tempUrls = tempUrls.concat(pageUrls);\n        }\n        if (index === links.length - 1) {\n            urls = tempUrls;\n        }\n    })\n} else {\n    urls = getM3u8();\n};\n\n`<html>\n    <head>\n        <meta name=\"viewport\" content=\"width=device-width\">\n        <style>\n            body {\n                margin: 0;\n                font-family: Arial, sans-serif;\n                background: linear-gradient(135deg, #ece9e6, #ffffff);\n                display: flex;\n                flex-direction: column;\n                align-items: center;\n                justify-content: flex-start;\n                padding: 20px;\n            }\n            .container {\n                width: 100%;\n                max-width: 800px;\n                background: #fff;\n                border-radius: 10px;\n                box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n                overflow: hidden;\n                margin-bottom: 20px;\n            }\n            h3 {\n            \t    text-align: center;\n                margin: 0;\n                padding: 10px 20px;\n                font-size: 0.9em;\n                background: #333;\n                color: #fff;\n                border-radius: 10px 10px 0 0;\n            }\n            .video-container {\n                width: 100%;\n                background: #000;\n                position: relative;\n            }\n            video {\n                width: 100%;\n                height: auto;\n                display: block;\n            }\n            .info-container {\n                padding: 20px;\n            }\n            .info-container p {\n                margin: 10px 0;\n                color: #555;\n            }\n            .info-container p span {\n                font-weight: bold;\n                color: #000;\n            }\n            .nav-container {\n                display: flex;\n                justify-content: space-between;\n                align-items: center;\n                padding: 15px 20px;\n                background: #f5f5f5;\n                border-top: 1px solid #ddd;\n            }\n            .nav-button {\n                padding: 10px 20px;\n                background: #007bff;\n                color: white;\n                border: none;\n                border-radius: 5px;\n                cursor: pointer;\n                font-size: 14px;\n            }\n            .nav-button:disabled {\n                background: #6c757d;\n                cursor: not-allowed;\n            }\n            .page-select {\n                padding: 10px 15px;\n                border: 1px solid #ddd;\n                border-radius: 5px;\n                font-size: 14px;\n                background: white;\n                min-width: 120px;\n            }\n            .video-info {\n                text-align: center;\n                padding: 10px;\n                background: #f8f9fa;\n                border-bottom: 1px solid #ddd;\n                font-size: 14px;\n                color: #666;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"container\">\n        <h3>当前播放: 第<span id=\"currentVideo\">1</span>集 / 共${urls.length}集</h3>\n            <div class=\"video-container\">\n                <video controls autoplay name=\"media\" id=\"videoPlayer\">\n                    <source src=\"${urls[0] || ''}\" type=\"application/x-mpegURL\">\n                </video>\n            </div>\n            <div class=\"nav-container\">\n                <button class=\"nav-button\" id=\"prevBtn\" onclick=\"changeVideo(-1)\">上一集</button>\n                <select class=\"page-select\" id=\"pageSelect\">\n                    <!-- 选项将通过JavaScript动态生成 -->\n                </select>\n                <button class=\"nav-button\" id=\"nextBtn\" onclick=\"changeVideo(1)\">下一集</button>\n            </div>\n            <div class=\"info-container\">\n            </div>\n        </div>\n\n        <script>\n            // 视频地址数组和当前索引\n            const videoUrls = ${JSON.stringify(urls)};\n            let currentVideoIndex = 0;\n            \n            // 获取DOM元素\n            const video = document.getElementById('videoPlayer');\n            const prevBtn = document.getElementById('prevBtn');\n            const nextBtn = document.getElementById('nextBtn');\n            const pageSelect = document.getElementById('pageSelect');\n            const currentVideoSpan = document.getElementById('currentVideo');\n            \n            // 生成下拉菜单选项\n            function generateSelectOptions() {\n                let optionsHtml = '';\n                for (let i = 0; i < videoUrls.length; i++) {\n                   optionsHtml += '<option value=\"' + i + '\">第' + (i + 1) + '集</option>';\n    };\n                pageSelect.innerHTML = optionsHtml;\n             }\n            \n            // 更新按钮状态和显示\n            function updateButtons() {\n                prevBtn.disabled = currentVideoIndex === 0;\n                nextBtn.disabled = currentVideoIndex === videoUrls.length - 1;\n                pageSelect.value = currentVideoIndex;\n                currentVideoSpan.textContent = currentVideoIndex + 1;\n            }\n            \n            // 切换视频\n            function changeVideo(direction) {\n                const newIndex = currentVideoIndex + direction;\n                if (newIndex >= 0 && newIndex < videoUrls.length) {\n                    currentVideoIndex = newIndex;\n                    video.src = videoUrls[currentVideoIndex];\n                    video.load();\n                    updateButtons();\n                }\n            }\n            \n            // 选择特定视频\n            function selectVideo(index) {\n                const newIndex = parseInt(index);\n                if (newIndex >= 0 && newIndex < videoUrls.length) {\n                    currentVideoIndex = newIndex;\n                    video.src = videoUrls[currentVideoIndex];\n                    video.load();\n                    updateButtons();\n                }\n            }\n            \n            // 初始化按钮状态\n            generateSelectOptions();\n            updateButtons();\n            \n            // 绑定下拉菜单事件\n            pageSelect.addEventListener('change',function() {\n               selectVideo(this.value);\n             });\n            \n            // 触摸控制相关代码\n            let touchStartX = 0;\n            let touchStartY = 0;\n            let touchStartTime = 0;\n            let isLongPress = false;\n\n            // 滑动快进\n            video.addEventListener('touchstart', (e) => {\n                touchStartX = e.touches[0].clientX;\n                touchStartY = e.touches[0].clientY;\n                touchStartTime = Date.now();\n                isLongPress = false;\n            });\n\n            video.addEventListener('touchmove', (e) => {\n                const deltaX = e.touches[0].clientX - touchStartX;\n                const deltaY = e.touches[0].clientY - touchStartY;\n\n                // 如果是水平滑动，且未进入长按状态\n                if (Math.abs(deltaX) > Math.abs(deltaY) && !isLongPress) {\n                    const duration = video.duration;\n                    const seekTime = video.currentTime + (deltaX / 100); // 每滑动100px快进1秒\n                    video.currentTime = Math.min(Math.max(seekTime, 0), duration);\n                }\n            });\n\n            // 长按快进\n            video.addEventListener('touchend', (e) => {\n                const touchEndTime = Date.now();\n                const touchDuration = touchEndTime - touchStartTime;\n\n                // 如果长按时间超过500ms，进入长按快进状态\n                if (touchDuration > 500) {\n                    isLongPress = true;\n                    // 在长按状态下，根据滑动距离快进\n                    const deltaX = e.changedTouches[0].clientX - touchStartX;\n                    const duration = video.duration;\n                    const seekTime = video.currentTime + (deltaX / 100); // 每滑动100px快进1秒\n                    video.currentTime = Math.min(Math.max(seekTime, 0), duration);\n                } else {\n                    isLongPress = false;\n                }\n            });\n\n            // 防止默认行为（如页面滚动）\n            video.addEventListener('touchmove', (e) => {\n                e.preventDefault();\n            });\n        </script>\n    </body>\n</html>`",
    "ruleImage": "@js:\nvar text = java.getString('script@html');\nvar match = text.match(/loadBannerDirect\\('([^']+)'/);\nvar img = match ? match[1] : '';\nimg;",
    "ruleLink": "href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.wraps@text}}{{@@.post-card-info span@text##\\n}}",
    "ruleTitle": "h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/page/{{page}}/\n每日大赛::/category/mrds/{{page}}/\n搜索::/search/{{source.getVariable()}}/{{page}}/\n主题大赛::/category/ztds/{{page}}/\n热搜吃瓜::/category/rstt/{{page}}/\n校园学生::/category/xazd/{{page}}/\n必撸大赛::/category/blyp/{{page}}/\n反差泄密::/category/fctg/{{page}}/\n网红黑料::/category/mhds/{{page}}/\n猎奇重口::/category/lqdp/{{page}}/\nAV看片::/category/jdsj/{{page}}/\n明星大赛::/category/mxwh/{{page}}/\n动漫之家::/category/smdh/{{page}}/\n影视国漫::/category/dypd/{{page}}/\ncos写真::/category/mtds/{{page}}/\n声控ASMR::/category/ysds/{{page}}/\n寸止挑战::/category/czds/{{page}}/\n混剪PMV::/category/hjds/{{page}}/\n原创投稿::/category/tgds/{{page}}/\n欧美精品::/category/omjp/{{page}}/\n全网参赛::/category/qwcs/{{page}}/",
    "sourceComment": "发布页: https://www.njttvylz.cc\n最新网址: https://mrds72.com\n永久地址: https://mrds.com\n备用网址: https://mrdsx5.com\n备用线路1: big.ktgchwz.xyz\n备用线路2: adjust.ktgchwz.xyz\n备用线路3: borrow.ktgchwz.xyz\n备用线路4: black.ktgchwz.xyz\n获取地址: mrds.club@gmail.com",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "每日大赛",
    "sourceUrl": "https://d3fzqoxno61m61.rnxuiofe.com/",
    "style": "iframe{\n\theight:600px\n}\ntitle{\n\tdisplay:block\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "coverDecodeJs": "function toByteArray(input) {\n  var out = new Packages.java.io.ByteArrayOutputStream();\n  var buffer = java.strToBytes('\\0'.repeat(4096));\n  var bytesRead;\n  while ((bytesRead = input.read(buffer)) != -1) {\n    out.write(buffer, 0, bytesRead);\n  }\n  return out.toByteArray();\n}\n\n(function() {\n  if (src.endsWith('.gif')) {\n    return toByteArray(result);\n  }\n\n  // 非GIF文件继续走AES解密逻辑\n  var keyBytes = \"102_53_100_57_54_53_100_102_55_53_51_51_54_50_55_48\"\n    .split('_')\n    .map(c => parseInt(c, 10));\n\n  var ivBytes = \"57_55_98_54_48_51_57_52_97_98_99_50_102_98_101_49\"\n    .split('_')\n    .map(c => parseInt(c, 10));\n\n  return java.createSymmetricCrypto(\n    \"AES/CBC/PKCS5Padding\", \n    keyBytes,\n    ivBytes\n  ).decrypt(result);\n})();",
    "customOrder": 6,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 11; Pixel 3 XL Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.4988.0 Mobile Safari/537.36 SearchCraft/3.9.2 (Baidu; P1 11)\",\n\t\"referer\": \"{{baseUrl}}\"\n}",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n  // 触摸事件处理\n  function handleTouchStart(e) {\nstartX = e.touches[0].clientX;\nstartTime = video.currentTime;\nwasPaused = video.paused;\nlongPressTimer = setTimeout(() => {\n  video.playbackRate = FAST_SPEED;\n  if (wasPaused) video.play();\n}, LONG_PRESS_DELAY);\n  }\n  function handleTouchMove(e) {\nif (longPressTimer) {\n  clearTimeout(longPressTimer);\n  longPressTimer = null;\n}\nconst dx = e.touches[0].clientX - startX;\nif (Math.abs(dx) > 10) {\n  if (!isDragging) {\nvideo.pause();\nisDragging = true;\n  }\n  const change = (dx / video.clientWidth) * video.duration;\n  video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n}\n  }\n  function handleTouchEnd() {\nif (longPressTimer) {\n  clearTimeout(longPressTimer);\n  longPressTimer = null;\n}\nif (isDragging) {\n  video.playbackRate = NORMAL_SPEED;\n  video.play();\n  isDragging = false;\n} else if (video.playbackRate === FAST_SPEED) {\n  video.playbackRate = NORMAL_SPEED;\n  if (wasPaused) video.pause();\n}\n  }\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px') {\nconst button = document.createElement('button');\nbutton.textContent = text;\nbutton.style.position = 'absolute';\nbutton.style[position.horizontal] = '0';\nbutton.style.top = '50%';\nbutton.style.transform = 'translateY(-50%)';\nbutton.style.zIndex = '999';\nbutton.style.padding = '1px';\nbutton.style.background = 'rgba(51, 51, 51, 0)';\nbutton.style.color = '#fff';\nbutton.style.border = 'none';\nbutton.style.cursor = 'pointer';\nbutton.style.width = width;\nbutton.style.height = '30px';\nbutton.addEventListener('click', onClick);\nvideo.parentNode.appendChild(button);\nreturn button;\n  }\n  // 旋转按钮（右侧）\n  createButton('⟳', () => {\nconst currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\nconst newRotation = (currentRotation + 90) % 360;\nvideo.setAttribute('data-rotation', newRotation);\n// 保留当前的缩放比例\nconst currentTransform = video.style.transform || '';\nlet currentScale = 1;\nconst scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\nif (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\nvideo.style.transform = `rotate(${newRotation}deg) scale(${currentScale})`;\n  }, { horizontal: 'right' });\n  // 缩放按钮（左侧）\n  let zoomCount = 0;\n  createButton('+', () => {\nconst currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n// 获取当前缩放比例\nconst currentTransform = video.style.transform || '';\nlet currentScale = 1;\nconst scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\nif (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\nif (zoomCount < 4) {\n  const newScale = currentScale * 1.25;\n  video.style.transform = `rotate(${currentRotation}deg) scale(${newScale})`;\n  zoomCount++;\n} else {\n  video.style.transform = `rotate(${currentRotation}deg) scale(1)`;\n  zoomCount = 0;\n}\n  }, { horizontal: 'left' });\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n{ text: '-5分', time: -300 },\n{ text: '-1分', time: -60 },\n{ text: '+1分', time: 60 },\n{ text: '+5分', time: 300 }\n  ];\n  seekButtons.forEach(({ text, time }) => {\nconst button = document.createElement('button');\nbutton.textContent = text;\nbutton.style.padding = '1px';\nbutton.style.background = 'rgba(51, 51, 51, 0)';\nbutton.style.color = '#fff';\nbutton.style.border = 'none';\nbutton.style.cursor = 'pointer';\nbutton.style.width = '60px';\nbutton.style.height = '30px';\nbutton.addEventListener('click', () => {\n  video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n});\nbuttonContainer.appendChild(button);\n  });\n  video.parentNode.appendChild(buttonContainer);\n}\n// 修改初始化逻辑，增加重试机制\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\nconst video = document.getElementById('video');\nif (video) {\n  setupCustomPlayer(video);\n} else if (retries < maxRetries) {\n  retries++;\n  setTimeout(tryInit, retryInterval);\n}\n  };\n  tryInit();\n}\n// 使用重试机制初始化播放器\ninitPlayerWithRetry();",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".video-item",
    "ruleContent": "{{@@.player-container@script@all}}\n@js:\nvar scriptContent = result.match(/<script>([\\s\\S]*?)<\\/script>/)[1];\nvar decoded = eval(scriptContent.split('eval').join(''));\nvar fakeDoc = {write: function(h) { this.h = h; }};\neval(decoded.split('document').join('fakeDoc'));\nvar src = fakeDoc.h.match(/src=\"([^\"]*)\"/)[1];\nvar response = java.ajax(source.sourceUrl + src);\nif (response && response.indexOf('eval(function(p,a,c,k,e,d)') === 0) {\nvar innerDecoded = eval(response.split('eval').join(''));\nvar fakeDoc2 = {write: function(h) { this.h = h; }};\neval(innerDecoded.split('document').join('fakeDoc2'));\nresult = fakeDoc2.h.match(/data-url=\"([^\"]*)\"/)[1];\n} else {result = response;}\nvar sources = [`${result}`];\nvar sourceButtons = \"\";\nif (sources.length > 1) {\nfor (var i = 0; i < sources.length; i++) {\nsourceButtons += `<button class=\"source-btn\" data-index=\"${i}\">源${i+1}</button>`;\n}}\nresult=`\n<html>  \n<head>  \n<meta charset=\"utf-8\">  \n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\">\n<meta name=\"referrer\" content=\"never\"/>\n<script src=\"https://s4.zstatic.net/ajax/libs/hls.js/1.6.13/hls.min.js\"></script>\n<style>\nhtml, body { text-align: center;margin: 0; padding: 0; width: 100%; overflow: hidden; }\n.source-container { position: absolute; top: 23px; right: 1px; z-index: 10; display: flex; gap: 1px; }\n.source-btn { color: #ff0; background: rgba(0,0,0,0.7); padding: 1px 5px; border-radius: 10px; font-size: 13px; border: none; cursor: pointer; }\n.source-btn.active { color: red !important; }\n</style>\n</head>  \n<body>  \n<div class=\"container\">\n<div class=\"title\">{{@@h1@text##A片|日本AV}}</div>\n${sources.length > 1 ? `<div class=\"source-container\">${sourceButtons}</div>` : ''}\n<video id=\"video\" width=\"100%\" height=\"91%\" controls autoplay muted loop></video>\n<script>\nconst video = document.getElementById('video');\nconst sources = ${JSON.stringify(sources)};\nlet hls = null;\nlet currentSource = 0;\nfunction playHLS(url) {\nif (hls) hls.destroy();\nif (Hls.isSupported()) {\nhls = new Hls({\nenableSoftwareAES: true, // 强制软件解密\nforceKeyFrameOnDiscontinuity: true, // 关键帧恢复\nenableWorker: true, // 启用Web Worker提升性能\nlowLatencyMode: false, // 点播关闭低延迟模式\nbackBufferLength: 90, // 增加后缓冲长度，支持快速回退\nmaxBufferLength: 30,  // 最大缓冲区长度(秒)\nmaxMaxBufferLength: 60,   // 绝对最大缓冲区长度\nmaxBufferSize: 60 * 1000 * 1000,  // 缓冲区大小限制(60MB)\nmaxBufferHole: 0.5, // 减少缓冲区空洞容忍度\nabrEwmaFastLive: 3.0,   // 快速ABR响应\nabrEwmaSlowLive: 9.0, // 慢速ABR响应  \nabrEwmaDefaultEstimate: 500000,  // 默认带宽估计(500kbps)\nabrMaxWithRealBitrate: true, // 基于实际码率进行ABR\nmaxFragLookUpTolerance: 0.25, // 片段查找容差\nfragLoadingMaxRetry: 6, // 片段加载重试次数\nfragLoadingRetryDelay: 1000, // 片段加载重试延迟\nmanifestLoadingMaxRetry: 3, // 清单加载重试次数\nlevelLoadingMaxRetry: 4, // 级别加载重试次数\n});\nhls.loadSource(url);\nhls.attachMedia(video);\n} else if (video.canPlayType('application/vnd.apple.mpegurl')) {\nvideo.src = url;\n}}\nfunction switchSource(index) {\ncurrentSource = index;\nplayHLS(sources[index]);\nupdateButtons();}\nfunction updateButtons() {\ndocument.querySelectorAll('.source-btn').forEach((btn, i) => {\nbtn.classList.toggle('active', i === currentSource);\n});}\ndocument.querySelectorAll('.source-btn').forEach(btn => {\nbtn.addEventListener('click', () => switchSource(parseInt(btn.dataset.index)));\n});\nif (sources.length > 0) switchSource(0);\n</script>\n<script src=\"https://s4.zstatic.net/ajax/libs/crypto-js/4.1.1/crypto-js.min.js\"></script>\n<script>\nconst KEY_STR = \"102_53_100_57_54_53_100_102_55_53_51_51_54_50_55_48\";\nconst IV_STR = \"57_55_98_54_48_51_57_52_97_98_99_50_102_98_101_49\";\nconst key = CryptoJS.enc.Utf8.parse(\n  KEY_STR.split('_').map(c => String.fromCharCode(parseInt(c, 10))).join('')\n);\nconst iv = CryptoJS.enc.Utf8.parse(\n  IV_STR.split('_').map(c => String.fromCharCode(parseInt(c, 10))).join('')\n);\nasync function ab2b64(buffer) {\n  return new Promise(resolve => {\nconst reader = new FileReader();\nreader.onload = () => resolve(reader.result.split(',')[1]);\nreader.readAsDataURL(new Blob([buffer]));\n  });}\nasync function decryptImageToBlob(url) {\n  const response = await fetch(url, { mode: 'cors' });\n  const buffer = await response.arrayBuffer();\n  const base64Data = await ab2b64(buffer);\n  const decrypted = CryptoJS.AES.decrypt(\nbase64Data,key,\n{ iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }\n  );\n  const decryptedBytes = new Uint8Array(\ndecrypted.toString(CryptoJS.enc.Latin1)\n  .split('')\n  .map(c => c.charCodeAt(0))\n  );\n  return URL.createObjectURL(new Blob([decryptedBytes], { type: 'image/jpeg' }));\n}\nwindow.addEventListener('DOMContentLoaded', () => {\n  const video = document.getElementById('video');\n  const originalPoster = \"${java.get('pic')}\";\n  decryptImageToBlob(originalPoster).then(decryptedUrl => {\nvideo.poster = decryptedUrl;\n  });\n});\n</script>\n</div>\n</body>  \n</html>\n`;",
    "ruleImage": "{{@@img@data-src}}\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "{{@@a.0@href}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@img@data-src##\\/(\\d{8})\\/##$1##}}  ⏱️{{@@.text-sm.0@text}} ",
    "ruleTitle": "@js:\nif (/广告|禁漫/.test(`{{@@.text-sm@text}}`)) {\n    result = \"\";\n} else {\n    result = \"{{@@img@alt##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*伪男.*|.*人妖.*|.*男同.*|.*狼狗.*|.*奶狗.*|.*鲜肉.*|.*帅哥.*|.*正装.*|.*猛1.*|.*ZKtop1.*|.*体育生.*|.*大屌.*|.*双性.*|.*男男.*|.*直男.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*女性向.*|.*骚0.*|.*poop.*|.*娘娘腔.*|.*变性.*|.*TGirls.*|.*鸡巴.*|.*阴茎.*|.*男奴.*|.*奴男.*|.*同志.*|.*苏木.*|.*西装.*|.*骚受.*|.*QS.*|.*Peter.*|.*摔跤社.*|.*基情.*|.*天菜.*|.*大鸡.*|.*肌肉.*|.*薄肌.*|.*G片.*|.*术0.*|.*宏翔.*|.*男蜜.*|.*自制口.*|.*威廉.*|.*骚男.*|.*基友.*|.*美男子.*|.*鸡儿.*|.*口活王子.*|.*融化的冰.*|.*自己射.*|.*運動生.*|.*苏婧薇.*|.*社畜.*|.*纪练深.*|.*性别.*|.*淋尿.*|.*控射.*|.*熟女.*|.*CD.*|.*肥女.*|.*黄金.*|.*厕.*|.*老阿姨.*|.*排泄.*|.*臭脚.*|.*大便.*|.*马眼.*|.*聖水.*|.*尸.*|.*廁.*|.*圣水.*|.*豊満.*|.*黑妹.*|.*坦克.*|.*黑珍珠.*|.*黑屁股.*|.*黑人妹子.*|.*黑逼.*|.*孕妇.*|.*消遣.*|.*伦勃朗.*|.*拉丁裔.*|.*asmr.*|.*GOOD.*|.*奶奶.*|.*老妈.*|.*妈妈.*|.*儿子.*|.*爸爸.*|.*女儿.*|.*母子.*|.*父女.*|.*兄妹.*|.*亲姐.*|.*亲妹.*|.*VR.*|.*都丸富美.*|.*山本かを.*|.*守谷多香子.*|.*波多.*|.*飯岡.*|.*希島.*|.*希岛.*|.*深田.*|.*君島.*|.*君岛.*|.*田中瞳.*|.*向美奈.*|.*美原咲.*|.*华行香.*|.*藤泽丽.*|.*Hitomi.*|.*美乃雀.*|.*若菜奈.*|.*水野朝.*|.*後藤.*|.*明日花.*|.*卯水.*|.*由爱.*|.*JULIA.*|.*风间.*|.*風間.*|.*濑圆.*|.*平冈.*|.*藤樱.*|.*藤泽.*|.*蓮実.*|.*藤沢麗央.*|.*木村玲.*|.*SILK.*|.*afchina.*|.*fway.*|.*rebd.*|.*mbdd.*|.*眼射.*|.*水果派.*|.*解说.*|.*第.*期.*|.*π.*|.*寻花.*|.*尋花.*|.*探花.*|.*偷拍.*|.*偸拍.*|.*抄底.*|.*攝像頭.*|.*摄像头.*|.*第.*话.*|.*番系列.*|.*经典番.*|.*里番.*|.*老番.*|.*国漫.*|.*王者.*|.*斗罗.*|.*穿越.*|.*斗破.*|.*仙剑.*|.*小舞.*|.*MMD.*|.*MODEL.*|.*断雪.*|.*M男.*|.*女王.*|.*老太.*|.*黑肉.*|.*面基.*|.*情侣网黄.*|.*夫妻奴.*|.*田中.*|.*梦梦.*|.*刘玥.*|.*mb.*|.*MB系列.*|.*川怜子.*|.*NINE.*|.*婆婆.*|.*姫野.*|.*肉弹.*|.*L罩杯.*|.*黑木.*|.*爱泽沙罗.*|.*瞳美.*|.*望月绫.*|.*藤森里.*|.*舔脚.*}}\";\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/category?key=kXKDoDbJZbjRG1p&o=u&page={{ Math.ceil(Math.random()*3220) }}\n最新::/category?key=kXKDoDbJZbjRG1p&o=u&page={{page}}\n🔎搜索::/search?keyword={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}&page={{page}}\n\n无码::/avrel?key=qW3zJzQnjlw93De&o=w&t=h&page={{page}}\n中字::/avrel?key=VbD3kGQQxQO3y46&o=w&t=h&page={{page}}\n丝袜::/avrel?key=XKDoDr66b6PRG1p&o=w&t=h&page={{page}}\n群交::/avrel?key=EYJRxePPbPxNbMj&o=w&t=h&page={{page}}\n制服::/avrel?key=1z8NPrDDlDr3rpJ&o=w&t=h&page={{page}}\n强暴::/avrel?key=BbyNZ0qqWqw3vX5&o=w&t=h&page={{page}}\n调教::/avrel?key=80ONw6ddmdeRd9J&o=w&t=h&page={{page}}\n剧情::/avrel?key=8lVoErggbgE3bzZ&o=w&t=h&page={{page}}\n",
    "sourceComment": "https://github.com/kissav68/tiktok_web\nhttps://tkcr.net/\n备用地址\nhttps://tkcr.cc/\nhttps://active.omephfaj.cc/\nhttps://borrow.lnfqyii.cc/\n\n\n",
    "sourceGroup": "h",
    "sourceIcon": "https://pic.baike.soso.com/ugc/baikepic2/0/20230414235752-790014851_gif_240_240_283020.gif/0",
    "sourceName": "🌈TikPorn  S",
    "sourceUrl": "https://www.lnfqyii.cc/",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: +20px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(93% + 0px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \nvideo::-webkit-media-controls-overlay-play-button {\n    display: none !important;\n}\nvideo::-webkit-media-controls-fullscreen-button {\n    display: none !important;\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 7,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "可绘🔞图，可🔞角色扮演，可每日签到+5积分，绑定电报额外+15积分",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "DZMM",
    "sourceUrl": "https://www.dzmm.ai?rf=930dfd96",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 8,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "不能白嫖，需氪金，有月卡制度，可🔞绘图，可🔞视频，可🔞角色扮演",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "风月",
    "sourceUrl": "https://acepro.store?ref_id=abedde90-41eb-4c6f-a916-ab777c098d25",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 9,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 13; SM-G998B Build/TP1A.220624.014) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36 SearchCraft/3.9.2 \",\n    \"referer\": \"{{baseUrl}}\"\n}",
    "lastUpdateTime": 1765680387004,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".item",
    "ruleContent": "@js:\n// 定义所有视频源\nvar sources = [\n `{{@@source.0@src}}`, \n `{{@@source.1@src}}`,\n `{{@@source.2@src}}`,\n];\n\n// 生成源按钮 - 只生成非空源的按钮\nvar sourceButtons = \"\";\nvar validSources = []; // 存储有效源的索引\n\n// 收集所有非空的有效源\nfor (var i = 0; i < sources.length; i++) {\n    // 检查源是否为空（去除空格后判断）\n    if (sources[i] && sources[i].trim() !== '') {\n        validSources.push(i);\n    }\n}\n\n// 只有当有效源数量大于1时才显示按钮\nif (validSources.length > 1) {\n    for (var j = 0; j < validSources.length; j++) {\n        var index = validSources[j];\n        sourceButtons += `<button class=\"source-btn\" data-index=\"${index}\">源${index+1}</button>`;\n    }\n}\n\nresult=`\n<html>  \n<head>  \n<meta charset=\"utf-8\">  \n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\">\n<meta name=\"referrer\" content=\"never\"/>\n<script src=\"https://s4.zstatic.net/ajax/libs/hls.js/1.6.13/hls.min.js\"></script>\n<style>\nhtml, body { margin: 0; padding: 0; width: 100%; overflow: hidden; }\n.source-container { position: absolute; top: 23px; right: 1px; z-index: 10; display: flex; gap: 1px; }\n.source-btn { color: #ff0; background: rgba(0,0,0,0.7); padding: 1px 5px; border-radius: 10px; font-size: 13px; border: none; cursor: pointer; }\n.source-btn.active { color: red !important; }\n</style>\n</head>  \n<body>  \n<div class=\"container\">\n    <div class=\"title\"><span>{{@@title@text##- J163视频}}</span></div>\n    ${sourceButtons ? `<div class=\"source-container\">${sourceButtons}</div>` : ''}\n    <video id=\"video\" width=\"100%\" height=\"91%\" poster=\"{{@@script@all##preview_url: '(.*?)',##$1##}}\" controls autoplay muted loop></video>\n<script>\n    const video = document.getElementById('video');\n    const sources = ${JSON.stringify(sources)};\n    const validSources = ${JSON.stringify(validSources)}; // 有效源的索引数组\n    let hls = null;\n    let currentSource = 0;\n    \n    // 初始化HLS播放\n    function playHLS(url) {\n        if (hls) hls.destroy();\n        \n        if (Hls.isSupported()) {\n            hls = new Hls({\n                enableSoftwareAES: true,\n                maxBufferLength: 30,\n                maxMaxBufferLength: 60\n            });\n            \n            // 添加错误监听\n            hls.on(Hls.Events.ERROR, function(event, data) {\n                if (data.fatal) {\n                    switchToNextSource();\n                }\n            });\n            \n            hls.loadSource(url);\n            hls.attachMedia(video);\n        } else if (video.canPlayType('application/vnd.apple.mpegurl')) {\n            video.src = url;\n        }\n        \n        // 视频元素错误监听\n        video.onerror = function() {\n            switchToNextSource();\n        };\n    }\n\n    // 获取下一个有效源索引\n    function getNextValidSourceIndex() {\n        if (validSources.length <= 1) return currentSource;\n        \n        const currentIndex = validSources.indexOf(currentSource);\n        if (currentIndex === -1) return validSources[0];\n        \n        const nextIndex = (currentIndex + 1) % validSources.length;\n        return validSources[nextIndex];\n    }\n    \n    // 切换到下一个有效源\n    function switchToNextSource() {\n        if (validSources.length <= 1) return;\n        \n        currentSource = getNextValidSourceIndex();\n        playHLS(sources[currentSource]);\n        updateButtons();\n    }\n    \n    // 切换视频源\n    function switchSource(index) {\n        // 确保索引有效且源不为空\n        if (validSources.includes(index) && sources[index] && sources[index].trim() !== '') {\n            currentSource = index;\n            playHLS(sources[index]);\n            updateButtons();\n        }\n    }\n    \n    // 更新按钮状态\n    function updateButtons() {\n        document.querySelectorAll('.source-btn').forEach(btn => {\n            const index = parseInt(btn.dataset.index);\n            btn.classList.toggle('active', index === currentSource);\n        });\n    }\n    \n    // 获取第一个有效源\n    function getFirstValidSource() {\n        for (let i = 0; i < sources.length; i++) {\n            if (sources[i] && sources[i].trim() !== '') {\n                return i;\n            }\n        }\n        return 0; // 如果没有有效源，返回0\n    }\n    \n    // 监听播放结束事件\n    video.onended = function() {\n        if (validSources.length === 1) {\n            // 单源循环播放\n            video.currentTime = 0;\n            video.play();\n        } else {\n            // 多源顺序播放\n            switchToNextSource();\n        }\n    };\n    \n    // 绑定按钮事件\n    document.querySelectorAll('.source-btn').forEach(btn => {\n        btn.addEventListener('click', () => switchSource(parseInt(btn.dataset.index)));\n    });\n    \n    // 播放第一个有效源\n    const firstValidSource = getFirstValidSource();\n    if (sources.length > 0 && sources[firstValidSource]) {\n        currentSource = firstValidSource;\n        switchSource(firstValidSource);\n    }\n</script>\n\n</div>\n</body>  \n</html>\n`;",
    "ruleImage": "img@data-original\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "{{@@a.0@href##(.*)/videos/##$1##}}/embed/{{@@a.0@href##videos/(.*)/.*/##$1##}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.added@text}}  ⏱️{{@@.duration@text}}",
    "ruleTitle": "@js:\nif (\"{{@@.ico-private@text}}\" || \"{{@@.line-private@all}}\") {\n    result = \"\";\n} else {\n    result = \"{{@@strong@text}}\";\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/latest-updates/?mode=async&function=get_block&block_id=list_videos_latest_videos_list&duration_from=600&sort_by=post_date&from={{ Math.ceil(Math.random()*3000) }}\n\n最新::/latest-updates/{{page}}/\n\n国产::/tags/guo-chan/?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=post_date&from={{page}}\n传媒::/tags/chuan-mei/?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=post_date&from={{page}}\n强奸::/tags/qiang-jian/?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=post_date&from={{page}}\n丝袜::/tags/si-wa/?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=post_date&from={{page}}\n性感::/tags/xing-gan/?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=post_date&from={{page}}",
    "sourceComment": "\n备用地址\nhttps://boboporn.net/\nhttps://boboporn.com/\n\n",
    "sourceGroup": "h可用",
    "sourceIcon": "https://img.myqqc.com/x/37.gif",
    "sourceName": "❀boboporn",
    "sourceUrl": "https://boboporn.com/",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n\ttext-align: center;\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: +20px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(93% + 0px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 10,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773937472845,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".mb15 a[32:]",
    "ruleContent": "<js>\n// 提取m3u8链接\nvar m3u8Match = result.match(/\"([^\"]*?index\\.m3u8[^\"]*)\"/i) \n             || result.match(/'([^']*?index\\.m3u8[^']*)'/i);\n\nvar p = '';\nif (m3u8Match) {\n    var u = m3u8Match[1]\n        .replace(/\\\\\\//g, '/')      // \\/ → /\n        .replace(/\\\\\\\\/g, '\\\\')      // \\\\ → \\\n        .trim();\n    \n    // 补全协议\n    if (u.startsWith('//')) {\n        u = 'https:' + u;\n    } else if (!u.startsWith('http')) {\n        // 需要基础URL，这里假设当前页面URL在result中或需要传入\n        u = 'https://' + u;  // 简化处理，或根据实际需求调整\n    }\n    p = u;\n}\n\n// 标题：从 span.tx-flex-sh > a 的 title 属性获取\nvar t = java.getString('.f-bold @text') || '未知标题';\n\n// 标签：从 meta[name=\"description\"] 的 content 获取  \nvar b = java.getString('meta[name=\"description\"]@content') || '';\nvar updateIndex = b.indexOf('更新时间');\nif (updateIndex !== -1) {\nvar d = b.substring(updateIndex);  // 保留\"更新时间\"及之后的内容\n}\n\n`<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>${t}</title>\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:-apple-system,sans-serif;background:#f0f9ff;padding:10px}\n.v-box{max-width:800px;margin:0 auto;background:white;border-radius:12px;box-shadow:0 5px 15px rgba(0,0,0,0.1);overflow:hidden}\n.header{padding:12px;border-bottom:1px solid #eee;display:flex;flex-wrap:wrap;justify-content:space-between}\n.title{font-size:18px;font-weight:600;margin-bottom:8px;width:100%}\n.tags{color:#5f6368;font-size:14px;flex:1;min-width:60%;word-break:break-all}\n.time{color:#5f6368;font-size:14px;text-align:right;flex-basis:35%}\n.v-wrap{position:relative;padding-top:56.25%;background:#000}\n.video{position:absolute;top:0;left:0;width:100%;height:100%}\n.footer{padding:8px;text-align:center;color:#5f6368;font-size:13px}\n.info-box{padding:15px;font-size:14px;line-height:1.6}\n.info-box p{margin:8px 0}\n.hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(0,0,0,0.7);color:#fff;padding:12px 20px;border-radius:20px;font-size:1.1rem;z-index:10;display:none}\n.controls{position:absolute;top:0;left:0;width:100%;height:4px;background:rgba(255,255,255,0.3);z-index:5;transition:opacity 0.3s}\n.progress{height:100%;background:#4a9eff;width:0}\n</style>\n</head>\n<body>\n<div class=\"v-box\">\n<div class=\"header\">\n<div class=\"title\">${t}</div>\n<div class=\"tags\">${d}</div>\n<div class=\"time\" id=\"timeDisplay\">00:00/00:00</div></div>\n<div class=\"v-wrap\">\n<div class=\"controls\"><div class=\"progress\" id=\"progressBar\"></div></div>\n<div class=\"hint\" id=\"hint\">快进中 &gt;&gt;</div>\n<video class=\"video\" id=\"v\" controls playsinline>\n<source src=\"${p}\" type=\"application/x-mpegURL\">您的浏览器不支持HTML5视频\n</video>\n</div>\n<div class=\"footer\">滑动调整进度 | 长按2倍速</div>\n</div>\n<script>\nvar v = document.getElementById('v');\nvar tDisplay = document.getElementById('timeDisplay');\nvar pBar = document.getElementById('progressBar');\nvar hint = document.getElementById('hint');\nvar startX = 0, startTime = 0;\nvar longPressTimer;\nvar sensitivity = 0.1;\nvar longPressTime = 500;\nvar hintDuration = 2000;\nfunction updateTime() {\nif (!v.duration) return;\nvar m1 = Math.floor(v.currentTime / 60);\nvar s1 = Math.floor(v.currentTime % 60);\nvar m2 = Math.floor(v.duration / 60);\nvar s2 = Math.floor(v.duration % 60);\ntDisplay.textContent = m1 + ':' + (s1 < 10 ? '0' : '') + s1 + '/' + m2 + ':' + (s2 < 10 ? '0' : '') + s2;\npBar.style.width = (v.currentTime / v.duration) * 100 + '%';}\nv.addEventListener('timeupdate', updateTime);\nv.addEventListener('loadedmetadata', updateTime);\nv.addEventListener('touchstart', function(e) {\nstartX = e.touches[0].clientX;\nstartTime = Date.now();\nif (longPressTimer) clearTimeout(longPressTimer);\nhint.style.display = 'none';\nlongPressTimer = setTimeout(function() {\nv.playbackRate = 2.0;\nhint.style.display = 'block';\nsetTimeout(function() { hint.style.display = 'none'; }, hintDuration);}, longPressTime);});\nv.addEventListener('touchmove', function(e) {\ne.preventDefault();\nclearTimeout(longPressTimer);\nvar diffX = e.touches[0].clientX - startX;\nvar change = diffX * sensitivity * v.duration / 100;\nv.currentTime = Math.max(0, Math.min(v.currentTime + change, v.duration));\nstartX = e.touches[0].clientX;updateTime();});\nv.addEventListener('touchend', function() {\nv.playbackRate = 1.0;\nclearTimeout(longPressTimer);});\n</script>\n</body>\n</html>`\n</js>\n",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href<js> resutl='https://rensgyn1.lol'+result</js><js>\nresult=result.replace('dis', '');\n</js>\n",
    "ruleNextPage": ".pageitem.-1@href",
    "rulePubDate": "time@text",
    "ruleTitle": "a@title",
    "shouldOverrideUrlLoading": "true",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "国产视频::https://rensgyn1.lol/sort/223.html\n精品推荐::https://rensgyn1.lol/sort/224.html\n国产色情::https://rensgyn1.lol/sort/225.html\n中文字幕::https://rensgyn1.lol/sort/226.html\n主播直播::https://rensgyn1.lol/sort/227.html\n国产传媒::https://rensgyn1.lol/sort/228.html\n亚洲无码::https://rensgyn1.lol/sort/229.html\n日本有码::https://rensgyn1.lol/sort/230.html\n亚洲有码::https://rensgyn1.lol/sort/231.html\n日本无码::https://rensgyn1.lol/sort/232.html\n中文有码::https://rensgyn1.lol/sort/233.html\n欧美无码::https://rensgyn1.lol/sort/234.html\n巨乳美乳::https://rensgyn1.lol/sort/235.html\n强奸乱伦::https://rensgyn1.lol/sort/236.html\n人妻系列::https://rensgyn1.lol/sort/237.html\n制服诱惑::https://rensgyn1.lol/sort/238.html\n强奸精品::https://rensgyn1.lol/sort/239.html\n直播主播::https://rensgyn1.lol/sort/240.html\n欧美精品::https://rensgyn1.lol/sort/241.html\n激情动漫::https://rensgyn1.lol/sort/242.html\n萝莉少女::https://rensgyn1.lol/sort/243.html\n明星换脸::https://rensgyn1.lol/sort/244.html\n伦理三级::https://rensgyn1.lol/sort/245.html\n抖阴视频::https://rensgyn1.lol/sort/246.html\n女优明星::https://rensgyn1.lol/sort/248.html\n自拍偷拍::https://rensgyn1.lol/sort/249.html\n视频一区::https://rensgyn1.lol/sort/250.html\n制服丝袜::https://rensgyn1.lol/sort/251.html\n视频二区::https://rensgyn1.lol/sort/252.html\n口交颜射::https://rensgyn1.lol/sort/253.html\n网-曝-门::https://rensgyn1.lol/sort/254.html\n日本精品::https://rensgyn1.lol/sort/255.html\n视频三区::https://rensgyn1.lol/sort/256.html\nCosplay::https://rensgyn1.lol/sort/257.html\n伦理三级::https://rensgyn1.lol/sort/258.html\n素人自拍::https://rensgyn1.lol/sort/259.html\nAV解说::https://rensgyn1.lol/sort/260.html\n台湾辣妹::https://rensgyn1.lol/sort/261.html\nSM调教::https://rensgyn1.lol/sort/262.html\n韩国御姐::https://rensgyn1.lol/sort/263.html\n萝莉少女::https://rensgyn1.lol/sort/264.html\n唯美港姐::https://rensgyn1.lol/sort/265.html\n东南亚AV::https://rensgyn1.lol/sort/267.html\n女同性恋::https://rensgyn1.lol/sort/268.html\n欺辱凌辱::https://rensgyn1.lol/sort/269.html\n玩偶姐姐::https://rensgyn1.lol/sort/270.html\n剧情介绍::https://rensgyn1.lol/sort/271.html\n视频四区::https://rensgyn1.lol/sort/272.html\n多人多P::https://rensgyn1.lol/sort/273.html\n人妖系列::https://rensgyn1.lol/sort/274.html\n91探花::https://rensgyn1.lol/sort/275.html\n网红流出::https://rensgyn1.lol/sort/276.html\n野外露出::https://rensgyn1.lol/sort/277.html\n古装扮演::https://rensgyn1.lol/sort/278.html\n女优系列::https://rensgyn1.lol/sort/279.html\n可爱学生::https://rensgyn1.lol/sort/280.html\n风情旗袍::https://rensgyn1.lol/sort/281.html\n兽耳系列::https://rensgyn1.lol/sort/282.html\n瑜伽裤::https://rensgyn1.lol/sort/283.html\n闷骚护士::https://rensgyn1.lol/sort/284.html\n过膝袜::https://rensgyn1.lol/sort/285.html\n网曝门::https://rensgyn1.lol/sort/286.html\n传媒出品::https://rensgyn1.lol/sort/287.html\n女同性恋::https://rensgyn1.lol/sort/288.html\n男同性恋::https://rensgyn1.lol/sort/289.html\n恋腿狂魔::https://rensgyn1.lol/sort/290.html\n韩国主播::https://rensgyn1.lol/sort/293.html\nVR视角::https://rensgyn1.lol/sort/294.html\n无码专区::https://rensgyn1.lol/sort/295.html\n制服师生::https://rensgyn1.lol/sort/297.html\n伦理系列::https://rensgyn1.lol/sort/298.html\n换脸AI::https://rensgyn1.lol/sort/299.html\n中文伦理::https://rensgyn1.lol/sort/300.html\n卡通动漫::https://rensgyn1.lol/sort/301.html\n欧美系列::https://rensgyn1.lol/sort/302.html\n美女主播::https://rensgyn1.lol/sort/303.html\n国产自拍::https://rensgyn1.lol/sort/304.html\n人妻热门::https://rensgyn1.lol/sort/305.html\n萝莉系列::https://rensgyn1.lol/sort/306.html\n女同性爱::https://rensgyn1.lol/sort/307.html\n多人群交::https://rensgyn1.lol/sort/308.html\n美乳巨乳::https://rensgyn1.lol/sort/309.html\n强奸热门::https://rensgyn1.lol/sort/310.html\n抖阴视频::https://rensgyn1.lol/sort/311.html\n韩国主播::https://rensgyn1.lol/sort/312.html\n网红头条::https://rensgyn1.lol/sort/313.html\n网爆黑料::https://rensgyn1.lol/sort/314.html\n欧美无码::https://rensgyn1.lol/sort/315.html\n女优明星::https://rensgyn1.lol/sort/316.html\nSM调教::https://rensgyn1.lol/sort/317.html\n精品解说::https://rensgyn1.lol/sort/326.html\n亚洲情色::https://rensgyn1.lol/sort/374.html\n主播自拍::https://rensgyn1.lol/sort/375.html\n国产偷拍::https://rensgyn1.lol/sort/376.html\n无码系列::https://rensgyn1.lol/sort/377.html\n欧美性爱::https://rensgyn1.lol/sort/378.html\n熟女专区::https://rensgyn1.lol/sort/379.html\n强奸系列::https://rensgyn1.lol/sort/380.html\n巨乳系列::https://rensgyn1.lol/sort/381.html\n中文大全::https://rensgyn1.lol/sort/382.html\n制服学生::https://rensgyn1.lol/sort/383.html\n女同蕾丝::https://rensgyn1.lol/sort/384.html\n卡通动画::https://rensgyn1.lol/sort/385.html\n视频伦理::https://rensgyn1.lol/sort/386.html\n少女裸体::https://rensgyn1.lol/sort/387.html\n重口色情::https://rensgyn1.lol/sort/388.html\n人兽性交::https://rensgyn1.lol/sort/389.html\n福利姬::https://rensgyn1.lol/sort/473.html\n生活都市::https://rensgyn1.lol/sort/474.html\n不偷恋情::https://rensgyn1.lol/sort/475.html\n学生校园::https://rensgyn1.lol/sort/476.html\n人妻熟女::https://rensgyn1.lol/sort/477.html\n暴力虐待::https://rensgyn1.lol/sort/478.html\n明星偶像::https://rensgyn1.lol/sort/479.html\n玄幻仙侠::https://rensgyn1.lol/sort/480.html\n科学幻想::https://rensgyn1.lol/sort/481.html\n街拍偷拍::https://rensgyn1.lol/sort/482.html\n丝袜美腿::https://rensgyn1.lol/sort/483.html\n欧美风情::https://rensgyn1.lol/sort/484.html\n网友自拍::https://rensgyn1.lol/sort/485.html\n卡通漫画::https://rensgyn1.lol/sort/486.html\n露出激情::https://rensgyn1.lol/sort/487.html\n唯美写真::https://rensgyn1.lol/sort/488.html\n女优情报::https://rensgyn1.lol/sort/489.html\n私房俱乐部::https://rensgyn1.lol/sort/490.html\n学生少女::https://rensgyn1.lol/sort/492.html\n技师风采::https://rensgyn1.lol/sort/493.html\n熟女少妇::https://rensgyn1.lol/sort/494.html\n国产热播::https://rensgyn1.lol/sort/495.html\n反差母狗::https://rensgyn1.lol/sort/496.html\n美脚丝足::https://rensgyn1.lol/sort/497.html\n情侣自拍::https://rensgyn1.lol/sort/498.html\n偷情约炮::https://rensgyn1.lol/sort/499.html\n真实偷拍::https://rensgyn1.lol/sort/500.html\n高潮喷水::https://rensgyn1.lol/sort/501.html\n强奸迷奸::https://rensgyn1.lol/sort/503.html\n户外露出::https://rensgyn1.lol/sort/504.html\nSM调教::https://rensgyn1.lol/sort/505.html\n情趣内衣::https://rensgyn1.lol/sort/506.html\n精选探花::https://rensgyn1.lol/sort/507.html\n网曝门事件::https://rensgyn1.lol/sort/509.html\n校园猛料::https://rensgyn1.lol/sort/510.html\n网红流出::https://rensgyn1.lol/sort/511.html\n明星黑料::https://rensgyn1.lol/sort/512.html\n裸贷肉偿::https://rensgyn1.lol/sort/513.html\n婚闹恶俗::https://rensgyn1.lol/sort/514.html\n抓奸名场面::https://rensgyn1.lol/sort/515.html\n男同女同::https://rensgyn1.lol/sort/516.html\nJK少女::https://rensgyn1.lol/sort/518.html\n黑丝白丝::https://rensgyn1.lol/sort/519.html\n女仆::https://rensgyn1.lol/sort/520.html\ncosplay::https://rensgyn1.lol/sort/521.html\nOL制服::https://rensgyn1.lol/sort/522.html\n旗袍::https://rensgyn1.lol/sort/523.html\n空姐制服::https://rensgyn1.lol/sort/524.html\n护士医生::https://rensgyn1.lol/sort/525.html\n禁忌母子::https://rensgyn1.lol/sort/527.html\n兄弟姐妹::https://rensgyn1.lol/sort/528.html\n爱上嫂子::https://rensgyn1.lol/sort/529.html\n狂操小姨::https://rensgyn1.lol/sort/530.html\n换夫换妻::https://rensgyn1.lol/sort/531.html\n淫荡儿媳::https://rensgyn1.lol/sort/532.html\n爷爷奶奶::https://rensgyn1.lol/sort/533.html\n啪啪直播::https://rensgyn1.lol/sort/535.html\n学生直播::https://rensgyn1.lol/sort/536.html\n自慰诱惑::https://rensgyn1.lol/sort/537.html\n乱伦直播::https://rensgyn1.lol/sort/538.html\n户外勾搭::https://rensgyn1.lol/sort/539.html\n车震直播::https://rensgyn1.lol/sort/540.html\n国产AV::https://rensgyn1.lol/sort/541.html\n欧美精选::https://rensgyn1.lol/sort/543.html\n户外搭讪::https://rensgyn1.lol/sort/544.html\n美女自慰::https://rensgyn1.lol/sort/545.html\n成人剧情::https://rensgyn1.lol/sort/546.html\n黑人大屌::https://rensgyn1.lol/sort/547.html\n群P大作战::https://rensgyn1.lol/sort/548.html\n欧美重口::https://rensgyn1.lol/sort/549.html\n人兽性交::https://rensgyn1.lol/sort/551.html\nSM性虐::https://rensgyn1.lol/sort/552.html\n人妖伪娘::https://rensgyn1.lol/sort/553.html\n孕妇内射::https://rensgyn1.lol/sort/554.html\n吃屎喝尿::https://rensgyn1.lol/sort/555.html\n扩阴拳交::https://rensgyn1.lol/sort/556.html\n阳具巨物::https://rensgyn1.lol/sort/557.html\n3D动漫::https://rensgyn1.lol/sort/559.html\n同人动漫::https://rensgyn1.lol/sort/560.html\n日本中文::https://rensgyn1.lol/sort/562.html\n无码流出::https://rensgyn1.lol/sort/563.html\nFC2::https://rensgyn1.lol/sort/564.html\nHEYZO::https://rensgyn1.lol/sort/565.html\n东京热::https://rensgyn1.lol/sort/566.html\n一本道::https://rensgyn1.lol/sort/567.html\n网红主播::https://rensgyn1.lol/sort/569.html\n伦理精选::https://rensgyn1.lol/sort/570.html\n剧情故事::https://rensgyn1.lol/sort/571.html",
    "sourceGroup": "h",
    "sourceIcon": "https://gips0.baidu.com/it/u=1646076759,2240023288&fm=3086&app=3086&f=JPEG&wm=1,baiduai3,0,0,13,9&wmo=5,5&w=1024&h=1024",
    "sourceName": "🔞万人求",
    "sourceUrl": "https://rensgyn1.lol/sort/536.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 11,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "Meimodu互动AI自用，概率免翻墙，可🔞角色扮演，每天签到+70电量",
    "sourceGroup": "h",
    "sourceIcon": "https://files.catbox.moe/f9o8mb.gif",
    "sourceName": "Meimodu",
    "sourceUrl": "https://i.meimoai11.com/IKMum",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "coverDecodeJs": "function decodeImage(data, keyBytes) {\n  var out = new Packages.java.io.ByteArrayOutputStream()\n  var byte\n  var count = 0\n  var keyLength = keyBytes.length\n  while ((byte = data.read()) != -1) {\n    if (count < 100) {\n      out.write(byte ^ keyBytes[count % keyLength])\n      count++\n    } else {\n      out.write(byte)\n    }\n  }\n  return out.toByteArray()\n}\nfunction toByteArray(input) {\n  var out = new Packages.java.io.ByteArrayOutputStream();\n  var buffer = java.strToBytes('\\0'.repeat(4096));\n  var bytesRead;\n  while ((bytesRead = input.read(buffer)) != -1) {\n    out.write(buffer, 0, bytesRead);\n  }\n  return out.toByteArray();\n}\nvar keyStr = \"2019ysapp7527\"\nvar keyBytes = java.strToBytes(keyStr, \"UTF-8\")\nvar excludeKeywords = ['yximgs', 'Uploads'];\nvar shouldExclude = excludeKeywords.some(function(keyword) {\n  return src.indexOf(keyword) !== -1;\n});\nif (shouldExclude) {\n  toByteArray(result)\n} else {\n  decodeImage(result, keyBytes)\n}",
    "customOrder": 14,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 13; SM-G998B Build/TP1A.220624.014) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36 SearchCraft/3.9.2 okhttp/4.2.2\",\n    \"referer\": \"{{baseUrl}}\"\n}",
    "injectJs": "function setupCustomPlayer(video) {\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  video.playbackRate = NORMAL_SPEED;\n  function createButton(text, onClick, position, width = '20px', top = '50%') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = top;\n    button.style.transform = top === '50%' ? 'translateY(-50%)' : 'none';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    const isFlipped = video.getAttribute('data-flipped') === 'true';\n    const flipValue = isFlipped ? -1 : 1;\n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale}) scaleX(${flipValue})`;\n  }, { horizontal: 'right' }, '20px', 'calc(50% - 20px)');\n  let isPlaying = !video.paused;\n  const playPauseBtn = createButton(\n    isPlaying ? '❚❚' : '▶',\n    () => {\n      if (video.paused) {\n        video.play();\n        playPauseBtn.textContent = '❚❚';\n      } else {\n        video.pause();\n        playPauseBtn.textContent = '▶';\n      }\n    },\n    { horizontal: 'right' },\n    '20px',\n    'calc(50% + 20px)'\n  );\n  video.addEventListener('play', () => {\n    playPauseBtn.textContent = '❚❚';\n    isPlaying = true;\n  });\n  video.addEventListener('pause', () => {\n    playPauseBtn.textContent = '▶';\n    isPlaying = false;\n  });\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    const isFlipped = video.getAttribute('data-flipped') === 'true';\n    const flipValue = isFlipped ? -1 : 1;\n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale}) scaleX(${flipValue})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1) scaleX(${flipValue})`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' }, '20px', 'calc(50% - 20px)');\n  createButton('⇄', () => {\n    const isFlipped = video.getAttribute('data-flipped') === 'true';\n    const newFlipState = !isFlipped;\n    video.setAttribute('data-flipped', newFlipState);\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    const flipValue = newFlipState ? -1 : 1;\n    video.style.transform = `rotate(${currentRotation}deg) scale(${currentScale}) scaleX(${flipValue})`;\n  }, { horizontal: 'left' }, '20px', 'calc(50% + 20px)');\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  const seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n  ];\n  seekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    button.addEventListener('click', () => {\n      video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n    });\n    buttonContainer.appendChild(button);\n  });\n\n  video.parentNode.appendChild(buttonContainer);\n}\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\n    const video = document.getElementById('video');\n    if (video) {\n      setupCustomPlayer(video);\n    } else if (retries < maxRetries) {\n      retries++;\n      setTimeout(tryInit, retryInterval);\n    }\n  };\n  tryInit();\n}\ninitPlayerWithRetry();",
    "jsLib": "function decrypt(encryptedText) {\n  let result = '';\n  for (let i = 0; i < encryptedText.length; i++) {\n    result += String.fromCharCode(128 ^ encryptedText.charCodeAt(i));\n  }\n  return result;\n}",
    "lastUpdateTime": 1766110000613,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".vodbox",
    "ruleContent": "@js:\nplayer = baseUrl.match(/id=(.*.m3u8)/)[1];\nconst tokens = (result.match(/token=([^',]+)/g) || []).map(match => match.replace('token=', ''));\nlet token = tokens[3] || '';\nvar sources = [\n  `${player}?token=${token}`,\n];\nvar sourceButtons = \"\";\nif (sources.length > 1) {\n    for (var i = 0; i < sources.length; i++) {\n        sourceButtons += `<button class=\"source-btn\" data-index=\"${i}\">源${i+1}</button>`;\n    }\n}\nresult=`\n<html>  \n<head>  \n<meta charset=\"utf-8\">  \n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\">\n<meta name=\"referrer\" content=\"never\"/>\n<script src=\"https://s4.zstatic.net/ajax/libs/hls.js/1.6.13/hls.min.js\"></script>\n<style>\nhtml, body { text-align: center;margin: 0; padding: 0; width: 100%; overflow: hidden; }\n.source-container { position: absolute; top: 23px; right: 1px; z-index: 10; display: flex; gap: 1px; }\n.source-btn { color: #ff0; background: rgba(0,0,0,0.7); padding: 1px 5px; border-radius: 10px; font-size: 13px; border: none; cursor: pointer; }\n.source-btn.active { color: red !important; }\n</style>\n</head>  \n<body>  \n<div class=\"container\">\n    <div class=\"title\">{{java.get('title')}}</div>\n    ${sources.length > 1 ? `<div class=\"source-container\">${sourceButtons}</div>` : ''}\n    <video id=\"video\" width=\"100%\" height=\"91%\" poster=\"\" controls autoplay muted loop></video>\n<script>\n    const video = document.getElementById('video');\n    const sources = ${JSON.stringify(sources)};\n    let hls = null;\n    let currentSource = 0;\n    function playHLS(url) {\n        if (hls) hls.destroy();\n        if (Hls.isSupported()) {\n            hls = new Hls({\n                enableSoftwareAES: true,\n                maxBufferLength: 30,\n                maxMaxBufferLength: 60\n            });\n            hls.on(Hls.Events.ERROR, function(event, data) {\n                if (data.fatal) {\n                    switchToNextSource();\n                }\n            });\n            hls.loadSource(url);\n            hls.attachMedia(video);\n        } else if (video.canPlayType('application/vnd.apple.mpegurl')) {\n            video.src = url;\n        }\n        video.onerror = function() {\n            switchToNextSource();\n        };\n    }\n    function switchToNextSource() {\n        if (sources.length <= 1) return;\n        currentSource = (currentSource + 1) % sources.length;\n        playHLS(sources[currentSource]);\n        updateButtons();\n    }\n    function switchSource(index) {\n        currentSource = index;\n        playHLS(sources[index]);\n        updateButtons();\n    }\n    function updateButtons() {\n        document.querySelectorAll('.source-btn').forEach((btn, i) => {\n            btn.classList.toggle('active', i === currentSource);\n        });\n    }\n    video.onended = function() {\n        if (sources.length === 1) {\n            video.currentTime = 0;\n            video.play();\n        } else {\n            switchToNextSource();\n        }\n    };\n    document.querySelectorAll('.source-btn').forEach(btn => {\n        btn.addEventListener('click', () => switchSource(parseInt(btn.dataset.index)));\n    });\n    if (sources.length > 0) switchSource(0);\n</script>\n</div>\n</body>  \n</html>\n`;",
    "ruleImage": "{{@@img@data-original}}",
    "ruleLink": "{{@@a.0@href}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@img.0@data-original##cn\\/cf(.*?)\\/##$1##}}\n@js:\nresult = result !== \"\" ? result : \"点击播放\";",
    "ruleTitle": "{{@@.km-script@text}}\n<js>\nconst blockKeywords = /TS|Latina|自他屏蔽关键自行添加/i;\nresult = decrypt(result);\nif (blockKeywords.test(result)) {\n  // 如果包含关键词，将标题设为空字符串\n  result = \"\";\n}\njava.put('title',result)\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/index.php/vod/type/id/1/page/{{ Math.ceil(Math.random()*1570) }}.html\n最新::/index.php/vod/type/id/1/page/{{page}}.html\n\n🔎搜索::/index.php/vod/type/id/1/wd/{{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}/page/{{page}}.html\n\n国产::/index.php/vod/type/id/54/page/{{page}}.html\n其他分类自行添加\n动漫::/index.php/vod/type/id/9/page/{{page}}.html",
    "sourceComment": "备用网址\nhttps://618879.xyz/\nhttps://618051.xyz/\nhttps://618082.xyz/\nhttps://618063.xyz/\nhttps://618070.xyz/\n\nhttps://d2m1d86x8ze4id.cloudfront.net\n\n",
    "sourceGroup": "h可用",
    "sourceIcon": "https://ali-ec.static.yximgs.com/bs2/upload-kwaishop-themis-bucket/cfd1eec1-f882-458c-a66e-89585596d6f0_1a379e34b53e7834b9853e6c4d9918c1.jpg",
    "sourceName": "🌈md视频    S",
    "sourceUrl": "https://618061.xyz/",
    "style": ".container {\n    position: relative; \n    height: 100%; \n    overflow: hidden;\n}\n.title {\ntext-align:center;\n    position: absolute; \n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; \n    background: #000; \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; \n    top: +20px; \n    left: 0; \n    width: 100%; \n    height: calc(93% + 0px);  \n    object-fit: contain; \n    z-index: 0; \n    controls=\"controls\" autoplay muted; \n} \nvideo::-webkit-media-controls-overlay-play-button {\n    display: none !important;\n}\nvideo::-webkit-media-controls-fullscreen-button {\n    display: none !important;\n}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 15,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\t\"User-Agent\": \"Mozilla/5.0 (Linux; Android 9) Mobile Safari/537.36\",\"referer\": \"{{baseUrl}}\"\n\t}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".picture-list a",
    "ruleContent": ".picture-item-box@all##src=\".*\" data-src##src\n<js>##href##</js>",
    "ruleImage": "img@data-src",
    "ruleLink": "href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "span@text",
    "ruleTitle": "text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "今日最新::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/2000/\n\t热姐::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/2001/\n罗莉塔::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/2002/\n性感的::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/2003/\n杂志::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/2004/\n角色扮演::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5001/\n美足::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5029/\n唯美::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/2002/\n模特儿::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5031/\n日本::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5032/\n东盟::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5033/\n韩国::https://mak803-ad398-dke3e.xofulitu765.xyz/t/5034/\n搜索::https://mak803-ad398-dke3e.xofulitu765.xyz/s/wd/{{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('萝莉'):\"\"}}{{source.getVariable()}}/",
    "sourceComment": "",
    "sourceGroup": "h可用",
    "sourceIcon": "https://img2.baidu.com/it/u=2497591018,1494490685&fm=253&fmt=auto&app=138&f=JPEG?w=375&h=500",
    "sourceName": "福利兔",
    "sourceUrl": "https://mak803-ad398-dke3e.xofulitu765.xyz/xoxo",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://www.googletagmanager.com/,\nhttps://www.google-analytics.com/",
    "customOrder": 16,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\t\"User-Agent\":\"Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI CC 11)  AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.127 Mobile Safari/537.36 XiaoMi/MiuiBrowser/18.1.8 swan-mibrowser\",\n\t\"referer\": \"{{baseUrl}}\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".item",
    "ruleContent": "\n<div id=\"kt_player\"></div>\n{{@@script.0@all}}\n{{@@script.1@all}}\n",
    "ruleImage": "img@data-original\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "{{@@a.0@href##(.*)/videos/##$1##}}/embed/{{@@a.0@href##videos/(.*)/.*/##$1##}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.added@text}} ⏱️{{@@.duration@text}} ",
    "ruleTitle": "@js:\nif (\"{{@@.ico-premium@text}}\"!==\"\"||\"{{@@.ico-private@text}}\"!==\"\"){result=\"\"}else{result=\"{{@@.title@text##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*人妖.*|.*男同.*|.*老妈.*|.*水果派.*|.*解说.*|.*摄像头.*|.*嘘嘘.*|.*洗浴.*|.*尿尿.*|.*口活王子.*|.*双性.*|.*熟女.*|.*眼射.*|.*直男.*|.*CD.*|.*肥女.*|.*黄金.*|.*骚0.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*厕.*|.*老阿姨.*|.*排泄.*|.*poop.*|.*女性向.*|.*马眼.*|.*尸.*|.*奶奶.*|.*骚男.*|.*基友.*|.*美男子.*|.*鸡儿.*|.*坦克.*|.*偸拍.*|.*偷拍.*|.*抄底.*|.*ASMR.*|乱伦|姐弟|兄妹|女儿|母子|父女|亲姐|亲妹|姐姐|妈妈|儿子|爸爸}}\"}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/latest-updates/?mode=async&function=get_block&block_id=list_videos_latest_videos_list&sort_by=post_date&from={{ Math.ceil(Math.random()*3100) }}\n最新::/latest-updates/{{page}}/\n\n🔎搜索::/search/?mode=async&function=get_block&block_id=list_videos_videos_list_search_result&q={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}&from_videos={{page}}\n国产::/categories/578b1514760ab61a070c749150717a81/{{page}}/\n自拍::/categories/1ef21937a5e74ea11c196d9ef3e711b5/{{page}}/\n主播::/categories/eff9e2950ba3b6ab7b4c2ec9f93710c3/{{page}}/\n无码::/categories/439d9c907f8ed7618a580d7a2c535f9c/{{page}}/\n中字::/categories/12b662058ca87e01e828812daf0a8f21/{{page}}/\n有码::/categories/c580d4e1a999ba6d2dce2d3a2781effd/{{page}}/\n热点::/categories/fba0203903081dc916cab34e22d74ab6/{{page}}/\nSM::/categories/bfb7516f1ee5a9975e9d87f7c50b5be5/{{page}}/\n欧美::/categories/637f734f493bfeedbccead08cc3814fc/{{page}}/\n动漫::/categories/bc392163908dbe3c3b79441be0b1fff0/{{page}}/",
    "sourceComment": "https://www.sesesp.info/\nhttps://www.sehhh.cc/\nhttps://www.sepkk.cc/\nhttps://www.sebxx.cc/\nhttps://www.seuu.info/\n备用地址\nhttps://www.seebb.info/\nhttps://www.seppff.cc/\n\n<js>\nresult=java.ajax(\"https://www.sepbx.cc/embed/{{@@a.0@href##videos/(.*)/.*/##$1##}}\");\n</js>",
    "sourceGroup": "h可用",
    "sourceIcon": "https://kp-i25985.com/Uploads/vod/2023-06-21/1141.mp4.gif",
    "sourceName": "❀碰碰网  S",
    "sourceUrl": "https://www.sevvz.cc/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 17,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article",
    "ruleContent": ".Content@img@src\n<js>\nli='\\n'\nlist=result.split('\\n')\nfor(i in list){\n\t\tli += '<li><img src=\"https://i01piccdn.sogoucdn.com/b9e03099a48fd4ad\" data-src=\"'+list[i]+'\"></li>\\n'\n\t}\nli\n</js>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n\n\n<ul id=\"box\">\n{{result}}\n</ul>\n\n\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>\n\troot = document.getElementById('box')\n\tlazy = new IntersectionObserver(entires => {\n\t\tentires.forEach(item => {\n\t\t\tif(item.isIntersecting){\n\t\t\t\titem=item.target\n\t\t\t\titem.src=item.getAttribute('data-src')\n\t\t\t\tlazy.unobserve(item)\n\t\t\t}\n\t\t})\n\t}, {\n\t\troot: root,\n\t\tthreshold: [0],\n\t\trootMargin:\"0px 0px 500px 0px\"\n\t})\n\nimgs = document.getElementsByTagName('img')\nArray.from(imgs).forEach(item => {\n\t\tlazy.observe(item)\n\t})\n\n//查看大图插件\nnew Viewer(root,{title:false,interval:3000})\n</script>",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": ".pagelist@a@href",
    "ruleTitle": "h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/\n肉丝 ::/tags-rousi-9sw.html\n黑丝 ::/tags-heisi-z2n.html\n白丝 ::/tags-baisi-v9l.html\n灰丝 ::/tags-huisi-z20.html\n咖丝 ::/tags-kasi-um6.html\n网袜 ::/tags-wangwa-18v.html",
    "sourceComment": "专注分享高清无水印的丝袜写真",
    "sourceGroup": "h可用",
    "sourceIcon": "https://rrx1.com/a/cache1646/357/35708.jpg",
    "sourceName": "丝袜客.MU",
    "sourceUrl": "https://siwake.cc/",
    "style": "* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 98%;\n\theight: auto;\n\tpadding: 1% 1% 0 1%\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 18,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "{document.styleSheets[0]?.insertRule(\"#mobile-download-banner,.bg-gradient-to-r,form>div:has(input#referralCode){display:none}\");if(/register/.test(location.pathname)&&self.referralCode)referralCode.disabled=true;const a=localStorage,b='referral_code',c='KKPVLG8F';if(!a[b]?.includes(c))a[b]=JSON.stringify({code:c,source:\"share_link\",timestamp:Date.now(),expiresIn:0});}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "@js:\n[{\nhref:baseUrl,\ntitle:'夜语AI',\ntime:new Date().toLocaleString(),\nimg:\"https://yeyu.ai/install-emtry.webp\"\n}];",
    "ruleImage": "img",
    "ruleLink": "href",
    "rulePubDate": "time",
    "ruleTitle": "title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/r/KKPVLG8F\n签到::/user/points/\n历史收藏::/user/history/?tab=favorites\n外部打开::/user/history/,{\"js\":\"java.openUrl('https://yeyu.ai/r/KKPVLG8F')\"}\n登录注册::/user/register/",
    "sourceComment": "无限制ai对话、创作，每日签到、任务可免费领积分",
    "sourceGroup": "h可用",
    "sourceIcon": "https://yeyu.ai/install-emtry.webp",
    "sourceName": "🔞夜语AI",
    "sourceUrl": "https://yeyu.ai/r/KKPVLG8F",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 19,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "let c=location,d=localStorage,e=document;\nif(/\\u98ce\\u6708/.test(e.title)){if(!d.console_token&&!/ref_id/.test(c.href)){let f=d.ref_id=atob('OGExYTAzNGMtZmI2MC00Y2I4LTk3MDktNTZiZjRmNWE1MWQy'),a=new URL(c.href);a.searchParams.set('ref_id',f);c.href=a}e.styleSheets[0]?.insertRule('form\\x3e.mt-1.mb-4.text-xs{display:none}')}",
    "jsLib": "datas = [[{host:\"aiaha.xyz\"},{host:\"acquant.xyz\"},{host:\"affectional.xyz\"},{host:\"acquainte.xyz\"},{host:\"beling.xyz\"},{host:\"ai-xan.xyz\"},{host:\"aiwhatis.xyz\"},{host:\"aquantancee.xyz\"},{host:\"aquante.xyz\"},{host:\"aitrader.wiki\"},{host:\"acepro.store\"},{host:\"aisearches.xyz\"},{host:\"aigirlfriend.baby\"},{host:\"aigirlfriend.homes\"},{host:\"aigirlfriendnetwork.com\"},{host:\"aigirlfriendnow.com\"}],[{host:\"aifun.ltd\",url:\"https://aifun.ltd/fcWoo\",img:1},{host:\"aifordum.github.io\",url:`https://aifordum.github.io?ref_id=8a1a034c-fb60-4cb8-9709-56bf4f5a51d2&t=`,img:1},{host:\"aify.pages.dev\",img:1}]];\nid = \"8a1a034c-fb60-4cb8-9709-56bf4f5a51d2\";\ndatas.forEach(list => {\n    list.forEach((x, i) => {\n        if (!x.url) x.url = `https://${x.host}?ref_id=${id}`;\n        if (!x.title) x.title = `${i+1}【${x.host}】`;\n    });\n});\n\nfunction getTimeList(urls) {\n    return this.java.webView(`<script>function checkUrl(url){return new Promise((res,rej)=>{let t=Date.now(),id=setTimeout(rej,3e3,4e3);if(url.endsWith('='))url+=t;fetch(url,{mode:'no-cors',method:'HEAD'}).catch(()=>rej(5e3)).then(()=>res(Date.now()-t)&&clearTimeout(id))})}function checkUrls(arr){return Promise.allSettled(arr.map(checkUrl)).then(a=>a.map(x=>x.value||x.reason))}checkUrls(${JSON.stringify(urls)}).then(arr=>result=JSON.stringify(arr));</script>`, \"about:blank\", \"self.result\");\n}",
    "lastUpdateTime": 1767067101518,
    "loadWithBaseUrl": true,
    "loginUrl": "/fcWoo",
    "preload": false,
    "ruleArticles": "@js:\nlet list = datas[java.hexDecodeToString(src)];\nlet arr = JSON.parse(getTimeList(list.map(x => x.url)));\nresult = list.map((obj, i) => {\n  const x = arr[i];\n  obj.img = source.sourceIcon;\n  obj.time = x === 5000 ? '🚫被墙/失效/故障' :\n    x < 1000 ? `🟢延时：${x} ms` :\n    x < 1200 ? `🔵延时：${x} ms` :\n    x < 1500 ? `🟣延时：${x} ms ` :\n    x < 2000 ? `🟠延时：${x} ms ` :\n    x === 4000 ? '⚫延时 > 3 s' :\n    `🔴延时：${x} ms `;\n  return obj;\n});\n",
    "ruleImage": "img",
    "ruleLink": "url",
    "rulePubDate": "time",
    "ruleTitle": "title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "路线列表::data:;base64,MA==,{\"type\":0}\n发布页::data:;base64,MQ==,{\"type\":0}",
    "sourceComment": "gemini-3-pro/claude-4.5/grok-4.1/GPT-5.1/deepseek-v3.2\n优化排序，右上角【清除】可重新生成",
    "sourceGroup": "h",
    "sourceIcon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNjAiIGhlaWdodD0iMzYwIiB2aWV3Qm94PSIwIDAgMzYwIDM2MCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTI5Mi44NiA5Ni4yNDc2QzI5NC4zNDUgOTYuMjQ3NiAyOTYuMzcgOTYuNzg3MyAzMDUuNDE1IDEwMS42NDdDMzE0Ljg2NSAxMDYuNzc3IDMxNi40ODUgMTA4LjkzOCAzMTYuNDg1IDExMS4yMzNDMzE2LjQ4NSAxMTMuMjU4IDMxNC45OTkgMTE1LjI4MyAzMDguMzg1IDExOS40NjdMMzAzLjc5NCAyNDkuNzQzQzMwMy41MjQgMjU3LjE2OCAzMDIuNzE1IDI2Mi4yOTggMzAxLjA5NSAyNjUuNDAzQzI5OS40NzUgMjY4Ljc3OCAyOTUuNDI1IDI3Mi4wMTcgMjg4LjQwNSAyNzUuNzk3QzI3OS42MyAyODAuNTIyIDI3Ni45MyAyODEuMTk4IDI3NS40NDUgMjgxLjE5OEMyNzIuNDc1IDI4MS4xOTggMjcwLjQ1IDI3OS40NDIgMjY5LjkxIDI3Ni4zMzdDMjY5LjEgMjcyLjE1MiAyNjcuNDggMjY5LjA0NyAyNjUuMTg1IDI2Ni44ODdDMjYzLjQzIDI2NS4yNjcgMjU5LjI0NSAyNjIuNTY3IDI0OC4zMSAyNTcuOTc3TDI0Ni40MTkgMjU3LjE2OEwyNDcuOTA1IDI0Ny44NTJMMjUwLjc0IDI0OC4zOTJDMjY1Ljk5NSAyNTEuNjMyIDI3MS44IDI1Mi4xNzIgMjc0LjA5NSAyNTIuMTcyQzI3OC41MDIgMjUyLjAzOSAyNzkuNjA2IDI1MS41MDkgMjc5LjYyOSAyNTEuNDk4QzI3OS42MjkgMjUxLjQ5OCAyNzkuOSAyNTAuOTU4IDI4MC4wMzUgMjQ5Ljc0M0wyODIuNzM1IDE3MS4wMzhMMjQ1Ljg3OSAxNzMuNjAyTDI0Ni4yODUgMTUyLjI3MkwyODMuNTQ0IDE0OS40MzdMMjg0LjYyNSAxMTkuMTk4TDIzMS40MzUgMTI0LjA1N0MyMzEuMDMgMTM5Ljg1MiAyMjkuMTQgMTgxLjQzMyAyMjguMTk1IDE5NS4yMDNMMjY4LjU2IDE5Mi43NzJMMjY3Ljg4NSAyMDQuNTE3TDIyNi44NDUgMjA2LjgxMkMyMjQuODIgMjI0LjYzMiAyMTkuOTYgMjM5LjM0NyAyMTIuNCAyNTAuNTUyQzIwNC43MDUgMjYyLjAyNyAxOTIuMDE0IDI3My4wOTcgMTc1LjAwNCAyODMuNjI3TDE3My4xMTUgMjg0Ljg0MkwxNjcuMzEgMjc4LjYzMkwxNjcuMTc1IDI3OC40OThMMTY5LjIgMjc2LjYwOEMxNzkuNzMgMjY2Ljg4OCAxODcuNjk0IDI1Ny40MzggMTkyLjk1OSAyNDguNjYzQzE5OC4yMjQgMjM5Ljg4OCAyMDEuODcgMjI5Ljc2MiAyMDMuODk1IDIxOC41NTdDMjA1LjkyIDIwNy4yMTcgMjA3LjI3IDE5MC43NDcgMjA3LjgxIDE2OS44MjNDMjA4LjM1IDE0OC42MjggMjA4LjYyIDEyNy43MDIgMjA4LjYyIDEwNy4wNDdWMTAzLjQwM0wyMTIuMTI5IDEwNC40ODNDMjE4LjQ3NCAxMDYuNTA4IDIyNC45NTQgMTA5LjA3MiAyMzEuMjk5IDExMi4xNzdMMjg0LjM1NSAxMDcuMTgyTDI4OC4yNyA5OS42MjI2QzI4OS43NTUgOTcuMDU3NiAyOTEuNTEgOTYuMjQ3NiAyOTIuODYgOTYuMjQ3NlpNMTM4LjQxOSA3NC4xMDc5QzEzOS45MDQgNzQuMTA3OSAxNDEuNTI1IDc0LjY0NzkgMTQ5LjIyIDc5Ljc3NzlDMTU2LjkxNSA4NC45MDc2IDE1OC40IDg3LjMzNzYgMTU4LjQgODkuNDk3NkMxNTguNCA5Mi40Njc2IDE1NS41NjQgOTQuODk3NCAxNDkuMDg0IDk3LjQ2MjRDMTQ3Ljg2OSAxMTMuNjYyIDE0Ny4xOTQgMTI5LjMyMyAxNDYuOTI0IDE0NC4wMzhDMTQ2LjY1NCAxNTkuMDIzIDE0Ny4zMjkgMTcyLjI1MyAxNDkuMDg0IDE4My4xODhDMTUwLjcwNCAxOTMuOTg4IDE1Mi44NjUgMjAxLjU0OCAxNTUuNDMgMjA2LjAwMkMxNTYuOTE1IDIwOC41NjcgMTU3Ljg2IDIwOS45MTggMTU4LjUzNSAyMTAuNzI4QzE1OS4yMSAyMDkuMTA4IDE2MC4yOSAyMDYuMTM4IDE2MS45MSAyMDEuODE4QzE2NC4wNyAxOTUuODc4IDE2Ni4zNjUgMTg4LjU4OCAxNjkuMDY1IDE3OS44MTNMMTY5Ljg3NSAxNzcuMTEzTDE3Ny4wMyAxNzkuNTQzTDE3Ni42MjUgMTgxLjgzN0MxNzMuNzkgMTk5LjY1NyAxNzIuMzA0IDIxMS4xMzMgMTcyLjE2OSAyMTUuOTkzQzE3Mi4xNjkgMjIwLjcxOCAxNzIuNDQgMjI1LjE3MyAxNzMuMjUgMjI5LjQ5M0MxNzQuNDY0IDIzNS43MDMgMTc0LjYgMjM3LjE4OCAxNzQuNiAyMzcuOTk4QzE3NC42IDI0MS42NDMgMTcyLjE3IDI0My45MzggMTY4LjUyNSAyNDMuOTM4QzE2Ni42MzUgMjQzLjkzOCAxNjMuMjU5IDI0My4yNjMgMTU0Ljc1NCAyMzcuOTk4QzE0OC40MSAyMzMuOTQ4IDE0My4xNDUgMjI3Ljg3MiAxMzkuMDk1IDIxOS42MzdDMTM1LjE4IDIxMS42NzIgMTMyLjM0NCAyMDAuODczIDEzMC41ODkgMTg3LjY0M0MxMjguODM0IDE3NC41NDggMTI4LjE2IDE1OS44MzMgMTI4LjQzIDE0My43NjhDMTI4LjcgMTI4LjY0OCAxMjkuMjM5IDExMy4xMjMgMTMwLjA0OSA5Ny4xOTI5TDY3LjgxNDkgMTAyLjg2M0M2Ny4wMDQ5IDEzOS40NDcgNjUuNzkwMiAxNjQuNDIyIDY0LjMwNTIgMTc3LjM4MkM2Mi44MjAyIDE5MC43NDcgNTkuMTc0OSAyMDMuMTY4IDUzLjc3NDkgMjE0LjM3M0M0OC4zNzQ5IDIyNS40NDMgMzkuMzI5OCAyMzcuMTg4IDI2Ljc3NDkgMjQ5LjMzN0wyNC40OCAyNTEuNjMyTDE5LjM1MDEgMjQ0LjIwOEwxOS40ODQ5IDI0NC4wNzNMMjAuNjk5NyAyNDIuNDUzQzI5Ljg3OTcgMjMwLjQzOCAzNi43NjQ3IDIxNy4wNzIgNDAuOTQ5NyAyMDIuNzYyQzQ1LjI2OTYgMTg4LjMxNyA0Ny43MDAyIDE2Ny43OTcgNDcuOTcwMiAxNDEuODc3QzQ4LjI0MDIgMTI1Ljk0OCA0Ny45Njk5IDEwNy40NTMgNDcuMDI0OSA4Ny4wNjc5VjgzLjU1ODFMNTAuMjY1MSA4NC4zNjc3QzU2LjYwOTkgODUuNzE3NyA2Mi42ODQ3IDg4LjAxMjggNjguNjI0NSA5MS4xMTc3TDEyOS42NDUgODUuNDQ3OEwxMzQuMjM1IDc3LjQ4MjlDMTM1LjMxNSA3NS40NTgxIDEzNi44IDc0LjI0MzEgMTM4LjQxOSA3NC4xMDc5Wk0xMDkuOTM1IDEyNS42NzdDMTEwLjYxIDEyOS4zMjIgMTEyLjM2NSAxMzguOTA4IDExMy4zMSAxNTAuMjQ4QzExNy4wOSAxNTEuNDYzIDEyMC44NyAxNTMuMzUzIDEyNC42NSAxNTUuOTE4TDEyNi44MSAxNTcuMjY3TDExNy40OTUgMTczLjQ2N0MxMTcuNDcgMTczLjQ1MSAxMTMuOTgzIDE3MS4xNzEgMTEzLjQ0NSAxNzAuOTAyQzExMi41IDE4My4xODcgMTA5LjM5NSAxOTIuMjMyIDEwNC40IDE5Ny45MDJDMTAwLjYyIDIwMi4wODcgOTUuNzU5OCAyMDQuMzgyIDkwLjM1OTkgMjA0LjUxN0g4OS40MTQ2TDg5LjE0NSAyMDQuMzgyQzg2Ljk4NTEgMjA0LjM4MiA4NC42OSAyMDQuMTEyIDgyLjM5NSAyMDMuNDM3Qzc0LjU2NTEgMjAxLjI3NyA2OS41Njk5IDE5NC45MzMgNjguNDg5NyAxODYuMTU4QzY3LjEzOTggMTc1LjA4OCA3Mi44MDk2IDE2Mi4yNjIgODIuMTI0NSAxNTQuOTcyQzg2LjE3NDQgMTUxLjczMiA5MC43NjQ2IDE0OS43MDcgOTUuNjI0NSAxNDguNzYyQzk1LjA4NDUgMTQyLjU1MiA5NC4xNCAxMzYuMjA3IDkzLjA2MDEgMTMwLjY3Mkw5Mi42NTQ4IDEyOC4zNzdMMTA5LjI2IDEyMi43MDhMMTA5LjkzNSAxMjUuNjc3Wk05Ni4xNjQ2IDE2Ny4yNTdDOTQuNDA5NyAxNjcuNzk3IDkyLjkyNDggMTY4LjYwNyA5MS40Mzk5IDE2OS42ODdDODYuNDQ0OSAxNzMuNjAyIDg0LjY5MDIgMTc5LjgxMiA4NS4wOTUyIDE4Mi45MThDODUuMzY1MiAxODQuODA3IDg1LjkwNDcgMTg1LjIxMyA4Ny4xMTk2IDE4NS42MThDODguMDY0NiAxODUuODg4IDg5LjAwOTggMTg2LjAyMiA4OS44MTk4IDE4Ni4wMjJDOTEuMzA0NCAxODYuMDIyIDkxLjg0NDYgMTg1LjQ4MyA5Mi4yNDk1IDE4NS4wNzhDOTMuNTk5NSAxODMuNDU4IDk1Ljg5NTMgMTc5LjEzNyA5Ni4zMDAzIDE2Ny4yNTdIOTYuMTY0NlpNMTg5LjQ1IDE2My44ODJMMTcwLjgyIDE2NC44MjhMMTcyLjAzNSAxMTEuMDk3TDE5MC44IDEwOS42MTNMMTg5LjQ1IDE2My44ODJaTTM0MC4xMSAxNDIuMTQ4TDMyMy43NzUgMTQzLjIyOEwzMjQuNDUgMTI2Ljc1N0wzNDAuNjUgMTI1LjU0M0wzNDAuMTEgMTQyLjE0OFpNMjc1LjkwMSAxNS4yMzU5QzI4MC45NzcgMTQuNTg3OSAyODUuMDggMTguMDQzNiAyODUuMDgxIDIyLjc5NTRMMjg0LjIxNyA3NC40MTk1QzI4NC4xMDkgNzkuMTcxNSAyNzkuODk3IDgzLjI3NTUgMjc0LjgyMSA4My43MDc1TDIwMC44NDEgODkuNTM5NkwxODcuNzczIDk3Ljc0NzZMMTg2LjgwMSA5MC42MTk3QzE4Mi4xNTcgOTEuMDUxNiAxNzguNDg1IDg3LjcwMzggMTc4LjQ4NSA4My4yNzU5VjM0LjY3NTNDMTc4LjQ4NSAzMC4xMzk1IDE4Mi4yNjUgMjYuMDM1NyAxODYuOTA5IDI1LjQ5NTZMMjc1Ljc5MiAxNS4yMzU5SDI3NS45MDFaTTIxOS43NDEgMzEuNTQzNUwyMDEuODEzIDc5LjA2NEwyMDcuMTA1IDc4Ljg0NzJMMjEyLjYxMyA2NC4yNjgxTDIyNi41NDQgNjMuNTExM0wyMzIuMDUzIDc3Ljg3NTVWNzcuNzY4MUwyNDAuNjkzIDc3LjQ0MzlMMjIyLjc2NSAzMS4yMTkzTDIxOS43NDEgMzEuNTQzNVpNMjQxLjg4MSAyOS4zODMzTDI0MS41NTcgNjQuOTE1NkgyNTMuMjIxTDI1My41NDQgMjguMzAzMkwyNDEuODgxIDI5LjM4MzNaTTIyNC42MDEgNTguNzU5M0wyMTQuNTU3IDU5LjI5OTNMMjE5LjYzMyA0NS45MDc3TDIyNC42MDEgNTguNzU5M1oiIGZpbGw9ImJsYWNrIi8+PC9zdmc+",
    "sourceName": "AI风月",
    "sourceUrl": "https://aifun.ltd",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://pc.stgowan.com/,\nhttps://dmku.mhtjx.top/,\nhttps://dmku.m3u8.pw/,\nhttps://dm.bbj.icu/,\nhttps://www.superplayer.top/index.php/index/dm,\nhttps://jx.8852.top/dmku/,\nhttps://api.js1736.com:666/tj/tongji.js,\nhttps://node11.aizhantj.com:21233/tjjs/",
    "coverDecodeJs": "function toByteArray(input) {\n  var out = new Packages.java.io.ByteArrayOutputStream();\n  var buffer = java.strToBytes('\\0'.repeat(4096));\n  var bytesRead;\n  while ((bytesRead = input.read(buffer)) != -1) {\n    out.write(buffer, 0, bytesRead);\n  }\n  return out.toByteArray();\n}\n\n(function() {\n  // 1. 读取原始字节内容\n  var textBytes = toByteArray(result);\n  // 2. 如果是GIF文件，直接返回原始字节\n  if (src.endsWith('.gif')) {\n    return textBytes;\n  }\n  try {\n    // 3. 将字节转换为字符串（用于解析数据URI）\n    var dataUri = java.bytesToStr(textBytes, \"UTF-8\");\n    // 4. 判断是完整的数据URI还是纯Base64数据\n    var base64Prefix = \"base64,\";\n    var base64Index = dataUri.indexOf(base64Prefix);\n    if (base64Index === -1) {\n      // 如果没有找到base64前缀，检查是否需要截取第一个/及之后的内容\n      var firstSlashIndex = dataUri.indexOf('/');\n      if (firstSlashIndex !== -1) {\n        // 如果找到第一个/，截取/及之后的内容\n        dataUri = dataUri.substring(firstSlashIndex);\n      }\n      // 对整个内容进行Base64解码\n      return java.base64DecodeToByteArray(dataUri);\n    } else {\n      // 如果是标准data URI，提取base64编码部分解码\n      var base64Data = dataUri.substring(base64Index + base64Prefix.length);\n      return java.base64DecodeToByteArray(base64Data);\n    }\n  } catch (e) {\n    // 解码失败时返回原始字节\n    return textBytes;\n  }\n})();",
    "customOrder": 20,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n  \"User-Agent\": \"okhttp/4.2.2\",\n}",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n\n  // 触摸事件处理\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    \n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = '50%';\n    button.style.transform = 'translateY(-50%)';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n\n  // 旋转按钮（右侧）\n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    \n    // 保留当前的缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale})`;\n  }, { horizontal: 'right' });\n\n  // 缩放按钮（左侧）\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    \n    // 获取当前缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1)`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' });\n\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n  ];\n\n  seekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    button.addEventListener('click', () => {\n      video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n    });\n    buttonContainer.appendChild(button);\n  });\n\n  video.parentNode.appendChild(buttonContainer);\n}\n\n// 修改初始化逻辑，增加重试机制\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\n    const video = document.getElementById('video');\n    if (video) {\n      setupCustomPlayer(video);\n    } else if (retries < maxRetries) {\n      retries++;\n      setTimeout(tryInit, retryInterval);\n    }\n  };\n  tryInit();\n}\n// 使用重试机制初始化播放器\ninitPlayerWithRetry();",
    "lastUpdateTime": 1769953204779,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.rescont.data",
    "ruleContent": "<html><head><meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" />\n<meta name=\"referrer\" content=\"never\"/>\n  <style>html, body {text-align: center;margin: 0; padding: 0;width: 100%;overflow: hidden;} </style>\n  <script src=\"https://unpkg.com/hls.js@1.4.3/dist/hls.min.js\"></script>\n</head><body>\n  <div class=\"container\">\n    <div class=\"title\">{{$.rescont.title}}</div>\n    <video id=\"video\" width=\"100%\" height=\"91%\" poster=\"\" controls autoplay muted loop></video>\n  </div>\n<script>\nconst v=document.getElementById('video'),s=[\n  \"{{$.rescont.videopath}}\",\n  \"\"];\nlet c=0;\nfunction setupCustomControls(e){/* 自定义功能实现 */}\nfunction playNext(){\n  c>=s.length&&(c=0); // 循环重置计数器\n  const u=s[c++];\n  // 检测Hls对象是否存在\n  if (typeof Hls !== 'undefined' && Hls.isSupported()) {\n    const h = new Hls({\n      enableSoftwareAES: true,          // 强制软件解密\n      forceKeyFrameOnDiscontinuity: true // 关键帧恢复\n    });\n    h.loadSource(u);\n    h.attachMedia(v);\n    h.on(Hls.Events.MANIFEST_PARSED,()=>v.play().then(()=>setupCustomControls(v)).catch(console.log));\n    h.on(Hls.Events.ERROR,(_,d)=>d.fatal&&playNext())\n  } else { // Hls加载失败或浏览器原生支持HLS\n    if (v.canPlayType('application/vnd.apple.mpegurl')) {\n      v.src = u;\n      v.onloadedmetadata = () => v.play().then(() => setupCustomControls(v));\n      v.onerror = playNext;\n    } else {\n      // 如果都不支持，尝试直接播放（可能支持MP4等格式）\n      v.src = u;\n      v.onerror = playNext;\n      v.play().then(() => setupCustomControls(v)).catch(playNext);\n    }\n  }\n}playNext();\n</script>\n</body></html>",
    "ruleImage": "{{$.coverbase64.url}}",
    "ruleLink": "/api/videoplay/{{$.id}}",
    "ruleNextPage": "page",
    "rulePubDate": "📆 {{$.updated_at## .*}}  ⏱️ {{$.playtimes}}",
    "ruleTitle": "$.title##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*人妖.*|.*男同.*|.*mbrba.*|.*水果派.*|.*解说.*|.*mmraa.*|.*ss-.*|.*fway.*|.*rebd.*|.*mbdd.*|.*双性.*|.*妈妈.*|.*儿子.*|.*爸爸.*|.*女儿.*|.*母子.*|.*父女.*|.*熟女.*|.*眼射.*|.*直男.*|.*CD.*|.*肥女.*|.*黄金.*|.*骚0.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*厕.*|.*老阿姨.*|.*乱伦.*",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/api/videosort/0?page={{ Math.ceil(Math.random()*1500) }}\n最新::/api/videosort/0?page={{page}}\n🔎搜索::/api/videosort/0?serach={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('强奸');source.getVariable()}}&page={{page}}\n国产自拍::/api/videosort/10?page={{page}}\nH动漫::/api/videosort/14?page={{page}}\n国产剧情::/api/videosort/52?page={{page}}\n盗摄偷拍::/api/videosort/46?page={{page}}\n宅男福利::/api/videosort/31?page={{page}}\n小编推荐::/api/videosort/30?page={{page}}\n嫩模专区::/api/videosort/37?page={{page}}\n网红主播::/api/videosort/17?page={{page}}\n明星换脸::/api/videosort/33?page={{page}}\nASMR系列::/api/videosort/51?page={{page}}\n高清无码::/api/videosort/1?page={{page}}\nAV剧情::/api/videosort/29?page={{page}}\n翘臀美穴::/api/videosort/21?page={{page}}\n自慰口交::/api/videosort/50?page={{page}}\n淫乱职场::/api/videosort/45?page={{page}}\n制服诱惑::/api/videosort/5?page={{page}}\n美乳巨乳::/api/videosort/20?page={{page}}\n长腿丝袜::/api/videosort/11?page={{page}}\n角色扮演::/api/videosort/4?page={{page}}\n师生淫乱::/api/videosort/40?page={{page}}\n人妻熟女::/api/videosort/6?page={{page}}\n特工女警::/api/videosort/41?page={{page}}\n护士医生::/api/videosort/42?page={{page}}\n近亲相奸::/api/videosort/43?page={{page}}\nAV素人::/api/videosort/24?page={{page}}\n淫欲痴汉::/api/videosort/44?page={{page}}\n有码破坏::/api/videosort/48?page={{page}}\n当红女优::/api/videosort/9?page={{page}}\n制服诱惑::/api/videosort/5?page={{page}}\n青春萝莉::/api/videosort/22?page={{page}}\n重咸口味::/api/videosort/23?page={{page}}\n女同性爱::/api/videosort/38?page={{page}}\n三级电影::/api/videosort/25?page={{page}}",
    "sourceGroup": "h可用",
    "sourceIcon": "https://i1.wp.com/i.postimg.cc/wjL5myHr/kpptube-cc-3e997cb42a6b0f37af6c6a40866ba202.gif",
    "sourceName": "🌈向日葵   S",
    "sourceUrl": "https://api.xrkapiaba.xyz",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: -65px; /* 上移80px */\n    left: 0; \n    width: 100%; \n    height: calc(96% + 65px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://pc.stgowan.com/,\nhttps://dmku.mhtjx.top/,\nhttps://dmku.m3u8.pw/,\nhttps://dm.bbj.icu/,\nhttps://www.superplayer.top/index.php/index/dm",
    "coverDecodeJs": "function toByteArray(input) {\n  var out = new Packages.java.io.ByteArrayOutputStream();\n  var buffer = java.strToBytes('\\0'.repeat(4096));\n  var bytesRead;\n  while ((bytesRead = input.read(buffer)) != -1) {\n    out.write(buffer, 0, bytesRead);\n  }\n  return out.toByteArray();\n}\n\n(function() {\n  // 1. 读取原始字节内容\n  var textBytes = toByteArray(result);\n  // 2. 如果是GIF文件，直接返回原始字节\n  if (src.endsWith('.gif')) {\n    return textBytes;\n  }\n  try {\n    // 3. 将字节转换为字符串（用于解析数据URI）\n    var dataUri = java.bytesToStr(textBytes, \"UTF-8\");\n    // 4. 判断是完整的数据URI还是纯Base64数据\n    var base64Prefix = \"base64,\";\n    var base64Index = dataUri.indexOf(base64Prefix);\n    if (base64Index === -1) {\n      // 如果没有找到base64前缀，检查是否需要截取第一个/及之后的内容\n      var firstSlashIndex = dataUri.indexOf('/');\n      if (firstSlashIndex !== -1) {\n        // 如果找到第一个/，截取/及之后的内容\n        dataUri = dataUri.substring(firstSlashIndex);\n      }\n      // 对整个内容进行Base64解码\n      return java.base64DecodeToByteArray(dataUri);\n    } else {\n      // 如果是标准data URI，提取base64编码部分解码\n      var base64Data = dataUri.substring(base64Index + base64Prefix.length);\n      return java.base64DecodeToByteArray(base64Data);\n    }\n  } catch (e) {\n    // 解码失败时返回原始字节\n    return textBytes;\n  }\n})();",
    "customOrder": 21,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\t\"User-Agent\":\"Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI CC 11)  AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.127 Mobile Safari/537.36 XiaoMi/MiuiBrowser/18.1.8 swan-mibrowser\",\n\t\"referer\": \"{{baseUrl}}\"\n}",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n\n  // 触摸事件处理\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    \n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = '50%';\n    button.style.transform = 'translateY(-50%)';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n\n  // 旋转按钮（右侧）\n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    \n    // 保留当前的缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale})`;\n  }, { horizontal: 'right' });\n\n  // 缩放按钮（左侧）\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    \n    // 获取当前缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1)`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' });\n\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n  ];\n\n  seekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    button.addEventListener('click', () => {\n      video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n    });\n    buttonContainer.appendChild(button);\n  });\n\n  video.parentNode.appendChild(buttonContainer);\n}\n\n// 修改初始化逻辑，增加重试机制\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\n    const video = document.getElementById('video');\n    if (video) {\n      setupCustomPlayer(video);\n    } else if (retries < maxRetries) {\n      retries++;\n      setTimeout(tryInit, retryInterval);\n    }\n  };\n  tryInit();\n}\n// 使用重试机制初始化播放器\ninitPlayerWithRetry();",
    "lastUpdateTime": 1769952820089,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.rescont.data",
    "ruleContent": "<html><head><meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" />\n<meta name=\"referrer\" content=\"never\"/>\n  <style>html, body {text-align: center;margin: 0; padding: 0;width: 100%;overflow: hidden;} </style>\n  <script src=\"https://unpkg.com/hls.js@1.4.3/dist/hls.min.js\"></script>\n</head><body>\n  <div class=\"container\">\n    <div class=\"title\">{{$.rescont.title}}</div>\n    <video id=\"video\" width=\"100%\" height=\"91%\" poster=\"\" controls autoplay muted loop></video>\n  </div>\n<script>\nconst v=document.getElementById('video'),s=[\n  \"{{$.rescont.videopath}}\",\n  \"\"];\nlet c=0;\nfunction setupCustomControls(e){/* 自定义功能实现 */}\nfunction playNext(){\n  c>=s.length&&(c=0); // 循环重置计数器\n  const u=s[c++];\n  // 检测Hls对象是否存在\n  if (typeof Hls !== 'undefined' && Hls.isSupported()) {\n    const h = new Hls({\n      enableSoftwareAES: true,          // 强制软件解密\n      forceKeyFrameOnDiscontinuity: true // 关键帧恢复\n    });\n    h.loadSource(u);\n    h.attachMedia(v);\n    h.on(Hls.Events.MANIFEST_PARSED,()=>v.play().then(()=>setupCustomControls(v)).catch(console.log));\n    h.on(Hls.Events.ERROR,(_,d)=>d.fatal&&playNext())\n  } else { // Hls加载失败或浏览器原生支持HLS\n    if (v.canPlayType('application/vnd.apple.mpegurl')) {\n      v.src = u;\n      v.onloadedmetadata = () => v.play().then(() => setupCustomControls(v));\n      v.onerror = playNext;\n    } else {\n      // 如果都不支持，尝试直接播放（可能支持MP4等格式）\n      v.src = u;\n      v.onerror = playNext;\n      v.play().then(() => setupCustomControls(v)).catch(playNext);\n    }\n  }\n}playNext();\n</script>\n</body></html>",
    "ruleImage": "{{$.coverbase64.url}}",
    "ruleLink": "/api/videoplay/{{$.id}}?uuid=1",
    "ruleNextPage": "$.rescont.next_page_url",
    "rulePubDate": "📆{{$.updated_at## .*}}  ⏱️{{$.playtimes}}",
    "ruleTitle": "$.title##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*人妖.*|.*男同.*|.*mbrba.*|.*水果派.*|.*解说.*|.*mmraa.*|.*ss-.*|.*fway.*|.*rebd.*|.*mbdd.*|.*双性.*|.*妈妈.*|.*儿子.*|.*爸爸.*|.*女儿.*|.*母子.*|.*父女.*|.*熟女.*|.*眼射.*|.*直男.*|.*CD.*|.*肥女.*|.*黄金.*|.*骚0.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*厕.*|.*老阿姨.*|.*乱伦.*|.*[电影].*",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/api/videosort/0?page={{ Math.ceil(Math.random()*1600) }}\n最新::/api/videosort/0?page={{page}}\n🔎搜索::/api/videosort/0?serach={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('强奸');source.getVariable()}}&page={{page}}\n国产自拍::/api/videosort/28?page={{page}}\nH动漫::/api/videosort/32?page={{page}}\n3D动画::/api/videosort/65?page={{page}}\n国产AV::/api/videosort/68?page={{page}}\n高清无码::/api/videosort/30?page={{page}}\n凌辱侵犯::/api/videosort/60?page={{page}}\n性虐调教::/api/videosort/64?page={{page}}\n长腿丝袜::/api/videosort/43?page={{page}}\n制服诱惑::/api/videosort/33?page={{page}}\nAV素人::/api/videosort/39?page={{page}}\nAV剧情::/api/videosort/49?page={{page}}\n绿帽人妻::/api/videosort/58?page={{page}}\n痴女淫娃::/api/videosort/61?page={{page}}\n美乳巨乳::/api/videosort/38?page={{page}}\n草莓推荐::/api/videosort/52?page={{page}}\ntaipei1001::/api/videosort/69?page={{page}}\n259LUXU::/api/videosort/50?page={{page}}\n明星淫梦::/api/videosort/56?page={{page}}\n电车痴汉::/api/videosort/59?page={{page}}\n絕色佳人::/api/videosort/44?page={{page}}\n网红嫩模::/api/videosort/37?page={{page}}\n口交自慰::/api/videosort/63?page={{page}}\n精油汗汁::/api/videosort/62?page={{page}}\n角色扮演::/api/videosort/27?page={{page}}\n魔镜系列::/api/videosort/54?page={{page}}\n重咸口味::/api/videosort/48?page={{page}}\n三级电影:/api/videosort/46?page={{page}}\n家庭乱伦::/api/videosort/57?page={{page}}\nAV欧美::/api/videosort/36?page={{page}}\n恐怖情色::/api/videosort/51?page={{page}}\n酒店偷拍::/api/videosort/67?page={{page}}",
    "sourceGroup": "h可用",
    "sourceIcon": "https://i1.wp.com/i.postimg.cc/wjL5myHr/kpptube-cc-3e997cb42a6b0f37af6c6a40866ba202.gif",
    "sourceName": "🌈草莓    S",
    "sourceUrl": "https://api.cmapiaba.xyz/",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: -65px; /* 上移80px */\n    left: 0; \n    width: 100%; \n    height: calc(96% + 65px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 22,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "@js:\nJSON.stringify({\n\t\"User-Agent\": \"Mozilla/5.0 (Linux; Android 9) Mobile Safari/537.36\",\n\t\"Referer\":baseUrl\n\t})",
    "lastUpdateTime": 1770391603015,
    "loadWithBaseUrl": true,
    "loginUi": "[\n{\n        \"name\": \"用户名\",\n        \"type\": \"text\"\n    },\n    {\n        \"name\": \"密码\",\n        \"type\": \"password\"\n    },{\n        \"name\": \"登录\",\n        \"type\": \"button\",\n        \"action\": \"login(true)\",\n   \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        name: \"---模式---\",\n        type: \"button\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        },\n        action:\"Toast()\"\n    },\n{\n        \"name\": \"默认模式\",\n        \"type\": \"button\",\n        \"action\": \"DEFAULT()\",\n        \"style\": {\n            \"layout_flexGrow\": 0.5,\n            \"layout_flexBasisPercent\": 0.25\n        }\n   \n    },\n{\n        \"name\": \"简洁模式\",\n        \"type\": \"button\",\n        \"action\": \"Concise_mode()\",\n        \"style\": {\n            \"layout_flexGrow\": 0.5,\n            \"layout_flexBasisPercent\": 0.25\n        }\n   \n    },\n    {\n        \"name\": \"打开外部浏览器模式\",\n        \"type\": \"button\",\n        \"action\": \"TnEBM()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n   \n    },{\n        \"name\": \"源站登录\",\n        \"type\": \"button\",\n        \"action\": \"Loginm()\",\n   \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    }\n]",
    "loginUrl": "Toast=()=>{\n\tjava.toast('当前为【'+source.getVariable()+'】')\n\t}\nConcise_mode = () =>{\nsource.setVariable(\"简洁模式\");\njava.toast(\"\\n已经切换到“简洁模式”\")\n}\nTnEBM = () =>{\nsource.setVariable(\"打开外部浏览器模式\");\njava.toast(\"\\n已经切换到“打开外部浏览器模式”\")\n}\nDEFAULT = () =>{\nsource.setVariable(\"默认模式\");\njava.toast(\"\\n已经切换到“默认模式”\")\n}\nLoginm = () =>{\n\tbaseUrl=source.getKey()+\"/member.php?mod=logging&action=login&mobile=2\"\njava.startBrowser(baseUrl,'源站登录');\n}\nfunction login(b) {\n  if (b == undefined) return true;\n  info = result\n  so = source.getKey();\n    pw = info.密码\n  if (b) {\n    url = so + '/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LIDdY&handlekey=loginform&inajax=1,'\n    body = `fastloginfield=username&cookietime=31104000&username=${info.用户名}&password=${pw}&questionid=0&answer=&agreebbrule=`\n  }  \n   post = JSON.stringify({\n    \"body\": String(body),\n    \"method\": \"POST\"\n  })\n  url += post\n  result = java.ajax(url)\n  //java.log(result)\n  if(result.match(/欢迎您回来/)){\n  \t  p=result.match(/_loginform\\(.*,?'(.*)', \\{.*\\)/)\n  \t  \n  \t  \n  \t  java.toast(\"\\n\"+p[1].replace(/，现在将转入登录前页面/,\"\"))\n  java.log(url)\n  }\n  c = cookie.getCookie(source.getKey())\n  source.putLoginHeader(c);\n  cache.put(\"ysqbbs\",c)\n}\n",
    "preload": false,
    "ruleArticles": "li.forumlist_li.comiis_znalist.bg_f.b_t.b_b.comiis_list_readimgs||ul@class.forumlist_li comiis_znalist bg_f b_t b_b comiis_list_readimgs||id.list_new@li||li.forumlist_li.comiis_znalist.bg_f.b_t.b_b.comiis_list_readimgs",
    "ruleContent": "<js>\nvar z = source.getVariable(); // 获取用户变量\nif (z == \"简洁模式\") {\nresult=`<!DOCTYPE html><html lang=\"en\"><head>    <meta charset=\"UTF-8\">    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">    <style>        /* 基本样式 */        body {            font-family: Arial, sans-serif;            margin: 0;            padding: 0;            background-color: #f9f9f9;            color: #333;            line-height: 1.6;            font-size: 16px;            transition: background-color 0.3s, color 0.3s;        }        /* 暗黑模式样式 */        body.dark-mode {            background-color: #121212;            color: #e0e0e0;        }        /* 标题和作者信息的框架样式 */        .header-container {            background-color: #fff;            padding: 20px;            border: 1px solid #ddd;            border-radius: 8px;            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);            margin: 20px auto;            max-width: 800px;            transition: background-color 0.3s, border-color 0.3s, box-shadow 0.3s;        }        body.dark-mode .header-container {            background-color: #202020;            border-color: #303030;            box-shadow: 0 2px 4px rgba(255, 255, 255, 0.1);        }        /* 标题样式 */        h1 {            font-size: 24px;            font-weight: bold;            margin: 0 0 10px;            color: #2c3e50;        }        body.dark-mode h1 {            color: #8e44ad;        }        /* 作者信息样式 */        h2 {            font-size: 18px;            font-weight: normal;            margin: 0 0 20px;            color: #7f8c8d;        }        body.dark-mode h2 {            color: #bdc3c7;        }        /* 图片自适应 */        img {            max-width: 100%;            height: auto;            display: block;            margin: 10px auto;        }        /* 链接样式 */        a {            color: #007bff;            text-decoration: none;            font-weight: bold;        }        a:hover {            text-decoration: underline;        }        body.dark-mode a {            color: #5588ff;        }        /* 暗黑模式切换按钮 */        .dark-mode-toggle {            position: fixed;            bottom: 10px;            right: 10px;            padding: 10px;            background-color: #333;            color: #fff;            border: none;            border-radius: 5px;            cursor: pointer;            font-size: 14px;            z-index: 1000;            display: none; /* 默认隐藏 */        }        body.dark-mode .dark-mode-toggle {            background-color: #e0e0e0;            color: #333;        }        /* 展开按钮样式 */        .toggle-button {            position: fixed;            bottom: 10px;            right: 10px;            padding: 10px;            background-color: #555;            color: #fff;            border: none;            border-radius: 5px;            cursor: pointer;            font-size: 14px;            z-index: 1001; /* 确保在暗黑模式按钮之上 */        }        body.dark-mode .toggle-button {            background-color: #aaa;            color: #333;        }        /* 打开原帖按钮样式 */        .open-original-post {            display: block;            margin: 20px auto;            padding: 10px 20px;            background-color: #007bff;            color: #fff;            border: none;            border-radius: 5px;            font-size: 16px;            text-align: center;            text-decoration: none;            cursor: pointer;            transition: background-color 0.3s;        }        .open-original-post:hover {            background-color: #0056b3;        }        body.dark-mode .open-original-post {            background-color: #5588ff;        }        body.dark-mode .open-original-post:hover {            background-color: #4078c0;        }        /* 媒体查询：小屏幕设备 */        @media (max-width: 600px) {            h1 {                font-size: 20px;            }            h2 {                font-size: 16px;            }        }    </style></head><body>    <!-- 展开按钮 -->    <button class=\"toggle-button\" onclick=\"toggleDarkModeButton()\"><</button>    <!-- 暗黑模式切换按钮 -->    <button class=\"dark-mode-toggle\" onclick=\"toggleDarkMode()\">切换暗黑模式</button>    <!-- 标题和作者信息框架 -->    <div class=\"header-container\">        <h1>{{@@class.km_tits@text}}</h1> <!-- 标题 -->        <h2>{{@@class.comiis_postli_top comiis_postli_topv1 bg_f@h2@html}}</h2> <!-- 作者信息 -->    </div>        <p>{{@@class.comiis_messages comiis_aimg_show cl.0@html##\\+淘帖.*}}</p> <!-- 正文内容 --><p style=\"text-align: center; margin: 20px 0;\">        本帖可能有付费内容，建议打开原帖       <a href=\"${baseUrl}\" class=\"open-original-post\" target=\"_blank\">打开原帖</a>    </p>        <!-- 打开原帖按钮 -->        <script>                function toggleDarkMode() {            document.body.classList.toggle('dark-mode');        }                function toggleDarkModeButton() {            const darkModeToggle = document.querySelector('.dark-mode-toggle');            if (darkModeToggle.style.display === 'none' || darkModeToggle.style.display === '') {                darkModeToggle.style.display = 'block';            } else {                darkModeToggle.style.display = 'none';            }        }    </script></body></html>`\n} else if (z == \"默认模式\") {\n\t          //不要用startBrowser，否则会多跳转 java.startBrowser(baseUrl,\"\")\n\t          result\n\t           }else if (z == \"打开外部浏览器模式\"){\n\t           \t   java.openUrl(baseUrl) \n\t           \t}\n\t           \telse{          \n\t          java.startBrowser(baseUrl,\"\")     \n\t           }\n</js>",
    "ruleImage": "img.1@comiis_loadimages||img@src",
    "ruleLink": "{{java.getString('.comiis_xznalist_bk a@textNodes')==\"灌水区\"?\"\":java.getString('a[href~=thread]@href')}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{@.forumlist_li_time@text}} {{java.getString('.comiis_xznalist_bk@text').replace(\"\",\"﹟\")}} {{@.list_body.cl@text}}{{if(java.getString('span@textNodes'))java.getString('span@textNodes')+'评论'}}",
    "ruleTitle": "{{java.getString('h2.-1@text').replace(\"新人帖\",\"🆕\").replace(\"\",\"🔥\").replace(\"\",\"💴\").replace(\"精 \",\"﹝精﹞\").replace(\"荐 \",\"﹝荐﹞\").replace(\"已解决 \",\"﹝已解决﹞\").replace(\"关闭 \",\"🔒\").replace(\"红包贴\",\"🧧红包帖\")+' @'}}{{@@.top_user@text||class.f_c@text}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "🗝️导读::/forum.php?mod=guide&view=newthread&index=1&page={{page}}\n🔍搜索::/search.php?mod=forum&srchtxt={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('订阅'):\"\"}}{{source.getVariable()}}&searchsubmit=true&source=hotsearch&mobile=2&page={{page}}\n\n📖书源发布::/forum.php?mod=forumdisplay&fid=2&page={{page}}\n📡订阅源::/forum.php?mod=forumdisplay&fid=40&page={{page}}\n🔄TTS与净化::/forum.php?mod=forumdisplay&fid=48&page={{page}}\n🎨主题发布::/forum.php?mod=forumdisplay&fid=49&page={{page}}\n\n💰问答悬赏::/forum.php?mod=forumdisplay&fid=106&page={{page}}\n🗂️网络资源::/forum.php?mod=forumdisplay&fid=39&page={{page}}\n💡技术交流::/forum.php?mod=forumdisplay&fid=38&page={{page}}\n\n💿圈子::https://ysqbbs.com/group.php?mod=index&page={{page}}&mobile=2\\n\n💧开源阅读::/forum.php?mod=forumdisplay&fid=91&page={{page}}\n\n📚黄金书屋::/forum.php?mod=forumdisplay&fid=46&page={{page}}\n♨️精校小说::/forum.php?mod=forumdisplay&fid=89&page={{page}}\n🎶音视频区::/forum.php?mod=forumdisplay&fid=113&page={{page}}\n🕹️游戏专区::/forum.php?mod=forumdisplay&fid=110&page={{page}}\n🎨漫画专区::/forum.php?mod=forumdisplay&fid=114&page={{page}}\n📱数码专区::/forum.php?mod=forumdisplay&fid=107&page={{page}}\n\n🎮休闲娱乐::/forum.php?mod=forumdisplay&fid=96&page={{page}}\n🛒情报速递::/forum.php?mod=forumdisplay&fid=98&page={{page}}\n🏮活动专区::/forum.php?mod=forumdisplay&fid=105&page={{page}}\n🗺️知识科普::/forum.php?mod=forumdisplay&fid=53&page={{page}}\n🐳灌水区::/forum.php?mod=forumdisplay&fid=97&page={{page}}\n\n📢公告::/forum.php?mod=forumdisplay&fid=42&page={{page}}\n📝投诉建议::/forum.php?mod=forumdisplay&fid=43&page={{page}}\n✅申请认证::/forum.php?mod=forumdisplay&fid=51&page={{page}}\n✨星光专区::/forum.php?mod=forumdisplay&fid=102&page={{page}}",
    "sourceComment": "/*\n\t❗注意事项:有些板块需要登录才能正常显示\n20241104修改by河鹅和\n1、在用户名前添加了@符号\n2、优化请求头Referer\n3、版块文字前添加图标，并同步为现今版块名称\n4、修复点击帖子显示评价指数加一\n5、更换了源图标\n6、修复帖子无标题时只显示用户名的问题\n7、更新时间规则，修复偶尔显示时间位置显示为lv0的问题\n8、修复🔥和🧧图标不显示，将新人帖更换成图标🆕，将精华和推荐等状态添加﹝﹞符号\n9、修复访问悬赏版块更换了地址的问题，添加灌水区\n20241108更新\n1、添加导读，并排除掉导读中灌水区的帖子\n2、添加帖子类别信息，不想要可自行删除时间规则里第二个{{}}及里面内容\n3、关闭更换为🔒\n20250217更新 by怣疯\n1.修复有些板块(休闲娱乐区，主题区，灌水区，悬赏区，申请认证区)看不了的情况，增强规则健壮性。\n2.所有板块列表正常显示图片\n3.感谢热心坛友@Sylt1122，新增板块(精校小说，星光认证，活动专区)\n20250225更新 by怣疯\n1.感谢坛友@Sylt1122，增添大量板块(圈子，开源阅读，音视频，游戏，漫画，数码专区)\n2025/2/28更新 by天天的鸟蛋蛋 \n主要修改部分正文和登录，增添三种查看模式：默认模式，简洁模式，打开外部浏览器模式\n2025/3/5更新 by天天的鸟蛋蛋 by辞晨\n修改登录，内置登录\n*/",
    "sourceGroup": "noh",
    "sourceIcon": "https://ysqbbs.com/template/comiis_app/pic/icon152.png",
    "sourceName": "源社区",
    "sourceUrl": "https://ycoo.net/?comiis_tab=2",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "coverDecodeJs": "java.createSymmetricCrypto(\"AES/CBC/NoPadding\",\"f5d965df75336270\",\"97b60394abc2fbe1\").decrypt(result)",
    "customOrder": 23,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; U; Android 13; zh-Hans-CN; PFJM10 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/135.0.4896.58 Quark/6.13.6.581 Mobile Safari/537.36\",\n\"Accept-Language\":\"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7\"}",
    "lastUpdateTime": 1770993352191,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "#body>.container>.row>div[role=\"main\"]>article:not(:has(meta[content=\"广告\"]))>a",
    "ruleContent": "@js:\nlet urls = [];\nlet resultStr = String(result);\n\nlet getM3u8 = (html = resultStr) => {\n    let url = /(https?:[^'\"\\s]*?\\.m3u8[^'\"\\s]*)/g;\n    let urlSet = new Set();\n    for (let match of (html.matchAll(url) || [])) {\n  \t   let ul = match[1].replace(/\\\\/g, \"\");\n  \t   urlSet.add(ul);\n    \t};\n    return Array.from(urlSet);\n};\n\n let updateProgress = (current, total) => {\n    let percentage = Math.round(current / total * 10000)/100;\n    let blocks = Math.floor(percentage / 10);\n    let progressBar = \"█\".repeat(blocks) + \"░\".repeat(10 - blocks);\n    java.longToast(`【加载进度】\\n${progressBar} \\n${percentage}%`);\n};\n\nif (/点我/.test(result) && /查看详情/.test(result)) {\n    let list = java.getElements('@@#post>article>.post-content>p>a');\n    let links = Array.from(list).slice(0,-1);\n    let tempUrls = []; \n    links.forEach((link, index) => {\n        updateProgress(index + 1, links.length);\n        \n        let href = String(link.attr('href'));\n        let fullUrl = `${source.key}${href}`;\n        let doc = String(java.ajax(fullUrl));\n        let pageUrls = getM3u8(doc);\n        if (pageUrls.length > 0) {\n            tempUrls = tempUrls.concat(pageUrls);\n        }\n        if (index === links.length - 1) {\n            urls = tempUrls;\n        }\n    })\n} else {\n    urls = getM3u8();\n};\n\n`<html>\n    <head>\n        <meta name=\"viewport\" content=\"width=device-width\">\n        <style>\n            body {\n                margin: 0;\n                font-family: Arial, sans-serif;\n                background: linear-gradient(135deg, #ece9e6, #ffffff);\n                display: flex;\n                flex-direction: column;\n                align-items: center;\n                justify-content: flex-start;\n                padding: 20px;\n            }\n            .container {\n                width: 100%;\n                max-width: 800px;\n                background: #fff;\n                border-radius: 10px;\n                box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n                overflow: hidden;\n                margin-bottom: 20px;\n            }\n            h3 {\n            \t    text-align: center;\n                margin: 0;\n                padding: 10px 20px;\n                font-size: 0.9em;\n                background: #333;\n                color: #fff;\n                border-radius: 10px 10px 0 0;\n            }\n            .video-container {\n                width: 100%;\n                background: #000;\n                position: relative;\n            }\n            video {\n                width: 100%;\n                height: auto;\n                display: block;\n            }\n            .info-container {\n                padding: 20px;\n            }\n            .info-container p {\n                margin: 10px 0;\n                color: #555;\n            }\n            .info-container p span {\n                font-weight: bold;\n                color: #000;\n            }\n            .nav-container {\n                display: flex;\n                justify-content: space-between;\n                align-items: center;\n                padding: 15px 20px;\n                background: #f5f5f5;\n                border-top: 1px solid #ddd;\n            }\n            .nav-button {\n                padding: 10px 20px;\n                background: #007bff;\n                color: white;\n                border: none;\n                border-radius: 5px;\n                cursor: pointer;\n                font-size: 14px;\n            }\n            .nav-button:disabled {\n                background: #6c757d;\n                cursor: not-allowed;\n            }\n            .page-select {\n                padding: 10px 15px;\n                border: 1px solid #ddd;\n                border-radius: 5px;\n                font-size: 14px;\n                background: white;\n                min-width: 120px;\n            }\n            .video-info {\n                text-align: center;\n                padding: 10px;\n                background: #f8f9fa;\n                border-bottom: 1px solid #ddd;\n                font-size: 14px;\n                color: #666;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"container\">\n        <h3>当前播放: 第<span id=\"currentVideo\">1</span>集 / 共${urls.length}集</h3>\n            <div class=\"video-container\">\n                <video controls autoplay name=\"media\" id=\"videoPlayer\">\n                    <source src=\"${urls[0] || ''}\" type=\"application/x-mpegURL\">\n                </video>\n            </div>\n            <div class=\"nav-container\">\n                <button class=\"nav-button\" id=\"prevBtn\" onclick=\"changeVideo(-1)\">上一集</button>\n                <select class=\"page-select\" id=\"pageSelect\">\n                    <!-- 选项将通过JavaScript动态生成 -->\n                </select>\n                <button class=\"nav-button\" id=\"nextBtn\" onclick=\"changeVideo(1)\">下一集</button>\n            </div>\n            <div class=\"info-container\">\n            </div>\n        </div>\n\n        <script>\n            // 视频地址数组和当前索引\n            const videoUrls = ${JSON.stringify(urls)};\n            let currentVideoIndex = 0;\n            \n            // 获取DOM元素\n            const video = document.getElementById('videoPlayer');\n            const prevBtn = document.getElementById('prevBtn');\n            const nextBtn = document.getElementById('nextBtn');\n            const pageSelect = document.getElementById('pageSelect');\n            const currentVideoSpan = document.getElementById('currentVideo');\n            \n            // 生成下拉菜单选项\n            function generateSelectOptions() {\n                let optionsHtml = '';\n                for (let i = 0; i < videoUrls.length; i++) {\n                   optionsHtml += '<option value=\"' + i + '\">第' + (i + 1) + '集</option>';\n    };\n                pageSelect.innerHTML = optionsHtml;\n             }\n            \n            // 更新按钮状态和显示\n            function updateButtons() {\n                prevBtn.disabled = currentVideoIndex === 0;\n                nextBtn.disabled = currentVideoIndex === videoUrls.length - 1;\n                pageSelect.value = currentVideoIndex;\n                currentVideoSpan.textContent = currentVideoIndex + 1;\n            }\n            \n            // 切换视频\n            function changeVideo(direction) {\n                const newIndex = currentVideoIndex + direction;\n                if (newIndex >= 0 && newIndex < videoUrls.length) {\n                    currentVideoIndex = newIndex;\n                    video.src = videoUrls[currentVideoIndex];\n                    video.load();\n                    updateButtons();\n                }\n            }\n            \n            // 选择特定视频\n            function selectVideo(index) {\n                const newIndex = parseInt(index);\n                if (newIndex >= 0 && newIndex < videoUrls.length) {\n                    currentVideoIndex = newIndex;\n                    video.src = videoUrls[currentVideoIndex];\n                    video.load();\n                    updateButtons();\n                }\n            }\n            \n            // 初始化按钮状态\n            generateSelectOptions();\n            updateButtons();\n            \n            // 绑定下拉菜单事件\n            pageSelect.addEventListener('change',function() {\n               selectVideo(this.value);\n             });\n            \n            // 触摸控制相关代码\n            let touchStartX = 0;\n            let touchStartY = 0;\n            let touchStartTime = 0;\n            let isLongPress = false;\n\n            // 滑动快进\n            video.addEventListener('touchstart', (e) => {\n                touchStartX = e.touches[0].clientX;\n                touchStartY = e.touches[0].clientY;\n                touchStartTime = Date.now();\n                isLongPress = false;\n            });\n\n            video.addEventListener('touchmove', (e) => {\n                const deltaX = e.touches[0].clientX - touchStartX;\n                const deltaY = e.touches[0].clientY - touchStartY;\n\n                // 如果是水平滑动，且未进入长按状态\n                if (Math.abs(deltaX) > Math.abs(deltaY) && !isLongPress) {\n                    const duration = video.duration;\n                    const seekTime = video.currentTime + (deltaX / 100); // 每滑动100px快进1秒\n                    video.currentTime = Math.min(Math.max(seekTime, 0), duration);\n                }\n            });\n\n            // 长按快进\n            video.addEventListener('touchend', (e) => {\n                const touchEndTime = Date.now();\n                const touchDuration = touchEndTime - touchStartTime;\n\n                // 如果长按时间超过500ms，进入长按快进状态\n                if (touchDuration > 500) {\n                    isLongPress = true;\n                    // 在长按状态下，根据滑动距离快进\n                    const deltaX = e.changedTouches[0].clientX - touchStartX;\n                    const duration = video.duration;\n                    const seekTime = video.currentTime + (deltaX / 100); // 每滑动100px快进1秒\n                    video.currentTime = Math.min(Math.max(seekTime, 0), duration);\n                } else {\n                    isLongPress = false;\n                }\n            });\n\n            // 防止默认行为（如页面滚动）\n            video.addEventListener('touchmove', (e) => {\n                e.preventDefault();\n            });\n        </script>\n    </body>\n</html>`",
    "ruleImage": "@js:\nvar text = java.getString('script@html');\nvar match = text.match(/loadBannerDirect\\('([^']+)'/);\nvar img = match ? match[1] : '';\nimg;",
    "ruleLink": "href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.wraps@text}}{{@@.post-card-info span@text##\\n}}",
    "ruleTitle": "h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::/search/{{source.getVariable()}}/{{page}}/\n首页::/page/{{page}}/\n每日大赛::/category/mrds/{{page}}/\n主题大赛::/category/ztds/{{page}}/\n热搜吃瓜::/category/rstt/{{page}}/\n校园学生::/category/xazd/{{page}}/\n必撸大赛::/category/blyp/{{page}}/\n反差泄密::/category/fctg/{{page}}/\n网红黑料::/category/mhds/{{page}}/\n猎奇重口::/category/lqdp/{{page}}/\nAV看片::/category/jdsj/{{page}}/\n明星大赛::/category/mxwh/{{page}}/\n动漫之家::/category/smdh/{{page}}/\n影视国漫::/category/dypd/{{page}}/\ncos写真::/category/mtds/{{page}}/\n声控ASMR::/category/ysds/{{page}}/\n寸止挑战::/category/czds/{{page}}/\n混剪PMV::/category/hjds/{{page}}/\n原创投稿::/category/tgds/{{page}}/\n欧美精品::/category/omjp/{{page}}/\n全网参赛::/category/qwcs/{{page}}/",
    "sourceComment": "// 发布页https://www.quawdtr.cc/",
    "sourceGroup": "h可用",
    "sourceIcon": "https://mrds.com/usr/themes/Mirages/images/avatar.jpg",
    "sourceName": "每日大赛",
    "sourceUrl": "https://board.ipfizxh.com//",
    "style": "iframe{\n\theight:600px\n}\ntitle{\n\tdisplay:block\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 25,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": " {\n\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.view-content@class.views-column",
    "ruleContent": "",
    "ruleImage": "tag.img@src",
    "ruleLink": "class.title@tag.a.0@href",
    "ruleNextPage": "class.pager-next@tag.a@href",
    "rulePubDate": "<js>\nvar doc = org.jsoup.Jsoup.parse(result);\nvar likes = doc.select(\"div.node\").select(\"div.right-icon\").text();\nif(likes.equals(\"\")){likes = \"0\"}\nvar views = doc.select(\"div.node\").select(\"div.left-icon\").text();\nif(views.equals(\"\")){views = \"0\"}\nvar name = doc.select(\"a.username\").text();\nresult=\"作者: \"+name+\"  观看: \"+views+\"  喜欢: \"+likes\n\n</js>",
    "ruleTitle": "class.title@tag.a.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n搜索::https://ecchi.iwara.tv/search?&query=download,&sort=data\n\n\n最新视频::https://ecchi.iwara.tv/videos?language=zh-hans&sort=data\n视频排行::https://ecchi.iwara.tv/videos?language=zh-hans&sort=views\n最新图片::https://ecchi.iwara.tv/images?language=zh-hans&sort=data\n图片排行::https://ecchi.iwara.tv/images?language=zh-hans&sort=views\n2020年::https://ecchi.iwara.tv/videos?language=zh-hans&f%5B0%5D=created%3A2020&sort=views\n2019年::https://ecchi.iwara.tv/videos?language=zh-hans&f%5B0%5D=created%3A2019&sort=views\n2018年::https://ecchi.iwara.tv/videos?language=zh-hans&f%5B0%5D=created%3A2018&sort=views\n2017年::https://ecchi.iwara.tv/videos?language=zh-hans&f%5B0%5D=created%3A2017&sort=views\n2016年::https://ecchi.iwara.tv/videos?language=zh-hans&f%5B0%5D=created%3A2016&sort=views\n2015年::https://ecchi.iwara.tv/videos?language=zh-hans&f%5B0%5D=created%3A2015&sort=views\n2014年::https://ecchi.iwara.tv/videos?language=zh-hans&f%5B0%5D=created%3A2014&sort=views",
    "sourceGroup": "h",
    "sourceIcon": "https://iwara.tv/sites/all/themes/main/img/logo.png",
    "sourceName": "Iwara",
    "sourceUrl": "https://ecchi.iwara.tv",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 27,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1770433640992,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".col-inner",
    "ruleContent": "blockquote,iframe,#gallery-1@html##</?a.*?>",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "a[aria-label=\"Next\"]@href",
    "ruleTitle": "h5@text",
    "shouldOverrideUrlLoading": "if (!/bisniscpm.asia/.test(url)) {\n    java.openUrl(url);\n    true;\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "Video Cosplay::https://cosplaytele.com/category/video-cosplay/\n\nCosplay Nude::https://cosplaytele.com/category/nude/\nCosplay Ero::https://cosplaytele.com/category/no-nude/\nCosplay::https://cosplaytele.com/category/cosplay/\n\n24 hours::https://cosplaytele.com/24-hours/\n3 day::https://cosplaytele.com/3-day/\n7 Day::https://cosplaytele.com/7-day/\nLive Sex Cams::https://shorturl.at/bIMCS\nUncensored JavHD::https://r.trwl1.com/c1/3a7c0a31-16c1-4983-add6-a8758b7c30d1",
    "sourceGroup": "h",
    "sourceIcon": "https://cosplaytele.com/wp-content/uploads/2024/01/293172358_1027749337945791_5526464405172981062_n.png",
    "sourceName": "cosplaytele",
    "sourceUrl": "https://cosplaytele.com/",
    "style": "@font-face { font-family: 'Custom'; src: url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700&display=swap'); }\n* { font-family: 'Custom', sans-serif; }\n\ninput[readonly] {\n    display: none;\n}\n\n/* 文本样式 */\nblockquote {\n    width: 92% !important;\n    margin: 15px auto 20px auto;\n    padding: 5% 4%;\n    color: #f0f0f0;\n    background: linear-gradient(145deg, #3a3a3a, #2a2a2a);\n    border-radius: 12px;\n    line-height: 1.7;\n    font-size: 16px;\n    box-shadow: 0 4px 12px rgba(0,0,0,0.3);\n    border-left: 4px solid #ff4081;\n}\n\n/* 视频容器 */\niframe[src*=\"cossora.stream\"] {\n    width: 98% !important;\n    height: 240px !important;\n    max-width: 720px;\n    display: block;\n    margin: 20px auto;\n    border-radius: 12px;\n    box-shadow: 0 6px 18px rgba(0,0,0,0.4);\n    background: #000;\n}\n\n/* 图片容器 - 改为上下滚动布局 */\n#gallery-1.gallery {\n    display: flex !important;\n    flex-direction: column !important;\n    flex-wrap: nowrap !important;\n    overflow-x: hidden !important;\n    overflow-y: auto !important;\n    max-height: none !important;\n    padding: 8px 4px !important;\n    margin: 0 !important;\n    width: 100% !important;\n    background: #1a1a1a;\n    border-radius: 12px;\n}\n\n/* 图片项 - 上下排列 */\n.gallery-item {\n    display: block !important;\n    width: 100% !important;\n    margin: 0 0 20px 0 !important;\n    padding: 0 !important;\n    box-sizing: border-box !important;\n    break-inside: avoid !important;\n    page-break-inside: avoid !important;\n    -webkit-column-break-inside: avoid !important;\n}\n\n/* 高分辨率图片样式 */\nimg {\n    width: 100% !important;\n    max-width: 100% !important;\n    height: auto !important;\n    min-height: 300px !important;\n    max-height: 800px !important;\n    object-fit: contain !important;\n    object-position: center !important;\n    border-radius: 12px !important;\n    vertical-align: middle !important;\n    display: block !important;\n    margin: 0 auto !important;\n    background: #2a2a2a !important;\n    box-shadow: 0 4px 16px rgba(0,0,0,0.5) !important;\n    transition: transform 0.3s ease !important;\n}\n\n/* 图片悬停效果 */\nimg:hover {\n    transform: scale(1.02) !important;\n}\n\n/* 提升图片质量 - 尝试加载更高分辨率的图片 */\nimg[src*=\"-300x\"] {\n    content: attr(data-src) !important;\n}\n\n/* 加载指示器 */\nimg:not([src]) {\n    background: linear-gradient(90deg, #2a2a2a 25%, #3a3a3a 50%, #2a2a2a 75%) !important;\n    background-size: 200% 100% !important;\n    animation: loading 1.5s infinite !important;\n}\n\n@keyframes loading {\n    0% { background-position: 200% 0; }\n    100% { background-position: -200% 0; }\n}\n\n/* 滚动条样式 */\n#gallery-1.gallery::-webkit-scrollbar {\n    width: 6px;\n}\n\n#gallery-1.gallery::-webkit-scrollbar-track {\n    background: #2a2a2a;\n    border-radius: 3px;\n}\n\n#gallery-1.gallery::-webkit-scrollbar-thumb {\n    background: #ff4081;\n    border-radius: 3px;\n}\n\n#gallery-1.gallery::-webkit-scrollbar-thumb:hover {\n    background: #ff79a9;\n}\n\n/* 响应式调整 */\n@media screen and (min-width: 768px) {\n    #gallery-1.gallery {\n        padding: 12px 8px !important;\n    }\n    \n    .gallery-item {\n        margin-bottom: 25px !important;\n    }\n    \n    img {\n        max-height: 900px !important;\n    }\n}\n\n/* 暗色主题适配 */\nbody.dark #gallery-1.gallery {\n    background: #0a0a0a;\n}\n\nbody.dark img {\n    background: #1a1a1a !important;\n}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 28,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 12; 22041211AC Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36\"}",
    "lastUpdateTime": 1770415909565,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".inside-article",
    "ruleContent": "@js:\nlet pics = java.getString('p@a@img@src'); \nlet p = String(pics).split(\"\\n\").map(i => `<img src=\"${i}\">`).join(\"\\n\");\np = '<title>🏄Mengteen</title>\\n' +  \n'<style>\\n' +\n'  * {margin: 0; padding: 0}\\n' +  \n'  img {width: 100%;height: auto}\\n' +\n'  /* Mengteen阅图基础UI */\\n' +\n'  /* 返回按钮基础 */\\n' +\n'  #backToTopBtn {\\n' +\n'    display: none;\\n' + \n'    position: fixed;\\n' +\n'    bottom: 36px;\\n' +\n'    right: 18px;\\n' +\n'    z-index: 999;\\n' +\n'    border: none;\\n' +\n'    outline: none;\\n' +\n'    background: linear-gradient(135deg, #ADD8E6, #FFF8DC);\\n' +  \n'    color: white;\\n' +\n'    cursor: pointer;\\n' +\n'    padding: 2px;\\n' +\n'    border-radius: 10%;\\n' +\n'    font-size: 18px;\\n' +\n'    box-shadow: 0 8px 32px rgba(70, 130, 180, 0.3);\\n' +  \n'    transition: all 0.3s ease;\\n' +  \n'    backdrop-filter: blur(4px);\\n' +  \n'    border: 1px solid rgba(255, 255, 255, 0.3);\\n' +  \n'  }\\n' +\n'  \\n' +\n'  #backToTopBtn:hover {\\n' +\n'    background: linear-gradient(135deg, #ADD8E6, #FFF8DC);\\n' +  \n'    transform: scale(1.08);\\n' +  \n'    box-shadow: 0 8px 25px rgba(70, 130, 180, 0.4);\\n' +  \n'  }\\n' +\n'  \\n' +\n'  #backToTopBtn:active {\\n' +\n'    transform: scale(0.95);\\n' +  \n'  }\\n' +\n'  \\n' +\n'  /* 图片加载完成提示基础 */\\n' +\n'  #image-loaded-toast {\\n' +\n'    position: fixed;\\n' +\n'    bottom: 33px;\\n' +\n'    left: 50%;\\n' +\n'    transform: translateX(-50%);\\n' +\n'    background: rgba(0, 0, 0, 0.7);\\n' +\n'    color: white;\\n' +\n'    padding: 10px 20px;\\n' +\n'    border-radius: 20px;\\n' +\n'    font-size: 14px;\\n' +\n'    z-index: 998;\\n' +\n'    backdrop-filter: blur(4px);\\n' +\n'    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\\n' +\n'    opacity: 0;\\n' +\n'    transition: opacity 0.3s;\\n' +\n'    pointer-events: none;\\n' +\n'  }\\n' +\n'  \\n' +\n'  /* 标题卡片基础 */\\n' +\t\n'  #image-loaded-toast.show {\\n' +\n'    opacity: 1;\\n' +\n'  }\\n' +\n'</style>\\n' +\n'<div style=\"' +  \n  'text-align:center;' +      \n  'padding:50px 20px 20px;' + \n  'margin:0 0 0px;' +        \n  'position:relative;' +      \n  'background:linear-gradient(135deg, #f0f7ff, #e6f0ff);' +   \n'\">\\n' +\n'  <!-- 标题卡片 -->\\n' +\n'  <div style=\"' +  \n    'position:relative;' +   \n    'z-index:10;' +          \n    'display:inline-block;' + \n    'transform:translateY(-20px);' + \n    'filter: drop-shadow(0 15px 25px rgba(70,130,180,0.25));' + \n  '\">\\n' +\n  \n  '    <div style=\"' +  \n    'background:rgba(255,255,255,0.75);' + \n    'backdrop-filter:blur(12px);' +        \n    'padding:16px 48px;' +                 \n    'border-radius:18px;' +               \n    'border:1px solid rgba(255,255,255,0.5);' + \n    'box-shadow:0 8px 32px rgba(70,130,180,0.2), inset 0 0 12px rgba(255,255,255,0.6);' + \n    'position:relative;' +  \n    'overflow:hidden;' +    \n  '\">\\n' +\n  \n  '      <!-- 顶部高光 -->\\n' +\n  '      <div style=\"' +  \n    'position:absolute;' + \n    'top:0; left:0; right:0;' + \n    'height:40%;' +        \n    'background:linear-gradient(to bottom, rgba(255,255,255,0.4), transparent);' + \n    'pointer-events:none;' + \n  '\"></div>\\n' +\n  \n  '      \\n' +\n  '      <h3 style=\"' +  \n    'background:linear-gradient(135deg, #4a7bd0, #00a2b8);' + \n    '-webkit-background-clip:text;' + \n    'background-clip:text;' +         \n    'color:transparent;' +            \n    'font-size:1.3rem;' +             \n    'font-weight:700;' +              \n    'margin:0;' +                     \n    'letter-spacing:-0.5px;' +        \n    'position:relative;' +            \n    'z-index:2;' +                    \n  '\">{{@@title@text## – Cos波蕾}}</h3>\\n' +  //主标题   \n  \n  '      <!-- 左下装饰点 -->\\n' +\n  '      <div style=\"' +  \n    'position:absolute;' +  \n    'bottom:12px;' +        \n    'left:20px;' +          \n    'width:6px;' +          \n    'height:6px;' +         \n    'background:#00a2b8;' + \n    'border-radius:50%;' +  \n    'opacity:0.7;' +        \n  '\"></div>\\n' +\n  \n  '      <!-- 右下装饰点 -->\\n' +\n  '      <div style=\"' +  \n    'position:absolute;' +\n    'bottom:12px;' +\n    'right:20px;' +       \n    'width:6px;' +\n    'height:6px;' +\n    'background:#4a7bd0;' + \n    'border-radius:50%;' +\n    'opacity:0.7;' +\n  '\"></div>\\n' +\n  \n  '    </div>\\n' +  \n  '  </div>\\n' +    \n  \n  '  \\n' +\n  '  <!-- 时间信息 -->\\n' +\n  '  <div style=\"' +  \n    'margin-top:0px;' +   \n    'padding:0px 20px;' + \n  '\">\\n' +\n  \n  '    <h5 style=\"' +  \n    'color:#6c757d;' +       \n    'font-weight:400;' +      \n    'font-size:1rem;' +    \n    'margin:0;' +             \n    'line-height:1.6;' +      \n    'letter-spacing:0.3px;' + \n    'position:relative;' +    \n    'display:inline-block;' + \n    'max-width:700px;' +      \n  '\">\\n' +\n  \n  '      {{@@.posted-on@.entry-date@text}} 收录 \\n' +  //副标题\n  \n  '      <!-- 下划线装饰 -->\\n' +\n  '      <div style=\"' +  \n    'position:absolute;' + \n    'bottom:-5px;' +       \n    'left:0;' +            \n    'width:100%;' +        \n    'height:1px;' +        \n    'background:linear-gradient(90deg, transparent, rgba(70,130,180,0.3), transparent);' + \n  '\"></div>\\n' +\n  \n  '    </h5>\\n' +  \n  '  </div>\\n' +   \n  \n  '  \\n' +\n  '  <!-- 左上装饰圆 -->\\n' +\n  '  <div style=\"' +  \n    'position:absolute;' + \n    'top:10%;' +           \n    'left:15%;' +          \n    'width:40px;' +        \n    'height:40px;' +       \n    'border-radius:50%;' + \n    'background:linear-gradient(135deg, rgba(74,123,208,0.1), transparent);' + \n    'filter:blur(2px);' +  \n  '\"></div>\\n' +\n  \n  '  <!-- 右下装饰圆 -->\\n' +\n  '  <div style=\"' +  \n    'position:absolute;' +\n    'bottom:15%;' +      \n    'right:10%;' +       \n    'width:60px;' +      \n    'height:60px;' +     \n    'border-radius:50%;' +\n    'background:linear-gradient(135deg, rgba(0,162,184,0.1), transparent);' + \n    'filter:blur(4px);' + \n    'transform:rotate(30deg);' + \n  '\"></div>\\n' +\n  \n'</div>\\n' +  \np +  \n// 图片加载完成提示\n'\\n<div id=\"image-loaded-toast\">✅ 全部图片已完成加载</div>\\n' +\n// 原有返回顶部按钮和功能脚本保持不变\n'\\n<button id=\"backToTopBtn\" title=\"回到顶部\">🔝</button>\\n' +\n'<script>\\n' +\n'(function() {\\n' +\n'  const backToTopBtn = document.getElementById(\"backToTopBtn\");\\n' +\n'  const toast = document.getElementById(\"image-loaded-toast\");\\n' +\n'  \\n' +\n'  // 图片加载完成检测\\n' +\n'  const images = document.querySelectorAll(\"img\");\\n' +\n'  let loadedCount = 0;\\n' +\n'  const totalImages = images.length;\\n' +\n'  \\n' +\n'  // 如果页面没有图片，直接隐藏提示\\n' +\n'  if(totalImages === 0) {\\n' +\n'    toast.style.display = \"none\";\\n' +\n'  }\\n' +\n'  \\n' +\n'  // 检测图片加载完成\\n' +\n'  images.forEach(img => {\\n' +\n'    if(img.complete) {\\n' +\n'      checkAllLoaded();\\n' +\n'    } else {\\n' +\n'      img.addEventListener(\"load\", checkAllLoaded);\\n' +\n'      img.addEventListener(\"error\", checkAllLoaded);\\n' +\n'    }\\n' +\n'  });\\n' +\n'  \\n' +\n'  function checkAllLoaded() {\\n' +\n'    loadedCount++;\\n' +\n'    if(loadedCount >= totalImages) {\\n' +\n'      showToast();\\n' +\n'    }\\n' +\n'  }\\n' +\n'  \\n' +\n'  function showToast() {\\n' +\n'    toast.classList.add(\"show\");\\n' +\n'    setTimeout(() => {\\n' +\n'      toast.classList.remove(\"show\");\\n' +\n'    }, 2000);\\n' +\n'  }\\n' +\n'  \\n' +\n'  // 监听页面滚动事件\\n' +\n'  window.addEventListener(\"scroll\", () => {\\n' +\n'    const scrollPosition = window.scrollY || document.documentElement.scrollTop;\\n' +\n'    \\n' +\n'    if (scrollPosition > 288) {\\n' +\n'      backToTopBtn.style.display = \"block\";\\n' +\n'      backToTopBtn.style.opacity = \"1\";\\n' + \n'    } else {\\n' +\n'      backToTopBtn.style.display = \"none\";\\n' +\n'    }\\n' +\n'  });\\n' +\n'  \\n' +\n'  // 点击事件监听器\\n' +\n'  backToTopBtn.addEventListener(\"click\", () => {\\n' +\n'    window.scrollTo({\\n' +\n'      top: 0,\\n' +\n'      behavior: \"smooth\"\\n' +\n'    });\\n' +\n'  });\\n' +\n'})();\\n' +\n'</script>';",
    "ruleImage": "img@src",
    "ruleLink": "h2@a@href",
    "ruleNextPage": "page",
    "rulePubDate": "🔖{{@@.cat-links@a@text}}｜📆{{@@time@text}}",
    "ruleTitle": "h2@a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/page/{{page}}\n搜索::/page/{{page}}?s={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('大尺度'):source.getVariable()}}\n角色扮演::/category/cosplay/page/{{page}}\n纯情写真::/category/chunqing/page/{{page}}\n欧美套图::/category/oumei/page/{{page}}",
    "sourceComment": "源社区：@Mengteen  2025.7.3更新\n二传二创或者是其它问题请联系我。\n我邮箱:[xxxmgqxxx@vip.qq.com]\n我QQ:99737563(备注来意)\n1.不需要挂🪜,个别网络加载可能有点慢，别急！\n2.设计了全新看图UI,自适应全屏,增加一键返回顶上按钮,增加图片加载完成提示。\n3.搜索和分类是按我自己个人喜欢的,你也可以放一些你自己喜欢的。",
    "sourceGroup": "h可用",
    "sourceIcon": "https://cdn.sshs.rip/7b/ef/7b521fec7f16375cdae775707e1c63ef.webp",
    "sourceName": "👙cos波蕾",
    "sourceUrl": "https://cn.cosblay.com/##@Mengteen",
    "type": 0,
    "variableComment": "🏄Mengteen提示：在此输入关键词搜索！"
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 29,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 12; 22041211AC Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36\"}",
    "lastUpdateTime": 1773223042622,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".list@li",
    "ruleContent": "<js>\nvar v = result.match(/source\\s*=\\s*[\"']([^\"']*?\\.(m3u8|mp4)\\b[^\"']*)[\"']/i);\nvar p = v ? v[1].replace(/\\\\/g,'') : '';\nvar t = '@get:{t}';\nvar d = java.getString('[property=\"video:tag\"]@content');\nvar sign1 = java.base64Decode('44CQ5aSc5piO56m644CR55qE5pKt5pS+5Zmo');\nvar sign2 = java.base64Decode('5LuF5L6b5Liq5Lq65a2m5Lmg5L2/55So77yM5Lil56aB5YiG5Lqr44CB5YCS5Y2W5Y+K5Lu75L2V6L+d5rOV6KGM5Li677yB');\nvar sign3 = java.base64Decode('5L2/55So6ICF6Ieq6KGM5om/5ouF6aOO6Zmp5LiO6LSj5Lu7');\n`<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>${t}</title>\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:-apple-system,sans-serif;background:#f0f9ff;padding:10px}\n.v-box{max-width:800px;margin:0 auto;background:white;border-radius:12px;box-shadow:0 5px 15px rgba(0,0,0,0.1);overflow:hidden}\n.header{padding:12px;border-bottom:1px solid #eee;display:flex;flex-wrap:wrap;justify-content:space-between}\n.sign{background:#e9f7ff;padding:6px;border-radius:6px;margin-bottom:8px;font-size:14px;color:#1a73e8;width:100%}\n.title{font-size:18px;font-weight:600;margin-bottom:8px;width:100%}\n.tags{color:#5f6368;font-size:14px;flex:1;min-width:60%;word-break:break-all}\n.time{color:#5f6368;font-size:14px;text-align:right;flex-basis:35%}\n.v-wrap{position:relative;padding-top:56.25%;background:#000}\n.video{position:absolute;top:0;left:0;width:100%;height:100%}\n.footer{padding:8px;text-align:center;color:#5f6368;font-size:13px}\n.info-box{padding:15px;font-size:14px;line-height:1.6}\n.info-box p{margin:8px 0}\n.hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(0,0,0,0.7);color:#fff;padding:12px 20px;border-radius:20px;font-size:1.1rem;z-index:10;display:none}\n.controls{position:absolute;top:0;left:0;width:100%;height:4px;background:rgba(255,255,255,0.3);z-index:5;transition:opacity 0.3s}\n.progress{height:100%;background:#4a9eff;width:0}\n</style>\n</head>\n<body>\n<div class=\"v-box\">\n<div class=\"header\">\n<div class=\"sign\" style=\"text-align:center;padding:5px 0\">\n<div>${sign1}</div>\n<div style=\"text-align:left; padding-top:4px\">\n${sign2}<br>${sign3}</div>\n</div>\n<div class=\"title\">${t}</div>\n<div class=\"tags\">${d}</div>\n<div class=\"time\" id=\"timeDisplay\">00:00/00:00</div></div>\n<div class=\"v-wrap\">\n<div class=\"controls\"><div class=\"progress\" id=\"progressBar\"></div></div>\n<div class=\"hint\" id=\"hint\">快进中 &gt;&gt;</div>\n<video class=\"video\" id=\"v\" controls playsinline>\n<source src=\"${p}\" type=\"video/mp4\">您的浏览器不支持HTML5视频\n</video>\n</div>\n<div class=\"footer\">滑动调整进度 | 长按2倍速</div>\n</div>\n<script>\nvar v = document.getElementById('v');\nvar tDisplay = document.getElementById('timeDisplay');\nvar pBar = document.getElementById('progressBar');\nvar hint = document.getElementById('hint');\nvar startX = 0, startTime = 0;\nvar longPressTimer;\nvar sensitivity = 0.1;\nvar longPressTime = 500;\nvar hintDuration = 2000;\nfunction updateTime() {\nif (!v.duration) return;\nvar m1 = Math.floor(v.currentTime / 60);\nvar s1 = Math.floor(v.currentTime % 60);\nvar m2 = Math.floor(v.duration / 60);\nvar s2 = Math.floor(v.duration % 60);\ntDisplay.textContent = m1 + ':' + (s1 < 10 ? '0' : '') + s1 + '/' + m2 + ':' + (s2 < 10 ? '0' : '') + s2;\npBar.style.width = (v.currentTime / v.duration) * 100 + '%';}\nv.addEventListener('timeupdate', updateTime);\nv.addEventListener('loadedmetadata', updateTime);\nv.addEventListener('touchstart', function(e) {\nstartX = e.touches[0].clientX;\nstartTime = Date.now();\nif (longPressTimer) clearTimeout(longPressTimer);\nhint.style.display = 'none';\nlongPressTimer = setTimeout(function() {\nv.playbackRate = 2.0;\nhint.style.display = 'block';\nsetTimeout(function() { hint.style.display = 'none'; }, hintDuration);}, longPressTime);});\nv.addEventListener('touchmove', function(e) {\ne.preventDefault();\nclearTimeout(longPressTimer);\nvar diffX = e.touches[0].clientX - startX;\nvar change = diffX * sensitivity * v.duration / 100;\nv.currentTime = Math.max(0, Math.min(v.currentTime + change, v.duration));\nstartX = e.touches[0].clientX;updateTime();});\nv.addEventListener('touchend', function() {\nv.playbackRate = 1.0;\nclearTimeout(longPressTimer);});\n</script>\n</body>\n</html>`\n</js>",
    "ruleImage": "img@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.vodlist_img@html##(\\d+)-(\\d+)-(\\d+)##$0###}} | {{@@.vodlist_img@span.0@text}}",
    "ruleTitle": ".title@text@put:{\"t\":\"@@.title@text\"}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索 🔍::/s/page/{{page}}/wd/{{source.getVariable()}}/\n最新::/label/hot/by/time/page/{{page}}/\n日榜::/label/hot/by/hits_day/page/{{page}}/\n周榜::/label/hot/by/hits_week/page/{{page}}/\n月榜::/label/hot/by/hits_month/page/{{page}}/\n国产 🎞::/t/1-{{page}}/\n自拍::/t/5-{{page}}/\n主播大秀::/t/6-{{page}}/\n主播诱惑::/t/36-{{page}}/\n探花::/t/7-{{page}}/\n偷拍::/t/8-{{page}}/\n乱伦::/t/8-{{page}}/\n吃瓜::/t/10-{{page}}/\n抖阴::/t/11-{{page}}/\nAV::/t/12-{{page}}/\n福利姬::/t/20-{{page}}/\n侵犯::/t/37-{{page}}/\n日韩 🎞::/t/2-{{page}}/\n日韩自拍::/t/13-{{page}}/\n日本无码::/t/14-{{page}}/\n字幕::/t/15-{{page}}/\n解说::/t/17-{{page}}/\n换脸::/t/18-{{page}}/\n欧美 🎞::/t/3-{{page}}/\n自拍::/t/21-{{page}}/\n字幕::/t/22-{{page}}/\n伦理 🎞::/t/4-{{page}}/\n三级::/t/29-{{page}}/\n日韩::/t/30-{{page}}/\n动漫 🎞::/t/16-{{page}}/\n剧集::/t/26-{{page}}/\n3D::/t/27-{{page}}/\n次元::/t/28-{{page}}/\n另类 🎞::/t/39-{{page}}/\n同性恋::/t/38-{{page}}/\n变性::/t/40-{{page}}/\n重口味::/t/23-{{page}}/",
    "sourceComment": "<声明>\n//2025.8.10 作者：夜明空\n//源社区：https://taoba.cf\n//仅供个人学习使用，严禁分享、倒卖及任何违法行为！使用者自行承担风险与责任\n</声明>\n\n//网址更新频繁，有需要请到发布页自行更新\n//发布页：\nhttps://18j.18hu.link/mdce\n18j.vip\n18zy.vip\n51zy.vip",
    "sourceGroup": "h可用",
    "sourceIcon": "https://18oc.life/18link/18j/images/favicon.ico",
    "sourceName": "18J-夜明空",
    "sourceUrl": "https://18oc.life/label/sort",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 30,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "搜书吧",
    "sourceUrl": "https://supn.nypfsdimhg.com/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 31,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n \"User-Agent\":\"Mozilla/5.0 (Linux; Android 12; HarmonyOS; OCE-AN50; HMSCore 6.15.0.302) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 HuaweiBrowser/16.0.3.302 Mobile Safari/537.36\",\n \"Cookie\":\"accessAgeDisclaimerPH=1; x-index-auth=authed\",\n \"Accept-Encoding\":\"\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "class.thumbnail group",
    "ruleContent": "<js>\nfunction $(rule){\n\treturn java.getElements(rule);\n}\n\nvar u=\"\",tab_name=\"\",url_list=\"\";\njx=\"https://codjx.com?url=\";\ntab_name+=`<li>画质</li>\\n`;\nv_source=String(result).match(/eval\\((.*m3u8.*video.*)\\)/)[0];\neval(v_source)\nv_res=java.ajax(source)\ndata=String(v_res).match(/.*video\\.m3u8/g)\nfor(i=data.length-1;i>=0;i--){\n\tlink=source.replace('playlist.m3u8',data[i])\n\tif(String(data[i]).match(/x/)){\n\t\tname=String(data[i]).match(/(\\d+)\\//)[1]+\"p\";\n\t}else{\n\t\tname=String(data[i]).match(/(.*)\\//)[1];\n\t}\n\turl_list+=`<li><a link=\"${link}\">${name}</a></li>\\n`\n}\nurl_list+=`<li><a link=\"${source}\">自动</a></li>\\n`\nv_list=`<ul class=\"play_list\">${url_list}</ul>`;\n//获取简介❗️\ndesc=info=$('.space-y-2 .text-secondary.1').text();\ndesc=String(desc).replace(/番号:|番號:|發行日期:|发行日期:/,'');\nsort=` `;\nintro=`中文:${java.get('title')}<br>`;\ninfo=$('.space-y-2 .text-secondary')\nfor(i=1;i<info.length-1;i++){\n\tintro+=`${info[i].text()}<br>`\n}\nintro=java.t2s(intro)\n\n//最后结果，拼接完整网页\nresult=`\n<html>\n<title>${java.get('title')}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<!--引入jquery-->\n<script src=\"https://code.jquery.com/jquery-3.0.0.min.js\"></script>\n\n<!--播放器-->\n<div id=\"MacPlayer\">\n  <p class=\"url_text\"></p>\n  <iframe src=\"\" border=\"0\" marginwidth=\"0\" framespacing=\"0\" marginheight=\"0\" frameborder=\"0\" scrolling=\"no\" vspale=\"0\" allowfullscreen=\"ture\" noresize=\"\"></iframe>\n</div>\n<div style=\"width:100%;height:29%\"></div>\n\n<!--简介卡片 -->\n<div class=\"card v_info mb20\">\n    <!--标题 -->\n    <h2 class=\"v_title\"></h2>\n    <!--状态、日期、分类 -->\n    <p class=\"v_desc\">\n       <span class=\"desc\">${desc}</span>\n       <span>${sort}</span>\n       <!--简介按钮 -->\n       <span class=\"open_content\" id=\"open_content\">简介</span>\n    </p>\n    <div class=\"v_content\" id=\"v_content\" style=\"display:none;\">\n      <!--封面图片 -->\n      <div class=\"cover\" style=\"\">\n         <img src=\"${java.get('pic')}\"></img>\n      </div>\n      <!--剧情信息 -->\n      <div class=\"content\" id=\"intro_content\">\n        <div id=\"intro\">\n       <p>${intro}</p>\n       <!--简介展开 -->\n      <div class=\"show_more\" id=\"show_more\" style=\"display: block;\"></div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"card mb20 v_list\">\n    <!--线路切换-->\n    <ul class=\"tab_control play_from\">\n        ${tab_name}\n    </ul>\n    <div style=\"height:34px;\"></div>\n    <!--所有播放列表与排序-->\n    <div class=\"tab_content\" id=\"play_list\">\n        <div class=\"play_list_sort\" id=\"play_list_sort\">\n⇅ 正序/倒序</div>\n        ${v_list}\n    </div>\n</div>\n</html>\n\n<script>\n\t//tab按钮线路切换\n var $li = $('.tab_control li');\n var $ul = $('.tab_content ul');\n $li.click(function(){\n    var $this = $(this);\n    var $t = $this.index();\n    $li.removeClass('current');\n    $this.addClass('current');\n    $ul.removeClass('current');\n    $ul.eq($t).addClass('current');\n });\n //选择集数\n var $play_li= $('.play_list li');\n var play= $('#MacPlayer');\n var iframe= $('#MacPlayer iframe');\n $play_li.click(function(){\n    var $this = $(this);\n    var $t=$this.index();\n    //获取之前的播放链接\n    var bf=$('.play_list li.current');\n    bf=bf.children('a').attr('link');\n    //改变li标签的CSS样式\n    $play_li.removeClass('current');\n    $this.addClass('current');\n    //获取播放链接和标题\n    url=$this.children('a').attr('link');\n    text=$this.children('a').text();\n    //判断链接是否相同，不同就发送请求\n    if(url!=bf){\n    \trep();\n    }\n });\n //替换\n function rep(){\n      //给iframe的src赋值\n      iframe.attr('src',url);\n      //$('.url_text').text(url);\n  }\n //播放列表排序 \n function set_sort(){ \n \t var box = $('#play_list ul.current');\n \t var el = box.find('li');\n \t var newEl = Array.prototype.reverse.call(el);\n \t for(var i = 0 ;i<newEl.length;i++){\n \t  \t box.append(newEl[i]) \n \t }; \n \t}\n $('#play_list_sort').bind('click',function(){ \n \t  set_sort(); \n \t});\n \t\n \t//-------------详情页相关-------------- \n \tvar open_content = $('#open_content');\n \tvar intro_content = $('#intro_content'); \n \tvar show_more = $('#show_more'); \n \tvar cover = $('#v_content .cover'); \n \t//展开简历块 \n \topen_content.click(function(){ \n \t\t$('#v_content').toggle(); \n \t}); \n \t//内容超出显示更多按钮 \n \tif($(\"#intro\").length>0){\n \t\t var intro_height = $('#intro').get(0).offsetHeight; \n \t\t if(intro_height > 101){\n \t\t \t show_more.show(); \n \t\t \t}; \n \t} \n \t//展开更多内容 \n \tintro_content.click(function(){\n \t\t intro_content.toggleClass('auto'); \n \t\t show_more.toggle(); \n \t\t cover.toggle(); \n \t});\n \t\n \t//初始化\n   (()=>{\n   \t $('.play_list').eq(0).addClass('current');\n\t    $('.play_list li').eq(0).addClass('current');\n\t    $('.tab_control li').eq(0).addClass('current');\n\t    url=$('.play_list li.current a').attr('link');\n\t    rep();\n\t  })();\n</script>\n`\n</js>",
    "ruleDescription": "",
    "ruleImage": "img@data-src\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "a[x-text=\"item.full_title\"]@href||a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "<js>\nsort=\"\";\nresult=java.getElements('.text-xs');\nlen=result.length-1\nfor(i=len;i>=0;i--){\n\tt=result[i].text();\n\ti==len?sort+='🕒'+t:sort+='  '+t;\n}\nsort\n</js>",
    "ruleTitle": ".text-secondary@text\n<js>\njava.put('title',result)\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\neval(String(source.sourceComment))\nresult=`\n本日::${host}/today-hot?page={{page}}\n搜索::${host}/search/{{source.getVariable()}}\n本周::${host}/weekly-hot?page={{page}}\n本月::${host}/monthly-hot?page={{page}}\n更新::${host}/new?page={{page}}\n新作::${host}/release?page={{page}}\n流出::${host}/uncensored-leak?page={{page}}\n`\n</js>",
    "sourceComment": "  host=\"https://www.missav2.icu/cn\"\n/*\n\thttps://missav.ws/zh\n*/",
    "sourceGroup": "h",
    "sourceIcon": "https://img1.baidu.com/it/u=3056428239,816616493&fm=253&fmt=auto&app=138&f=PNG?w=237&h=237",
    "sourceName": "MissAV",
    "sourceUrl": "MissAV",
    "style": "*{\n\tmargin:0;padding:0;\n}\nhtml{\n\tbackground-color:#222;\n}\na{\n\ttext-decoration:none;\n\tcolor:#222;\n}\nul{\n\tlist-style:none;\n}\niframe{\n\twidth:100%;height:100%;\n}\nh1,h2,h3,h4,h5,h6{\n\tfont-size:100%;font-weight:normal;\n}\nimg,video{\n\theight:auto;max-width:100%;\n}\n#MacPlayer{\n\tz-index:9999;\n\twidth:100%;height:auto;\n\tposition:fixed;top:0;left:0;\n\tbackground-color:black;\n}\n#MacPlayer iframe{\n\twidth:100%;height:217px;\n}\n.url_text{\n\toverflow-x:hidden;\n\twidth:100%;height:auto;\n\tcolor:#fff;background-color:black;\n\tfont-size:10px;white-space: nowrap;\n}\n\n/*块通用*/ \n.card{padding:15px 15px 0 15px;}\n.card .c_header{display: flex;flex-direction: row;justify-content: space-between;padding-bottom:20px;} \n.card .c_title{font-size:18px;color:#fff;font-weight:700;} \n.card .c_title a{color:#fff;} \n.card .c_right a{color:#666;} \n.card .clear_history{color:#FDD835;display:none;}\n\n/*详情页资料卡*/ \n.v_info .v_title,.v_info .v_title{font-size:22px;color:#eee;line-height:26px;} .v_info .v_desc{position:relative;font-size:12px;color:#999;padding-top:4px;} .v_info .v_desc a{color:#999;} .v_info .v_desc .desc{color:#FF3D00;font-weight:700;} .v_info .hr{color:#666;padding:0 4px;} .v_info .open_content{position:absolute;bottom:0;right:20px;color:#FFB026;text-decoration: underline;padding-left:10px;} .v_info .v_content{display:flex;padding-top:20px;} .v_info .cover,.v_info img{width:auto;height:100px;background:#333;} .v_info .cover{margin-right:10px;} .v_info .content{height:101px;overflow:hidden;font-size:12px;flex:1;color:#999;line-height:19px;position: relative;} .v_info .show_more{position: absolute;bottom:0;right:0;width:100%;padding:38px 0 19px 0;height:19px;background: linear-gradient(to bottom, rgba(34,34,34,0) 0%,rgba(34,34,34,1) 100%);color:#eee;text-align:center;display:none;} .v_info .auto{height:auto;}\n\n/*tab */ \n.tab_control{position:absolute;display: flex;flex-direction: row;overflow-x:scroll;width:92.3%} \n.tab_control li{flex:1;position:relative;height:30px;line-height:34px;top:4px;text-align:center;color:#666;cursor:pointer;overflow: hidden;} \n.tab_control li span{display: inline-block;min-width: 10px;padding: 2px 2px;font-size: 9px;font-weight: 700;line-height: 1;color: #fff;text-align: center;white-space: nowrap;vertical-align: middle;background-color:#FFB026;border-radius: 2px;}\n.tab_control li.current{z-index:99;height:37px;font-weight:700;color:#eee;background-image:linear-gradient(180deg, #BF360C 0%, #333 90%);border-radius: 4px 4px 0 0;} \n.tab_content{padding:12px;background: #333;box-shadow: 0 2px 8px 0 rgba(0,0,0,0.50);border-radius: 5px;} \n.tab_content ul.current{display:block;} \n\n/*播放来源、地址、排序*/\n\t.v_list{margin-bottom:20px;} #play_list{position:relative;} #play_list ul.current{display:flex;} .play_from li{flex:none;padding:0 10px;} .play_list{display:none;flex-flow: wrap;margin-right:-10px;} .play_list li{width:20%;margin-bottom:10px;} .play_list li a{overflow:hidden;height:40px;line-height:40px;border-radius: 5px;display:block;background:#222;color:#999;text-align:center;margin-right:10px;} .play_list li a:visited{color:#444;} .play_list li.current a{border: 1px solid #BF360C;color:#BF360C;}\n\n/*处理电影的集数宽度*/ \n.large li{width:25%;} .play_list_sort{padding-bottom:20px;color:#999;} \n\n/*遮罩*/ \n.mask{width:100%;height:100%;background:rgba(0, 0, 0, 0.5);position: fixed;left:0;top:0;display: none;} \n\n/*白天主题配色*/\n@media(prefers-color-scheme:light){\nhtml{background:#FEFEFE;}\n.v_title{color:black !important;}\n.v_desc,.v_desc a,#intro{color:#444 !important;}\n.open_content{color:#4898E0 !important;}\n#show_more{background: linear-gradient(to bottom,transparent,#FEFEFE 100%);}\n.tab_content{background:#FEFEFE;}\n.tab_control li span{background:#4898E0;}\n.tab_control li.current{color:#eee;background: linear-gradient(to bottom,black 10%,white 90%);}\n.play_list li a{color:#444;background:#eee;}\n.play_list li.current a{color:black;border:2px solid black;}\n} \n",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 32,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "[class=\"item\"]@a",
    "ruleContent": "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<title>内容提取</title>\n<!-- v2025.05.10 -->\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<script src=\"https://code.jquery.com/jquery-3.6.0.min.js\"></script>\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.css\" />\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.js\"></script>\n<style>\n    body { font-family: Arial, sans-serif; font-size: 16px; }\n    #title, #page, #loading-status { margin: 0 auto; font-size: 20px; text-align: center; }\n    #description, #urls, #video-url, #video-sources, #messages { width: 100%; max-width: 800px; margin: 1.5px auto; font-size: 14px; text-align: left; word-wrap: break-word; white-space: pre-wrap; }\n    #text, #text :not(img), #text img + * { text-indent: 2em; width: 100%; font-size: 16px; line-height: 1.5em; margin-top: 0; margin-bottom: 0; word-wrap: break-word; white-space: pre-wrap; }\n    img, #text img { width: 100%; height: auto; display: block; margin-bottom: 1.5px; }\n    .flex-container { display: flex; justify-content: center; align-items: center; gap: 10px; margin: 1.5px 0; font-size: 14px; }\n    button, select { flex: 1 1 31%; padding: 3px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; cursor: pointer; background-color: #f9f9f9; transition: background-color 0.3s ease; margin: 1.5px; min-width: 0; font-size: 14px; }\n    #url-select, #video-source-select { flex: 1 1 100%; margin-left: 0; margin-right: 0; text-align: center; }\n    #video-element { width: 100%; height: auto; }\n    textarea { width: 100%; height: auto; min-height: 100px; box-sizing: border-box; resize: vertical; }\n    .error, .warn { color: red; }\n</style>\n</head>\n<body>\n    <h3 id=\"title\">{{@@title@text||h1.0@text||h2.0@text||.title.0@text}}</h3>\n    <p id=\"description\">{{@@.info.0@html||.jianjie@html}}</p>\n    <p id=\"page\" style=\"display:none;\">共<span id=\"total-pages\">1</span>页</p>\n    <p id=\"loading-status\" style=\"display:none;\"></p>\n\n    <div class=\"flex-container\" id=\"loading-buttons\" style=\"display:none;\">\n        <button id=\"prev-page-btn\">上一页</button>\n        <button id=\"next-page-btn\">下一页</button>\n        <button id=\"auto-load-btn\">自&nbsp;&nbsp;动</button>\n    </div>\n    \n    <div class=\"flex-container\">\n        <select id=\"url-select\" style=\"display:none;\"></select>\n    </div>\n    \n    <div class=\"flex-container\">\n        <button id=\"toggle-urls-btn\">显/隐网址</button>\n        <button id=\"toggle-messages-btn\">显/隐信息</button>\n        <button id=\"toggle-debug-btn\">显/隐调试</button>\n    </div>\n    <div id=\"urls\"></div>\n    <div id=\"messages\"></div>\n    <div id=\"debug-info\"></div>\n    <div id=\"video-url\"></div>\n    <div id=\"video-container\" style=\"display: none;\">\n        <video id=\"video-element\" controls preload=\"auto\" width=\"640\" height=\"264\">\n            <source id=\"video-source\" src=\"\" type=\"\">您的浏览器不支持 video 标签。\n        </video>\n    </div>\n    <div class=\"flex-container\" id=\"video-source-container\" style=\"display: none;\">\n        <select id=\"video-source-select\" onchange=\"updateVideoSource()\"></select>\n    </div>\n    <div id=\"images\"></div>\n    <div id=\"text\"></div>\n\n    <script>\n        // 配置对象，包含各种选择器、延迟时间等配置项\n        const config = {    \n            videoSelector: 'body', // 视频选择器\n            imgSelector: '.gridlane-box-inside img,.photos figure img,.content p img', // 图片选择器\n            textSelector: '#content', // 文本选择器\n            debugSelector: '#content, .page, .pager, .content, script', // 调试信息选择器\n            swapImageAttributes: false, // 是否交换图片属性\n            delayTime: 1500, // 延迟提取时间\n            retryDelayTime: 1500, // 重试加载延迟时间\n            maxLoadAttempts: 3, // 最大加载次数\n            autoLoading: false, // true自动模式，false单页模式\n            debugOnce: 0, // 只在特定索引输出一次调试信息\n            totalPagesText: '{{@@.page.0@a.-2@textNodes}}', // 总页码\n            urlSuffixToRemove: /\\.html$/, // 移除url后缀\n            pageUrlText: '{urlPrefix}_{i}.html', // 拼接URL模板        \n            ListMode: true, // true网址列表模式，false网址拼接模式    \n            initialUrls: `{{@@#sort-item-5.0@a@href}}`, // 网址\n            initialUrlsName: `{{@@#sort-item-5.0@a@span@text}}`, // 网址名称\n            sourceurl: '', // 来源URL前缀\n        };\n\n        let videoSources = []; // 存储视频源数组\n        let loadAttempts = {}; // 记录每个URL的加载尝试次数\n        let urls = []; // 存储所有页面的URL\n        let imageBox;\n        let textBox;\n        let currentPageIndex = 0; // 当前页面索引\n        let canLoadNextPage = true; // 控制是否可以加载下一页\n        let autoLoadInProgress = false; // 自动加载状态\n\n        // 构建URL列表\n        function buildUrls(totalPages, baseUrl) {\n            let initialUrlsArray = config.initialUrls.trim().split('\\n').filter(url => url.trim() !== '');\n            let initialUrlsNameArray = config.initialUrlsName.trim().split('\\n').filter(name => name.trim() !== '');\n\n            if (config.ListMode && initialUrlsArray.length > 0) {\n                if (initialUrlsArray.length !== initialUrlsNameArray.length) {\n                    $('#messages').append(`<span class=\"warn\">警告：initialUrls 和 initialUrlsName 的长度不匹配。</span><br>`);\n                }\n\n                urls = initialUrlsArray.map(url => {\n                    if (config.sourceurl && url.startsWith('/') && !/^https?:\\/\\//i.test(url)) {\n                        return config.sourceurl.replace(/\\/$/, '') + url;\n                    } else {\n                        return url;\n                    }\n                });\n\n                urls.forEach((url, index) => {\n                    const name = initialUrlsNameArray[index] || `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            } else {\n                if (totalPages === 1) {\n                    urls.push(baseUrl);\n                } else {\n                    urls.push(baseUrl);\n                    for (let i = 2; i <= totalPages; i++) {\n                        urls.push(config.pageUrlText.replace('{urlPrefix}', baseUrl.replace(config.urlSuffixToRemove, '').replace(/\\/$/, '')).replace('{i}', i));\n                    }\n                }\n\n                urls.forEach((url, index) => {\n                    const name = `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            }\n\n            $('#total-pages').text(urls.length);\n            toggleNavigationButtons();\n            toggleTotalPagesDisplay();\n        }\n\n        // 规范化URL\n        function normalizeUrl(url) {\n            if (typeof url !== 'string' || !url.trim()) {\n                return '';\n            }\n            const match = url.match(/['\"](.*?)['\"]/);\n            if (match && match[1]) {\n                url = match[1];\n            }\n\n            function processUrl(str) {\n                str = str.trim();\n                str = str.replace(/\\\\u[\\dA-F]{4}/gi, match => String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16)));\n                str = decodeURIComponent(str);\n                str = str.replace(/^http:\\/([^/])/, 'http://$1');\n                str = str.replace(/^https:\\/([^/])/, 'https://$1');\n                return str;\n            }\n            return processUrl(url);\n        }\n\n        // 清空容器内容\n        function clearContainers() {\n            $('#messages').empty();\n            $('#images').empty();\n            $('#text').empty();\n        }\n\n        // 更新图像源\n        function updateImageSrc(elements, shouldSwap) {\n            elements.each(function () {\n                const $this = $(this);\n                const attrsToUpdate = {};\n                if (shouldSwap) {\n                    ['data-original', 'data-src', 'data-url'].forEach(attr => {\n                        if ($this.attr(attr)) {\n                            attrsToUpdate['src'] = $this.attr(attr);\n                        }\n                    });\n                }\n                $this.attr(attrsToUpdate);\n            });\n            return elements;\n        }\n\n        // 切换导航按钮显示状态\n        function toggleNavigationButtons() {\n            if ($('#url-select option').length > 1 && !config.autoLoading) {\n                $('#loading-buttons').show();\n                $('#url-select').show();\n            } else {\n                $('#loading-buttons').hide();\n                $('#url-select').hide();\n            }\n        }\n\n        // 显示加载状态\n        function showLoadingStatus(pageNumber) {\n            const selectedOption = $('#url-select option:selected').text();\n            $('#loading-status').text(`正在加载：${selectedOption}`).show();\n        }\n\n        // 隐藏加载状态\n        function hideLoadingStatus() {\n            $('#loading-status').hide();\n        }\n\n        // 加载指定索引的内容\n        function loadContent(index) {\n            if (index < 0 || index >= urls.length || !canLoadNextPage) return;\n            canLoadNextPage = false;\n            currentPageIndex = index;\n            $('#url-select').val(index);\n            $('#messages').append(`<div>当前地址: <span class=\"warn\">${urls[index]}</span></div>`);\n            if (autoLoadInProgress) {\n                showLoadingStatus(index + 1);\n            }\n            $.ajax({\n                url: urls[index],\n                type: 'GET',\n                success: function (data) {\n                    try {\n                    const $data = $(data);\n                    let updatedHtmlContent = data.replace(/(['\"])(\\/\\/)(?!\\/)/g, '$1https://')\n                        .replace(/src=\"upload/gi, 'src=\"/upload')\n                        .replace(/style=[\"'][^'\"]+[\"']/gi, '')\n                        .replace(/\\\\\\//g, '/');\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(updatedHtmlContent, \"text/html\");\n\n                    if (config.debugOnce === index) {\n                        const debugElements = $(doc).find(config.debugSelector);\n                        if (debugElements.length > 0) {\n                            const debugContents = $('<pre>').html(debugElements.clone().wrapAll('<div/>').parent().html()).html();\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">${debugContents}</textarea></span>`);\n                        } else {\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">调试信息未提取到内容，请检查选择器！</textarea></span>`);\n                        }\n                    }\n                    // 方法1：提取视频\n                    const videoSources1 = [];\n                    const videoContents = $(doc).find(config.videoSelector);\n                    const videoTags = $(videoContents).find('video, source');\n                    videoTags.each(function() {\n                        const videosrc = $(this).attr('src') || \n                                     $(this).attr('data-src') || \n                                     $(this).attr('data-original') || '';\n                        \n                        if (videosrc) {\n                            videoSources1.push(videosrc);\n                        }\n                    });\n                    //反馈\n                    if (videoSources1.length > 0) {\n                        $('#messages').append(`<span>方法1，找到 ${videoSources1.length} 个视频。</span><br>`);\n                    }\n\n                    // 方法2：正则提取视频\n                    const regex = /['\"]https?[^'<>\"]+(m3u8|mp4|webm|ogg|flv|mp3|m4a|wav|ape|flac)([^'<>\"]+)?['\"]/gi;\n                    const matches = data.match(regex);\n                    const videoSources2 = [];\n\n                    if (matches) {\n                        const uniqueMatches = [...new Set(matches)];\n                    \n                        uniqueMatches.forEach(match => {\n                            const normalizedSrc = normalizeUrl(match.replace(/['\"]/g, ''));\n                            videoSources2.push(normalizedSrc);\n                        });\n                    }\n                    //反馈\n                    if (videoSources2.length > 0) {\n                        $('#messages').append(`<span>方法2，找到 ${videoSources2.length} 个视频。</span><br>`);\n                    }\n\n                    // 合并两种方法的结果\n                    videoSources = [...videoSources1, ...videoSources2];\n\n                    // 去重并标准化 URL\n                    const imageExtensions = /\\.(jpg|jpeg|png|gif|bmp|svg)$/i;\n\n                    videoSources = videoSources\n                                  .map(src => normalizeUrl(src.replace(/\\\\+/g, '')))\n                                  .filter(src => src) // 过滤空值\n                                  .filter(src => !imageExtensions.test(src)); // 移除图片地址\n                        \n                    videoSources = [...new Set(videoSources)];// 去重\n\n                    // 显示最终结果\n                    $('#messages').append(`<span>总共找到 ${videoSources.length} 个视频。</span><br>`);\n\n                    if (videoSources.length > 0) {\n                        $('#messages').append(`<span>成功提取到视频，找到 ${videoSources.length} 个视频。</span><br>`);\n                        videoSources.forEach((src, idx) => {\n                            $('#messages').append(`<div>视频地址:<span class=\"warn\"> ${src}</span><br></div>`);\n                            $('#video-source-select').append(`<option value=\"${idx}\">视频源 ${idx + 1}</option>`);\n                        });\n                    \n                        if (videoSources.length == 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').hide();\n                            updateVideoSource();\n                        } else if (videoSources.length > 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').show();\n                            updateVideoSource();\n                        } else {\n                            $('#video-container').hide();\n                            $('#video-url').hide();\n                            $('#video-source-container').hide();\n                        }\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未找到视频源。</span><br>`);\n                        $('#video-container').hide();\n                        $('#video-url').hide();\n                        $('#video-source-container').hide();\n                    }\n\n                    //提取图片\n                    const $imgContents = $(doc).find(config.imgSelector);\n                    const shouldSwap = config.swapImageAttributes;\n                    const newContents = updateImageSrc($imgContents.clone(), shouldSwap);\n                    $('#images').append(newContents).show();\n                    if (newContents.length > 0) {\n                        $('#messages').append(`<span>成功提取图片，共 ${newContents.length} 张。</span><br>`);\n                        newContents.each(function () {\n                            const imgSrc = $(this).attr('src') || $(this).attr('data-original') || $(this).attr('data-src') || $(this).attr('data-url');\n                            $('#messages').append(`<div>地址:<span class=\"warn\"> ${imgSrc}</span><br></div>`);\n                        });\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图片。</span><br>`);\n                    }\n\n                    //提取图片和文本\n                    const textContents = $(doc).find(config.textSelector).map(function () {\n                        const $currentContents = $(this);\n                        $currentContents.find('img + br, script, video, source, iframe').remove();\n                        $currentContents.html($currentContents.html().replace(/>\\s+/gi, '>').replace(/<\\/?br\\s*([^>]*)\\s*\\/?>/gi, '\\n').replace(/\\n+/g, '\\n'));\n                        return $currentContents.html();\n                    }).get().join('');\n                    if (textContents.trim()) {\n                        $('#text').append(`<span>${textContents}</span><br>`).show();\n                        $('#messages').append(`<span>成功提取图文。</span><br>`);\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图文。</span><br>`);\n                    }\n\n                    if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                        setTimeout(() => { \n                            canLoadNextPage = true;\n                            loadContent(currentPageIndex + 1); \n                        }, config.delayTime);\n                    } else {\n                        canLoadNextPage = true;\n                        if (autoLoadInProgress) {\n                            hideLoadingStatus();\n                        }\n                    }\n                } catch (parseError) {\n                    $('#messages').append(`<span class=\"error\">解析页面内容时发生错误: ${parseError.message}</span><br>`);\n                    handleLoadFailure(urls, index);\n                } finally {\n                    if (imageBox) imageBox.viewer.update();\n                    if (textBox) textBox.viewer.update();\n                }\n            },\n            error: function (jqXHR, textStatus, errorThrown) {\n                let errorMessage = `内容加载失败: ${urls[index]}`;\n                switch (textStatus) {\n                    case 'timeout':\n                        errorMessage += ', 请求超时';\n                        break;\n                    case 'abort':\n                        errorMessage += ', 请求被取消';\n                        break;\n                    case 'parsererror':\n                        errorMessage += ', 解析响应出错';\n                        break;\n                    default:\n                        errorMessage += `, 状态码: ${jqXHR.status}, 错误信息: ${errorThrown}`;\n                        break;\n                }\n                $('#messages').append(`<span class=\"error\">${errorMessage}</span><br>`);\n                handleLoadFailure(urls, index);\n                }\n            });\n        }\n\n        // 处理加载失败的情况\n        function handleLoadFailure(urls, index) {\n            if (!loadAttempts[urls[index]]) {\n                loadAttempts[urls[index]] = 1;\n            } else {\n                loadAttempts[urls[index]]++;\n            }\n            if (loadAttempts[urls[index]] <= config.maxLoadAttempts) {\n                const retryMessage = `第${index + 1}页加载失败，正在进行第${loadAttempts[urls[index]]}次加载！`;\n                $('#messages').append(`<span class=\"error\">${retryMessage}</span><br>`);\n                setTimeout(() => { \n                    canLoadNextPage = true;\n                    loadContent(index); \n                }, config.retryDelayTime);\n            } else {\n                const finalErrorMessage = `第${index + 1}页加载失败，已达到最大尝试次数(${config.maxLoadAttempts})！`;\n                $('#messages').append(`<span class=\"error\">${finalErrorMessage}</span><br>`);\n                if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                    setTimeout(() => { \n                        canLoadNextPage = true;\n                        loadContent(currentPageIndex + 1); \n                    }, config.delayTime);\n                } else {\n                    canLoadNextPage = true;\n                    if (autoLoadInProgress) {\n                        hideLoadingStatus();\n                    }\n                }\n            }\n        }\n\n        // 更新视频源\n        function updateVideoSource() {\n            const selectedIndex = parseInt(document.getElementById('video-source-select').value);\n            if (isNaN(selectedIndex) || !videoSources[selectedIndex]) {\n                $('#messages').append(`<span class=\"warn\">未找到有效的视频源。</span><br>`);\n                console.warn(\"Invalid or undefined video source:\", selectedIndex, videoSources);\n                return;\n            }\n\n            const selectedSource = videoSources[selectedIndex];\n            document.getElementById('video-url').textContent = `视频地址:\\n ${selectedSource}`;\n\n            const videoSourceElement = document.getElementById('video-source');\n            videoSourceElement.src = selectedSource;\n\n            const videoElement = document.getElementById('video-element');\n            videoElement.load();\n\n            $('#messages').append(`<span>更新视频源为: ${selectedSource}</span><br>`);\n            console.log(\"Updated video source to:\", selectedSource);\n        }\n\n        // 切换总页数显示状态\n        function toggleTotalPagesDisplay() {\n            if (urls.length > 1) {\n                $('#page').show();\n            } else {\n                $('#page').hide();\n            }\n        }\n\n        // 页面加载完成后执行的主要逻辑\n        $(document).ready(function () {\n            imageBox = document.getElementById('images');\n            textBox = document.getElementById('text');\n            if (imageBox && textBox) {\n                new Viewer(imageBox, { title: true, interval: 2000 });\n                new Viewer(textBox, { title: true, interval: 2000 });\n            }\n\n            const totalPagesText = config.totalPagesText;\n            const totalPages = parseInt(totalPagesText, 10) || 1;\n            const baseUrl = '{{baseUrl}}';\n\n            clearContainers();\n            $('#urls, #debug-info textarea, #video-url, #video-source-select').empty();\n            $('#urls, #messages, #debug-info, #video-url, #video-container, #video-source-container, #images, #text').hide();\n\n            buildUrls(totalPages, baseUrl);\n\n            const urlSelect = document.getElementById('url-select');\n            if (urlSelect.options.length > 0) {\n                urlSelect.value = '0'; \n\n                if (config.autoLoading) {\n                    autoLoadInProgress = true;\n                    for (let i = 0; i < urls.length; i++) {\n                        loadContent(i);\n                    }\n                } else {\n                    loadContent(0);\n                }\n            } else {\n                loadContent(0);\n            }\n\n            $('#url-select').change(function () {\n                clearContainers();\n                const selectedIndex = parseInt($(this).val());\n                loadContent(selectedIndex);\n            });\n            $('#prev-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex > 0) {\n                    loadContent(currentPageIndex - 1);\n                }\n            });\n            $('#next-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex < urls.length - 1) {\n                    loadContent(currentPageIndex + 1);\n                }\n            });\n            $('#auto-load-btn').click(function () {\n                autoLoadInProgress = true;\n                showLoadingStatus(1); \n                for (let i = currentPageIndex + 1; i < urls.length; i++) {\n                    loadContent(i);\n                }\n            });\n            $('#toggle-messages-btn').click(function () { $('#messages').toggle(); });\n            $('#toggle-urls-btn').click(function () { $('#urls').toggle(); });\n            $('#toggle-debug-btn').click(function () { $('#debug-info').toggle(); });\n        });\n    </script>\n</body>\n</html>",
    "ruleImage": "img@data-original",
    "ruleLink": "a@href##(\\d+)##/vodplay/$1-1-1.html###",
    "ruleNextPage": "page",
    "rulePubDate": "em@text",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索🔍::/index.php/vod/search/page/{{page}}/wd/{{source.getVariable()}}.html\n播放一区::/index.php/vod/type/id/1/page/{{page}}.html\n精品推荐::/index.php/vod/type/id/6/page/{{page}}.html\n国产色情::/index.php/vod/type/id/7/page/{{page}}.html\n主播直播::/index.php/vod/type/id/8/page/{{page}}.html\n亚洲无码::/index.php/vod/type/id/9/page/{{page}}.html\n亚洲有码::/index.php/vod/type/id/10/page/{{page}}.html\n中文字幕::/index.php/vod/type/id/11/page/{{page}}.html\n人妻熟女::/index.php/vod/type/id/20/page/{{page}}.html\n成人动漫::/index.php/vod/type/id/21/page/{{page}}.html\n自拍偷拍::/index.php/vod/type/id/22/page{{page}}.html\n制服丝袜::/index.php/vod/type/id/23/page/{{page}}.html\n口交颜射::/index.php/vod/type/id/24/page/{{page}}.html\n强奸乱伦::/index.php/vod/type/id/13\n/page{{page}}.html\n萝莉少女::/index.php/vod/type/id/15/page/{{page}}.html\n日本精品::/index.php/vod/type/id/26/page{{page}}.html\ncosplay::/index.php/vod/type/id/27/page/{{page}}.html\n素人自拍::/index.php/vod/type/id/28/page/{{page}}.html\n台湾辣妹::/index.php/vod/type/id/29/page{{page}}.html\n韩国御姐::/index.php/vod/type/id/30/page/{{page}}.html\n唯美港姐::/index.php/vod/type/id/31/page/{{page}}.html\n东南亚AV::/index.php/vod/type/id/32/page/{{page}}.html\n欺辱凌辱::/index.php/vod/type/id/33/page/{{page}}.html\n剧情介绍::/index.php/vod/type/id/35/page/{{page}}.html\n多人多p::/index.php/vod/type/id/36/page/{{page}}.html\n91探花::/index.php/vod/type/id/37/page/{{page}}.html\n自拍流出::/index.php/vod/type/id/38/page/{{page}}.html\n野外露出::/index.php/vod/type/id/39/page/{{page}}.html\n古装扮演::/index.php/vod/type/id/40/page/{{page}}.html\n可爱学生::/index.php/vod/type/id/41/page{{page}}.html\n女同性爱::/index.php/vod/type/id/45/page/{{page}}.html\n重口猎奇::/index.php/vod/type/id/46/page/{{page}}.html\n人兽大战::/index.php/vod/type/id/47/page/{{page}}.html\n人妖系列::/index.php/vod/type/id/48/page/{{page}}.html\nSM调教::/index.php/vod/type/id/49/page{{page}}.html\n网红主播::/index.php/vod/type/id/50/page/{{page}}.html\n探花约炮::/index.php/vod/type/id/51/page/{{page}}.html",
    "sourceComment": "/index.php/vod/search/page/{{page}}/wd/{{source.getVariable()}}.html",
    "sourceGroup": "h",
    "sourceIcon": "https://images2.imgbox.com/fb/29/QxzvMOV6_o.gif",
    "sourceName": "暴力重口",
    "sourceUrl": "https://www.baolzk10.sbs###",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 33,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "ul@li",
    "ruleContent": "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<title>内容提取</title>\n<!-- v2025.05.10 -->\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<script src=\"https://code.jquery.com/jquery-3.6.0.min.js\"></script>\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.css\" />\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.js\"></script>\n<style>\n    body { font-family: Arial, sans-serif; font-size: 16px; }\n    #title, #page, #loading-status { margin: 0 auto; font-size: 20px; text-align: center; }\n    #description, #urls, #video-url, #video-sources, #messages { width: 100%; max-width: 800px; margin: 1.5px auto; font-size: 14px; text-align: left; word-wrap: break-word; white-space: pre-wrap; }\n    #text, #text :not(img), #text img + * { text-indent: 2em; width: 100%; font-size: 16px; line-height: 1.5em; margin-top: 0; margin-bottom: 0; word-wrap: break-word; white-space: pre-wrap; }\n    img, #text img { width: 100%; height: auto; display: block; margin-bottom: 1.5px; }\n    .flex-container { display: flex; justify-content: center; align-items: center; gap: 10px; margin: 1.5px 0; font-size: 14px; }\n    button, select { flex: 1 1 31%; padding: 3px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; cursor: pointer; background-color: #f9f9f9; transition: background-color 0.3s ease; margin: 1.5px; min-width: 0; font-size: 14px; }\n    #url-select, #video-source-select { flex: 1 1 100%; margin-left: 0; margin-right: 0; text-align: center; }\n    #video-element { width: 100%; height: auto; }\n    textarea { width: 100%; height: auto; min-height: 100px; box-sizing: border-box; resize: vertical; }\n    .error, .warn { color: red; }\n</style>\n</head>\n<body>\n    <h3 id=\"title\">{{@@title@text||h1.0@text||h2.0@text||.title.0@text}}</h3>\n    <p id=\"description\">{{@@.info.0@html||.jianjie@html}}</p>\n    <p id=\"page\" style=\"display:none;\">共<span id=\"total-pages\">1</span>页</p>\n    <p id=\"loading-status\" style=\"display:none;\"></p>\n\n    <div class=\"flex-container\" id=\"loading-buttons\" style=\"display:none;\">\n        <button id=\"prev-page-btn\">上一页</button>\n        <button id=\"next-page-btn\">下一页</button>\n        <button id=\"auto-load-btn\">自&nbsp;&nbsp;动</button>\n    </div>\n    \n    <div class=\"flex-container\">\n        <select id=\"url-select\" style=\"display:none;\"></select>\n    </div>\n    \n    <div class=\"flex-container\">\n        <button id=\"toggle-urls-btn\">显/隐网址</button>\n        <button id=\"toggle-messages-btn\">显/隐信息</button>\n        <button id=\"toggle-debug-btn\">显/隐调试</button>\n    </div>\n    <div id=\"urls\"></div>\n    <div id=\"messages\"></div>\n    <div id=\"debug-info\"></div>\n    <div id=\"video-url\"></div>\n    <div id=\"video-container\" style=\"display: none;\">\n        <video id=\"video-element\" controls preload=\"auto\" width=\"640\" height=\"264\">\n            <source id=\"video-source\" src=\"\" type=\"\">您的浏览器不支持 video 标签。\n        </video>\n    </div>\n    <div class=\"flex-container\" id=\"video-source-container\" style=\"display: none;\">\n        <select id=\"video-source-select\" onchange=\"updateVideoSource()\"></select>\n    </div>\n    <div id=\"images\"></div>\n    <div id=\"text\"></div>\n\n    <script>\n        // 配置对象，包含各种选择器、延迟时间等配置项\n        const config = {    \n            videoSelector: 'body', // 视频选择器\n            imgSelector: '.gridlane-box-inside img,.photos figure img,.content p img', // 图片选择器\n            textSelector: '#content', // 文本选择器\n            debugSelector: '#content, .page, .pager, .content, script', // 调试信息选择器\n            swapImageAttributes: false, // 是否交换图片属性\n            delayTime: 1500, // 延迟提取时间\n            retryDelayTime: 1500, // 重试加载延迟时间\n            maxLoadAttempts: 3, // 最大加载次数\n            autoLoading: false, // true自动模式，false单页模式\n            debugOnce: 0, // 只在特定索引输出一次调试信息\n            totalPagesText: '{{@@.page.0@a.-2@textNodes}}', // 总页码\n            urlSuffixToRemove: /\\.html$/, // 移除url后缀\n            pageUrlText: '{urlPrefix}_{i}.html', // 拼接URL模板        \n            ListMode: true, // true网址列表模式，false网址拼接模式    \n            initialUrls: `{{@@#sort-item-5.0@a@href}}`, // 网址\n            initialUrlsName: `{{@@#sort-item-5.0@a@span@text}}`, // 网址名称\n            sourceurl: '', // 来源URL前缀\n        };\n\n        let videoSources = []; // 存储视频源数组\n        let loadAttempts = {}; // 记录每个URL的加载尝试次数\n        let urls = []; // 存储所有页面的URL\n        let imageBox;\n        let textBox;\n        let currentPageIndex = 0; // 当前页面索引\n        let canLoadNextPage = true; // 控制是否可以加载下一页\n        let autoLoadInProgress = false; // 自动加载状态\n\n        // 构建URL列表\n        function buildUrls(totalPages, baseUrl) {\n            let initialUrlsArray = config.initialUrls.trim().split('\\n').filter(url => url.trim() !== '');\n            let initialUrlsNameArray = config.initialUrlsName.trim().split('\\n').filter(name => name.trim() !== '');\n\n            if (config.ListMode && initialUrlsArray.length > 0) {\n                if (initialUrlsArray.length !== initialUrlsNameArray.length) {\n                    $('#messages').append(`<span class=\"warn\">警告：initialUrls 和 initialUrlsName 的长度不匹配。</span><br>`);\n                }\n\n                urls = initialUrlsArray.map(url => {\n                    if (config.sourceurl && url.startsWith('/') && !/^https?:\\/\\//i.test(url)) {\n                        return config.sourceurl.replace(/\\/$/, '') + url;\n                    } else {\n                        return url;\n                    }\n                });\n\n                urls.forEach((url, index) => {\n                    const name = initialUrlsNameArray[index] || `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            } else {\n                if (totalPages === 1) {\n                    urls.push(baseUrl);\n                } else {\n                    urls.push(baseUrl);\n                    for (let i = 2; i <= totalPages; i++) {\n                        urls.push(config.pageUrlText.replace('{urlPrefix}', baseUrl.replace(config.urlSuffixToRemove, '').replace(/\\/$/, '')).replace('{i}', i));\n                    }\n                }\n\n                urls.forEach((url, index) => {\n                    const name = `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            }\n\n            $('#total-pages').text(urls.length);\n            toggleNavigationButtons();\n            toggleTotalPagesDisplay();\n        }\n\n        // 规范化URL\n        function normalizeUrl(url) {\n            if (typeof url !== 'string' || !url.trim()) {\n                return '';\n            }\n            const match = url.match(/['\"](.*?)['\"]/);\n            if (match && match[1]) {\n                url = match[1];\n            }\n\n            function processUrl(str) {\n                str = str.trim();\n                str = str.replace(/\\\\u[\\dA-F]{4}/gi, match => String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16)));\n                str = decodeURIComponent(str);\n                str = str.replace(/^http:\\/([^/])/, 'http://$1');\n                str = str.replace(/^https:\\/([^/])/, 'https://$1');\n                return str;\n            }\n            return processUrl(url);\n        }\n\n        // 清空容器内容\n        function clearContainers() {\n            $('#messages').empty();\n            $('#images').empty();\n            $('#text').empty();\n        }\n\n        // 更新图像源\n        function updateImageSrc(elements, shouldSwap) {\n            elements.each(function () {\n                const $this = $(this);\n                const attrsToUpdate = {};\n                if (shouldSwap) {\n                    ['data-original', 'data-src', 'data-url'].forEach(attr => {\n                        if ($this.attr(attr)) {\n                            attrsToUpdate['src'] = $this.attr(attr);\n                        }\n                    });\n                }\n                $this.attr(attrsToUpdate);\n            });\n            return elements;\n        }\n\n        // 切换导航按钮显示状态\n        function toggleNavigationButtons() {\n            if ($('#url-select option').length > 1 && !config.autoLoading) {\n                $('#loading-buttons').show();\n                $('#url-select').show();\n            } else {\n                $('#loading-buttons').hide();\n                $('#url-select').hide();\n            }\n        }\n\n        // 显示加载状态\n        function showLoadingStatus(pageNumber) {\n            const selectedOption = $('#url-select option:selected').text();\n            $('#loading-status').text(`正在加载：${selectedOption}`).show();\n        }\n\n        // 隐藏加载状态\n        function hideLoadingStatus() {\n            $('#loading-status').hide();\n        }\n\n        // 加载指定索引的内容\n        function loadContent(index) {\n            if (index < 0 || index >= urls.length || !canLoadNextPage) return;\n            canLoadNextPage = false;\n            currentPageIndex = index;\n            $('#url-select').val(index);\n            $('#messages').append(`<div>当前地址: <span class=\"warn\">${urls[index]}</span></div>`);\n            if (autoLoadInProgress) {\n                showLoadingStatus(index + 1);\n            }\n            $.ajax({\n                url: urls[index],\n                type: 'GET',\n                success: function (data) {\n                    try {\n                    const $data = $(data);\n                    let updatedHtmlContent = data.replace(/(['\"])(\\/\\/)(?!\\/)/g, '$1https://')\n                        .replace(/src=\"upload/gi, 'src=\"/upload')\n                        .replace(/style=[\"'][^'\"]+[\"']/gi, '')\n                        .replace(/\\\\\\//g, '/');\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(updatedHtmlContent, \"text/html\");\n\n                    if (config.debugOnce === index) {\n                        const debugElements = $(doc).find(config.debugSelector);\n                        if (debugElements.length > 0) {\n                            const debugContents = $('<pre>').html(debugElements.clone().wrapAll('<div/>').parent().html()).html();\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">${debugContents}</textarea></span>`);\n                        } else {\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">调试信息未提取到内容，请检查选择器！</textarea></span>`);\n                        }\n                    }\n                    // 方法1：提取视频\n                    const videoSources1 = [];\n                    const videoContents = $(doc).find(config.videoSelector);\n                    const videoTags = $(videoContents).find('video, source');\n                    videoTags.each(function() {\n                        const videosrc = $(this).attr('src') || \n                                     $(this).attr('data-src') || \n                                     $(this).attr('data-original') || '';\n                        \n                        if (videosrc) {\n                            videoSources1.push(videosrc);\n                        }\n                    });\n                    //反馈\n                    if (videoSources1.length > 0) {\n                        $('#messages').append(`<span>方法1，找到 ${videoSources1.length} 个视频。</span><br>`);\n                    }\n\n                    // 方法2：正则提取视频\n                    const regex = /['\"]https?[^'<>\"]+(m3u8|mp4|webm|ogg|flv|mp3|m4a|wav|ape|flac)([^'<>\"]+)?['\"]/gi;\n                    const matches = data.match(regex);\n                    const videoSources2 = [];\n\n                    if (matches) {\n                        const uniqueMatches = [...new Set(matches)];\n                    \n                        uniqueMatches.forEach(match => {\n                            const normalizedSrc = normalizeUrl(match.replace(/['\"]/g, ''));\n                            videoSources2.push(normalizedSrc);\n                        });\n                    }\n                    //反馈\n                    if (videoSources2.length > 0) {\n                        $('#messages').append(`<span>方法2，找到 ${videoSources2.length} 个视频。</span><br>`);\n                    }\n\n                    // 合并两种方法的结果\n                    videoSources = [...videoSources1, ...videoSources2];\n\n                    // 去重并标准化 URL\n                    const imageExtensions = /\\.(jpg|jpeg|png|gif|bmp|svg)$/i;\n\n                    videoSources = videoSources\n                                  .map(src => normalizeUrl(src.replace(/\\\\+/g, '')))\n                                  .filter(src => src) // 过滤空值\n                                  .filter(src => !imageExtensions.test(src)); // 移除图片地址\n                        \n                    videoSources = [...new Set(videoSources)];// 去重\n\n                    // 显示最终结果\n                    $('#messages').append(`<span>总共找到 ${videoSources.length} 个视频。</span><br>`);\n\n                    if (videoSources.length > 0) {\n                        $('#messages').append(`<span>成功提取到视频，找到 ${videoSources.length} 个视频。</span><br>`);\n                        videoSources.forEach((src, idx) => {\n                            $('#messages').append(`<div>视频地址:<span class=\"warn\"> ${src}</span><br></div>`);\n                            $('#video-source-select').append(`<option value=\"${idx}\">视频源 ${idx + 1}</option>`);\n                        });\n                    \n                        if (videoSources.length == 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').hide();\n                            updateVideoSource();\n                        } else if (videoSources.length > 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').show();\n                            updateVideoSource();\n                        } else {\n                            $('#video-container').hide();\n                            $('#video-url').hide();\n                            $('#video-source-container').hide();\n                        }\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未找到视频源。</span><br>`);\n                        $('#video-container').hide();\n                        $('#video-url').hide();\n                        $('#video-source-container').hide();\n                    }\n\n                    //提取图片\n                    const $imgContents = $(doc).find(config.imgSelector);\n                    const shouldSwap = config.swapImageAttributes;\n                    const newContents = updateImageSrc($imgContents.clone(), shouldSwap);\n                    $('#images').append(newContents).show();\n                    if (newContents.length > 0) {\n                        $('#messages').append(`<span>成功提取图片，共 ${newContents.length} 张。</span><br>`);\n                        newContents.each(function () {\n                            const imgSrc = $(this).attr('src') || $(this).attr('data-original') || $(this).attr('data-src') || $(this).attr('data-url');\n                            $('#messages').append(`<div>地址:<span class=\"warn\"> ${imgSrc}</span><br></div>`);\n                        });\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图片。</span><br>`);\n                    }\n\n                    //提取图片和文本\n                    const textContents = $(doc).find(config.textSelector).map(function () {\n                        const $currentContents = $(this);\n                        $currentContents.find('img + br, script, video, source, iframe').remove();\n                        $currentContents.html($currentContents.html().replace(/>\\s+/gi, '>').replace(/<\\/?br\\s*([^>]*)\\s*\\/?>/gi, '\\n').replace(/\\n+/g, '\\n'));\n                        return $currentContents.html();\n                    }).get().join('');\n                    if (textContents.trim()) {\n                        $('#text').append(`<span>${textContents}</span><br>`).show();\n                        $('#messages').append(`<span>成功提取图文。</span><br>`);\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图文。</span><br>`);\n                    }\n\n                    if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                        setTimeout(() => { \n                            canLoadNextPage = true;\n                            loadContent(currentPageIndex + 1); \n                        }, config.delayTime);\n                    } else {\n                        canLoadNextPage = true;\n                        if (autoLoadInProgress) {\n                            hideLoadingStatus();\n                        }\n                    }\n                } catch (parseError) {\n                    $('#messages').append(`<span class=\"error\">解析页面内容时发生错误: ${parseError.message}</span><br>`);\n                    handleLoadFailure(urls, index);\n                } finally {\n                    if (imageBox) imageBox.viewer.update();\n                    if (textBox) textBox.viewer.update();\n                }\n            },\n            error: function (jqXHR, textStatus, errorThrown) {\n                let errorMessage = `内容加载失败: ${urls[index]}`;\n                switch (textStatus) {\n                    case 'timeout':\n                        errorMessage += ', 请求超时';\n                        break;\n                    case 'abort':\n                        errorMessage += ', 请求被取消';\n                        break;\n                    case 'parsererror':\n                        errorMessage += ', 解析响应出错';\n                        break;\n                    default:\n                        errorMessage += `, 状态码: ${jqXHR.status}, 错误信息: ${errorThrown}`;\n                        break;\n                }\n                $('#messages').append(`<span class=\"error\">${errorMessage}</span><br>`);\n                handleLoadFailure(urls, index);\n                }\n            });\n        }\n\n        // 处理加载失败的情况\n        function handleLoadFailure(urls, index) {\n            if (!loadAttempts[urls[index]]) {\n                loadAttempts[urls[index]] = 1;\n            } else {\n                loadAttempts[urls[index]]++;\n            }\n            if (loadAttempts[urls[index]] <= config.maxLoadAttempts) {\n                const retryMessage = `第${index + 1}页加载失败，正在进行第${loadAttempts[urls[index]]}次加载！`;\n                $('#messages').append(`<span class=\"error\">${retryMessage}</span><br>`);\n                setTimeout(() => { \n                    canLoadNextPage = true;\n                    loadContent(index); \n                }, config.retryDelayTime);\n            } else {\n                const finalErrorMessage = `第${index + 1}页加载失败，已达到最大尝试次数(${config.maxLoadAttempts})！`;\n                $('#messages').append(`<span class=\"error\">${finalErrorMessage}</span><br>`);\n                if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                    setTimeout(() => { \n                        canLoadNextPage = true;\n                        loadContent(currentPageIndex + 1); \n                    }, config.delayTime);\n                } else {\n                    canLoadNextPage = true;\n                    if (autoLoadInProgress) {\n                        hideLoadingStatus();\n                    }\n                }\n            }\n        }\n\n        // 更新视频源\n        function updateVideoSource() {\n            const selectedIndex = parseInt(document.getElementById('video-source-select').value);\n            if (isNaN(selectedIndex) || !videoSources[selectedIndex]) {\n                $('#messages').append(`<span class=\"warn\">未找到有效的视频源。</span><br>`);\n                console.warn(\"Invalid or undefined video source:\", selectedIndex, videoSources);\n                return;\n            }\n\n            const selectedSource = videoSources[selectedIndex];\n            document.getElementById('video-url').textContent = `视频地址:\\n ${selectedSource}`;\n\n            const videoSourceElement = document.getElementById('video-source');\n            videoSourceElement.src = selectedSource;\n\n            const videoElement = document.getElementById('video-element');\n            videoElement.load();\n\n            $('#messages').append(`<span>更新视频源为: ${selectedSource}</span><br>`);\n            console.log(\"Updated video source to:\", selectedSource);\n        }\n\n        // 切换总页数显示状态\n        function toggleTotalPagesDisplay() {\n            if (urls.length > 1) {\n                $('#page').show();\n            } else {\n                $('#page').hide();\n            }\n        }\n\n        // 页面加载完成后执行的主要逻辑\n        $(document).ready(function () {\n            imageBox = document.getElementById('images');\n            textBox = document.getElementById('text');\n            if (imageBox && textBox) {\n                new Viewer(imageBox, { title: true, interval: 2000 });\n                new Viewer(textBox, { title: true, interval: 2000 });\n            }\n\n            const totalPagesText = config.totalPagesText;\n            const totalPages = parseInt(totalPagesText, 10) || 1;\n            const baseUrl = '{{baseUrl}}';\n\n            clearContainers();\n            $('#urls, #debug-info textarea, #video-url, #video-source-select').empty();\n            $('#urls, #messages, #debug-info, #video-url, #video-container, #video-source-container, #images, #text').hide();\n\n            buildUrls(totalPages, baseUrl);\n\n            const urlSelect = document.getElementById('url-select');\n            if (urlSelect.options.length > 0) {\n                urlSelect.value = '0'; \n\n                if (config.autoLoading) {\n                    autoLoadInProgress = true;\n                    for (let i = 0; i < urls.length; i++) {\n                        loadContent(i);\n                    }\n                } else {\n                    loadContent(0);\n                }\n            } else {\n                loadContent(0);\n            }\n\n            $('#url-select').change(function () {\n                clearContainers();\n                const selectedIndex = parseInt($(this).val());\n                loadContent(selectedIndex);\n            });\n            $('#prev-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex > 0) {\n                    loadContent(currentPageIndex - 1);\n                }\n            });\n            $('#next-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex < urls.length - 1) {\n                    loadContent(currentPageIndex + 1);\n                }\n            });\n            $('#auto-load-btn').click(function () {\n                autoLoadInProgress = true;\n                showLoadingStatus(1); \n                for (let i = currentPageIndex + 1; i < urls.length; i++) {\n                    loadContent(i);\n                }\n            });\n            $('#toggle-messages-btn').click(function () { $('#messages').toggle(); });\n            $('#toggle-urls-btn').click(function () { $('#urls').toggle(); });\n            $('#toggle-debug-btn').click(function () { $('#debug-info').toggle(); });\n        });\n    </script>\n</body>\n</html>",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "p@text",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索🔍::/index.php/vod/search.html?wd={{source.getVariable()}}\n偷拍自拍::index.php/vod/type/id/1.html\n中文字幕::index.php/vod/type/id/2.html\n重口味::index.php/vod/type/id/3.html\n未分类1::index.php/vod/type/id/4.html\n未分类2::index.php/vod/type/id/5.html\n未分类2::index.php/vod/type/id/6.html\n未分类4::index.php/vod/type/id/7.html\n未分类5::index.php/vod/type/id/8.html\n未分类6::index.php/vod/type/id/9.html\n黑料打烊::index.php/vod/type/id/10.html\n未分类7::index.php/vod/type/id/11.html\n未分类8::index.php/vod/type/id/12.html\n未分类9::index.php/vod/type/id/13.html\n未分类10::index.php/vod/type/id/14.html\n未分类11::index.php/vod/type/id/15.html\n未分类12::index.php/vod/type/id/16.html\n未分类13::index.php/vod/type/id/17.html\n未分类14::index.php/vod/type/id/18.html\n未分类15::index.php/vod/type/id/19.html\n未分类16::index.php/vod/type/id/20.html\n未分类17::index.php/vod/type/id/21.html\n未分类18::index.php/vod/type/id/22.html\n未分类19::index.php/vod/type/id/23.html\n未分类20::index.php/vod/type/id/24.html\n未分类21::index.php/vod/type/id/25.html\n未分类22::index.php/vod/type/id/26.html\n未分类23::index.php/vod/type/id/27.html\n未分类24::index.php/vod/type/id/28.html\n未分类25::index.php/vod/type/id/29.html\n未分类26::index.php/vod/type/id/30.html\n未分类27::index.php/vod/type/id/31.html\n未分类28::index.php/vod/type/id/32.html\n未分类29::index.php/vod/type/id/33.html\n未分类30::index.php/vod/type/id/34.html\n未分类31::index.php/vod/type/id/35.html\n未分类32::index.php/vod/type/id/36.html\n未分类33::index.php/vod/type/id/37.html",
    "sourceComment": "www.hhgav2.xyz",
    "sourceGroup": "h",
    "sourceIcon": "https://91ymdl.site/2025020810f8tgt.gif",
    "sourceName": "狠狠干",
    "sourceUrl": "https://www.hhgav9.xyz/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 34,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "<js>\nvar _0x34eb,_0x24cf;function kFZkMGz(_0x34eb,_0x24cf,kFZkMGz){for(kFZkMGz=0x0;kFZkMGz<_0x24cf;kFZkMGz++){_0x34eb[\"\\x70\\x75\\x73\\x68\"](_0x34eb[\"\\u0073\\u0068\\u0069\\u0066\\u0074\"]())}return _0x34eb}_0x34eb=kFZkMGz([\"\\x77\\x71\\x4a\\x6e\\x5a\\x38\"+\"\\u004f\\u0037\\u0077\\u0035\\u0048\\u0044\"+\"\\u0072\\u004d\\u004f\\u0050\\u0077\\u006f\"+\"\\u004d\\u0030\",\"\\u0077\\u0034\\u004c\\u0043\\u0073\\u006a\\u0039\"+\"\\u0079\\u0077\\u0037\\u0054\\u0044\\u0073\\u0038\"+\"\\u004f\\u0051\\u0077\\u006f\\u0068\\u002b\\u0043\"+\"\\x38\\x4b\\x62\\x44\\x73\\x4b\\x58\"+\"\\u0077\\u0071\\u0044\\u0043\\u0075\\u0073\\u004f\"+\"\\x54\\x52\\x6b\\x31\\x45\\x52\\x45\"+\"\\x46\\x55\\x77\\x71\\x63\\x3d\",\"\\u0077\\u0036\\u006c\\u0036\\u0063\\u0073\"+\"\\x4f\\x49\\x51\\x53\\x41\\x66\"+\"\\u004f\\u0073\\u004f\\u0059\\u0077\\u0072\"+\"\\u007a\\u0043\\u0070\\u0047\\u0042\\u006d\"+\"\\x77\\x72\\x44\\x44\\x68\\x41\"+\"\\x3d\\x3d\",\"\\x77\\x37\\x62\\x44\\x6c\\x4d\"+\"\\x4b\\x74\\x4b\\x63\\x4b\\x37\"+\"\\x4f\\x77\\x67\\x6c\\x55\\x63\"+\"\\u004b\\u0073\\u0077\\u0037\\u0039\\u004f\"+\"\\x77\\x71\\x30\\x33\\x48\\x41\"+\"\\u0055\\u003d\",\"\\u0077\\u0071\\u006e\\u0044\\u0073\\u0078\\u0063\\u0046\\u004c\\u0057\\u0056\"+\"\\x46\\x77\\x35\\x6c\\x63\\x77\\x70\\x2f\\x43\\x68\\x63\"+\"\\u004b\\u0052\\u0077\\u0072\\u0050\\u0043\\u0073\\u0048\\u0072\\u0043\\u006a\"+\"\\x63\\x4b\\x48\\x53\\x73\\x4b\\x61\\x77\\x34\\x55\\x3d\",\"\\u0066\\u006d\\u004c\\u0043\\u0071\\u004d\\u004b\\u0058\\u0077\\u0071\\u006f\\u002b\\u0056\\u0057\\u0030\\u0070\\u0077\\u0036\\u0072\\u0044\\u0072\\u007a\\u0054\\u0043\\u0074\\u0043\\u004e\\u0057\\u0053\\u004d\\u004b\\u0069\\u0054\\u0038\\u004b\\u0078\\u0077\\u0071\\u0035\\u0069\\u0077\\u0071\\u007a\\u0044\\u006b\\u004d\\u004f\\u002b\\u0077\\u0036\\u0077\\u0062\\u004a\\u0057\\u006b\\u0065\\u0045\\u0069\\u0068\\u0076\\u0063\\u0032\\u0033\"+\"\\u0043\\u0074\\u0073\\u004f\\u0043\\u0056\\u0038\\u004b\\u006d\\u0048\\u0073\\u004f\\u0043\\u0065\\u0038\\u004f\\u0055\\u0077\\u0071\\u007a\\u0043\\u006b\\u0046\\u0035\\u0041\\u0062\\u0038\\u004f\\u002b\\u0077\\u0037\\u0044\\u0043\\u0073\\u0073\\u004f\\u0059\\u0050\\u0063\\u004b\\u0062\\u0077\\u0037\\u002f\\u0044\\u006d\\u0079\\u0072\\u0043\\u0067\\u0055\\u0031\\u0045\\u0077\\u0070\\u006e\\u0043\\u006b\\u0045\\u0037\\u0043\\u006c\\u004d\"+\"\\x4b\\x6d\\x46\\x7a\\x64\\x38\\x77\\x37\\x44\\x44\\x6e\\x73\\x4f\\x4a\\x77\\x70\\x62\\x44\\x76\\x38\\x4f\\x75\\x50\\x67\\x2f\\x44\\x67\\x4d\\x4b\\x63\\x56\\x45\\x4e\\x39\\x77\\x36\\x67\\x79\\x42\\x32\\x58\\x43\\x73\\x4d\\x4b\\x58\\x77\\x37\\x41\\x36\\x63\\x38\\x4f\\x33\\x77\\x35\\x70\\x57\\x77\\x37\\x72\\x44\\x6d\"+\"\\x4d\\x4b\\x49\\x77\\x36\\x4e\\x78\\x56\\x4d\\x4f\\x35\\x4c\\x56\\x72\\x43\\x6e\\x38\\x4f\\x36\\x63\\x45\\x73\\x58\\x77\\x70\\x68\\x4f\\x77\\x70\\x4e\\x37\\x77\\x70\\x30\\x46\\x77\\x37\\x6e\\x43\\x72\\x46\\x46\\x49\\x63\\x55\\x58\\x44\\x6e\\x4d\\x4f\\x41\\x77\\x6f\\x39\\x77\\x56\\x78\\x64\\x42\\x49\\x41\\x3d\\x3d\"],0x13);_0x24cf=function(kFZkMGz,v8AtTy0){var FaZdQi,rUoAxFz;kFZkMGz=kFZkMGz-0x0;FaZdQi=_0x34eb[kFZkMGz];if(_0x24cf[\"\\u0064\\u0048\\u0078\\u0055\\u0056\\u0049\"]===undefined){var TBANd2;(function(){var kFZkMGz=function(){var kFZkMGz;try{kFZkMGz=Function(\"\\u0072\\u0065\\u0074\\u0075\\u0072\\u006e\"+\"\\x20\\x28\\x66\\x75\\x6e\\x63\"+\"\\x74\\x69\\x6f\\x6e\\x28\\x29\"+\"\\x20\"+(\"\\u007b\\u007d\\u002e\\u0063\\u006f\\u006e\\u0073\\u0074\\u0072\\u0075\\u0063\"+\"\\x74\\x6f\\x72\\x28\\x22\\x72\\x65\\x74\\x75\\x72\\x6e\"+\"\\u0020\\u0074\\u0068\\u0069\\u0073\\u0022\\u0029\\u0028\\u0020\\u0029\")+\"\\x29\\x3b\")()}catch(v8AtTy0){kFZkMGz=window}return kFZkMGz},v8AtTy0,FaZdQi;v8AtTy0=kFZkMGz();FaZdQi=\"\\u0041\\u0042\\u0043\\u0044\\u0045\\u0046\\u0047\\u0048\\u0049\"+\"\\u004a\\u004b\\u004c\\u004d\\u004e\\u004f\\u0050\\u0051\\u0052\"+\"\\x53\\x54\\x55\\x56\\x57\\x58\\x59\\x5a\\x61\"+\"\\u0062\\u0063\\u0064\\u0065\\u0066\\u0067\\u0068\\u0069\\u006a\"+\"\\x6b\\x6c\\x6d\\x6e\\x6f\\x70\\x71\\x72\\x73\"+\"\\u0074\\u0075\\u0076\\u0077\\u0078\\u0079\\u007a\\u0030\\u0031\"+\"\\u0032\\u0033\\u0034\\u0035\\u0036\\u0037\\u0038\\u0039\\u002b\"+\"\\x2f\\x3d\";v8AtTy0[\"\\x61\\x74\\x6f\\x62\"]||(v8AtTy0[\"\\u0061\\u0074\\u006f\\u0062\"]=function(kFZkMGz){var v8AtTy0=String(kFZkMGz)[\"\\x72\\x65\\x70\\x6c\\x61\\x63\"+\"\\u0065\"](new RegExp(\"\\u003d\\u002b\\u0024\",\"\"),\"\"),rUoAxFz;rUoAxFz=\"\";for(var TBANd2=0x0,_0x34eb,_0x24cf,YvOyKMo=0x0;_0x24cf=v8AtTy0[\"\\u0063\\u0068\\u0061\\u0072\\u0041\\u0074\"](YvOyKMo++);~_0x24cf&&(_0x34eb=TBANd2%0x4?_0x34eb*0x40+_0x24cf:_0x24cf,TBANd2++%0x4)?rUoAxFz+=String[\"\\u0066\\u0072\\u006f\\u006d\\u0043\\u0068\"+\"\\u0061\\u0072\\u0043\\u006f\\u0064\\u0065\"](0xff&_0x34eb>>(-0x2*TBANd2&0x6)):0x0){_0x24cf=FaZdQi[\"\\u0069\\u006e\\u0064\\u0065\\u0078\\u004f\"+\"\\x66\"](_0x24cf)}return rUoAxFz})})();TBANd2=function(kFZkMGz,v8AtTy0){var FaZdQi=[],rUoAxFz,TBANd2,_0x34eb,_0x24cf,Dpyzzc5,VvLmtd;rUoAxFz=0x0;TBANd2=undefined;_0x34eb=\"\";_0x24cf=\"\";kFZkMGz=atob(kFZkMGz);for(var a8Qwzzr=0x0,CiYLCX=kFZkMGz[\"\\x6c\\x65\\x6e\\x67\\x74\\x68\"];a8Qwzzr<CiYLCX;a8Qwzzr++){_0x24cf+=\"\\x25\"+(\"\\x30\\x30\"+kFZkMGz[\"\\x63\\x68\\x61\\x72\\x43\\x6f\"+\"\\u0064\\u0065\\u0041\\u0074\"](a8Qwzzr)[\"\\u0074\\u006f\\u0053\\u0074\\u0072\\u0069\"+\"\\x6e\\x67\"](0x10))[\"\\u0073\\u006c\\u0069\\u0063\\u0065\"](-0x2)}kFZkMGz=decodeURIComponent(_0x24cf);Dpyzzc5=undefined;for(Dpyzzc5=0x0;Dpyzzc5<0x100;Dpyzzc5++){FaZdQi[Dpyzzc5]=Dpyzzc5}for(Dpyzzc5=0x0;Dpyzzc5<0x100;Dpyzzc5++){rUoAxFz=(rUoAxFz+FaZdQi[Dpyzzc5]+v8AtTy0[\"\\u0063\\u0068\\u0061\\u0072\\u0043\\u006f\"+\"\\u0064\\u0065\\u0041\\u0074\"](Dpyzzc5%v8AtTy0[\"\\x6c\\x65\\x6e\\x67\\x74\\x68\"]))%0x100;TBANd2=FaZdQi[Dpyzzc5];FaZdQi[Dpyzzc5]=FaZdQi[rUoAxFz];FaZdQi[rUoAxFz]=TBANd2}Dpyzzc5=0x0;rUoAxFz=0x0;for(VvLmtd=0x0;VvLmtd<kFZkMGz[\"\\x6c\\x65\\x6e\\x67\\x74\\x68\"];VvLmtd++){Dpyzzc5=(Dpyzzc5+0x1)%0x100;rUoAxFz=(rUoAxFz+FaZdQi[Dpyzzc5])%0x100;TBANd2=FaZdQi[Dpyzzc5];FaZdQi[Dpyzzc5]=FaZdQi[rUoAxFz];FaZdQi[rUoAxFz]=TBANd2;_0x34eb+=String[\"\\x66\\x72\\x6f\\x6d\\x43\\x68\"+\"\\x61\\x72\\x43\\x6f\\x64\\x65\"](kFZkMGz[\"\\u0063\\u0068\\u0061\\u0072\\u0043\\u006f\"+\"\\u0064\\u0065\\u0041\\u0074\"](VvLmtd)^FaZdQi[(FaZdQi[Dpyzzc5]+FaZdQi[rUoAxFz])%0x100])}return _0x34eb};_0x24cf[\"\\x56\\x74\\x77\\x54\\x53\\x56\"]=TBANd2;_0x24cf[\"\\x52\\x6e\\x62\\x56\\x6f\\x47\"]={};_0x24cf[\"\\x64\\x48\\x78\\x55\\x56\\x49\"]=!![]}rUoAxFz=_0x24cf[\"\\u0052\\u006e\\u0062\\u0056\\u006f\\u0047\"][kFZkMGz];if(rUoAxFz===undefined){if(_0x24cf[\"\\u0070\\u0043\\u0067\\u0074\\u0063\\u0062\"]===undefined){_0x24cf[\"\\x70\\x43\\x67\\x74\\x63\\x62\"]=!![]}FaZdQi=_0x24cf[\"\\u0056\\u0074\\u0077\\u0054\\u0053\\u0056\"](FaZdQi,v8AtTy0);_0x24cf[\"\\u0052\\u006e\\u0062\\u0056\\u006f\\u0047\"][kFZkMGz]=FaZdQi}else{FaZdQi=rUoAxFz}return FaZdQi};eval(String(java[_0x24cf(\"\\u0030\\u0078\\u0030\",\"\\x49\\x45\\x56\\x54\")](source[_0x24cf(\"\\x30\\x78\\x31\",\"\\x30\\x26\\x6c\\x76\")],_0x24cf(\"\\u0030\\u0078\\u0032\",\"\\x74\\x78\\x32\\x54\"),_0x24cf(\"\\x30\\x78\\x33\",\"\\x46\\x74\\x38\\x35\"),\"\")));user_Check();headers={[\"\\x55\\x73\\x65\\x72\\x2d\\x41\"+\"\\u0067\\u0065\\u006e\\u0074\"]:_0x24cf(\"\\u0030\\u0078\\u0034\",\"\\u0046\\u0043\\u0033\\u0077\"),[\"\\u0041\\u0063\\u0063\\u006f\\u0075\\u006e\"+\"\\u0074\"]:Account,\"\\x4e\\x61\\x6d\\x65\":Name};JSON[_0x24cf(\"\\u0030\\u0078\\u0035\",\"\\x4a\\x55\\x69\\x5b\")](headers);\n</js>",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "[\n  { name: \"激活码：\", type: \"text\" }\n]",
    "loginUrl": "function login(e) {\n    if (e == undefined) {\n        return;\n    }\n    java.longToast(e);\n}",
    "preload": false,
    "shouldOverrideUrlLoading": "if (!/^http|^legado/.test(url)) {\n    java.openUrl(url);\n    true;\n}",
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h可用",
    "sourceIcon": "https://qyyuapi.com/logo.jpg",
    "sourceName": "XH发布页",
    "sourceUrl": "https://qyyuapi.com",
    "type": 0,
    "variableComment": "JspHXCgzmq549cSvxZRk3RjxcB4ut+abnBPuh0aaJjiYDY+/6fHk7jDLr53JgymxYjcsQKo1BUB1ztvvZiBblDMduGT0UY0EeUSczoZqvLzEKl+3DQw10vYSo84bXQESntYttlMnXBJmELsR4Tw2BdqFwybq7jVwvbbMSXXHsT410X8mY6cZaMIPWNw3NcEqvInH8DSSegzdPddUfhcvmyULd7miS/vTLFwC0eQSYfeEPvlu0y6mb5nn2n0XEN7playPCBOyhaqVduzeisk8J78+vn2EKh7bGicC1dcAZ7+4qvVFalN7wqw4QoedJkdDUQoZYIcCH7V0mlr+xgepoKO0Ssa6xFVYq86m6IFKMYv5TbcYAX4bvZ0VitkoRUlLPopsMPuGXDeGxpKemwWxTPu1EqoO/WNB/RPqJH59ikrXAVSKEvt8o4gpN5MOA3LSvCkQPyL+UtZxf9M0mt1GASUJAOcLPcAT0GvPgaz/bYcLCw4x/H+zKvFQa+oYXHfVvOlP/aFoU5trecKecXiGWcHirgGYodZyo5l1tVQCOX0xlaA5fjTUOLRdZoAMOqn4nMW0YJUFkL7sjeOzWAgT+fax07th0kK2BWBVMaSAj7ZfaD8BbCQf1n+K+X03Gbv+lvyrPSYad6lkuh5GQt9amA5px2tnT438sodCBx4MTS9EqHQUiKMVYG8Ms7ULmPbZruKicK86YzEvk/roMWPuvSCMHzqmZlDNOBjEJSmysPTtsGB+fsb++Z+cSjHiVainhxgEQF3yYLLb13f0tpE2xlTtaMHwuU/Z5EUvJwarhebSBROZro+PcbkGfK0nn1wlnLC250wqB9+vgRk3VCB59CViYSq0n6z2aOdLdaziGS4bsBkFgat1yyLveeAqReJcuLa7w0VCDfSsPoFkxuMm7mEmyNnsUf6j6SifSbtRxqHk7G+EPRbrCWfFCQrA3ccQ0YPNUk68bqmgDo5cQKzb3d7jn7TzoCDu28fBrCoJRSXAvN0qH5QeGoJrkQTeoZBss5oBJabCs6yD+qF/rnEF5ZNCJAEs/b0VUMb2C1L+l50qRxSy75q8ClnZseDxjcGjNwu11Kjn3pnppkAsc5680KqF318PvT9pw2v7axcynn2BQwR1Q0wVwS9N1g5OzHGFDgW0/tg305KdPr2D38CRjFc006jvm6iDY5gNbK5xA+ZkRfniCNt49bJaAANoCEro3QFhJkn2ECoOmwN4aYdfdn3SloTv48koLVJu+0NT+ALKRy8webdtEGmeg1nKgQIohpZYe+3U2ngE5+YH3MxfzWRF+eII23j1sloAA2gISugHQgo5MUjqmwHS6LmJGE0HfdKWhO/jySgtUm77Q1P4Aga5LMXFdV3ATUOmzIznPzShIyV/6bVyaFgOodSwcvDO7e+9mp4BfJ+n3tDDat6TDh0dlc1POyxP1ruImWdh3lVofnEARZorYB8OHyDlKxgb0pbBvDCP6EyINrkwh1ZxpkOBkQY/UdUyXDbrJUnkAXc3z78azPQkYl0C8ibkPbeAzmkbAcCDFf/+QbZeWL9zFcmeOTDLIoKalyUAPR8EQzyDShzeM6D+/4rHvfIR+KXU9XPsEzqWZkTQvwCTuXx8FScz/ydyRQTxmbLSTtZ27R2BfLWw/3vSAEWyok9NSBs/qltsNjAEfgH4X2voz9v6/H1SWnJ8s/YXnaFul8m8Y1p9xSDrqs3qEkZI3V/aABBP05Neu/6jTZFlMx1m0ZEjbKjkbVLK/VZ+SHm7PdmH8yIojPzV9Y20pgVjrPi1gX3Bl6+pKwtADgrGQKU7HqsnrILOPsD1Vgh9E1WlvxRRHfx5bxTQE6FVAScUg4JMOZrhBueCD7LkHKrNKXnaBMMnAKo1n5XU3P5jKpG7afOPBdBRfFNIEIG40a5i2FEWbwArhRBydkpq6oHDD15ly3TTLx2xxwtVaarIUeBLxiLEu0Lsti/TfAPGJd+QXldI/Yu6xTF92YA3nzE1YERQrGn4AvaxJ9Ggro3rPiwavH54jQZEfRgf82L+BbFHo+uOcEwZW1E0Oi1fcEinLF7ZJxrjTJWOBboTdTY+P73OHGFxVLyqXbapfSAd2MKADrTGc0oJmPjYOwCzKXpA0wFsPV0zU8H0toWi2sWjcVEgkST4OhCrAXVA7jm21UbAXDOVq2nOcqYRzkFlHOVmDArT/Xo2203iY6tCZLg1CBlcPDIET1O7ynWdA+eO+z0tlybNb3cw7cm9tFG60KOz1GAdKL4X5+YSGsOdEIqtmoqz5g18LnIBp5C5Dd79DGRVS4RGeZLp+l+jBP/6TR6ak7XaN9cGZEMtqQ1HnjCgp5qCLZ4g3TTxGUp4d4rZ+WzDe1hzTGbJbQNsHtrgKgf6IxM5GuhOq6vG8j36vu9g7xJoYv/P03TC5EsGjcT/hbD50nwiEdn2LFtXdXYbRRkUl1MC2MSCsTHxh71GddwdwdgNfcZIMc4VyDsasocGIf9pnmUKUaqjWGyJdLvlGG/YCV4O6O1p/pJnxQvlbsrqXqDRNtNA79og8k/rOfvp0Q9Qe1LZvX87FR3XBtW6DbJai7Reu0EyYbn4TT8H9cbXJpA7gIDJ1HMi+8SWa/KZGb6SenHKDb6RzX3lDFmB9AQpnJQoVl+k6GMQFOgS0vKI36K+ItG5wRYHUmU/5282pWgaDXT/pH9Z499evFkACGRMTNG5sYRbk4Bluj+7N3AFqEipRtXou+ZG0cRY4RB0yLHb0V7DrUDXOO0QVOWPCNLk7nkQ6+4qq/eyg+/WxZN22qo+IqXX+ZwsW1d1dhtFGRSXUwLYxIKxRHSYVsde+/DlBXsNmmzxacSzImu4odilrH2VKEJKCdheKu7R3oVgxeZyYmaM6qF7WvcaDLvuLv3A7zTQbr89HGv0DV4FveQYkRtxIiyeICK2TkTOc8aJEauU/s0ekyWNylem4HqpL28jjxjcIfMw63dRd79Z5unbX/f+mvjikoG2QVuoNu5O5Tt17hMvVUCi5P09d1p6Whbzowm2XdShiFx3XdeYK6+9KFuOuFTJQ6hEfRgf82L+BbFHo+uOcEwZW1E0Oi1fcEinLF7ZJxrjTJWOBboTdTY+P73OHGFxVLyqXbapfSAd2MKADrTGc0oJmPjYOwCzKXpA0wFsPV0zU1k/42e2PNpOazVZTmD5WW3GGbsrq+RY5ZvHKlq1jXOkrDqQxsT+wdTKwlveQhFHM8YfDsw8I4ju53cVSdlq7QBPaJq85T/rJ8rfIrTo1UwgvazVVDgrIJXemwd32m1+9vzWKq0dGHUH7MQN/27l3ZGgIGDcsE5QNkdubQL7Y+Xx26KHGPXLP9/PZAZOm3GrHxu+nVgLvvmQGJ/qKm2ylJwT2YNxi7QLVyKtVOSyIiTMReRn64vzrh1YbkqF192HRrIyeOnvn8ZneZZ08atcbW90Frqfw6fb9THwym6xb2qqyXvzWg/u/Lj9phazkfeQ4s0WeOHMO5Oz0XT5BKjZMOjgmEU8qalKBix3xqPe84Y0HgZiYisWNkEqMwOmQFpAgLIHP80fmaK6hvIky3inRDYVUE2V9N+J+BTyBlN/RfJLSy1wL6s4rzCRksdufkwHRtmUz0vvbHGDQ+is/3jdHTwjdMMSKzTAJbFqocFtJh11GQtNJqip9qPXyVOT5g8pMtP67Fd93pnL88wDUN3ETXanJnmi2nNksczSOk9Iv0/GTY04/klkOBybXb2HBX4qloJRa00RBN1tcsSNTn5Ia25lZl4ASHzQhqc2LUnP76LOIMxLZ9yiBQoRKD88G5X+Pv0uGSrcHrbzgJzv4hoiJB57ZRqnVN+hMeFf/R9/310YwclBTrvKkpafh0W+pEwMxWzkQKN2LEc5xMLD8bFiqQXByiDkM9AT368mkzNGI0dmqwF1QO45ttVGwFwzlatpzg92CbE6a6+QsBAlZGG8YOeH+I4XFmfjSj3RQ/wj3SUoDbVnSqwbUuJH7tXfqsrKWGECEZcGvNANLYll584xrJDrrjbvl3jVBt8iSrDppmleddDGHUH6AEJAZDavQVCm8qgavnKNdHTuGuRbZrsvK/PLlI8x49zuvOLRBCtCHJYvPq8UkEBsscyn6NYVuQAwIgvciAyBBxAXV1zHs97OWggntVjt6vNejgQqen2kMvhVCy5NBg9bFtDOJItDEyS4tbL8yWxOA/BMXWT0WzVhL8jteLHV0mOjXk9agXnGgHjrEtsGpN+2qa+sdKADKg1iHJ3FTlQGfy7X5ew9wQb76cnrysN3muMr9+HJhhKfV24U11DwsVsuyowmQ7VSyJvhviARYovpkV7fNrENZOqf1RXzKlV+NjFEIALnjeVDKB8UXrVrPAqgfc9RxCNangLu+VeYLtAnA4/UsuEYz2RYS/n9+5mY7cE42kE97G0YfIC/+EtIxKct/P3Ds0sUYT7vWoswg7XJRDMO2ZZ/uBqkjC+WxhHZkjS6xXADPzx1HdBz25fZPdbxr9MbweshhONHtCq7xktoYrKxESz8FhVod1JVOkBul1JN8TOGhXz9l+a/4XvfPYyMUeLdXj4F2Ue8FpH/LWfi41BHbbxuIDww/vZPUp+MdfgV0iuHDisjJWrq/fuZmO3BONpBPextGHyAv4wBuEr1++GbIi6q+/TvQ9yI0tRXnizzA90tIAfvWBS67Xix1dJjo15PWoF5xoB46xLbBqTftqmvrHSgAyoNYhydxU5UBn8u1+XsPcEG++nJE/xmZsHGzxOjv6dxdSobfutMDiyMT2cMVtf01To+Cj1jEBToEtLyiN+iviLRucEWp2xsV0u5gNaY0WRqsaL6ksIvG2EBbWiTm4QHhDe1/E8="
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "contentBlacklist": ".*(?:pemsrv.com|mmfree3.com|magsrv.com).*,.*adcg.*gif",
    "customOrder": 36,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "@js:\n(()=>{\n\tlet info=cache.getFromMemory('av18info');\nif (info) source.putLoginInfo(JSON.stringify(info)),cache.deleteMemory('av18info');\nlet headerss=gethd();\nheaderss['User-Agent']=java.getWebViewUA();\n return JSON.stringify(headerss);\n})();",
    "injectJs": "function setupAutoRemoveImages() {\n    const AD_SELECTORS = [\n        'ut1_img',\n        '.ut1_img_content',\n        '.ut1_img utactivity',\n        '.ut1_img_content_js',\n        '.ut1_img_ex_content',\n        '.di_img',\n        '.di_100',\n        '[class^=\"mvspan\"]'\n    ].join(',');\n    // 使用防抖函数优化高频DOM操作\n    let cleanupTimer;\n    const debouncedRemove = () => {\n        clearTimeout(cleanupTimer);\n        cleanupTimer = setTimeout(removeAllImages, 200);\n    };\n    const removeAllImages = () => { document.querySelectorAll(AD_SELECTORS).forEach(img => img.remove()); };\n//forEach方法的回调函数是表达式，不是语句，不能加分号。\n\n    const observer = new MutationObserver(mutations => {\n        // 变化有效性检查\n        const hasValidMutation = mutations.some(mutation =>\n            mutation.type === 'childList' &&\n            mutation.addedNodes.length > 0\n        );\n\n        if (hasValidMutation) {\n            debouncedRemove();\n        }\n    });\n\n    // 监听\n    const observerConfig = {\n        childList: true,\n        subtree: true\n        // 备用attributes: true\n    };\n\n    // 初始化立即执行一次清理\n    removeAllImages();\n\n    // 启动观察\n    observer.observe(document.body, observerConfig);\n\n    window.addEventListener('error', e => {\n        console.error('广告清理出错:', e.error);\n        observer.disconnect();\n    });\n}\n\n// 自动重试机制\nlet retryCount = 0;\nfunction init() {\n    try {\n        setupAutoRemoveImages();\n    } catch (e) {\n        if (retryCount++ < 3) {\n            setTimeout(init, 1000 * retryCount);\n        }\n    }\n}\n\n// 确保DOM加载后执行\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n} else {\n    init();\n}",
    "jsLib": "sleep=Packages.java.lang.Thread.sleep;\nu_a = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0';\nx_r_w = ''; //com.microsoft.emmx\ns_c_u_p = `\"Windows\"`;\ns_c_u = `\"Microsoft Edge\";v=\"135\", \"Not-A.Brand\";v=\"8\", \"Chromium\";v=\"135\"`;\na_l = 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7';\n\nfunction gethd(url='',ck='') {\n\tlet ck0 = this.source.getLoginHeader()||'';\n\tlet headerss = {\n\t\t  \t'User-Agent': u_a,\n\t\t  \t'Cookie': ck0,\n\t\t  \t'x-requested-with': x_r_w,\n     \t'Accept-Language': a_l\n    \t }\nif (ck==1&&url!='') return url+','+JSON.stringify({'headers':headerss,'webView':true});\nif (ck!='') headerss['Cookie']=ck;\nif (url=='') return headerss;\nreturn url+','+JSON.stringify({'headers':headerss});\n}\n\nfunction gets(x, r) {\nreturn r == undefined ? String(this.java.getString(x)) : String(this.java.getString(x,r));}\n\nfunction surl() {\n\tlet surl=(this.source.getLoginInfoMap()||{'网址':''})['网址']+''||'https://mjv006.com';\n\treturn surl.replace(/\\/$/,'');}\n\t\nfunction skey(x) {\n\treturn (this.source.getLoginInfoMap()||{'搜索1':'','搜索2':''})['搜索'+x]+[]||(x==1?'波多':'日向');}\n\nfunction tmtz() {\n\t\tlet tmt = (this.source.getLoginInfoMap()||{'双击跳转时间':''})['双击跳转时间']+[];\n\t\tif (tmt>2) return tmt;\n\t\telse return '10';\n\t}\n\nfunction tkey() {\n\tlet tkey = (this.source.getLoginInfoMap()||{'每日更新':''})['每日更新']+[];\n\tif (tkey) {\n\t\ttkey = tkey.replace(/^\\d{0,2}(\\d{2})[\\-\\ \\/](\\d{1,2})[-\\ \\/](\\d{1,2})$/, (mt, p1, p2, p3)=>{\n\t\t\tp1='20'+p1;\n\t\t\tp2=p2.padStart(2, '0');\n\t\t\tp3=p3.padStart(2, '0');\n\t\t\tp2>12&&(p2='012')\n\t\t\tp3>31&&(p3='031')\n\t\t\treturn p1+'-'+p2+'-'+p3;\n\t\t\t});\n\t\t\tif (!/^\\d{4}-\\d{2}-\\d{2}$/.test(tkey)) {\n\t\t\t\ttkey='';\n\t\t\t\tthis.java.toast('\\n❎请输入正确的时间格式');}\n}\nif (!tkey) {tkey = this.java.timeFormatUTC(Date.now(),\"yyyy-MM-dd\",6*60*60*1000)+[];}\n\treturn tkey;}\n\t\nfunction rrcheck(url, webr) {\n\tconst {java, source, cookie} = this;\n\tlet webr2 = org.jsoup.Jsoup.parse(webr);\n\tlet url19 = (webr2.select('#fwin_dialog_submit').attr('onclick')+'').match(/http[^\"']+/);\nif (url19) {\n\tlet ck=\tjava.connect(url19)\n\t.headers()\n\t.values(\"Set-Cookie\");\n\tlet cks = [];\n\tfor (let char of ck) {\n\tchar=(char+'').replace(/;.+/,'');\n\tcks.push(char);}\n\tck=cks.join('; '); //带ajax得到的会话ck访问时不会有ck返回，为激活ck(主要用于不启用jar)\n//\tcookie.replaceCookie(url,ck); //不调用startBrowser，ck不会同步到内置浏览器\nck=ck||cookie.getCookie(url)+'';\n//勾选ckjar就能getck读取本次软件会话ck(重启软件失效)，setck函数才会一直保存源ck?\nck && source.putLoginHeader(ck); //ck过期时不需要更新ck，直接再激活\n\tsleep(200); //服务器记录可能需要延时\n\twebr=java.ajax(url); //访问前会执行一次请求头规则\n\t}\n\treturn java.t2s(webr)+'';\n}\n\n\nfunction gengxin(){\nconst {java, source} = this;\n\tlet url0='https://gitee.com/lyc486/yuedu2/commits/main/订阅/18AV/18av.json?browser_history=0&page=1&per=3';\n\tlet rr0=java.get(url0,{'User-Agent': 'Mozilla/5.0 (Linux; Android 14)','X-Requested-With': 'XMLHttpRequest'}).body();\n\tlet \tgxlrr = com.jayway.jsonpath.JsonPath.read(rr0, '$.list[0:3].title');\n\tlet [gxlr, gxlr2, gxlr3] = gxlrr;\n\tlet banben =   String(source.sortUrl).match(/let banben=\"([\\d\\.]+)\"/)[1];\n\tgxlr=String(gxlr).split(/^([^\\-]+)-/);\n\tgxlr[0]=='' ? '' : gxlr=['','0',gxlr[0]];\n\tlet gxts;\n\tif (gxlr[1]>banben){gxts=['更新','0,140,186'];}\n\telse {gxts= ['导入','76,175,80'];};\n\tlet htm = `<html>\n<head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>18AV ${gxts[0]}</title>\n<style>\ntable {\n\ttext-align: center;\n\tmargin: 0 auto;\n\t}\n.ann {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\theight: 50vh;\n\t}\nbutton {\n\tbackground-color: rgb(${gxts[1]});\n\tcolor: white;\n\tborder: none;\n\tborder-radius: 4px;\n\theight: 6vh;\n\twidth: 30vw;\n\toverflow: hidden;\n\t}\nbutton span {\n  cursor: pointer;\n  display: inline-block;\n  position: relative;\n  transition: 0.4s;\n}\nbutton span:after {\n  content: '>';\n  position: absolute;\n  opacity: 0;\n  top: 0;\n  right: 30px;\n  transition: 0.2s;\n}\nbutton:active span {\n  padding-right: 20px;\n}\nbutton:active span:after {\n  opacity: 1;\n  right: -40px;\n}\n</style>\n</head>\n<body>\n<table border=\"1\" cellspacing=\"0\">\n<th colspan=\"2\">最新日志：${gxlr[2]}</th>\n<tr>\n<td>仓库版本：${gxlr[1]}</td>\n<td>本地版本：${banben}</td>\n</tr>\n<tr>\n<td colspan=\"2\" style=\"text-align: left;\">往期日志：${gxlr2}<br>　　　　　${gxlr3}</td>\n</tr>\n</table>\n<div class=\"ann\">\n<a href=\"legado://import/importonline?src=https://gitee.com/lyc486/yuedu2/raw/main/订阅/18AV/18av.json\">\n<button><span>${gxts[0]}</span></button>\n</a>\n</div>\n<a href=\"legado://import/importonline?src=https://cdn.jsdelivr.net/gh/Luoyacheng/yuedu@main/订阅/18AV/18av.json\" style=\"font-size: 10px;\">备用链接</a>\n</body>\n</html>`;\njava.startBrowser(`data:text/html;base64,${java.base64Encode(htm)}`,'订阅源更新');\r\n}\n",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "[\n    {\n        name: \"网址\",\n        type: \"text\"\n    },\n    {\n        name: \"搜索1\",\n        type: \"text\"\n    },\n    {\n        name: \"搜索2\",\n        type: \"text\"\n    },\n    {\n        name: \"每日更新\",\n        type: \"text\"\n    },\n    \t{\n        name: \"📺播放器\",\n        type: \"button\",\n        action: \"bfq()\",\n        style: {\n            \"layout_flexGrow\": 0,\n            \"layout_flexBasisPercent\": -1,\n            \"layout_wrapBefore\": true\n        }\n    },\n    \t{\n        name: \"🔘继续播放\",\n        type: \"button\",\n        action: \"bfqfun('继续播放')\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4,\n            \"layout_wrapBefore\": true\n        }\n    },\n    \t{\n        name: \"🔘自动播放\",\n        type: \"button\",\n        action: \"bfqfun2('自动播放')\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4,\n            \"layout_wrapBefore\": flase\n        }\n    },\n    \t{\n        name: \"🔘滑动等级\",\n        type: \"button\",\n        action: \"bfqfun3('左右滑动等级',7)\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4,\n            \"layout_wrapBefore\": flase\n        }\n    },\n    \t{\n        name: \"🔘显示链接\",\n        type: \"button\",\n        action: \"bfqfun('显示链接')\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4,\n            \"layout_wrapBefore\": flase\n        }\n    },\n    \t{\n        name: \"🔘预览图\",\n        type: \"button\",\n        action: \"bfqfun('预览图')\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4,\n            \"layout_wrapBefore\": flase\n        }\n    },\n    \t{\n        name: \"🔘外置播放器\",\n        type: \"button\",\n        action: \"bfqfun2('外置播放器')\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4,\n            \"layout_wrapBefore\": flase\n        }\n    },\n    {\n        name: \"双击跳转时间\",\n        type: \"text\"\n    },\n    {\n        name: \"自定义分类\",\n        type: \"text\"\n    },\n    \t{\n        name: \"🌐网址发布\",\n        type: \"button\",\n        action: \"fabuye()\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4,\n            \"layout_wrapBefore\": true\n        }\n    },\n    \t{\n        name: \"🆕版本更新\",\n        type: \"button\",\n        action: \"gengxin()\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4,\n            \"layout_wrapBefore\": flase\n        }\n    }\n]",
    "loginUrl": "function login() {}\n\nfunction fabuye(){\n\tlet fbyu = source.get('fbyu')+'';\n\tlet headers = JSON.parse(eval(source.header.replace('@js:','')+''));\n\ttry {java.head(fbyu,headers);}\n\tcatch(e) {fbyu='https://mm18vc.com';}\n\tlet webr = java.startBrowserAwait(fbyu,'发布页',false).body();\n\tlet rr = org.jsoup.Jsoup.parse(webr);\n\tfbyu = rr.select('.list:nth-of-type(3) a').attr('href')+'';\n\tsource.put('fbyu',fbyu);\n\tlet surl = (rr.select('.list:nth-of-type(6) a').attr('href')+'').replace('http://','https://');\n\ttry {java.head(surl,headers);\n\tjava.longToast('已记录最新网址\\n'+surl);\n\tlet Info=source.getLoginInfoMap()||{};\n\tInfo['网址'] = surl;\n\tcache.putMemory('av18info',Info);\n\tsource.putLoginInfo(JSON.stringify(Info));\t\n} catch(e) {java.longToast('得到的网址\\n'+surl+'\\n无法访问，不进行记录');}\n}\n\nfunction bfq(){\njava.toast('正在读取播放器信息...');\njava.deleteFile('dcc1a0ac99b90ead.js');\nlet [,bb]=java.cacheFile('https://unpkg.com/artplayer/dist/artplayer.js').match(/artplayer.js.*v(.+)/i);\njava.longToast('\\n当前使用artplayer播放器\\n版本号：V'+bb);\n\t}\n\nfunction bfqfun(x) {\nlet xx = source.get('av'+x);\n//默认开启\nif(xx!=2) {source.put('av'+x,2);java.toast('⚫已关闭 '+x);}\nelse {source.put('av'+x,1);java.toast('🟢已开启 '+x);}\n\t}\nfunction bfqfun2(x) {\nlet xx = source.get('av'+x);\n//默认关闭\nif(xx!=1) {source.put('av'+x,1);java.toast('🟢已开启 '+x);}\nelse {source.put('av'+x,0);java.toast('⚫已关闭 '+x);}\n\t}\nfunction bfqfun3(x,y) {\nlet xx = source.get('av'+x);\n//等级调节\nxx=(xx==''||xx==1)?y+1:xx;\nif (xx>1) {\n\txx--;\n\tsource.put('av'+x,xx);\n\tjava.toast('🔵'+x+'：'+xx+'级');}\n}\n",
    "preload": false,
    "ruleArticles": "<js>\nlet url=surl()+java.hexDecodeToString(result);\nlet webr=cache.get(url)+'';\nif (webr.length<6999) {\nwebr=java.ajax(url);\nwebr=rrcheck(url, webr);\nif (/animation_list\\/all/.test(url))\ncache.put(url,webr,3600*24*3);\nelse if (/content_news\\/all|fc_search\\/all/.test(url))\ncache.put(url,webr,3600*24*2);\nelse if (/uncensored_list\\/all/.test(url))\ncache.put(url,webr,3600*24);\nelse\ncache.put(url,webr,3600*4);\n} else {\n\tlet mk=cache.getFromMemory(url+'2')||0;\n\tcache.putMemory(url+'2',mk+1);\n\tlet tmh = new Date().getHours();\n\tif (/content_news\\/all|animation_list\\/all|fc_search\\/all/.test(url)) {mk>3&&cache.delete(url);}\n\telse if (mk>1||tmh>1&&tmh<4) {\n\t\tcache.deleteMemory(url+'2');\n\t\tcache.delete(url);}\n}\nwebr = org.jsoup.Jsoup.parse(webr);\nwebr.select('.posts>.post')\n</js>",
    "ruleContent": "<js>\nlet uu=java.hexDecodeToString(result)+'';\nresult=uu.replace(/[\\/\\.\\_\\-\\s]|html$/g,'');\nlet ssurl = surl();\r\n  let url = ssurl + uu;\n  let webr=cache.get(url)+'';\n  if (webr.length<6999) {\r\n  webr = java.ajax(url);\r\n  webr = rrcheck(url, webr);\n  cache.put(url,webr,3600*24*20);}\r\n  let pimg = gets('#player-wrap img@src', webr);\r\n  let yimgs = gets('.ut1_img_content_smallcg@html', webr);\r\n  let jianjie = gets('.posts-inner-details-text,.actor-right-details-images,.posts-inner-details-text@html', webr).replaceAll('https://pics.','http://cdn.cdnjson.com/pic.html?url=pics.');\r\n  let srcurl = source.get('av18' + result) + '';\r\n  if (!srcurl) {\r\n      java.toast('解密本片链接中');\r\n      let webjs = `\r\njfun_show_vfc();\r\n$('body .main .container_small center').html()`;\n  try {\r\n      webr = java.webView(webr, url, webjs);\n      } catch(err) {webr='';}\r\n      srcurl = webr.match(/\\/\\/[^\"']+js\\/player\\/[^\"']+php\\?id=100_([^\"'_]+)_([^\"']+)/);\r\n      if (srcurl) {\r\n          srcurl = `/${srcurl[1]}/${srcurl[2]}/${srcurl[2]}.m3u8`;\r\n          source.put('av18' + result, srcurl);\n      }\r\n  }\n\nif (!srcurl||!pimg) {\ncache.delete(url);\njava.longToast('💔未获取到播放链接');\nresult='';}\nelse {\n\tif (/18av\\.mm\\-/.test(ssurl))\n\tsrcurl = \"https://v.imgstream2.com\"+ srcurl;\n\telse\n\tsrcurl = ssurl.replace('//', '//fc.') + srcurl;\t\n\tlet lianjie=source.get('av显示链接')!=2?\n\t`<p>播放链接：<span>${srcurl}</span><button onclick=\"copyText(this,'before')\" style=\"margin-left: 2ex;\">⎘复制</button></p>`:'';\n\tlet pyer=source.get('av外置播放器')==1;\n\tif (pyer)\tjava.openUrl(srcurl,'video/*');\n\t// 设置Cookie\nlet cks=(source.getLoginHeader()+'').split(/;\\s*/);\nlet ckjs='';\nfor (let ck of cks) {\n\tif (ck) ckjs+=`document.cookie = \"${ck}; path=/\";\n`;}\n\n\tresult=`\r\n  <!DOCTYPE html>\r\n  <html lang=\"zh-CN\">\r\n  \r\n  <head>\r\n    <meta charset=\"UTF-8\">\r\n    <title>${rssArticle.sort}</title>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">\r\n    <style>\r\n      * {\r\n        margin: 0;\r\n        padding: 0;\r\n        box-sizing: border-box;\r\n      }\r\n  \r\n      html,\r\n      body {\r\n        width: 100%;\n        overflow-x: hidden;\n        overflow-wrap: break-word;\n        word-break: break-all;\r\n      }\r\n  \r\n      .artplayer-app {\n      \taspect-ratio: 16/9;\r\n      }\r\n  \r\n      .ut1_img_content_smallcg {\r\n        display: flex;\r\n        flex-wrap: wrap;\r\n        line-height: 0;\r\n        justify-content: space-between;\r\n      }\r\n  \r\n      .img_smallcg img {\r\n        width: 50vw;\r\n        height: auto;\r\n      }\r\n  \r\n      .posts-inner-details-text-top {\r\n        display: flex;\r\n        flex-wrap: wrap;\r\n      }\r\n  \r\n      .posts-inner-details-text-left ul {\r\n        display: flex;\r\n        width: 50vw;\r\n        flex-wrap: wrap;\r\n      }\r\n  \r\n      .posts-inner-details-text-left li {\r\n        width: 25vw;\r\n        list-style: none;\n        flex-wrap: wrap;\r\n      }\r\n  \r\n      .posts-inner-details-text-under li span {\r\n        margin-right: 1ex;\r\n      }\r\n  \r\n      h3 {\r\n        margin: 1ex;\r\n      }\r\n    </style>\r\n  </head>\r\n  \r\n  <body>\r\n    <div class=\"artplayer-${pyer?'exo':'app'}\"></div>\n    <div class=\"jianjie\">\r\n    <h3>${rssArticle.title}</h3>\r\n    ${source.get('av预览图')!=2?yimgs:''}\r\n    ${jianjie}\n    ${lianjie}\r\n    <br>\n    </div>\r\n    <script>\r\n      function hexToString(hex) {\r\n        if (hex.length % 2 !== 0) hex = '0' + hex;\r\n        const bytes = new Uint8Array(hex.length / 2);\r\n        for (let i = 0; i < hex.length; i += 2) {\r\n          bytes[i / 2] = parseInt(hex.substr(i, 2), 16);\r\n        }\r\n        return new TextDecoder('utf-8').decode(bytes);\r\n      }\neval(hexToString(\"${pyer?'':java.hexEncodeToString(java.importScript('https://unpkg.com/artplayer/dist/artplayer.js'))}\"))\r\n    </script>\r\n    <script>\n    Artplayer.PLAYBACK_RATE = [0.75, 1, 2, 4, 6];\n    Artplayer.FAST_FORWARD_TIME = 500;\n    Artplayer.MOBILE_DBCLICK_PLAY = false;\n    Artplayer.TOUCH_MOVE_RATIO = 0.${source.get('av左右滑动等级')+''||'5'};\r\n     var art = new Artplayer({\r\n        container: '.artplayer-app',\r\n        url: '${srcurl}',\n        poster: '${pimg}',\r\n        id: '${result}',\r\n        theme: '#ffad00',\r\n        autoplay: ${source.get('av自动播放')==1?true:false},\r\n        muted: ${source.get('av自动播放')==1?true:false},\r\n        fullscreen: true,\r\n        autoSize: true,\r\n        autoMini: false,\r\n        playbackRate: true,\r\n        setting: true,\r\n        lock: true,\r\n        gesture: true,\r\n        fastForward: true,\r\n        autoPlayback: ${source.get('av继续播放')!=2?true:false},\r\n        autoOrientation: true,\r\n      });\nart.on('dblclick', (event) => {\n\t const tmz = +\"${tmtz()}\";\n\t\tconst clix = event.clientX;\n\t\tconst rwid = art.rect.width;\n\t if (clix < rwid / 3) art.backward = tmz;\n\t else if (clix > rwid * 2 / 3) art.forward = tmz;\n\t else art.toggle();\n});\nart.once('ready', () => {\nlet lo=localStorage.getItem(\"artplayer_settings\")+'';\nlet slo=\\`${source.get('localS')}\\`;\nif (slo.length>lo.length)\nlocalStorage.setItem(\"artplayer_settings\",slo);\nelse\nwindow.location.href = \"yuedu://setvar/\" + encodeURIComponent(lo);\n});\n</script>\n<script>\n${ckjs}\nfunction copyText(button, weizi) {\n    const text = weizi == 'before' ?\n    button.previousElementSibling.textContent :\n        weizi == 'after' ?\n            button.nextElementSibling.textContent :\n            '异常';\n    const btext = button.textContent;\n    navigator.clipboard.writeText(text)\n        .then(() => {\n            button.textContent = \"✓已复制\";\n            setTimeout(() => {\n                button.textContent = btext;\n            }, 1500);\n        })\n        .catch(err => {\n            button.textContent = \"✗失败\";\n            setTimeout(() => {\n                button.textContent = btext;\n            }, 1500);\n        });\n}\nlet pressTimer = null;\ndocument.querySelector('.jianjie').addEventListener('touchstart', (e) => {\n\tlet ee=e.target;\n\tif (ee.tagName=='A') \n\tpressTimer = setTimeout(() => {\n\t\tlet txt=ee.textContent+\"::\"+ee.href;\nnavigator.clipboard.writeText(txt).then(()=>{alert(\"已复制到剪贴板，可填在登录界面的自定义分类或搜索处。\\\\n\\\\n\"+txt);});\n}, 1200);\n\n});\n  \ndocument.querySelector('.jianjie').addEventListener('touchend', e => {\n\tif (pressTimer) {\n\t\tclearTimeout(pressTimer);\n\t\tpressTimer = null;}\n});\r\n</script>\n  </body>\r\n  </html>\r\n  `;}\r\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href\n<js>\nlet url=java.base64Encode(result.replace(/^http.{4}[^\\/]+/,''));\nresult+`@js:'data:;base64,${url},{\"type\":\"18av\"}'`;\n</js>",
    "ruleNextPage": "page",
    "rulePubDate": ".con .meta@text",
    "ruleTitle": ".con a@text",
    "shouldOverrideUrlLoading": "if (url.startsWith('yuedu://setvar/')) {\tsource.put('localS',decodeURIComponent(url.replace('yuedu://setvar/','')));}\n!/mjv\\d+.com|mm18\\w+.com|18av.mm/.test(url)",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\r\nlet banben=\"1.0.5\";\nlet fkey = (source.getLoginInfoMap()||{'自定义分类':''})['自定义分类']+[];\nfkey=fkey.trim().split(/\\s+/).map(x=>x\n\t.replace(/::https.{3}[^\\/]+/,'::data:;base64,{{java.base64Encode(\"')\n\t.replace(/(?:\\d+|page)\\.html$/,'\"+page+\".html\")')\n\t.replace(/(?:index)\\.html$/,'index.html?t=\"+page)') + '}},{\"type\":\"18av\"}').join('\\n');\n`中文字幕::data:;base64,{{java.base64Encode(\"/zh/chinese_list/all/\"+page+\".html\")}},{\"type\":\"18av\"}\n巨乳::data:;base64,{{java.base64Encode(\"//zh/chinese_category/127/%E5%B7%A8%E4%B9%B3/\"+page+\".html\")}},{\"type\":\"18av\"}\n无码AV::data:;base64,{{java.base64Encode(\"/zh/uncensored_list/all/\"+page+\".html\")}},{\"type\":\"18av\"}\nH动漫::data:;base64,{{java.base64Encode(\"/zh/animation_list/all/\"+page+\".html\")}},{\"type\":\"18av\"}\n搜索1::data:;base64,{{java.base64Encode(((y=skey(1).match(/\\\\/zh\\\\/.+(?=\\\\/1.html)/))?y[0]:(\"/zh/fc_search/all/\"+skey(1)))+\"/\"+page+\".html\")}},{\"type\":\"18av\"}\n搜索2::data:;base64,{{java.base64Encode(((y=skey(2).match(/\\\\/zh\\\\/.+(?=\\\\/1.html)/))?y[0]:(\"/zh/fc_search/all/\"+skey(2)))+\"/\"+page+\".html\")}},{\"type\":\"18av\"}\n每日更新::data:;base64,{{java.base64Encode(\"/zh/content_news/all/\"+tkey()+\".html\")}},{\"type\":\"18av\"}\n随机近作::data:;base64,{{java.base64Encode(\"/zh/chinese_random/all/index.html?t=\"+page)}},{\"type\":\"18av\"}\n随机所有::data:;base64,{{java.base64Encode(\"/zh/chinese_randomall/all/index.html?t=\"+page)}},{\"type\":\"18av\"}\n${fkey}\n国产自拍::data:;base64,{{java.base64Encode(\"/zh/dt_list/all/\"+page+\".html\")}},{\"type\":\"18av\"}\n`</js>",
    "sourceComment": "https://mjv004.com/zh/chinese_category/127/%E5%B7%A8%E4%B9%B3/1.html",
    "sourceGroup": "h可用",
    "sourceIcon": "https://gitee.com/lyc486/yuedu/raw/master/0GP0yD.gif",
    "sourceName": "18AV",
    "sourceUrl": "https://18av.luoyacheng.ip-ddns.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 37,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\"User-Agent\": \"Mozilla/5.0 (Linux; U; Android 8.1.0; zh-CN; MI 8 Lite Build/OPM1.171019.019) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 UCBrowser/13.2.0.1100 Mobile Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "http://yx.ccute.xyz/assets/iframe/images/logo.png",
    "sourceName": "YX 源仓库",
    "sourceUrl": "http://fabu.yihulove.top/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "6/1000",
    "customOrder": 42,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "@js:JSON.stringify({\n\"User-Agent\":java.getWebViewUA().replaceAll(\"; wv| Version/[345].0\",''),\n\"X-Requested-With\":\"XMLHttpRequest\"\r\n})",
    "jsLib": "function gengxin(){\nconst {java, source} = this;\n\tlet url0='https://gitee.com/lyc486/yuedu2/commits/main/订阅/洛娅橙/lyc.json?browser_history=0&page=1&per=3';\n\tlet rr0=java.get(url0,{'User-Agent': 'Mozilla/5.0 (Linux; Android 14)','X-Requested-With': 'XMLHttpRequest'}).body();\n\tlet gxlrr = com.jayway.jsonpath.JsonPath.read(rr0, '$.list[0:3].title');\n\tlet [gxlr, gxlr2, gxlr3] = gxlrr;\n\tlet banben = String(source.sortUrl).match(/let banben=\"([\\d\\.]+)\"/)[1];\n\tgxlr=String(gxlr).split(/^([^\\-]+)-/);\n\tgxlr[0]=='' ? '' : gxlr=['','0',gxlr[0]];\n\tlet gxts;\n\tif (gxlr[1]>banben){gxts=['更新','0,140,186'];}\n\telse {gxts= ['导入','76,175,80'];};\n\tlet htm = `<html>\n<head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<style>\ntable {\n\ttext-align: center;\n\tmargin: 0 auto;\n\t}\n.ann {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\theight: 50vh;\n\t}\nbutton {\n\tbackground-color: rgb(${gxts[1]});\n\tcolor: white;\n\tborder: none;\n\tborder-radius: 4px;\n\theight: 6vh;\n\twidth: 30vw;\n\toverflow: hidden;\n\t}\nbutton span {\n  cursor: pointer;\n  display: inline-block;\n  position: relative;\n  transition: 0.4s;\n}\nbutton span:after {\n  content: '>';\n  position: absolute;\n  opacity: 0;\n  top: 0;\n  right: 30px;\n  transition: 0.2s;\n}\nbutton:active span {\n  padding-right: 20px;\n}\nbutton:active span:after {\n  opacity: 1;\n  right: -40px;\n}\n</style>\n</head>\n<body>\n<table border=\"1\" cellspacing=\"0\">\n<th colspan=\"2\">最新日志：${gxlr[2]}</th>\n<tr>\n<td>仓库版本：${gxlr[1]}</td>\n<td>本地版本：${banben}</td>\n</tr>\n<tr>\n<td colspan=\"2\" style=\"text-align: left;\">往期日志：${gxlr2}<br>　　　　　${gxlr3}</td>\n</tr>\n</table>\n<div class=\"ann\">\n<a href=\"legado://import/importonline?src=https://gitee.com/lyc486/yuedu2/raw/main/订阅/洛娅橙/lyc.json\">\n<button><span>${gxts[0]}</span></button>\n</a>\n</div>\n<p style=\"font-size: 16px;\">导入订阅源窗口需手动选中，然后确认</p>\n<a href=\"legado://import/importonline?src=https://cdn.jsdelivr.net/gh/Luoyacheng/yuedu@main/订阅/洛娅橙/lyc.json\" style=\"font-size: 10px;\">备用链接</a>\n</body>\n</html>`;\nif(gxts[0]=='更新') {\njava.startBrowser(`data:text/html;base64,${java.base64Encode(htm)}`,'订阅源更新');return false;}\nreturn true;\r\n}\n\ntoastjs=`const toastStyle = document.createElement('style');\ntoastStyle.textContent = \".toast-container {position: fixed; z-index: 1000; pointer-events: none; display: flex; flex-direction: column; align-items: center;} .toast-container.top-center { top: 20px; left: 50%; transform: translateX(-50%); } .toast-container.top-left { top: 20px; left: 20px; } .toast-container.top-right { top: 20px; right: 20px; } .toast-container.bottom-center { bottom: 20px; left: 50%; transform: translateX(-50%); } .toast-container.bottom-left { bottom: 20px; left: 20px; } .toast-container.bottom-right { bottom: 20px; right: 20px; } .toast {background: rgba(0, 0, 0, 0.8); color: white; padding: 12px 14px; border-radius: 4px; margin-bottom: 10px;  word-break: initial; max-width: 80vw; opacity: 0; transform: translateY(20px); transition: opacity 0.3s, transform 0.3s; pointer-events: none;} .toast.show {opacity: 1; transform: translateY(0);} .toast.success {background: rgba(46, 204, 113, 0.9);} .toast.error {background: rgba(231, 76, 60, 0.9);} .toast.warning {background: rgba(241, 196, 15, 0.9);} .toast.info {background: rgba(52, 152, 219, 0.9);}\";\ndocument.head.appendChild(toastStyle);\nfunction showToast(message, duration = 3000, type = 'default', position = 'bottom-center') {\n  let container = document.querySelector('.toast-container');\n  if (!container) {\n    container = document.createElement('div');\n    container.className = 'toast-container';\n    document.body.appendChild(container);\n  }\n  container.className = \"toast-container \" + position;\n  const toast = document.createElement('div');\n  toast.className = \"toast \" + type;\n  toast.innerHTML = message;\n  container.appendChild(toast);\n  setTimeout(() => {\n    toast.classList.add('show');\n  }, 10);\n  setTimeout(() => {\n    toast.classList.remove('show');\n    setTimeout(() => {\n      if (toast.parentNode) {\n        toast.parentNode.removeChild(toast);\n      }\n    }, 300);\n  }, duration);\n}`;",
    "lastUpdateTime": 1770225326519,
    "loadWithBaseUrl": true,
    "loginUi": "[\n    {\n    \t\"name\": \"💾仓库\",\n    \t\"type\": \"button\",\n    \t\"action\": \"java.startBrowser('https://github.com/Luoyacheng/yuedu','')\",\n        \"style\": {\n            \"layout_flexGrow\": 2,\n            \"layout_flexBasisPercent\": -1,\n            \"layout_wrapBefore\": true}\n    \t},\n    \t{\n        \"name\": \"🔘樱花效果\",\n        \"type\": \"button\",\n        \"action\": \"bfqfun('樱花效果')\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1,\n            \"layout_wrapBefore\": flase}\n    },\n    \t{\n        \"name\": \"🧬激活\",\n        \"type\": \"button\",\n        \"action\": \"jihuo()\",\n        \"style\": {\n            \"layout_flexGrow\": 2,\n            \"layout_flexBasisPercent\": -1,\n            \"layout_wrapBefore\": flase}\n    }\n]",
    "loginUrl": "function login(){}\nfunction bfqfun(x) {\nlet xx = source.get('lyc'+x);\n//默认开启\nif(xx!=2) {source.put('lyc'+x,2);java.toast('⚫已关闭 '+x);}\nelse {source.put('lyc'+x,1);java.toast('🟢已开启 '+x);}\n\t}\nfunction jihuo() {\nlet sleep=Packages.java.lang.Thread.sleep;\t['　　　　　','·　　　　','··　　　','···　　','····　','·····'].forEach((_,i) =>{i+=6;cache.put('lycjihuo',Date.now()+'洛娅橙'+i);do{java.toast('\\n\\n正在激活'+_+'\\n');sleep(50);}while(--i)});\nif (+cache.get('lycjihuo').match(/\\d+/)+3e3>Date.now())\nif (cache.get('lycjihuo').endsWith(1)&&gengxin())\njava.longToast(`\n\n成功激活　　　　　\n版本号：${source.get('bb')}`);\nelse {cache.put('lycjihuo','');java.longToast('\\n\\n激活失败　　　　　\\n');}\n}",
    "preload": false,
    "ruleArticles": "<js>\nvar h=\"https://gitee.com\";\nvar i=h+\"/lyc486/yuedu/raw/master/favicon.svg\";\nvar m='https://miaogongzi.lanzout.com/';\nif (baseUrl.includes('\"type\":\"sy\"')) {\nif (Math.random()<0.5) gengxin();\n//java.put('xyy',m+'b01rgkhhe');\n    result=java.getElement('$..blobs[*]');\n\t[{\n\t\tn:'主页',\n\t\tt:'个人网页',\n\t\ti:i,\n\t\tu:'data:;base64,QQ,{\"type\":\"url\"}'\n}].concat(\n    [{\n        n:'阅读Sigma版 下载',\n        i:i,\n        t:java.timeFormat(new Date()),\n        u:h+'/api/v5/repos/lyc486/legado/releases?page=1&per_page=6&direction=desc'\n    }]\n,\nArray.from(result).map(x=>{\n\tlet n=x.name;\n\tlet t=x.last_commit.time;\n\treturn {\n\t\tn:n.includes('.apk')?('阅读：'+n):'',\n\t\tt:t?java.timeFormat(new Date(t)):'',\n\t\ti:i,\tu:`@js:'data:;base64,${java.base64Encode(x.url)},{\"type\":\"url\"}'`};\n}).reverse()\n)\n\n}\n else if (baseUrl.startsWith('data')) {\n    let ssr = java.ajax(\"https://gitee.com/lyc486/yuedu2/file_list?ref=main\");\n    let key = java.hexDecodeToString(result);\n    let ma = ssr.match(new RegExp('\\\"[^\"]*'+key+'[^\"]*\\\"',\"gi\"));\n    if (ma==null) {[];}\n    else {\n        ma.map( x => {\n            let y= x.match(/^\"([^\\/]+)\\/([^\\/]+)\\//);\n            if (y==null) {\n                return {};\n            }\n      return {\n        n:y[2],\n        i:i,\n        t:y[1],\n        u:h+\"/lyc486/yuedu2/tree/main/\"+y[1]+\"/\"+y[2]+',{\"webView\": true}'\n    };\n        })\n    }\n} else if (baseUrl.includes(m)) {\n    let webr = result;\neval(webr.match(/var pgs;(?:\\s*.+){3}/)[0]);\neval('var obj={'+webr.match(/data :\\s*\\{[^}]+\\}/)+'}');\nlet body = Object.entries(obj.data)\n.map(([key, value]) => `${key}=${value}`)\n.join('&');\nwebr = java.ajax(m+'filemoreajax.php'+`,{\"method\":\"POST\",\"body\":\"${body}\"}`);\nwebr = com.jayway.jsonpath.JsonPath.read(webr,'$.text[*]');\nArray.from(webr).map(x=>{\n\treturn {\n\t\tn:x.name_all,\n\t\tt:'喵公子 蓝奏云 '+x.time,\n\t\ti:i,\n\t\tu:m+x.id+',{\"webView\": true}'};\n});\n}\nelse {\nresult=java.getElement('$..tree[*]');\nArray.from(result).map(x=>{\n\treturn {\n\t\tn:x.path,\n//\t\tt:java.timeFormat(new Date(x.last_commit.time)),\n\t\ti:i,\n\t\tu:x.url};\n})\n}\n</js>",
    "ruleContent": "@js:\r\nlet title,title2,durl,body='';\r\ntry {title=rssArticle.title;title2=rssArticle.sort;}\ncatch (err) {\nsource.put('bb','0.0.0');\nif (baseUrl.includes(encodeURI('字典')))\ntitle='字典';\nelse if (baseUrl.includes(encodeURI('净化')))\ntitle='净化';\nelse if (baseUrl.includes(encodeURI('目录')))\ntitle='目录';\nelse if (baseUrl.includes('miaogongzi.lanz'))\ntitle='蓝奏';\nelse title='主页',java.toast('请安装测试版');\ntitle2=title;}\ntry {durl=java.hexDecodeToString(result);\ntitle2='软件下载';\ntitle=title.replaceAll('legado_app_','');}catch(e){}\nif (baseUrl.includes('miaogongzi.lanz'))\nresult = `<html><head>\n<meta http-equiv=\"refresh\" content=\"0; url='https://miaogongzi.lanzout.com${java.getString('#downurl@href')}\">\n</head>\n</html>`;\nelse if (title == '主页')\r\nresult = `<html><head>\n<meta http-equiv=\"refresh\" content=\"0; url='https://loyc.xyz\">\n</head>\n</html>`;\nelse if (title.includes('Sigma版')) {\n    body+=`<h1>下载Sigma</h1><a href=\"https://gitee.com/lyc486/legado/commits/main\">完整日志</a>`;\n  let webg = com.jayway.jsonpath.JsonPath.parse(result);\nlet chars = webg.read('$[*]');\n//Packages.java.util.Collections.reverse(chars);\nfor (let char of chars) {\n    body+=`<hr>`;\n    let nm = char.name;\n    body+=`<h3>版本：${nm}</h3>`;\n    let body2 = (char.body+'').replace(/(\\s[\\-*]\\s)/g,'<br>$1');\n    body+=`<p>更新内容：</p><pre style=\"white-space: pre-line;\">${body2}</pre>`;\n    let ls=char.created_at;\n    let time =java.timeFormat(new Date(ls));\n    body+=`<p>更新时间：${time}</p>`;\n    let apks = char.assets;\n    for (let apk of apks) {\n        let nm = apk.name;\n        if (nm.endsWith('apk')) {\n            let durl = apk.browser_download_url;\n            body+=`<h4>名称：${nm}</h4>\n            <div class=\"dls\">\n            <a class=\"dlb dlbs btn1\" href=\"${durl}\">立即下载</a>\n            <a class=\"dlb dlbs btn2\" href=\"yuedu://opapp/${durl}\">下载器</a>\n            </div>\n            `;\n        }\n    }\n    body+=`<br><br>`;\n  }\n}\nelse if (title2 == '软件下载') {\nif (!durl.startsWith(\"https:\"))\tdurl='https://yd.loyc.xyz'+durl.match(/main(.+)/)[1];\nbody=`<h3>${title}</h3><div class=\"dl\">\n<a class=\"dlb btn1\" href=\"${durl}\">立即下载</a>\n<a class=\"dlb btn2\" href=\"yuedu://opapp/${durl}\">使用下载器</a>\n</div>`;\n} else {\n    let trs = java.getElement(\"$.tree[*]\");\r\n    let re = '';\n    for (let tr of trs) {\n        if (tr.type==\"blob\") {\n            let nm = tr.path;\n            let rzurl = \"https://gitee.com/lyc486/yuedu2/commits/main/\" + title2+\"/\"+title+\"/\"+nm;\n      let url = rzurl + '?browser_history=0&page=1&per=5';\r\n        let rzs = java.ajax(url);\r\n        rzs = com.jayway.jsonpath.JsonPath.read(rzs, '$.list[0:5]');\n        let i = 0;\n        for (let rz of rzs) {\n            if (i==0) {\n                if (title == '洛娅橙') {\r\n            let banben1=String(rz.title).match(/^([^\\-]+)-/);\r\n            banben1 = banben1 ? banben1[1] : '9.9.9';\r\n            let banben2 = String(source.sortUrl).match(/let banben=\"([\\d\\.]+)\"/)[1];\r\n            if (banben1>banben2) java.longToast('\\n订阅源本体有更新');\r\n        }\n        re += `<tr style=\"height: 0.1em;\"></tr>\r\n<tr>\r\n<td colspan=\"4\">${nm}</td>\r\n<td class=\"time\" colspan=\"3\">\n${java.timeFormat(new Date(rz.date).getTime())}\n</td>\r\n<td colspan=\"1\"><a href=\"${rzurl}\">查看</a></td>\r\n</tr>\r\n<tr style=\"height:3em;\" data-url=\"${rzurl}\">\r\n<td colspan=\"2\"><button class=\"btn\" id=\"btn1\">导 入</button></td>\r\n<td colspan=\"2\"><button class=\"btn\" id=\"btn2\">导 入</button></td>\r\n<td colspan=\"2\"><button class=\"btn\" id=\"btn3\">备 用</button></td>\r\n<td colspan=\"2\"><button class=\"btn\" id=\"btn4\">备 用</button></td>\r\n</tr>`;\nre += `<tr><td style=\"text-align: left;\" colspan=\"8\"><p id=\"sgtxt\">${rz.title}</p>`;\n            } else {\n re += `<p>${rz.title}</p>`;\n            }\n            i++;\n        }\n        re += `</td></tr>`;\n//处理re结束\n                 \n        }\n    }\n\nbody=`<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\" align=\"center\">\n<caption><h2>${title}</h2></caption>\n<tr>\n<td colspan=\"4\">文件名</td>\n<td colspan=\"3\">更新时间</td>\n<td colspan=\"1\">日志</td>\n</tr>\n${re}\n<tr><td id=\"js\" colspan=\"4\"></td><td id=\"ts\" colspan=\"4\"></td></tr>\n</table>`;\r\n}\n\nif (body!='') {\nlet yht='',yhjs='';\nif (source.get('lyc樱花效果')!=2) {\nyht='<div id=\"gif-c\"><img id=\"yhs-gif\" src=\"https://wimg.588ku.com/gif320/24/07/09/eaa8a92d993345498c6329443903499c.gif\" alt=\"gif-yhs\"></div>';\nyhjs=source.get('yhxyapi');\nif (yhjs.length()<3999) {\n\tyhjs = java.ajax('https://gitee.com/lyc486/yuedu/raw/master/yinghua.js');\n\tif (yhjs.length()>3999)\n\tsource.put('yhxyapi',yhjs);\n\telse yhjs='';}\n\tyhjs=`<script>${yhjs}</script>`;}\n\nresult = `<!DOCTYPE html>\n<html><head>\n<title>${title2}</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">\r\n<style>\n:root {\n\t--show-color: rgba(100,100,100,0.7);}\n@media (prefers-color-scheme: dark) {\n\t:root {\n\t--show-color: rgba(250,250,250,0.9);}\n}\n@keyframes pulse {\n\t0% { box-shadow: 0 0 0 0 rgba(150, 201, 61, 0.7); }\n\t70% { box-shadow: 0 0 0 15px rgba(150, 201, 61, 0); }\n\t100% { box-shadow: 0 0 0 0 rgba(150, 201, 61, 0); }\n}        \n\nhtml {\noverflow-x: clip;}\nbody {\nuser-select: none;\nheight: -webkit-fill-available;\nposition: relative;\noverflow: hidden;}\n.dl {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\t}\n.dls {\n\tdisplay: flex;\n\tflex-direction: row;\n    justify-content: center;\n\talign-items: center;\n}\n.btn1 {\n\t\tbackground: linear-gradient(to right, #00b09b, #96c93d);\t\n}\n.btn2 {\n\t\tbackground: linear-gradient(to right, #c93d96, #b09b00);\t\n}\n.dlb {\n\tanimation: pulse 2s infinite;\n\twidth: 33%;\n\tdisplay: inline-block;\n\tcolor: white;\n\tpadding: 18px 45px;\n\tfont-size: 1.4rem;\n\tfont-weight: 600;\n\tborder-radius: 60px;\n\ttext-decoration: none;\n\tbox-shadow: 0 10px 25px rgba(0, 176, 155, 0.4);\n\ttransition: all 0.3s ease;\n\tposition: relative;\n\tmargin: 30px 0;\n\toverflow: hidden;\n\tborder: none;\n\ttext-align: center;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dlbs {\n    width: 22%;\n    padding: 8px 16px;\n    font-size: 0.8rem;\n   margin: 0 16px;\n}\n.dlb:hover {\n\ttransform: translateY(-5px);\n\tbox-shadow: 0 15px 30px rgba(0, 176, 155, 0.6);\n}\n.dlb:active {\n\ttransform: translateY(0);\n}\n.dlb::after {\n\tcontent: \"\";\n\tposition: absolute;\n\ttop: -50%; left: -60%;\n\twidth: 20px; height: 200%;\n\tbackground: rgba(255, 255, 255, 0.3);\n\ttransform: rotate(25deg);\n\ttransition: all 0.6s;\n}\n.dlb:hover::after {\n\tleft: 120%;\n}\ntable {\nwidth: 100%;\ntable-layout: fixed;\ntext-align: center;\nmargin: 0 auto;\nword-break: break-all;}\r\n.time,.txt-s {font-size:10pt;}\na {text-decoration: none;}\np {padding-left: 5ex;\ntext-indent: -5ex;\nmargin: 0 auto;}\n#gif-c {\nposition: fixed;\ntop: -5px;\nright: 0px;\nz-index: 9;}\n#yhs-gif {\nwidth: 110px;\nheight: auto;}\n#sgtxt {\ntext-shadow: 0 0 4px var(--show-color);}\n</style></head>\n<body>\n${body}\n${yht}\n<script> \n${toastjs}\n</script> \n<script> \nfunction daoru(url,id,copy=false) {\n\turl = url.match(/\\\\/main\\\\/(.+)/)[1];\n\tvar yy=\"\";\n\tswitch(id) {\n\t\tcase \"1\": yy = \"https://gitee.com/lyc486/yuedu2/raw/main/\";break;\n\t\tcase \"2\": yy = \"https://yd.loyc.xyz/\";break;\n\t\tcase \"3\": yy = \"https://raw.githubusercontent.com/Luoyacheng/yuedu/main/\";break;\n\t\tcase \"4\": yy = \"https://cdn.jsdelivr.net/gh/Luoyacheng/yuedu@main/\";break;}\nyy += url;\nif (copy) return yy;\nwindow.location.href=\"legado://import/importonline?src=\"+yy;}\n\nconst js=document.getElementById('js');\nconst ts=document.getElementById('ts');\nlet Timer = null;\nlet Timer2 = null;\nlet pressTime = 0;\nlet timerInterval = null;\nconst btns = document.querySelectorAll('.btn');\nbtns.forEach(btn => {\r\nbtn.addEventListener('pointerdown', function () {\n\tconst btnId = this.id.replace('btn', '');\n\tconst url = btn.closest(\"tr\").dataset.url;\n\tpressTime = 0;\n\ttimerInterval = setInterval(() => {\n\t\tpressTime += 10;\n\t\tjs.textContent = pressTime+\"ms\";\n\t\t}, 10);\n\t\tTimer = setTimeout(() => {\n   copyToClipboard(daoru(url, btnId,true));\n }, 800);\n});\n\r\nbtn.addEventListener('pointerup', function () {\r\nclearTimeout(Timer);\nclearInterval(timerInterval);\nif (pressTime > 0 && pressTime < 800) {\nconst btnId = this.id.replace('btn', '');\nconst url = btn.closest(\"tr\").dataset.url;\ndaoru(url, btnId);}\nTimer2 = null;\nTimer2 = setTimeout(() => {\nts.textContent = js.textContent = \"\";\n }, 900);\n});\n\r\nbtn.addEventListener('pointercancel', function () {\nclearTimeout(Timer);\nclearInterval(timerInterval);\n});\n\n});\n\nfunction copyToClipboard(text) {\nnavigator.clipboard.writeText(text).then(() => {\nts.textContent = \"已复制订阅链接\";\n}).catch(err => {\n showToast(\"复制失败: \" + err);\n});\n}\n</script>\n${yhjs}\r\n</body>\r\n</html>`;}\r\nresult",
    "ruleImage": "i",
    "ruleLink": "u",
    "ruleNextPage": "@js:java.get('xyy');",
    "rulePubDate": "t",
    "ruleTitle": "n",
    "shouldOverrideUrlLoading": "var k=/^yuedu:/.test(url);\nif (k)\njava.openUrl(url.replace('yuedu://opapp/',''),'application/octet-stream');\nk",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\r\nlet banben=\"2.3.0\";\nsource.put('bb',banben);\r\njava.toast('\\n欢迎🎉');\nlet url = \"https://gitee.com/api/v5/repos/lyc486/yuedu2/git/trees/main\";\r\nlet rr = java.ajax(url);\nlet trs = com.jayway.jsonpath.JsonPath.read(rr, '$..tree[*]');\r\nlet re = '首页::data:;base64,qq,{\"type\":\"sy\"}\\n';\nfor (let tr of trs) {\n    let nm = tr.path;\n    if (/^[一-ꀀ]/.test(nm)) {\n        let ur=tr.url;\n     re += nm+'::'+ur+'\\n';\n}\n}\r\nPackages.java.lang.Thread.sleep(100);\r\nre\r\n</js>",
    "sourceComment": "data:;base64,{{java.base64Encode(key)}},{\"type\":\"lyc\"}",
    "sourceGroup": "noh",
    "sourceIcon": "https://gitee.com/lyc486/yuedu/raw/master/favicon.gif",
    "sourceName": "洛娅橙的订阅",
    "sourceUrl": "https://www.luoyacheng.ip-ddns.com",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 59,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "id.dlNews@tag.td||.title",
    "ruleContent": "<js>\r\nhtml = result\r\n//总页数-1(最后一页没有图\r\npage = parseInt(java.getString('class.pager@tag.li.-3@tag.a@text'))\r\njava.log(\"共\"+page+\"页\")\r\nif(page>1){\r\nnurl=[];\r\nbase=baseUrl.replace('.aspx','p');\r\nfor(i=2;i<=page;i++){\r\n\tnurl.push(base+i+\".aspx,{'retry':16}\")\t\r\n}\r\n\r\nres=java.ajaxAll(nurl)\r\nfor(i in res){\r\n\thtml += org.jsoup.Jsoup.parse(res[i].body())\r\n}\r\n}\r\n</js>\r\n\r\nid.content@tag.img@src##\\n##,\r\n\r\n<js>\r\nli='\\n'\r\nlist=result.split(',')\r\nfor(i in list){\r\n\t\tli += '<li><img src=\"https://www.166w.cc/images/logo.jpg_gzip.aspx\" data-src=\"'+list[i]+'\"></li>\\n'\r\n\t}\r\n\r\n</js>\r\n\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\r\n\r\n<h3>{{@@.title2@text}}</h3>\r\n<h6>{{@@id.printBody@tag.div.2@text}}</h6>\r\n<h6 id='hits'></h6>\r\n<ul id=\"box\">\r\n{{result}}\r\n</ul>\n<div id='relists'></div>\r\n<script>\r\n    var wqcms = new Object();\r\n</script>\r\n{{@@tag.script.-3@html##$(function(){wqcms.imgCont=$i('content');wqcms.imgResize();InitContStyle();wqcms.dispVars();});}}\r\n<script>\r\n    hits = document.getElementById(\"hits\");\r\n    hits.innerHTML = \"观看:\" + wqcms.hits + \"次\";\r\n</script>\r\n\r\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\r\n<script>\n\r\n\troot = document.getElementById('box')\n\trelists = document.getElementById('relists')\n\t  pl = \"{{@@class.relist@tag.li@class.sum@textNodes##\\n##\\$}}\".split(\"$\");\r\n                times = \"{{@@class.relist@tag.li@class.author@class.date@textNodes##\\n##\\$}}\".split(\"$\");\r\n                layers = \"{{@@class.relist@tag.li@class.reLayer@text##\\n##\\$}}\".split(\"$\");\r\n\r\n                for (x = layers.length - 1; x >= 0; x--) {\r\n                    relists.innerHTML += \"<h4>\" + layers[x] + \"<span style='color: #999; font-size: 12px;'>\" + times[x] + \"</span><br>\" + pl[x] + \"</h4>\"\r\n                }\r\n\tlazy = new IntersectionObserver(entires => {\r\n\t\tentires.forEach(item => {\r\n\t\t\tif(item.isIntersecting){\r\n\t\t\t\titem=item.target\r\n\t\t\t\titem.src=item.getAttribute('data-src')\r\n\t\t\t\tlazy.unobserve(item)\r\n\t\t\t}\r\n\t\t})\r\n\t}, {\r\n\t\troot: root,\r\n\t\tthreshold: [0],\r\n\t\trootMargin:\"0px 0px 500px 0px\"\r\n\t})\r\n\r\nimgs = document.getElementsByTagName('img')\r\nArray.from(imgs).forEach(item => {\r\n\t\tlazy.observe(item)\r\n\t})\r\n\r\n//查看大图插件\r\nnew Viewer(root,{title:false,interval:3000})\r\n</script>\r\n",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "class.pager@tag.li.-2@tag.a@href",
    "rulePubDate": ".date@textNodes",
    "ruleTitle": "tag.img@alt||tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://www.24ii.cc/c49.aspx\r\n欧美::https://www.24ii.cc/c71.aspx\n随机::https://www.24ii.cc/c49p{{ Math.ceil(Math.random()*70) }}.aspx\r\n搜索::https://www.24ii.cc/search.aspx?keyword={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('美女'):source.getVariable()}}&where=title",
    "sourceGroup": "h",
    "sourceIcon": "https://www.166w.cc/favicon.ico",
    "sourceName": "24FA美女频道-每天6更",
    "sourceUrl": "https://www.24ii.cc",
    "style": "/*标题相关*/\nh3{text-align:center}\nh6{margin-bottom:0}\n* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 60,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".lpic li",
    "ruleContent": "class.movurl@a@html&&class.thumb l@html&&class.info@html\n<js>\ndoc=org.jsoup.Jsoup.parse(result);\nimg=doc.select('img');\ninfo=doc.select('.info').html();\n\nzxb='';dxb='';\nlist=doc.select('a:not(:last-child)').toArray();\n\nfor(i in list){\na='http://www.iyinghua.io'+list[i].select('a').attr('href');\nb='http://www.iyinghua.io'+list[list.length-1-i].select('a').attr('href');\nzxb=zxb+'<button id=\"but'+i+'\" class=\"button\" value=\"'+a+'\">'+list[i].text()+'</button>';\ndxb=dxb+'<button id=\"dbut'+i+'\" class=\"button\" value=\"'+b+'\">'+list[list.length-1-i].text()+'</button>'\n}\n\nzx='<div id=\"zx\" style=\"display:block\">'+zxb+'</div>';\ndx='<div id=\"dx\" style=\"display:none\">'+dxb+'</div>';\n\n\nscript='(function(){$(\".button:first\").addClass(\"upBtn\");url=$(\".button:first\").val();video(url)})();\\n$(\".button\").click(function(){id=$(this).attr(\"id\");\\nid=\"#\"+id;\\n$(\".button\").removeClass(\"upBtn\");\\n$(id).addClass(\"upBtn\");\\nurl=$(id).val();video(url)});\\n$(\"li\").click(function(){id=$(this).attr(\"id\");\\nid=\"#\"+id;\\n$(\"li\").removeClass(\"active\");\\n$(id).addClass(\"active\");\\nif(id==\"#b1\"){$(\"#juji\").show();$(\"#info\").hide()}else{$(\"#info\").show();$(\"#juji\").hide()}});$(\"#dxb\").click(function(){if($(\"#dxb\").text()==\"倒序\"){$(\"#dxb\").text(\"正序\");$(\"#dx\").show();$(\"#zx\").hide();}else{$(\"#dxb\").text(\"倒序\");$(\"#dx\").hide();$(\"#zx\").show();}}) ';\n\ntap='<div id=\"tab\" style=\"display:inline;\"><ul><li id=\"b1\" class=\"active\">剧集</li><li id=\"b2\">剧情介绍</li><button id=\"dxb\" style=\"display:inline\">倒序</button></ul></div>';\n\nurl='function video(url){$.get(url,function(result){src=result.match(/data-vid=\"(.*?)\"/)[1];jx=\"https://tup.iyinghua.com/?vid=\"+src+\"&m=1\";$(\"#dd\").html(src);$(\"#ff\").attr(\"src\",jx)})};\\n'\n\njuji='<div id=\"juji\" style=\"display:block\">'+zx+dx+'</div>';\ninfo='<div id=\"info\" style=\"display:none\">'+img+info+'</div>';\n\nresult='<html><head> <script src=\"https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js\"> </script> </head>\\n<div id=\"dd\">\\n</div><iframe src=\"\" width=\"100%\" height=\"300px\" id=\"ff\" scrolling=\"no\"allowfullscreen=\"true\" webkitallowfullscreen=\"true\" frameborder=\"0\" autoplay=\"true\" mozallowfullscreen=\"true\"></iframe>\\n'+tap+'\\n<div id=\"html\" vspace=\"120\">\\n'+juji+info+'\\n</div>\\n<script>\\n'+url+script+'\\n</script>\\n</html>'\n</js>",
    "ruleDescription": "",
    "ruleImage": "//@src",
    "ruleLink": "http://www.iyinghua.io{{//h2//@href}}",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "//p/text()",
    "ruleTitle": "//@title&&//font/text()&&//span[2]//text()##\\n##∣",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "新番::http://www.iyinghua.io/{{java.timeFormat(Date.now()).match(/(\\d{4})/)[1]}}/\nOVA::http://www.iyinghua.io/36\n剧场::http://www.iyinghua.io/37\n真人::http://www.iyinghua.io/38\n搜索::http://www.iyinghua.io/search/{{source.getVariable()}}/\n日本动漫::http://www.iyinghua.io/japan/\n国产动漫::http://www.iyinghua.io/china/\n欧美动漫::http://www.iyinghua.io/american/\n动漫电影::http://www.iyinghua.io/movie/",
    "sourceGroup": "noh",
    "sourceIcon": "http://www.iyinghua.io/js/20180601/ico.png",
    "sourceName": "樱花动漫",
    "sourceUrl": "http://www.iyinghua.io",
    "style": ".button{outline:none;width:90px; height:35px; border-radius: 10px; border:3px solid #fff; background-color: #E9E4E0; }\n.upBtn{outline:none;width:90px; height:35px; border-radius: 10px; border:3px solid #fff; background-color: #ffffcc; }\nimg {\nfloat:left;margin-right:30px;\nwidth:150px}\n\n#intro{float:left;\nborder-style:double;\nborder-color:black;padding:5px;\nborder-width:5px}\n#html{margin-top:20px}\n#dxb{border-radius: 1px; border:3px solid #fff; background-color: #E9E4E0;outline:none}\n\nul{\nborder-bottom:0;\n\theight:40px;\n}\nli {\n\tlist-style:none;\n\tfloat:left;\n\theight:34px;\n\tmargin-right:20px;\n\tcolor:#909090;\n\tline-height:34px;\n}\nli.active {\n\tcolor:#50B400;\n\tborder-bottom:3px solid #50B400;\n}\n#dd {\npadding:5px 0;\noverflow:scroll;\nbackground-color:#E9E4E0;\n}\nhtml{width:100%}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 61,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 12; 2112123AC) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36\",\"Referer\":\"https://yanetflix.me\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\nvar element='class.module-item';\n\nvar source=source.getVariable();\n\nif (baseUrl.match(/search/)){\n\tjava.log(String(source).length)\n\t\n\tString(source).length==0?java.longToast(\"没有搜索关键词，请在右上角源变量中输入\"):java.longToast(source+\"：搜索完成\")\n\t\n\tsearch_url=baseUrl+\"?wd=\"+source;\n\t\n\tdata=java.ajax(search_url);\n\t\n\tjava.setContent(data);\n\t\n\tresult=java.getElement(element)\n\t\n\t}else{\n\t\t\n\t\tresult=java.getElement(element)\n\t\t\n\t\t}\n\tresult\n</js>",
    "ruleContent": "<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.jsdelivr.net/gh/ljun223/reader3@main/js/yingshi.css\" />\n<script src=\"//cdn.staticfile.org/jquery/2.2.4/jquery.min.js\"></script>\n</head>\n\n<div class =\"dz\" width=\"100%\"></div>\n\n<div class=\"dplayer\" id=\"dplayer\" style=\"width:100%;height:300\"></div>\n\n<div id=\"tab\"><ul>{{@@class.module-tab-item tab-item@span@html##span##a}}<a>内容简介</a></ul></div>\n<br>\n<br>\n{{@@class.module-play-list-content@html}}\n\n<ul class=\"module-play-list-content jianjie\" ><img src=\"{{@@class.module-info-poster@img@data-original}}\">{{@@class.module-info-introduction@p@html}}</ul>\n\n<script>\nfunction video(url){\n$.get(url,function(result){\njson=result.match(/var player.*?=(\\{.*?\\})</)[1];\nvar src=JSON.parse(json).url;\n\n\tvar path=\"https://yanetflix.me/static/js/playerconfig.js\";\n$.get(path,function(js){\n\tjs=js.match(/player_list=(\\{.*?\\}),MacPlayerConfig/)[1]\n\tfrom=JSON.parse(json).from;\n\tsrc=JSON.parse(js)[from].parse+src;\niframe= '<iframe width=\"100%\" height=\"100%\" src=\"'+src+'\" frameborder=\"0\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\" mozallowfullscreen=\"mozallowfullscreen\" msallowfullscreen=\"msallowfullscreen\" oallowfullscreen=\"oallowfullscreen\" webkitallowfullscreen=\"webkitallowfullscreen\"></iframe>';\n\n$(\".dplayer\").html(iframe)\n\n$(\".dz\").html(src);\n})\n});\n}\n\n(function(){\n\t\nurl=$(\"button:first()\").val()\nvideo(\"{{source.sourceUrl}}\"+url)\n\t\n$(\".module-play-list-content\").hide();\n$(\".module-play-list-content:eq(0)\").show();\n$(\"li:eq(0)\").addClass(\"active\")})();\n\n$(\"button\").ready(function(){\nurl=$(this).val();\n$(\"button:first\").addClass(\"upBtn\");\nvideo(url);\n});\n\n$(\"button\").click(function(){\n$(\"button\").removeClass(\"upBtn\");\n$(this).addClass(\"upBtn\");\nurl='https://yanetflix.me'+$(this).val();\nvideo(url);\n});\n\n$(\"li\").click(function(){\n$(\"li\").removeClass(\"active\");\n$(this).addClass(\"active\");\nindex=$(this).index();\n$(\".module-play-list-content\").hide();\n$(\".module-play-list-content:eq(\"+index+\")\").show();\n})\n</script>\n</html>\n\n@js:\nresult = result.replace(/<a.*?href=\"([^\"]+)\".*?><span>([^<]+)<\\/span><\\/a>/g,'<button value=\"$1\">$2</button>').replace(/<a/g,'<li').replace(/<\\/a>/g,'</li>')\n",
    "ruleImage": "img@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.module-item-cover@text||class.module-info-item-content@text",
    "ruleTitle": "a@title||strong@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://yanetflix.me/vod/search/-------------.html\n电影::https://yanetflix.me/vod/show/1-----------.html\n电视剧::https://yanetflix.me/vod/show/2-----------.html\n综艺::https://yanetflix.me/vod/show/3-----------.html\n动漫::https://yanetflix.me/vod/show/4-----------.html",
    "sourceComment": "",
    "sourceGroup": "noh",
    "sourceIcon": "https://ugc.hitv.com/3/22040215100116D5902FA5F85F30A2245E0DAAAAFMjky/uyu3xI0.png",
    "sourceName": "鸭奈飞",
    "sourceUrl": "https://yanetflix.me",
    "style": ".dz {\npadding:5px 0;\noverflow:scroll;\nbackground:#1C1B1E;color:#D3D3D3;\n}\nimg{\n\tfloat:left;\n\tmargin:10px;\n\twidth:50%\n\t}\np{\n\tmargin:10px;\n\tcolor:white;\n\t}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 63,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 13; 2112123AC) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUrl": "https://sigu.cc",
    "preload": false,
    "ruleArticles": "<js>\nvar source=source.getVariable()\nif(baseUrl.match(/search/)){\n  if(String(source)==0){\n\t  java.longToast(\"当前未输入搜索内容！\")\n\t  }else{\n\t  \turl=\"https://sigu.cc/search/-------------.html?\"+\"wd=\"+source+\"&submit=\";\n\t  \tjava.log(url)\n\t  html=java.ajax(url);\n\t  //java.log(html)\n\t  \n\t  if(html.match(/频繁操作/)){\n\t  \t\n\t  \tjava.longToast(\"搜索间隔3秒，请不要频繁操作哦！\");\n\t  \tjava.startBrowserAwait(url,\"等待跳转返回\")\n\t  \t\n\t  \t}else if(html.match(/请输入验证码/)){\n\t  //java.log(\"输入验证码\")\n\t  \nyzm=java.getVerificationCode(\"https://sigu.cc/index.php/verify/index.html?\");\n\t  \t\tverifi_url=\"http://sigu.cc/index.php/ajax/verify_check?type=search&verify=\"+yzm+\",\"+JSON.stringify({\"cookie\":cookie})\n\t  \t\t\n\t  \t\tdata=java.ajax(verifi_url)\n\t  \t\t\n\t  \t java.log(verifi_url);\n\t  \t\n\t  \tcookie=java.getCookie(verifi_url);\n\t  \t\n\t  java.log(cookie);\n\t  \n\t  url=url+\",\"+JSON.stringify({\"cookie\":cookie});\n\t  \t\n\t  java.log(url)\n\t  \thtml=java.ajax(url)\n\t  \t}\n\t  java.setContent(html)\n\t  list=java.getElement(\"id.searchList@li\")\n\t  \t}\n\t }else{\n\t \tlist=java.getElement(\"class.myui-vodlist__box\")\n\t \t}\n\t \tlist\n</js>",
    "ruleContent": "<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.jsdelivr.net/gh/ljun223/reader3@main/js/yingshi.css\" />\n<script src=\"//cdn.staticfile.org/jquery/2.2.4/jquery.min.js\"></script>\n</head>\n<div class =\"dz\" width=\"100%\"></div>\n\n<div class=\"dplayer\" id=\"dplayer\" style=\"width:100%;height:350\"></div>\n\n<div id=\"tab\"><ul>{{@@class.nav nav-tabs active@a@html}}</ul></div>\n{{@@class.myui-content__list@html}}\n\n<script>\nfunction video(url){\n$.get(url,function(result){\n\tjson=result.match(/var player.*?=(\\{.*?\\})</)[1];\nvar src=JSON.parse(json).url;\nsrc=decodeURIComponent(atob(src));\nvar path=\"https://sigu.cc/static/js/playerconfig.js\";\n$.get(path,function(js){\n\tjs=js.match(/player_list=(\\{.*?\\}),MacPlayerConfig/)[1]\n\tfrom=JSON.parse(json).from;\n\tparse=JSON.parse(js)[from].parse;\n\turl=parse+src;\n\tif(parse.match(/dmmoyu/)){\turl=\"https://dmmoyu.com/player/analysis.php?v=\"+src\n\t\t}\n\t\niframe= '<iframe width=\"100%\" height=\"100%\" src=\"'+url+'\" frameborder=\"0\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" allowfullscreen=\"true\" mozallowfullscreen=\"mozallowfullscreen\" msallowfullscreen=\"msallowfullscreen\" oallowfullscreen=\"oallowfullscreen\" webkitallowfullscreen=\"webkitallowfullscreen\">';\n\n$(\".dplayer\").html(iframe)\n$(\".dz\").html(url);\n})\n});\n}\n\n(function(){\nurl=$(\"button:first()\").val();\nvideo(\"{{source.sourceUrl}}\"+url);\n\t\n$(\".myui-content__list\").hide();\n$(\".myui-content__list:eq(0)\").show();\n$(\"li:eq(0)\").addClass(\"active\")})();\n\n$(\"button\").ready(function(){\nurl=$(this).val();\n$(\"button:first\").addClass(\"upBtn\");\nvideo(url);\n});\n\n$(\"button\").click(function(){\n$(\"button\").removeClass(\"upBtn\");\n$(this).addClass(\"upBtn\");\nurl='https://sigu.cc'+$(this).val();\nvideo(url);\n});\n\n$(\"li\").click(function(){\n$(\"li\").removeClass(\"active\");\n$(this).addClass(\"active\");\nindex=$(this).index();\ntext=$(this).text()\nif(text.match(\"本站\")){alert(\"该源有广告，不建议使用\")}\n$(\".myui-content__list\").hide();\n$(\".myui-content__list:eq(\"+index+\")\").show();\n})\n</script>\n</html>\n\n@js:\nresult = result.replace(/<li.*?><a.*? href=\"([^\"]+)\">([^<]+)<\\/a><\\/li>/g,'<button value=\"$1\">$2</button>').replace(/<a/g,'<li').replace(/<\\/a>/g,'</li>')",
    "ruleDescription": "",
    "ruleImage": "class.lazyload@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.lazyload@text",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://sigu.cc/search\n电影::https://sigu.cc/type/m.html\n电视剧::https://sigu.cc/type/tv.html\n综艺::https://sigu.cc/type/va.html\n动漫::https://sigu.cc/type/ct.html",
    "sourceComment": "",
    "sourceGroup": "noh",
    "sourceIcon": "https://inews.gtimg.com/newsapp_ls/0/11929387606/0",
    "sourceName": "思古影视",
    "sourceUrl": "https://sigu.cc",
    "style": "button{\n\tmargin:5px\n\t}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 64,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/003.webp",
    "sourceName": "樱花电影",
    "sourceUrl": "http://yhxdny.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 65,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/005.webp",
    "sourceName": "樱之空动漫",
    "sourceUrl": "https://www.skrcc.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 66,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\"User-Agent\": \"Mozilla/5.0 (Linux; U; Android 8.1.0; zh-CN; MI 8 Lite Build/OPM1.171019.019) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 UCBrowser/13.2.0.1100 Mobile Safari/537.36\"\n}",
    "lastUpdateTime": 1675946926480,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "id.content@h3",
    "ruleLink": "a@href",
    "ruleTitle": "a@textNodes",
    "showWebLog": false,
    "singleUrl": true,
    "sortUrl": "",
    "sourceGroup": "noh",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/010.webp",
    "sourceName": "迪欧影视",
    "sourceUrl": "http://www.dioudy.net/",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 67,
    "enableJs": true,
    "enabled": false,
    "enabledCookieJar": true,
    "header": "{\n\t \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36\",\n\t \"Referer\": \"{{baseUrl}}\"\n}",
    "lastUpdateTime": 1773948327361,
    "loadWithBaseUrl": true,
    "loginUrl": "https://nxnfs.zn-cn-yuyantv.com/login.php",
    "preload": false,
    "ruleArticles": "class.colVideoList",
    "ruleContent": "<js>\n// 直接获取主楼内容（id=\"read_tpc\"）\nvar rawHtml = java.getString('#read_tpc@html');\nif (!rawHtml) { rawHtml = ''; }\nvar html = String(rawHtml);\n\n// 去除主楼内的打赏模块（从 <!-- 新手机版打赏 START --> 或 <div class=\"reward-m\" 开始）\nvar cutPos = html.indexOf('<!-- 新手机版打赏 START -->');\nif (cutPos === -1) {\n    cutPos = html.indexOf('<div class=\"reward-m\"');\n}\nif (cutPos === -1) {\n    var rewardMatch = html.match(/<div\\s+class=\"[^\"]*\\breward-m\\b[^\"]*\"/i);\n    if (rewardMatch) {\n        cutPos = rewardMatch.index;\n    }\n}\nif (cutPos !== -1) {\n    html = html.substring(0, cutPos);\n}\n\n// 去除开头的提示框（<div class=\"pw_notice_bar\" ...>）\nvar noticeStart = html.indexOf('<div class=\"pw_notice_bar\"');\nif (noticeStart !== -1) {\n    var noticeEnd = html.indexOf('</div>', noticeStart);\n    if (noticeEnd !== -1) {\n        html = html.substring(0, noticeStart) + html.substring(noticeEnd + 6);\n    }\n}\n\n// 按顺序提取图片、视频和文字\nvar result = '';\nvar lastIndex = 0;\nvar regex = /<img\\b[^>]*\\/?>|<video\\b[^>]*>[\\s\\S]*?<\\/video>/gi;\nvar match;\n\nwhile ((match = regex.exec(html)) !== null) {\n    // 处理标签前的文本：<br>换行，移除其他HTML标签\n    var text = html.substring(lastIndex, match.index)\n        .replace(/<br\\s*\\/?>/gi, '\\n')\n        .replace(/<[^>]*>/g, '');\n    result += text;\n\n    var tag = match[0];\n    if (tag.indexOf('<img') === 0) {\n        // 提取真实图片URL：优先 data-original，其次 src\n        var srcMatch = tag.match(/data-original\\s*=\\s*[\"']([^\"']+)[\"']/i);\n        if (!srcMatch) {\n            srcMatch = tag.match(/src\\s*=\\s*[\"']([^\"']+)[\"']/i);\n        }\n        if (srcMatch) {\n            result += '<img src=\"' + srcMatch[1] + '\">';\n        } else {\n            result += tag; // 保底\n        }\n    } else {\n        // 视频标签原样保留\n        result += tag;\n    }\n\n    lastIndex = match.index + tag.length;\n}\n\n// 处理剩余文本\nvar remaining = html.substring(lastIndex)\n    .replace(/<br\\s*\\/?>/gi, '\\n')\n    .replace(/<[^>]*>/g, '');\nresult += remaining;\n\n// 确保返回值非空\nresult ? result : ' ';\n</js>",
    "ruleImage": "img@data-original||img@data-src||img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".text-muted@text",
    "ruleTitle": "a.1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "新片速递:: \n最新合集::/thread.php?fid=3&search=img&page={{page}}\n亚洲无码::/thread.php?fid=4&search=img&page={{page}}\n日本骑兵::/thread.php?fid=5&search=img&page={{page}}\n欧美新片::/thread.php?fid=13&search=img&page={{page}}\n国内原创::/thread.php?fid=15&search=img&page={{page}}\n中字原创::/thread.php?fid=16&search=img&page={{page}}\n三级写真::/thread.php?fid=18&search=img&page={{page}}\n实时BT::/thread.php?fid=343&search=img&page={{page}}\n图片专区:: \n网友自拍::/thread.php?fid=23&search=img&page={{page}}\n亚洲激情::/thread.php?fid=24&search=img&page={{page}}\n歐美激情::/thread.php?fid=25&search=img&page={{page}}\n熟女专图::/thread.php?fid=26&search=img&page={{page}}\n高跟丝袜::/thread.php?fid=27&search=img&page={{page}}\n卡通漫画::/thread.php?fid=28&search=img&page={{page}}\n图你所图::/thread.php?fid=345&search=img&page={{page}}\n原創达人::/thread.php?fid=135&search=img&page={{page}}\n美图秀秀:: \n唯美清纯::/thread.php?fid=21&search=img&page={{page}}\n亚洲正妹::/thread.php?fid=275&search=img&page={{page}}\n素人正妹::/thread.php?fid=276&search=img&page={{page}}\n角色扮演::/thread.php?fid=277&search=img&page={{page}}\n优质图片::/thread.php?fid=320&search=img&page={{page}}\nAV情报::/thread.php?fid=359&search=img&page={{page}}\n动态图片::/thread.php?fid=29&search=img&page={{page}}\n真实街拍::/thread.php?fid=314&search=img&page={{page}}\n资源下载:: \n网盘二区::/thread.php?fid=72&search=img&page={{page}}\n网盘三区::/thread.php?fid=272&search=img&page={{page}}\n国产精选::/thread.php?fid=280&search=img&page={{page}}\n多挂原创::/thread.php?fid=76&search=img&page={{page}}\n有声小说::/thread.php?fid=55&search=img&page={{page}}\n实用漫画::/thread.php?fid=180&search=img&page={{page}}\n磁链迅雷::/thread.php?fid=318&search=img&page={{page}}\nH-GAME::/thread.php?fid=66&search=img&page={{page}}\nTXT小说::/thread.php?fid=93&search=img&page={{page}}\n文学欣赏:: \n激情都市::/thread.php?fid=49&search=img&page={{page}}\n青春校园::/thread.php?fid=51&search=img&page={{page}}\n武侠虚幻::/thread.php?fid=52&search=img&page={{page}}\n另类其他::/thread.php?fid=105&search=img&page={{page}}\n人妻意淫::/thread.php?fid=103&search=img&page={{page}}\n乱伦迷情::/thread.php?fid=50&search=img&page={{page}}\n长篇连载::/thread.php?fid=54&search=img&page={{page}}\n文学作者::/thread.php?fid=100&search=img&page={{page}}\n\n聚友客栈::/thread.php?fid=57&search=img&page={{page}}",
    "sourceComment": "登录点已满18，返回后刷新一下就能加载内容，不用真的登录\n\n发布页\nhttps://fby.4qm1j.com/\nhttp://180.188.45.239:2048/",
    "sourceGroup": "R-18可用免翻",
    "sourceIcon": "https://i.postimg.cc/qvyHZ3fz/logo.png",
    "sourceName": "人人为我",
    "sourceUrl": "https://nxnfs.zn-cn-yuyantv.com/",
    "style": "img{\n\twidth:100%;\n\theight:auto;\n\t}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "",
    "customOrder": 68,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n  \t\"User-Agent\": \"Dart/2.19 (dart:io) Dalvik/2.1.0 (Linux; U; Android 9; RVL-AL09 Build/HUAWEIRVL-AL09)\",\n\t\t\"host\": \"www.heitaifun.com\"\t\n}",
    "injectJs": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "$.data.data[*]",
    "ruleContent": "<js>\n//获取(接口)线路名\nt1=java.getString(\"$.data.vod_play_list[*].url_count\").split('\\n');\njiekou=String(java.getString(\"$.data.vod_play_list[*].player_info.show\")).replace(/\\s/g,\",\").split(',').map((title,i)=>'\\t\\t<button onclick=\"huan('+i+')\"><b>'+title+'<sup><small>'+t1[i]+'</small></sup></b></button>').join('\\n');\n\n\n//格式化集数\n\njishu=String(java.getString(\"$.data.vod_play_list[*].sid\")).split('\\n').map((sid,i)=>{\n\t\njiexi = String(java.getString(\"$.data.vod_play_list[\"+i+\"].player_info.parse\"));\n\n$=String(java.getString(\"$.data.vod_play_list[\"+i+\"].urls\")).split('\\n').map(($,i)=>{\n\t\n if(!$){\n \tname = \"null\";\n \turl = \"当前线路无链接，请切换线路！\";\n \t}\n\telse{\n name = String($).match(/name=([^,]*)/)[1];\n url = jiexi+String($).match(/url=([^,]*)/)[1];\n }\n return '<button onclick=\"xuan(this,\\'.jishu\\')\" value=\"'+url+'\"><b>'+name+'</b></button>'}).join('\\n\\t\\t');\n return '<div>\\n'+$+'\\n</div>';\n }).join('\\n');\n\n\n// 返回json\nJSON.stringify({\n\tjiekou: '<div>\\n'+jiekou+'\\n</div>',\n\tjishu: jishu\n});\n</js>\n\n\n\n\n<title>{{$.data.vod_name}}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<iframe frameborder=\"no\" allowfullscreen></iframe>\n<p></p>\n<hr>\n\n\n<details>\n<!--视频标题-->\n<summary><h3>{{$.data.vod_name}}</h3></summary>\n<!--第一个视频封面 第二个网站logo-->\n<br><img src=\"{{$.data.vod_pic}}\" onerror=\"this.src='{{source.sourceIcon}}'\">\n<p>片名：{{$.data.vod_name}}</p>\n<p>导演：{{$.data.vod_director}}</p>\n<p>编剧：{{$.data.vod_writer}}</p>\n<p>主演：{{$.data.vod_actor}}</p>\n<br>\n<p>🎗 又名：{{$.data.vod_sub}}</p>\n<p>🔮 类型：{{$.data.vod_area&&$.data.vod_lang&&$.data.vod_year##\\n## ∙ }}</p>\n<p>🔥 热度：{{$.data.vod_hits}}</p>\n<p>🏅 评分：网站{{$.data.vod_score}}分 | 豆瓣{{$.data.vod_douban_score}}分</p>\n<p>🕰 更新：{{$.data.vod_remarks}}</p>\n<p>🏷️ 标签：{{$.data.vod_class&&$.data.vod_tag##\\s##，}}</p>\n<br>\n<p>📑 简介：{{$.data.vod_content##\\s*(^|[。！？]+[”」）】]?)\\s*##$1<br>}}</p>\n<br><br>\n</details>\n<hr>\n\n\n<div class=\"jiekou\">\n<p>接口</p>\n{{JSON.parse(result).jiekou}}\n</div>\n<hr>\n\n\n<div class=\"jishu\">\n<p>集数</p>\n{{JSON.parse(result).jishu}}\n</div>\n<hr>\n\n\n\n\n\n<script>\n//选中标签\n$=(rule)=>document.querySelectorAll(rule);\n\n//删除active\nomit=(A)=>Array.from(A,a=>a.className='');\n\n//增加active\nactive=($,i)=>$[i].className='active';\n\n\n\t\n//选择(接口)线路\nhuan = (index) =>{\n\t\tomit($('.jiekou .active, .jishu div.active'));\n\t\tactive($('.jiekou button'),index);\n\t\treturn active($('.jishu>div'),index);\n\t}\t\n\t\n//选择集数\nxuan = (item,type)=>{\n\tbtn = $(type+' button.active');\t\t\n\t\tif(item.value==btn[0].value)return;\n\t\tomit(btn); item.className='active'\n\t\treturn geturl()\n\t}\n\n\n\n//获取资源链接\nfunction geturl(){\n\turl=$('.jishu button.active')[0].value.trim();\n\treturn $('iframe')[0].src =\n\t\t$('body p')[0].innerText = url;\n}\n\n\n\n//初始化\n(()=>{\n\t\tactive($('.jiekou button'),0)\n\t\tactive($('.jishu div'),0)\n\t\tactive($('.jishu button'),0)\n\t\treturn geturl()\n\t})()\n</script>",
    "ruleDescription": "",
    "ruleImage": "$.vod_pic",
    "ruleLink": "https://www.heitaifun.com/appto/v1/vod/getVod?id={{$.vod_id}}",
    "ruleNextPage": "page",
    "rulePubDate": "$.vod_remarks&&$.vod_type_name&&$.vod_year##\\s##🔖",
    "ruleTitle": "$.vod_name",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\n\n//变量搜索\nsurl= \"变量搜索::/appto/v1/vod/getVodSearch?wd={{v=source.getVariable();if(!v||/^\\s*$/.test(v))source.setVariable('天使');source.getVariable()}}&page={{page}}&type\\n\";\n\n\n//排期\npq=[\"周一\",\"周二\",\"周三\",\"周四\",\"周五\",\"周六\",\"周日\"].map((title,i)=>{\n      url= `/appto/v1/vod/getSchedulingLists?w=${i+1}&page={{page}}`;\n\treturn title+\"::\"+url+'\\n';\n    }).join('\\n');\n   \n           \n//分类         \nfl=[\"奇幻\",\"剧情\",\"爱情\",\"恋爱\",\"后宫\",\"冒险\",\"战斗\",\"日常\",\"萌系\",\"治愈\",\"少女\",\"魔法\",\"运动\",\"校园\",\"悬疑\",\"恐怖\",\"惊悚\"].map(title=>{\n   z=[[\"番剧\",\"32\"],[\"剧场\",\"29\"]].map([tit,i]=>{\n      url= `/appto/v1/vod/getLists?type_id=${i}&area=&lang=&year=&order=time&type_name=${title}&page={{page}}&pageSize=21`;\n\treturn tit+title+\"::\"+url+'\\n';\n    }).join('\\n');\n\t\treturn z\n    }).join('\\n');\n    \n//榜单\nbd=[[\"番剧\",\"1\"],[\"剧场\",\"3\"]].map([title,i]=>{\n      url= `/appto/v1/vod/getRankingLists?id=${i}&page={{page}}`;\n\treturn title+\"排行::\"+url+'\\n';\n    }).join('\\n');    \n    \n        \n\n//拼接分类，一些分类不想开启可删除。\n  result = bd+surl+pq+fl;",
    "sourceComment": "/*\n官方：https://xiaoyuerlll.lanzoul.com/b0ehfca8h\n域名：https://appto-v3-1251970844.cos.ap-chongqing.myqcloud.com/accredits/110.json\n信息：\nhttps://www.heitaifun.com/appto/v2/config/get?p=android\n*/",
    "sourceGroup": "noh",
    "sourceIcon": "https://arlnigh.me/%E6%98%9F%E9%87%8E%E7%88%B1.jpg",
    "sourceName": "好耶追番",
    "sourceUrl": "https://www.heitaifun.com##@遇知",
    "style": "*{\n\tz-index:0;\n\tmargin:0;\n\tpadding:0;\n\twidth:100%;\n\theight:auto;\n}\np{\n\ttext-indent:5px;\n}\nbody>p:first-of-type{\n\twidth:100.05%;\n\tposition:sticky;top:285px;\n\theight:15px;font-size:0.7rem;\n\tborder-bottom-right-radius:5px;\n\tborder-bottom-left-radius:5px;\n\tbackground:#000;color:#fff;\n\twhite-space:nowrap;\n\toverflow:hidden;\n\ttext-overflow:ellipsis;\n\tz-index:2;\n}\niframe{\n\tposition:sticky;top:0;\n\tbackground:#000;color:#fff;\n\theight:285px;\n\tz-index:2;\n}\n\ndetails{\n\twidth:90%;\n\tmargin:0 5%;\n\tpadding:10 0;\n}\nsummary{\n\twidth:90%;\n\tmargin:0 5%;\n\toutline:none;\n\ttext-align:center;\n}\nsummary::-webkit-details-marker,.jishu>div{\n\tdisplay:none;\n}\n.jiexi>div,.jiekou>div{\n\toverflow-x:auto;\n\toverflow-y:hidden;\n\twhite-space:nowrap;\n}\n.jishu>div.active{\n\tdisplay:block;\n}\n\nbutton{\n\twidth:21.65%;\n\tmargin:1.25%;\n\tpadding:5px;\n\toutline:none;\n\tborder-radius:8px;\n\tfont-size:0.7rem;\n\ttext-overflow:ellipsis;\n  overflow:hidden;\n\tposition:sticky;\n}\nbutton.active{\n\tz-index:1;\n\tcolor:#166188;\n\tleft:0;right:0;\n}\n.jishu button.active{\n\ttop:300;bottom:0;\n}\nsmall{\n\tposition:absolute;\n\tright:3;top:-1;\n\ttext-align:right;\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 69,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\"User-Agent\": \"Mozilla/5.0 (Linux; U; Android 8.1.0; zh-CN; MI 8 Lite Build/OPM1.171019.019) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 UCBrowser/13.2.0.1100 Mobile Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "li",
    "ruleDescription": "",
    "ruleLink": "text.一键导入@onclick",
    "ruleNextPage": "",
    "rulePubDate": "span@text",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/007.webp",
    "sourceName": "ACG动漫",
    "sourceUrl": "https://acgmhx.com/animation/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 97,
    "enableJs": true,
    "enabled": false,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".posts-wrapper@article",
    "ruleContent": "script@all&&.entry-content@all",
    "ruleImage": ".placeholder@img@data-src",
    "ruleLink": ".entry-title@a@href",
    "ruleNextPage": "page",
    "rulePubDate": "🕓{{@@.meta-date@time@text}}    [{{@@.meta-price@text}}]",
    "ruleTitle": ".entry-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "秀人::https://www.nicesss.com/xr/page/{{page}}\n秘境::https://www.nicesss.com/mij/page/{{page}}\n丝真::https://www.nicesss.com/siz/page/{{page}}\n热帖::https://www.nicesss.com/rez/page/{{page}}\n私影::https://www.nicesss.com/%e7%a7%81%e5%bd%b1/page/{{page}}\nCoser::https://www.nicesss.com/cosplya/page/{{page}}",
    "sourceGroup": "h",
    "sourceIcon": "https://www.nicesss.com/wp-content/themes/ripro/assets/images/favicon/favicon.png",
    "sourceName": "哟糖社",
    "sourceUrl": "https://www.nicesss.com/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 179,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "id.content@article",
    "ruleContent": "class.entry-content@all",
    "ruleImage": "tag.img@src",
    "ruleLink": "class.entry-content@tag.p@tag.a@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.entry-date@text",
    "ruleTitle": "class.entry-title@tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::https://llss.at/wp/page/{{page}}/\n文章::https://llss.at/wp/category/all/age/page/{{page}}/\n动画::https://llss.at/wp/category/all/anime/page/{{page}}/\n漫画::https://llss.at/wp/category/all/comic/page/{{page}}/\n游戏::https://llss.at/wp/category/all/game/page/{{page}}/\n其他::https://llss.at/wp/category/all/other/op/page/{{page}}/\n",
    "sourceComment": "内容页\nhtml  改成  sll\n即可 三岁小孩都会的啊",
    "sourceGroup": "h",
    "sourceIcon": "https://llss.at/wp/wp-content/uploads/2017/11/8.jpg",
    "sourceName": "琉璃神社✔修复",
    "sourceUrl": "https://llss.at",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 190,
    "enableJs": true,
    "enabled": false,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.col-xs-12 col-sm-4 col-md-3 col-lg-3",
    "ruleContent": "<js>\nresult=decodeURIComponent(result.match(/strencode2\\(\"(.*?)\"\\)/)[1]).match(/src='(.*?)'/)[1];\n`<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" />\n</head>\n<body>\n<video src=\"${result}\" width=\"100%\" height=\"280px\" controls=\"controls\" ></video>\n</body>\n</html>`\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.duration@text",
    "ruleTitle": "class.video-title title-truncate m-t-5@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "主页::https://91porn.com/v.php?category=rf&viewtype=basic&page={{page}}",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "91",
    "sourceUrl": "https://91porn.com/index.php",
    "style": "body{background-color:black;margin:0;padding:0;width:100%;}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 211,
    "enableJs": true,
    "enabled": false,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "id.tpl-img-content@li&&class.text-list-html@li\n<js>java.log(result)</js>",
    "ruleContent": "class.content@html&&script@all",
    "ruleDescription": "",
    "ruleImage": "tag.img@data-original&&tag.img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "tag.p@text||span@text",
    "ruleTitle": "tag.h3@text||a@title\n",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "自拍偷拍::https://www.207d74fc42a4.com/tupian/list-自拍偷拍.html\n亚洲色图::https://www.207d74fc42a4.com/tupian/list-亚洲色图.html\n欧美色图::https://www.207d74fc42a4.com/tupian/list-欧美色图.html\n美腿丝袜::https://www.207d74fc42a4.com/tupian/list-美腿丝袜.html\n清纯唯美::https://www.207d74fc42a4.com/tupian/list-清纯唯美.html\n乱伦熟女::https://www.207d74fc42a4.com/tupian/list-乱伦熟女.html\n卡通动漫::https://www.207d74fc42a4.com/tupian/list-卡通动漫.html\n都市激情::https://www.207d74fc42a4.com/xiaoshuo/list-都市激情.html\n人妻交换::https://www.207d74fc42a4.com/xiaoshuo/list-人妻交换.html\n校园春色::https://www.207d74fc42a4.com/xiaoshuo/list-校园春色.html\n家庭乱伦::https://www.207d74fc42a4.com/xiaoshuo/list-家庭乱伦.html\n情色笑话::https://www.207d74fc42a4.com/xiaoshuo/list-情色笑话.html\n性爱技巧::https://www.207d74fc42a4.com/xiaoshuo/list-性爱技巧.html\n武侠古典::https://www.207d74fc42a4.com/xiaoshuo/list-武侠古典.html\n另类小说::https://www.207d74fc42a4.com/xiaoshuo/list-另类小说.html\n",
    "sourceComment": "永久：\nhttps://www.maomiav.com/\n<js>github@ifwlzs</js>",
    "sourceGroup": "h",
    "sourceIcon": "https://avatars.githubusercontent.com/u/49548316",
    "sourceName": "猫咪",
    "sourceUrl": "https://www.207d74fc42a4.com/",
    "style": "img{\n\twidth:100%;\n\theight:auto;\n\t}##github@ifwlzs",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 213,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.white-panel||tr",
    "ruleContent": "class.card-header.0@all&&class.card-body.0@all&&class.pagination@all&&@tag.link@all",
    "ruleImage": "img@src",
    "ruleLink": "tag.h1@tag.a@href||tag.a.0@href",
    "ruleNextPage": "page",
    "ruleTitle": "h1@text||tag.td.0@tag.a@text||tag.td.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "卡通::https://imghub.live/1024/cat/cartoon?page={{page}}\r\n欧美大妞::https://imghub.live/1024/cat/euro?page={{page}}\r\n激情男女::https://imghub.live/1024/cat/jiqing?page={{page}}\r\n亚洲模特::https://imghub.live/asiangirl?page={{page}}\r\n日本激图::https://imghub.live/xiao77/cat/asian?page={{page}}\r\n街拍偷拍::https://imghub.live/xiao77/cat/jiepai?page={{page}}\r\n网友自拍::https://imghub.live/xiao77/cat/self?page={{page}}\r\n女演员::https://imghub.live/xiao77/cat/meinv?page={{page}}\r\n偷拍男女::https://imghub.live/1024/cat/toupai?page={{page}}\r\n自拍男女::https://imghub.live/1024/cat/selfie?page={{page}}\r\n学生校园::https://imghub.live/novel/cat/1?page={{page}}\r\n都市生活::https://imghub.live/novel/cat/2?page={{page}}\r\n人妻熟女::https://imghub.live/novel/cat/3?page={{page}}\r\n短篇文学::https://imghub.live/novel/cat/4?page={{page}}\r\n家庭乱伦::https://imghub.live/novel/cat/5?page={{page}}\r\n",
    "sourceComment": "备用：https://imghub12.website/\n<js>github@ifwlzs</js>",
    "sourceGroup": "h",
    "sourceIcon": "https://imghub.live/logo.png",
    "sourceName": "ImgHUB",
    "sourceUrl": "https://imghub.live/",
    "style": "img{\n\twidth:100%;\n\theight:auto;\n\t}##github@ifwlzs",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 227,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "#tiles@li",
    "ruleContent": "class.artical-content@tag.img@html",
    "ruleImage": "img@rdata",
    "ruleLink": "##location.href=\\'(.*)\\'##$1,{\"webView\":true}###",
    "ruleNextPage": "text.下一页@href",
    "ruleTitle": "tag.h3@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceComment": "永久域名：自拍图.com 联系邮箱：zipaituku@outlook.com",
    "sourceGroup": "h",
    "sourceIcon": "https://xn--wcsr8yy8y.xyz/images/logo.png",
    "sourceName": "自拍图库",
    "sourceUrl": "https://xn--wcsr8yy8y.xyz",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 229,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": " {\n\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "id.masonry@li",
    "ruleContent": "",
    "ruleImage": "tag.img@data-src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "tag.time@datetime",
    "ruleTitle": "class.post-meta-index@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "all::http://kkoo.icu/page/{{page}}",
    "sourceComment": "http://nsfwpicx.com/\n\t<js>github@ifwlzs</js>",
    "sourceGroup": "h",
    "sourceIcon": "http://kkoo.icu/favicon.ico",
    "sourceName": "NSFWPIXC",
    "sourceUrl": "http://kkoo.icu/",
    "style": "img{\n\twidth:100%;\n\theight:auto;\n\t}##github@ifwlzs",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 230,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.threadlist@li",
    "ruleContent": "class.jw-aspect jw-reset playBox@all",
    "ruleImage": "class.lazy@src",
    "ruleLink": "class.title@tag.a@href##pic_detail##pic_conter",
    "ruleNextPage": "page",
    "ruleTitle": "class.title@tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "福利姬::https://www.fuliji.buzz/?m=pic_list*29*{{page}}\r\n自拍流出::https://www.fuliji.buzz/?m=pic_list*27*{{page}}\r\n室外露出::https://www.fuliji.buzz/?m=pic_list*30*{{page}}\r\n扫街偷拍::https://www.fuliji.buzz/?m=pic_list*25*{{page}}\r\n写真合辑::https://www.fuliji.buzz/?m=pic_list*26*{{page}}\r\n异域风情::https://www.fuliji.buzz/?m=pic_list*28*{{page}}\r\n",
    "sourceComment": "fuliji.top\n发邮件到fuliji880@gmail.com获取最新地址\n<js>github@ifwlzs</js>",
    "sourceGroup": "h",
    "sourceIcon": "https://www.fuliji.buzz/Template/9C18I049/images/fulijilogo.png",
    "sourceName": "福利姬",
    "sourceUrl": "https://www.fuliji.buzz/",
    "style": "img{\n\twidth:100%;\n\theight:auto;\n\t}##github@ifwlzs",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 232,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Mobile Safari/537.36 Edg/91.0.864.67\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.zipai",
    "ruleContent": "class.zipai-pic@html&&tag.script!0@all",
    "ruleImage": "class.pic-thumb@data-image",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "page",
    "ruleTitle": "tag.a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://xiaocaozipai.xyz/new/{{page}}\n搜索::https://xiaocaozipai.xyz/tag/搜索值/{{page}}\n少妇::https://xiaocaozipai.xyz/tag/少妇/{{page}}\n老婆::https://xiaocaozipai.xyz/tag/老婆/{{page}}\n女友::https://xiaocaozipai.xyz/tag/女友/{{page}}\n人妻::https://xiaocaozipai.xyz/tag/人妻/{{page}}\n情人::https://xiaocaozipai.xyz/tag/情人/{{page}}\n骚货::https://xiaocaozipai.xyz/tag/骚货/{{page}}\n情趣内衣::https://xiaocaozipai.xyz/tag/情趣内衣/{{page}}\n白虎::https://xiaocaozipai.xyz/tag/白虎/{{page}}\n少女::https://xiaocaozipai.xyz/tag/少女/{{page}}\n妹妹::https://xiaocaozipai.xyz/tag/妹妹/{{page}}\n极品::https://xiaocaozipai.xyz/tag/极品/{{page}}\n调教::https://xiaocaozipai.xyz/tag/调教/{{page}}\n粉嫩::https://xiaocaozipai.xyz/tag/粉嫩/{{page}}\n白丝::https://xiaocaozipai.xyz/tag/白丝/{{page}}\n黑丝::https://xiaocaozipai.xyz/tag/黑丝/{{page}}\n丝袜::https://xiaocaozipai.xyz/tag/丝袜/{{page}}\n第一次::https://xiaocaozipai.xyz/tag/第一次/{{page}}\n掰开::https://xiaocaozipai.xyz/tag/掰开/{{page}}\n户外::https://xiaocaozipai.xyz/tag/户外/{{page}}",
    "sourceComment": "我这里就写几个。其他tag自己加https://xiaocaozipai.xyz/tag-list\n搜索功能：\n直接更改下方的\"搜索值\"。",
    "sourceGroup": "h",
    "sourceIcon": "https://xiaocaozipai.xyz/images/logo-md.png",
    "sourceName": "小草自拍",
    "sourceUrl": "https://xiaocaozipai.xyz/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 246,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "http://buliang7.com/favicon.ico",
    "sourceName": "不良研究生~单身宅男夜晚女性",
    "sourceUrl": "https://buliang11.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 255,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.ucontent@tag.li",
    "ruleContent": "id.my-video@all",
    "ruleImage": "class.cover@style<js> result.substring( result.indexOf(\"http\"), result.indexOf(\"\\');\"))</js>",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.time@text",
    "ruleTitle": "class.ctitle@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://xn--kcr705bxup.com/search.php?k=学生\n情侣::https://xn--kcr705bxup.com/search.php?k=情侣\r\n真实自拍::https://xn--kcr705bxup.com/search.php?k=真实自拍\r\n韩国::https://xn--kcr705bxup.com/search.php?k=韩国\r\n91大神::https://xn--kcr705bxup.com/search.php?k=91大神\r\n国产3P::https://xn--kcr705bxup.com/search.php?k=国产3P\r\n双飞::https://xn--kcr705bxup.com/search.php?k=双飞\r\n援交::https://xn--kcr705bxup.com/search.php?k=援交\r\n高潮::https://xn--kcr705bxup.com/search.php?k=高潮\r\n云盘泄密::https://xn--kcr705bxup.com/search.php?k=云盘泄密\r\n百度云::https://xn--kcr705bxup.com/search.php?k=百度云\r\n母狗::https://xn--kcr705bxup.com/search.php?k=母狗\r\nSWAG::https://xn--kcr705bxup.com/search.php?k=SWAG\r\n乱伦::https://xn--kcr705bxup.com/search.php?k=乱伦\r\n台湾::https://xn--kcr705bxup.com/search.php?k=台湾\r\n双洞::https://xn--kcr705bxup.com/search.php?k=双洞\r\n模特::https://xn--kcr705bxup.com/search.php?k=模特\r\n明星::https://xn--kcr705bxup.com/search.php?k=明星\r\n外围::https://xn--kcr705bxup.com/search.php?k=外围\r\nE罩::https://xn--kcr705bxup.com/search.php?k=E罩\r\n平胸::https://xn--kcr705bxup.com/search.php?k=平胸\r\n萝莉::https://xn--kcr705bxup.com/search.php?k=萝莉\r\n偷拍::https://xn--kcr705bxup.com/search.php?k=偷拍\r\n强奸::https://xn--kcr705bxup.com/search.php?k=强奸\r\n丝袜::https://xn--kcr705bxup.com/search.php?k=丝袜\r\n麻豆::https://xn--kcr705bxup.com/search.php?k=麻豆\r\n剧情::https://xn--kcr705bxup.com/search.php?k=剧情\r\n少妇::https://xn--kcr705bxup.com/search.php?k=少妇\r\n巨乳::https://xn--kcr705bxup.com/search.php?k=巨乳\r\n按摩师::https://xn--kcr705bxup.com/search.php?k=按摩师\r\n抖音::https://xn--kcr705bxup.com/search.php?k=抖音\r\n极品::https://xn--kcr705bxup.com/search.php?k=极品\r\n勾引::https://xn--kcr705bxup.com/search.php?k=勾引\r\n对白::https://xn--kcr705bxup.com/search.php?k=对白\r\n白虎::https://xn--kcr705bxup.com/search.php?k=白虎\r\n肛交::https://xn--kcr705bxup.com/search.php?k=肛交",
    "sourceComment": "将代码php?k=后面的中文字，改为想要的内容即展示的内容\n（永久地址：\n    1、https://集芳阁.com\n    2、https://jifangge.com\n    2、在Windows电脑上打开“第一福利导航地址发布器”中，打开第一福利，再找到本站。）\n在大神的基础上修好封面加载，补充了一个搜索类",
    "sourceGroup": "h",
    "sourceIcon": "https://img.vim-cn.com/f1/57bd392d5d9e587bb6789553c6499c0f4c2634.jpg",
    "sourceName": "小姐姐",
    "sourceUrl": "https://xn--kcr705bxup.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 258,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\":\" axios/0.19.0\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.rescont.data[*]",
    "ruleContent": "<js>\njson=JSON.parse(result).rescont;\ntitle=json.title;\nvideo=json.videopath;\nimg=json.coverpath;\nresult=\"<video src=\\\"\"+video+\"\\\" width=\\\"100%\\\" height=\\\"285px\\\" controls=\\\"controls\\\"  poster=\\\"\"+img+\"\\\"></video><p style=\\\"color:\\#000000\\;text-indent: 2em\\\">\"+title+\"</p>\";\n\n\"<html><head><meta charset=\\\"utf-8\\\"><title>丝瓜影视</title><style>body\\{background-color:\\#ffffff\\}</style></head>\"+ \"<body>\"+result+\"</body></html>\"\n</js>",
    "ruleDescription": "",
    "ruleImage": "class.cover@style##background\\-image\\:url\\('|\\'\\)\\;",
    "ruleLink": "https://api.sgbe2.xyz/api/videoplay/{$.id}?uuid=84fc81a928ee5e58",
    "ruleNextPage": "$..next_page_url",
    "rulePubDate": "$.created_at",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部::https://api.sgbe2.xyz/api/videosort/0?orderby=&page=1{{page}}\n国产AV::https://api.sgbe2.xyz/api/videosort/60?orderby=&page={{page}}\n无码::https://api.sgbe2.xyz/api/videosort/1?orderby=&page={{page}}\n角色扮演::https://api.sgbe2.xyz/api/videosort/4?orderby=&page={{page}}\n制服诱惑::https://api.sgbe2.xyz/api/videosort/5?orderby=&page={{page}}\n人妻熟女::https://api.sgbe2.xyz/api/videosort/6?orderby=&page={{page}}\n当红女优::https://api.sgbe2.xyz/api/videosort/9?orderby=&page={{page}}\n国产自拍::https://api.sgbe2.xyz/api/videosort/10?orderby=&page={{page}}\n长腿丝袜::https://api.sgbe2.xyz/api/videosort/11?orderby=&page={{page}}\n动漫::https://api.sgbe2.xyz/api/videosort/14?orderby=&page={{page}}\n欧美av::https://api.sgbe2.xyz/api/videosort/16?orderby=&page={{page}}\n网红主播::https://api.sgbe2.xyz/api/videosort/17?orderby=&page={{page}}\nVIP::https://api.sgbe2.xyz/api/videosort/18?orderby=&page={{page}}\n中文字幕::https://api.sgbe2.xyz/api/videosort/19?orderby=&page={{page}}\n巨乳::https://api.sgbe2.xyz/api/videosort/20?orderby=&page={{page}}\n青春萝莉::https://api.sgbe2.xyz/api/videosort/22?orderby=&page={{page}}\n重口味::https://api.sgbe2.xyz/api/videosort/23?orderby=&page={{page}}\nAV素人::https://api.sgbe2.xyz/api/videosort/24?orderby=&page={{page}}\n三级电影::https://api.sgbe2.xyz/api/videosort/25?orderby=&page={{page}}\nAV剧情::https://api.sgbe2.xyz/api/videosort/29?orderby=&page={{page}}\n推荐::https://api.sgbe2.xyz/api/videosort/30?orderby=&page={{page}}\n宅男萝莉::https://api.sgbe2.xyz/api/videosort/31?orderby=&page={{page}}\n外流视频::https://api.sgbe2.xyz/api/videosort/32?orderby=&page={{page}}\n明星丑闻::https://api.sgbe2.xyz/api/videosort/33?orderby=&page={{page}}\n恐怖色情::https://api.sgbe2.xyz/api/videosort/35?orderby=&page={{page}}\n295LUXU::https://api.sgbe2.xyz/api/videosort/36?orderby=&page={{page}}\n嫩模专区::https://api.sgbe2.xyz/api/videosort/37?orderby=&page={{page}}\n少女百合::https://api.sgbe2.xyz/api/videosort/38?orderby=&page={{page}}\n魔镜系列::https://api.sgbe2.xyz/api/videosort/39?orderby=&page={{page}}\n明星AI换脸::https://api.sgbe2.xyz/api/videosort/40?orderby=&page={{page}}\n苍井空::https://api.sgbe2.xyz/api/videosort/44?orderby=&page={{page}}\n职场上司::https://api.sgbe2.xyz/api/videosort/45?orderby=&page={{page}}\n淫乱师生::https://api.sgbe2.xyz/api/videosort/46?orderby=&page={{page}}\n强上一波::https://api.sgbe2.xyz/api/videosort/47?orderby=&page={{page}}\n近亲乱伦::https://api.sgbe2.xyz/api/videosort/49?orderby=&page={{page}}\n淫荡痴女::https://api.sgbe2.xyz/api/videosort/51?orderby=&page={{page}}\n电车之狼::https://api.sgbe2.xyz/api/videosort/52?orderby=&page={{page}}\n偷拍::https://api.sgbe2.xyz/api/videosort/53?orderby=&page={{page}}\n萌妹酱::https://api.sgbe2.xyz/api/videosort/54?orderby=&page={{page}}\n精彩短片::https://api.sgbe2.xyz/api/videosort/55?orderby=&page={{page}}\n鹿少女::https://api.sgbe2.xyz/api/videosort/56?orderby=&page={{page}}\n中文无码::https://api.sgbe2.xyz/api/videosort/57?orderby=&page={{page}}\n扶她姐妹::https://api.sgbe2.xyz/api/videosort/58?orderby=&page={{page}}\n中外合拍::https://api.sgbe2.xyz/api/videosort/59?orderby=&page={{page}}",
    "sourceComment": "丝瓜",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/mgsrMMnJ/1658228022914.png",
    "sourceName": "©丝瓜®",
    "sourceUrl": "https://api.sgbe2.xyz/api/videosort/0?orderby=&page=1",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 261,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.videoListBox@a",
    "ruleContent": "script@html",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.time@text",
    "ruleTitle": "class.title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://rip.xsmzy1.top/cn/home/web/index.php/vod/search.html?wd=人妻\n网红主播::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/21.html\n特色视频::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/27.html\n亚洲视频::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/25/page/3.html\n破解视频::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/24.html\n卡通动漫::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/31.html\n欧美视频::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/30.html\n日韩综合::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/26.html\n精品推荐::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/28.html\nSM变态::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/29.html\n国产精品::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/20.html\n明星门事件::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/22.html\n中文字幕::https://rip.xsmzy1.top/cn/home/web/index.php/vod/type/id/23.html\n",
    "sourceComment": "https://fek.xzylm.com/index.php/index/index/api.html",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/MZfW7mKz/cf1b0c254840bfd34f35acf62e55d83f.gif",
    "sourceName": "©小湿妹®",
    "sourceUrl": "https://rip.xsmzy1.top/cn/home/web/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 262,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.home-rows-videos-wrapper@a",
    "ruleContent": "id.player@source.0@src\n<js>\nresult = \"<video src=\\\"\" + result + \"\\\" width=\\\"100%\\\" height=\\\"285px\\\" controls=\\\"controls\\\" ></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result + \"</body></html>\"\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "class.page-link@href@js:'https://hanime1.me/search'.concat(result)",
    "ruleTitle": "class.home-rows-videos-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新里番::https://hanime1.me/search?query=&genre=%E8%A3%8F%E7%95%AA{{page - 1 == 0 ? \"\": \"&page=\"+page}}\n发烧影片::https://hanime1.me/search?query=&genre=%E8%A3%8F%E7%95%AA&sort=%E6%9C%AC%E6%9C%88%E6%8E%92%E8%A1%8C{{page - 1 == 0 ? \"\": \"&page=\"+page}}\n热门影片::https://hanime1.me/search?query=&genre=%E8%A3%8F%E7%95%AA&sort=%E4%BB%96%E5%80%91%E5%9C%A8%E7%9C%8B{{page - 1 == 0 ? \"\": \"&page=\"+page}}",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/3Rmm9Qj1/122f82d46123c18e88a31714dca078fa.jpg",
    "sourceName": "☪里番热",
    "sourceUrl": "hanime",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 263,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.video",
    "ruleContent": "id.a1@script.0@all##url\":\"([^\"]+.m3u8)##$1##\n<js>\nresult=result.replace(/\\\\/g,\"\")\r\nresult = \"<video src=\\\"\" + result + \"\\\" width=\\\"100%\\\" height=\\\"285px\\\" controls=\\\"controls\\\" ></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result + \"</body></html>\"\n result\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a@href@js:'https://ads54t56ijn--5165fa14s--042420.cdcd0725.dinotalesonline.com:21726'.concat(result)",
    "ruleNextPage": "id.long-page@ul@b@li.-2@a@href",
    "rulePubDate": "class.video-overlay badge transparent@text",
    "ruleTitle": "class.video-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "乱伦::https://ads54t56ijn--5165fa14s--042420.cdcd0725.dinotalesonline.com:21726/vodtype/193.html\n制服::https://ads54t56ijn--5165fa14s--042420.cdcd0725.dinotalesonline.com:21726/vodtype/196.html\n亚洲::https://ads54t56ijn--5165fa14s--042420.cdcd0725.dinotalesonline.com:21726/vodtype/195.html\nSM::https://ads54t56ijn--5165fa14s--042420.cdcd0725.dinotalesonline.com:21726/vodtype/197.html\n自慰::https://ads54t56ijn--5165fa14s--042420.cdcd0725.dinotalesonline.com:21726/vodtype/198.html\n拳交::https://ads54t56ijn--5165fa14s--042420.cdcd0725.dinotalesonline.com:21726/vodtype/199.html\n无码::https://ads54t56ijn--5165fa14s--042420.cdcd0725.dinotalesonline.com:21726/vodtype/191.html\n人妻::https://ads54t56ijn--5165fa14s--042420.cdcd0725.dinotalesonline.com:21726/vodtype/194.html",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/WbBpgPrK/1655357335965.png",
    "sourceName": "©女仆®",
    "sourceUrl": "AVmaid",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 268,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "LKs - 良心到难以置信的网站推荐",
    "sourceUrl": "https://xiangjianan.gitee.io/lks/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 271,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"cookie\":\"user_id=805803\",\"accept\":\"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\",\"accept-encoding\":\"br\",\"accept-language\":\"zh-CN,zh;q=0.9\",\"user-agent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.vod-list@class.columns@class.column",
    "ruleContent": "",
    "ruleImage": "img@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.duration@text",
    "ruleTitle": "class.vod-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "茜公举::https://niugua06.com/search//?k=茜公举&p={{page}}",
    "sourceComment": "牛瓜",
    "sourceGroup": "h",
    "sourceIcon": "https://s3.ax1x.com/2021/02/07/ytBfJ0.jpg",
    "sourceName": "Ssr~niugua",
    "sourceUrl": "https://niugua06.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 272,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.videos@class.video@a",
    "ruleImage": "class.video-thumb@img@src",
    "ruleLink": "href",
    "ruleNextPage": "page",
    "rulePubDate": "title",
    "ruleTitle": "title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "国产::http://qapgt23y85md76e--040114.cdnby0326.dinotalesonline.com:26853/vodtype/104-{{page}}.html",
    "sourceComment": "av女仆",
    "sourceGroup": "h",
    "sourceIcon": "https://s3.ax1x.com/2021/02/18/yRkPFx.png",
    "sourceName": "Ssr~qapgt",
    "sourceUrl": "http://qapgt23y85md76e--040114.cdnby0326.dinotalesonline.com:26853/vodtype/104-2.html",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 273,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.item||class.col-lg-2 col-md-2 col-sm-3 col-xs-6 text-center",
    "ruleContent": "html",
    "ruleImage": "class.photo-frame@img@src",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "text.下一页@href||tag.a@href||name.nextpage@href",
    "rulePubDate": "class.photo-info@tag.date.1@text",
    "ruleTitle": "class.photo-info@text||class.col-lg-2 col-md-2 col-sm-3 col-xs-6 text-center@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://avmoo.casa/cn/search/三上悠亜\nAPPAI::https://avmoo.casa/cn/label/43f9f3527783c43a/page/{{page}}\nS1::https://avmoo.casa/cn/label/b0b3be30e6bf490f/page/{{page}}\n类别::https://avmoo.casa/cn/genre\n已发布::https://avmoo.casa/cn/released\n热门::https://avmoo.casa/cn/popular\n女优::https://avmoo.casa/cn/actresses",
    "sourceComment": "只能看介绍、图片，或者用磁力自己去下载~\n搜索后面可以换成想要的老师名字、车牌、标签什么的~\n类别里的内容是不全的，最好把类别标签填在搜索后面。",
    "sourceGroup": "h",
    "sourceIcon": "https://i0.hdslb.com/bfs/article/8f90cb146c0388ad895f504affee82f1ab0d9f6f.jpg@656w_820h_progressive.webp",
    "sourceName": "avmoo（看注释）",
    "sourceUrl": "https://avmoo.casa/cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 274,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.col-c",
    "ruleContent": "class.single-text@html",
    "ruleImage": "img@src",
    "ruleLink": "tag.a.2@href",
    "ruleNextPage": "text.下一页@href||text.查看更多@href",
    "rulePubDate": "class.item-meta-left@text",
    "ruleTitle": "a@title||tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "随机::https://www.boygirlhub.com\n熟女::https://www.boygirlhub.com/category/熟女/page/1/\n名站::https://www.boygirlhub.com/category/名站\n日韩::https://www.boygirlhub.com/category/日韩\n网红::https://www.boygirlhub.com/category/网红",
    "sourceGroup": "h",
    "sourceIcon": "https://www.boygirlhub.com/favicon.ico",
    "sourceName": "套图写真",
    "sourceUrl": "https://www.boygirlhub.com",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 275,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.appel-max@tag.li",
    "ruleContent": "class.m1938@tag.script.0@html\n<js>result = result.split('\\n').join('').replace(/ /g, '');\r\nresult = result.substring(result.indexOf('varplayer_aaaa=') + 'varplayer_aaaa='.length, result.lastIndexOf('<'));\r\nresult = JSON.parse(result).url;\r\nresult = \"<video src=\\\"\" + result + \"\\\" width=\\\"100%\\\" height=\\\"285px\\\" controls=\\\"controls\\\" ></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result + \"</body></html>\"</js>",
    "ruleImage": "tag.a.0@tag.img@src",
    "ruleLink": "tag.a.0@href\n<js>\nvar id=result.substring(result.indexOf(\"id/\")+3,result.lastIndexOf('.html'));\nresult=\"https://niutv10.com/index.php/vod/play/id/\"+id+\"/sid/1/nid/1.html\";\n</js>",
    "ruleNextPage": "page",
    "rulePubDate": "class.video-info@tag.p@text",
    "ruleTitle": "class.video-info@tag.a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n国产::https://niutv10.com/index.php/vod/type/id/6/page/{{page}}.html\n强奸::https://niutv10.com/index.php/vod/type/id/20/page/{{page}}.html\n无码::https://niutv10.com/index.php/vod/type/id/21/page/{{page}}.html\n人妻::https://niutv10.com/index.php/vod/type/id/24/page/{{page}}.html\n动漫::https://niutv10.com/index.php/vod/type/id/26/page/{{page}}.html\n萝莉::https://niutv10.com/index.php/vod/type/id/13/page/{{page}}.html\n大秀::https://niutv10.com/index.php/vod/type/id/10/page/{{page}}.html\n日韩::https://niutv10.com/index.php/vod/type/id/7/page/{{page}}.html\n欧美::https://niutv10.com/index.php/vod/type/id/8/page/{{page}}.html",
    "sourceComment": "牛牛",
    "sourceGroup": "h",
    "sourceIcon": "https://z3.ax1x.com/2021/02/07/ytyEf1.png",
    "sourceName": "Ssr~niutv",
    "sourceUrl": "https://niutv10.com/index.php/vod/type/id/6/page/1.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 303,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\"X-Requested-With\": \"XMLHttpRequest\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleImage": "",
    "ruleLink": "<js>\nif (baseUrl.match(/rssyuan/)){'http://yck.mumuceo.com/yuedu/rssyuan/yuan.html?id='+{{$.id}}}\nelse if (baseUrl.match(/theme/)){'http://yck.mumuceo.com/yuedu/theme/yuan.html?id='+{{$.id}}}\nelse {'http://yck.mumuceo.com/yuedu/shuyuan/yuan/id/'+{{$.id}}+'.html'}\n</js>",
    "ruleNextPage": "<js>\r\nvar path1=String(baseUrl).match(/page=(.*)&limi/)[1]\r\nvar num1=Number(path1)+1\r\nvar objk=String(baseUrl).replace(/page.*&limi/, 'page='+num1+'&limi' )\r\nresult=objk\r\n</js>",
    "rulePubDate": "【{$.username}】                       {$.time}\n",
    "ruleTitle": "{$.yuansite}{$.themeName}        搜{$.sousuo}发{$.faxian}声{$.audio}图{$.tupian}                    {$.yuanurl}<js>result.replace(/layui-bg-blue/g,'✔').replace(/layui-bg-gray layui-hide/g,'✘').replace(/http(s)?\\:\\/\\//,'')</js>##搜发声图",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部::http://yck.mumuceo.com/yuedu/shuyuan/index.html,{\"method\":\"POST\",\"body\":\"page=1&limit=300&keys=&var=&faxian=&sousuo=&audio=&tupian=\"}&&书源3::http://yck.mumuceo.com/yuedu/shuyuan/index.html,{\"method\": \"POST\",\"body\": \"page=1&limit=50&keys=&ver=3&sousuo=&faxian=1&audio=&tupian=\"}&&书源2::http://yck.mumuceo.com/yuedu/shuyuan/index.html,{\"method\": \"POST\",\"body\": \"page=1&limit=50&keys=&ver=2&sousuo=&faxian=&audio=&tupian=\"}\n发现::http://yck.mumuceo.com/yuedu/shuyuan/index.html,{\"method\": \"POST\",\"body\": \"page=1&limit=50&keys=&ver=&sousuo=&faxian=1&audio=&tupian=\"}\r\n有声::http://yck.mumuceo.com/yuedu/shuyuan/index.html,{\"method\": \"POST\",\"body\": \"page=1&limit=50&keys=&var=&faxian=&sousuo=&audio=1&tupian=\"}\n图片::http://yck.mumuceo.com/yuedu/shuyuan/index.html,{\"method\": \"POST\",\"body\": \"page=1&limit=50&keys=&var=&faxian=&sousuo=&audio=&tupian=1\"}\n订阅::http://yck.mumuceo.com:80/yuedu/rssyuan/index.html,{\"method\": \"POST\",\"body\": \"page=1&limit=50&keys=\"}\n主题::http://yck.mumuceo.com:80/yuedu/theme/index.html,{\"method\": \"POST\",\"body\": \"page=1&limit=50&keys=\"}\n",
    "sourceGroup": "noh",
    "sourceIcon": "http://yck.mumuceo.com/static/images/applogo/yuedu.png",
    "sourceName": "源仓库",
    "sourceUrl": "http://yck.mumuceo.com/yuedu/shuyuan/index.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 327,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://www.tcdya.com/template/jianbai/statics/img/favicon.ico",
    "sourceName": "太初电影",
    "sourceUrl": "https://www.tcdya.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 330,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://ps.ssl.qhmsg.com/t024f0839e09b41b8b9.jpg",
    "sourceName": "ADC电影",
    "sourceUrl": "https://www.adcmovies.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 331,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://img.99meiju.net/favicon.ico",
    "sourceName": "99美剧",
    "sourceUrl": "https://m.99meiju.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 333,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/ /)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split(' ');\nfor(i in list){\nhref=list[i].match(/【(.*?)】/)[1];\ntext=list[i].match(/《(.*?)》/)[1];\nintro=list[i].match(/◎(.*?)◎/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)【/)[1]\njson.push({text:text,src:href,intro:intro,index:index})\n}\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleContent": "",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "ruleNextPage": "",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "导航™::https://theporndude.com/zh/top-porn-tube-sites【】《theporndude》◎导航,无横幅广告◎ https://www.fanqianglu.com/free/cntube【】《fanqianglu》◎导航,有稍微横幅广告◎\n视频™::https://qingse.one/【】《qingse》◎◎ https://www.xvideos.com/【】《xvideos》◎◎ https://www.xnxx.com【】《xnxx》◎◎ https://www.video01.org【】《video01》◎◎ https://www.pornhub.com【】《pornhub》◎◎ https://www.atube.xxx/?hl=zh【】《atube》◎◎ http://www.bftqp.com/【】《bftqb》◎◎",
    "sourceComment": "[无科学不订阅]",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "sex™",
    "sourceUrl": "sex(1.0)",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 335,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://dm530.org/static/favicon.ico",
    "sourceName": "风车动漫",
    "sourceUrl": "https://dm530.org",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 350,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "class.movie!0",
    "ruleContent": "<iframe id=\"video_frame\" src=\"{{@@id.video_frame@src}}\" allowfullscreen=\"true\" frameborder=\"0\" width=\"100%\" height=\"250\" allowtransparency=\"false\" scrolling=\"on\"> </iframe>\n<img src=\"{{@@class.m_preview_image.0@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.1@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.2@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.3@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.4@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.5@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.6@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.7@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.8@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.9@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.10@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.11@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.12@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.13@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.14@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.15@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.16@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.17@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.18@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.19@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.20@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.21@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.22@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.23@img@src}}\"></img>",
    "ruleDescription": "",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "//把MEYD替换成你想要系列或番号\n//搜索人名要URL编码，百度自己拿日文转换\n搜索::http://goodav17.com/search/{{source.getVariable()}}/{{page}}/\n女优::http://goodav17.com/search/%E7%AD%B1%E7%94%B0/{{page}}/\n無碼::https://goodav17.com/type/%E7%84%A1%E7%A2%BC/{{page}}/\n人妻::http://goodav17.com/type/%E4%BA%BA%E5%A6%BB/{{page}}/\n乱伦::http://goodav17.com/type/%E8%BF%91%E8%A6%AA%E7%9B%B8%E5%A7%A6/{{page}}/\n巨乳::https://goodav17.com/type/%E5%B7%A8%E4%B9%B3/{{page}}/\n中出::http://goodav17.com/type/%E4%B8%AD%E5%87%BA/{{page}}/\n丝袜::http://goodav17.com/type/%E7%B5%B2%E8%A5%AA/{{page}}/\n兔女郎:http://goodav17.com/type/%E5%85%94%E5%A5%B3%E9%83%8E/{{page}}/\n户外::http://goodav17.com/type/%E6%88%B6%E5%A4%96/{{page}}/\n强迫::http://goodav17.com/type/%E5%BC%B7%E8%BF%AB/{{page}}/\n禁声::http://goodav17.com/type/%E4%B8%8D%E8%83%BD%E7%99%BC%E8%81%B2/{{page}}/\n搜查官::http://goodav17.com/type/%E6%90%9C%E6%9F%A5%E5%AE%98/{{page}}/\n教师::http://goodav17.com/type/%E6%95%99%E5%B8%AB%E6%88%96%E5%AE%B6%E6%95%99/{{page}}/\n学生::http://goodav17.com/type/%E5%AD%B8%E7%94%9F/{{page}}/\n护士::http://goodav17.com/type/%E8%AD%B7%E5%A3%AB/{{page}}/\n空姐::http://goodav17.com/type/%E7%A9%BA%E5%A7%90/{{page}}/\n自慰::http://goodav17.com/type/%E8%87%AA%E6%85%B0/{{page}}/\n医生::http://goodav17.com/type/%E5%A5%B3%E9%86%AB%E7%94%9F/{{page}}/\n突然::http://goodav17.com/type/%E7%AA%81%E7%84%B6%E6%8F%92%E5%85%A5/{{page}}/\n痴汉::http://goodav17.com/type/%E7%99%A1%E6%BC%A2/{{page}}/\n凌辱::http://goodav17.com/type/%E5%87%8C%E8%BE%B1/{{page}}/\n秘书::http://goodav17.com/type/%E7%A7%98%E6%9B%B8/{{page}}/\n女仆::http://goodav17.com/type/%E5%A5%B3%E5%83%95/{{page}}/\n家政::http://goodav17.com/type/%E5%AE%B6%E6%94%BF%E5%A9%A6/1/\n萝莉::http://goodav17.com/type/%E8%98%BF%E8%8E%89/{{page}}/\n其他::http://goodav17.com/type/%E5%85%B6%E4%BB%96%E5%88%B6%E6%9C%8D/{{page}}/\n多P::http://goodav17.com/type/%E5%A4%9A%E5%90%8D%E5%A5%B3%E5%84%AA/{{page}}/\n无毛::http://goodav17.com/type/%E7%84%A1%E6%AF%9B/{{page}}/",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "正妹AV",
    "sourceUrl": "正妹AV",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 351,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": " {\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "class.column column-block",
    "ruleContent": "tag.iframe.2@src\n<js> \nurl=\"https://porn87.com\"+result\nvar html= java.ajax(url);\nresult=html;\n</js>\nvideo@all",
    "ruleDescription": "",
    "ruleImage": "img@src",
    "ruleLink": "a@href@js:'https://porn87.com/'.concat(result)",
    "ruleNextPage": "class.pagination-next.0@a@href@js:'https://porn87.com/'.concat(result)",
    "rulePubDate": "日期:{{@@tag.span.1@text}} 長度:{{@@class.video_time@text}}",
    "ruleTitle": "tag.span.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::https://porn87.com/main/tag?name=&days_range=0&lineup=create_time&page={{page}}\n搜尋::https://porn87.com/main/search?name={{source.getVariable()}}&days_range=0&lineup=create_time&page={{page}}\n中港台::https://porn87.com//main/tag?name=中港台\n高清AV::https://porn87.com//main/tag?name=高清日本AV\n少女::https://porn87.com//main/tag?name=少女女友\n教師::https://porn87.com//main/tag?name=教師\n人妻::https://porn87.com//main/tag?name=人妻\n做愛::https://porn87.com//main/tag?name=做愛\n口交::https://porn87.com//main/tag?name=口交\n肛交::https://porn87.com//main/tag?name=肛交\n足交::https://porn87.com//main/tag?name=足交\n中出::https://porn87.com//main/tag?name=中出\n多P ::https://porn87.com//main/tag?name=多P\n偷拍::https://porn87.com//main/tag?name=偷拍\n白虎::https://porn87.com//main/tag?name=白虎\n名人::https://porn87.com//main/tag?name=名人明星\n辦公室::https://porn87.com//main/tag?name=OL\n制服::https://porn87.com//main/tag?name=制服\n強迫::https://porn87.com//main/tag?name=強迫\n絲襪::https://porn87.com//main/tag?name=絲襪\n妓女::https://porn87.com//main/tag?name=妓女\n素人::https://porn87.com//main/tag?name=素人\n潮吹::https://porn87.com//main/tag?name=潮吹\n自慰::https://porn87.com//main/tag?name=自慰\n巨乳::https://porn87.com//main/tag?name=巨乳\n顏射::https://porn87.com//main/tag?name=顏射口爆\n凌辱::https://porn87.com//main/tag?name=凌辱\n新馬泰::https://porn87.com//main/tag?name=新馬泰\n日韓::https://porn87.com//main/tag?name=日韓\n歐美::https://porn87.com//main/tag?name=歐美\n無碼流出::https://porn87.com//main/tag?name=女優無碼片流出\n近親::https://porn87.com//main/tag?name=近親相姦\nAI合成::https://porn87.com//main/tag?name=明星AI合成影片\n無碼::https://porn87.com//main/tag?name=無碼JAV\n戶外::https://porn87.com//main/tag?name=戶外室外\n姐姐::https://porn87.com//main/tag?name=姐姐\n",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "Porn87",
    "sourceUrl": "https://porn87.com/",
    "style": ".video{\n\tposition:absolute;\n\ttop:0px;\n  height:250px;\n  padding: 0px;\n  width:100%;\n\t}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 352,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "class.videos columns is-multiline is-mobile is-variable is-1@class.card video@class.card-image",
    "ruleContent": "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<title>{{@@class.title is-size-4 mb-2@text}}</title>\n{{@@class.title is-size-4 mb-2@text}}\n<br></br>\n<iframe id=\"video_frame\" src=\"{{@@tag.source@src}}\" allowfullscreen=\"true\" frameborder=\"0\" width=\"100%\" height=\"250\" allowtransparency=\"false\" scrolling=\"on\"> </iframe>",
    "ruleDescription": "",
    "ruleImage": "img@data-src",
    "ruleLink": "a@href",
    "ruleNextPage": "class.pagination-next@href",
    "rulePubDate": "class.is-absolute duration tag is-duration is-dark@text",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜尋::https://kissjav.com/zh/search/video/?s={{source.getVariable()}}&o=recent\n首頁::https://kissjav.com/zh/videos/\n亞洲自拍::https://kissjav.com/zh/videos/asian-webcam-porn/\n中國自拍::https://kissjav.com/zh/videos/china-porn/\n新加坡::https://kissjav.com/zh/videos/singapore-porn/\n馬來西亞::https://kissjav.com/zh/videos/malaysia-porn/\n台灣::https://kissjav.com/zh/videos/taiwan-porn/\n香港::https://kissjav.com/zh/videos/hong-kong-porn/\n韓國::https://kissjav.com/zh/videos/korean-porn/\nKBJ無碼::https://kissjav.com/zh/videos/korean-bj-uncensored/\nJAV有碼::https://kissjav.com/zh/videos/jav-censored/\nJAV無碼::https://kissjav.com/zh/videos/jav-uncensored/\nJAV素人::https://kissjav.com/zh/videos/jav-amateur/\nJAV除碼::https://kissjav.com/zh/videos/reducing-mosaic/\nJAV::https://kissjav.com/zh/videos/japanese-porn/\nJAV流出::https://kissjav.com/zh/search/video/?s=uncensored+leaked&o=recent",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "KissJav",
    "sourceUrl": "https://kissjav.com/videos/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 354,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "class.colVideoList@class.video-elem",
    "ruleContent": "tag.input.3@value\n<js> \nvar str=result.indexOf(\"/embed\",0)\nvar end=result.indexOf(\"frameborder\",0)-2\nvar source=\"{{@@id.video-play@data-src}}\"\nresult=\"https://91porny.com/videos\"+result.slice(str,end)\njava.log(result);\njava.log(source);\n\nresult = \"<iframe scrolling=\\\"no\\\" width=\\\"100%\\\" height=\\\"280px\\\" frameborder=\\\"0\\\" src=\\\"\" + result + \"\\\" allowfullscreen=\\\"true\\\" allowtransparency=\\\"false\\\" scrolling=\\\"on\\\" allow=\\\"accelerometer; encrypted-media; gyroscope; picture-in-picture\\\" ></iframe>\";\n\nresult1 = \"<iframe scrolling=\\\"no\\\" width=\\\"100%\\\" height=\\\"280px\\\" frameborder=\\\"0\\\" src=\\\"\" + source + \"\\\" allowfullscreen=\\\"true\\\" allowtransparency=\\\"false\\\" scrolling=\\\"on\\\" allow=\\\"accelerometer; encrypted-media; gyroscope; picture-in-picture\\\" ></iframe>\";\n\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,bodymargin:0;padding:0;width:100%;}</style></head><body>\" + result + \"<br></br>\" + result1 + \"</body></html>\"\n</js>",
    "ruleDescription": "",
    "ruleImage": "class.img@style\n@js:\nvar start=result.indexOf(\"https\",0)\nvar end=result.indexOf(\".jpg\",0)+4\nresult=result.slice(start,end)",
    "ruleLink": "a.0@href",
    "ruleNextPage": "class.pagination@a.-1@href",
    "rulePubDate": "長度:{{@@class.layer@text}} {{@@class.text-muted.0@text}}",
    "ruleTitle": "a.1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://91porny.com/search?s=%2Fsearch&keywords={{source.getVariable()}}\n蝌蚪最新::https://91porny.com/videos/latest-updates\n視頻最新::https://91porny.com/video/category/latest\n精華::https://91porny.com/video/category/recent-favorit}\n熱門::https://91porny.com/video/category/hot-list\n原創::https://91porny.com/video/category/ori\n歐美::https://91porny.com/videos/categories/europe-america\n國產::https://91porny.com/videos/categories/chinese\n亂倫::https://91porny.com/videos/categories/fornication\n日韓::https://91porny.com/videos/categories/japan-korea\n動漫::https://91porny.com/videos/categories/anime\n高清::https://91porny.com/videos/categories/hd\nSM::https://91porny.com/videos/categories/sm\n小巨::https://91porny.com/author/%E5%B0%8F%E5%B7%A8\nVritra::https://91porny.com/author/Vritra\nswfbxn106::https://91porny.com/author/swfbxn106",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://91porny.com/favicon.ico",
    "sourceName": "91視頻",
    "sourceUrl": "https://91porny.com/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 360,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.grid-item column",
    "ruleContent": "<video src=\"{{@@id.preview-video@source@src##//##https://}}\" width=\\\"100%\\\" controls height=\\\"auto\\\"></video>\n<html><head><meat charset=\\\"utf-8\\\"><meat name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\"/><style>html,body{margin:0;padding:0;width:100%;}</style></head><body></body></html>\n{{@@class.panel-block@all}}\n<p>点击图片阅览大图</p>\n{{@@class.tile-item.1@all##data-src##src}}\n{{@@class.tile-item.2@all##data-src##src}}\n{{@@class.tile-item.3@all##data-src##src}}\n{{@@class.tile-item.4@all##data-src##src}}\n{{@@class.tile-item.5@all##data-src##src}}\n{{@@class.tile-item.6@all##data-src##src}}\n{{@@class.tile-item.7@all##data-src##src}}\n{{@@class.tile-item.8@all##data-src##src}}\n{{@@class.tile-item.9@all##data-src##src}}\n{{@@class.tile-item.10@all##data-src##src}}\n{{@@class.tile-item.11@all##data-src##src}}",
    "ruleImage": "img@data-src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.meta@text",
    "ruleTitle": "class.uid@text&&class.video-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "番号搜索::https://javdb.com/search?q=ipx&f=all\n三上悠亚::https://javdb.com/actors/Av2e?page={{page}}\n安斋拉拉::https://javdb.com/actors/DXE5?page={{page}}\n更新::https://javdb.com/?page={{page}}\n发布::https://javdb.com/?page={{page}}&vft=1&vst=1\n日排行榜::https://javdb.com/rankings/video_censored?period=daily\n周排行榜::https://javdb.com/rankings/video_censored?period=weekly\n月排行榜::https://javdb.com/rankings/video_censored?period=monthly\n",
    "sourceComment": " 官方App: jav.app, 最新域名: javdb9.com, 永久域名: javdb.com, 新網址獲得方法",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/3NWMMSVT/1647606358661.png",
    "sourceName": "Javdb",
    "sourceUrl": "https://javdb.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 361,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.col-lg-1-5 col-6 col-sm-6 col-md-4 col-lg-3",
    "ruleContent": ".content-area@html@js:\nvar style=\"<style>body{padding:5px;word-wrap:break-word;line-height:2em;letter-spacing:2px;background:floralwhite;}a{color: grey;text-decoration:none;}div,p{text-indent:2em;}h1{text-align:center;font-size:20px;line-height:1.5em;}h2{text-align:center;font-size:16px;line-height:1.5em;}img{float:left;width:100%;height:auto;padding:5px 0}section{text-align:center}</style>\";\nvar doc=org.jsoup.Jsoup.parse(result);\nstyle+doc.select(\".entry-title\").eq(0)+\ndoc.select(\".entry-content a\")+\"<section><a href=\\\"\"+doc.select(\".article-copyright a\").eq(1).attr(\"href\")+\"\\\">阅读原文</a></section>\"",
    "ruleDescription": "",
    "ruleImage": "class.placeholder@tag.img@data-src",
    "ruleLink": "tag.h2@tag.a.0@href",
    "ruleNextPage": "class.next page-numbers@href",
    "rulePubDate": "",
    "ruleTitle": "tag.h2@tag.a.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "绝对领域::https://www.fulizui.com/atfield \n唯美少女::https://www.fulizui.com/pure-girls \n最热女神::https://www.fulizui.com/netmuse",
    "sourceGroup": "h",
    "sourceIcon": "https://www.fulizui.com/wp-content/uploads/2020/02/1582350704-2edb6831ab6bca6.png",
    "sourceName": "福利醉",
    "sourceUrl": "https://www.fulizui.com/atfield",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 365,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 10.0.0;  XXX Pro Build/GAMER) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.wqindex_list_ul@li&&class.wqfooter@tag.li.1&&class.wqplate_warp@tag.li.5",
    "ruleContent": "",
    "ruleImage": "",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "text.下一页@tag.a@href",
    "rulePubDate": "@js:\nif(baseUrl.match(/forum/)){\nvar doc = org.jsoup.Jsoup.parse(result);\nvar info = doc.select(\"p.list_info\").select(\"span\").textNodes();\nvar author = info.get(0);\nvar views = info.get(2);\nvar reply = info.get(1);\nresult = '作者: '+author+'  浏览: '+views+'  回复: '+reply\n}",
    "ruleTitle": "tag.a@text@js:if(baseUrl.match(/forum/)){\nresult = \"{{@@class.wqtitle_list.0@text}}\"}\nelse{result}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "快捷::https://www.abooky.com\n发书审核::https://www.abooky.com/forum-37-1.html\n二次元小说::https://www.abooky.com/forum-38-1.html\n全本小说::https://www.abooky.com/forum-39-1.html\n常规小说::https://www.abooky.com/forum-40-1.html\n女频小说::https://www.abooky.com/forum-42-1.html",
    "sourceGroup": "noh",
    "sourceIcon": "https://www.abooky.com/template/wq_app/static/images/gz_logo.png",
    "sourceName": "阅次元(修正)",
    "sourceUrl": "https://www.abooky.com",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 377,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.update_area_lists@tag.li",
    "ruleContent": "<!--获取标题-->\n<title>{{@title@text}}</title>\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.2/viewer.min.css\">\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.2/viewer.min.js\"></script>\n\n<h6><i><br>p1</i></h6>\n<div id=\"box\"></div>\n<h6 id=\"loads\"><i>加载中...</i></h6>\n\n<script>\nbox = document.getElementById(\"box\")\nloads = document.getElementById(\"loads\")\n//获取图片，图片没错，怎么显示不了啊\nimg = '<img onload=\"box.viewer.update()\" src=\"'\nsrc=\"{{@.content@img@src##.*/u(.*)##https://www.xrmn5.cc/u$1,}}\".split(\",\")\nfor(i=0; i<src.length; i++){\n\tbox.innerHTML += img+src[i]+'\">'\n}\n\ni=1\nu=\"{{baseUrl.replace(/html/,'_[i].html')}}\"\n//获取下一页如何替换\n\ndocument.querySelector(\"img\").onload = () => {\n\tnew Viewer(box,{title:false,interval:3000})\n\tnew IntersectionObserver(entries => {\n\t\tif(entries[0].intersectionRatio){\n\t\t\turl=u+i*12\n\t\t\tfetchJson(url)\n\t\t\ti++\n\t\t\tif(i>2){imgStyle()}\n\t\t}\n\t}).observe(loads)\n}\n\n\nfunction fetchJson(url){\n\tloads.innerText = \"p\"+(i+1)+\"加载中...\"\n\tfetch(url).then(res=>res.json())\n\t.then($=>{src=$.res.vertical\n\t\tbox.innerHTML += '<h6><i>p'+i+'</i></h6>'\n\t\tfor(I=0; I<src.length; I++){\n\t\t\tbox.innerHTML += img+src[I].img+'\">'\n\t\t\t}\n\t\t})\n\t.catch(x=>{box.innerHTML += '<h6><i>p'+i+'加载失败...</i></h6>'})\n}\n\n\n//初始化5秒后执行\nsetTimeout(imgStyle,5000)\n\nfunction imgStyle(){\n\tv = \"{{String(source.getVariable())}}\"\n\tif(v==6){\n\t\tw=''\n\t\tm=''\n\t}else if(v==4){\n\t\tw='width:22.5%'\n\t\tm='margin-bottom:0'\n\t}else if(v==3){\n\t\tw='width:30.8%'\n\t\tm='margin:0'\n\t}else if(v==1){\n\t\tw='width:97.5%'\n\t\tm='margin:0'\n\t}else{\n\t\tw='width:47.5%'\n\t\tm='margin:0'\n\t}\n\tImg = document.getElementsByTagName(\"img\")\n\tfor(s=0;s<Img.length;s++){\n\t\tImg[s].style.cssText = w\n\t}\n\tH6 = document.getElementsByTagName(\"h6\")\n\tfor(s=0;s<H6.length;s++){\n\t\tH6[s].style.cssText = m\n\t}\n}\n</script>\n<style>\n\th6{\n\t\ttext-align:center;\n\t\t}\n\timg{\n\t\twidth:14.1%;\n\t\tmargin:1.25%;\n\t\tborder-radius:20px;\n\t\t}\n</style>",
    "ruleDescription": "",
    "ruleImage": "tag.a@tag.img@src",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "class.page@tag.a.-2@href",
    "rulePubDate": "{{@class.meta-post@textNodes}}_浏览{{@class.cx_like@textNodes}}次",
    "ruleTitle": "tag.a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "一周推荐::https://www.xrmn5.cc/tj.html\n最新::https://www.xrmn5.cc/zx.html\n最热::https://www.xrmn5.cc/rm.html\n秀人网::https://www.xrmn5.cc/XiuRen/\nImiss爱蜜社::https://www.xrmn5.cc/Imiss/\n模范学院::https://www.xrmn5.cc/MFStar/\n魅妍社::https://www.xrmn5.cc/MiStar/\n美媛馆::https://www.xrmn5.cc/MyGirl/\n爱蜜社::https://www.xrmn5.cc/IMiss/\n尤物馆::https://www.xrmn5.cc/YouWu/\n嗲囡囡::https://www.xrmn5.cc/FeiLin/\n蜜桃社::https://www.xrmn5.cc/MiiTao/\n尤蜜荟::https://www.xrmn5.cc/YouMi/\n画语界::https://www.xrmn5.cc/XiaoYu/\n花漾::https://www.xrmn5.cc/HuaYang/\n星颜社::https://www.xrmn5.cc/XingYan/\n兔几盟::https://www.xrmn5.cc/BoLoli/\n优星馆::https://www.xrmn5.cc/Uxing/\n影私荟::https://www.xrmn5.cc/WingS/\n星乐园::https://www.xrmn5.cc/LeYuan/\n顽味生活::https://www.xrmn5.cc/Taste/\n糖果画报::https://www.xrmn5.cc/Candy/\n萌榜::https://www.xrmn5.cc/Micat/",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "http://tva1.sinaimg.cn/large/008p4gOdly1gypuh2zvvaj30sg0sgdng.jpg",
    "sourceName": "秀人集(壁纸喵写法如何写啊)有请THOMS大佬高速一下",
    "sourceUrl": "https://www.xrmn5.cc/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 380,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\t\"User-Agent\":\"Mozilla/5.0 (Linux; Android 8.0.0; MI 5s Plus Build/OPR1.170623.032; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.update_area_lists@tag.li",
    "ruleContent": "<!DOCTYPE html>\r\n<html>\r\n\r\n<head>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\r\n    <link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n    <script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\r\n    <script src=\"http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js\"></script>\r\n</head>\r\n\r\n<body>\r\n    <h3>{{@@.item_title@tag.h1@text}}</h3>\r\n<h5>{{@class.jianjie@text}}</h5>\r\n    <div id=\"box\">{{@@class.content.1@tag.p@tag.img@html}}</div>\r\n    <div id=\"loads\">加载中 </div>\r\n    <script>\r\n        var loads;\r\n        $(document).ready(function () {\r\n            var box = document.getElementById(\"box\");\r\n            loads = document.getElementById(\"loads\");\r\n            new Viewer(box, { title: false, interval: 3000 })\r\n            var i = 1;\r\n            var page = {{@@class.page.0@tag.a.-2@textNodes##\\n}}-1;\r\n            var url = \"{{baseUrl.replace('.html','_')}}\";\r\n            new IntersectionObserver(entries => {\r\n                if (entries[0].intersectionRatio) {\r\n                    if (entries[0].intersectionRatio <= 0) return;\r\n                    for (var j = 0; j < 1; j++) {\r\n                        fetchHtml(i, page, url);\r\n                        i += 1;\r\n                    }\r\n                }\r\n            }).observe(loads)\r\n        });\r\n\r\n\r\n        function fetchHtml(i, page, url) {\n        \t\r\n            if (i <= page) {\r\n                nurl = url + i + '.html';\r\n                $.ajax({\r\n                    url: nurl,\r\n                    dataType: 'html',\r\n                    success: function (html) {\r\n                        $('#box').append('<h5>' + (++i) + '->' + (++page) + '</h5>');\r\n                        $('#box').append($(html).find('p img'));\r\n                        box.viewer.update();\r\n                    },\r\n                    error: function (xhr) { }\r\n                });\r\n            } else {\r\n                $('#loads').html(\"\");\r\n            }\r\n        }\r\n    </script>\r\n</body>\r\n\r\n</html>",
    "ruleDescription": "",
    "ruleImage": "tag.a@tag.img@src",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "class.page@tag.a.-2@href",
    "rulePubDate": "{{@class.meta-post@textNodes}}_浏览:{{@class.cx_like@textNodes}}",
    "ruleTitle": "tag.a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::http://www.xiurenb.vip/new.html\n随机::http://www.xiurenb.vip/XiuRen/index{{ Math.ceil(Math.random()*50) }}.html\r\n一周推荐::http://www.xiurenb.vip/top.html\r\n最热::http://www.xiurenb.vip/hot.html\r\n秀人网::http://www.xiurenb.vip/XiuRen/\r\nImiss爱蜜社::http://www.xiurenb.vip/IMiss/\r\n模范学院::http://www.xiurenb.vip/MFStar/\r\n魅妍社::http://www.xiurenb.vip/MiStar/\r\n美媛馆::http://www.xiurenb.vip/MyGirl/\r\n尤物馆::http://www.xiurenb.vip/YouWu/\r\n嗲囡囡::http://www.xiurenb.vip/FeiLin/\r\n蜜桃社::http://www.xiurenb.vip/MiiTao/\r\n尤蜜荟::http://www.xiurenb.vip/YouMi/\r\n画语界::http://www.xiurenb.vip/XiaoYu/\r\n花漾::http://www.xiurenb.vip/HuaYang/\r\n星颜社::http://www.xiurenb.vip/XingYan/\r\n兔几盟::http://www.xiurenb.vip/BoLoli/\r\n优星馆::http://www.xiurenb.vip/Uxing/\r\n影私荟::http://www.xiurenb.vip/WingS/\r\n星乐园::http://www.xiurenb.vip/LeYuan/\r\n顽味生活::http://www.xiurenb.vip/Taste/\r\n糖果画报::http://www.xiurenb.vip/Candy/\r\n萌榜::http://www.xiurenb.vip/Micat/",
    "sourceComment": "2022 5 17 \nfix bug\n",
    "sourceGroup": "h",
    "sourceIcon": "http://tva1.sinaimg.cn/large/008p4gOdly1gypuh2zvvaj30sg0sgdng.jpg",
    "sourceName": "秀人集v16",
    "sourceUrl": "http://www.xiurenb.vip/",
    "style": "/*标题相关*/\r\nh3{text-align:center}\r\nh6{margin-bottom:0}\r\nimg{width:100%}\nh5{margin-bottom:0;padding-left:5;}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 381,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\t\"User-Agent\":\"5.0 (Linux; Android 12.0.1; zh-cn; Pixel 8 Pro; wv lite baiduboxapp) baiduboxapp/ AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/108.0.4758.46 UCBrowser/13.9.1.1172 Mobile Safari/537.36 WuZhui/8.1.1 SearchCraft/3.9.2 (Baidu; P1 12) Quark/4.5.5.155 ALiSearchApp/2.4 AliApp(TB/9.5.6)\",\n\t\"accept\":\"application/json, text/plain, */*\",\n\t\"origin\":\"https://www.tkbpyg.life\",\n\t\"Cookie\":\"_ga=GA1.2.362149460.1667146250; _gid=GA1.2.867623144.1667146250; _gat_gtag_UA_177565119_1=1; _gat_gtag_UA_126180402_1=1\"\n\t}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "preload": false,
    "ruleArticles": "$.content",
    "ruleContent": "id.myPlayer@source@src\n<js>\nif(result){\n\tjava.toast('🔞视频链接获取成功！\\n链接解密中，请耐心等待\\nby 银河中的咸鱼')\nresult = \"<video  width=\\\"100%\\\" height=\\\"240\\\" controls=\\\"\\\" autoplay=\\\"\\\" name=\\\"media\\\"><source src=\\\"\"+result+\"\\\" type=\\\"application/x-mpegURL\\\"></source></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result + \"</body></html>\"\n result\n}else{\n\tjava.toast('🔞视频链接获取失败❗️\\nby 银河中的咸鱼')\n}\n</js>",
    "ruleDescription": "",
    "ruleImage": "https://static.tkbk8o.life/{{$.batch}}/{{$.url}}/thumbnail.jpg",
    "ruleLink": "https://www.tkbk8o.life/view_video.html?batch={{$.batch}}&u={{$.url}},{\"webView\":true}",
    "ruleNextPage": "page",
    "rulePubDate": "",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://api.tkbpyg.life/v/list?recommendType=NEW&page={{page=page-1}}&pageSize=32&title={{source.getVariable()}}\n素人::https://api.tkbpyg.life/v/list?page={{page=page-1}}&pageSize=20&star=素人\n多女优共演::https://api.tkbpyg.life/v/list?page={{page=page-1}}&pageSize=20&star=多女优共演\n三上悠亚::https://api.tkbpyg.life/v/list?page={{page=page-1}}&pageSize=20&star=三上悠亚",
    "sourceComment": "地址发布页： https://www.tkb88.life\n地址发布页： https://tuoku9.com\n本站app下载地址： https://static.tkbk8o.life/app/tk8.apk\n备用地址一： tkb999.life\n设置源变量搜索",
    "sourceGroup": "h",
    "sourceIcon": "https://inisqw.gitee.io/rss/66.jpg",
    "sourceName": "©脱裤吧",
    "sourceUrl": "https://www.tkbk8o.life/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 382,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "\n{\n    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36\",    \"Accept-Language\":\"zh-CN,zh;q=0.9\",\n \"Cache-Control\":\"no-cache\",\n \"Referer\":\"https://www.mzitu.com/\",\n }\n",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.postlist@li",
    "ruleContent": "@js:\n//获取总页数，与页数无关的文字去除\npage=parseInt(java.getString('class.pagenavi@tag.a.4@text'))\njava.log(page)\n\nvar title = java.getElements(\".main-title\");\nvar content = java.getElements(\".main-image@img\");\nvar doc = org.jsoup.Jsoup.parse(content)\n//解析剩下页数,并追加剩余页数内容\nvar other = [];\nif(\"{{@@pages}}\"!=null)\n{\n\nfor(var i = 2;i <= page;i++)\n{\nvar url = baseUrl\nurl = url + \"/\"+i\nvar doc = org.jsoup.Jsoup.connect(url).get()\nother[i] =  doc.select(\".main-image\").select(\"img\");\n}\n}\nvar all = title +'<hr><p>'+content+other.join(\" \")\n\nresult = String(all).replace(/<h2 class=\".*?\"/g,\"<h2\")\n.replace(/ class=\".*?\"|alt=\".*?\"|width=\".*?\"|height=\".*?\"/g,\"\")\n\n",
    "ruleDescription": "",
    "ruleImage": "tag.img@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.time@text",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "清纯妹子::https://www.mzitu.com/mm/\n性感妹子::https://www.mzitu.com/xinggan/\n日本妹子::https://www.mzitu.com/japan/\n搜索::https://www.mzitu.com/search/女神",
    "sourceComment": "更新了图片，加载速度感人，封面图防盗不知为什么过不了",
    "sourceGroup": "h",
    "sourceIcon": "http://img.smzy.com/imges/2019/1021/20191021015913748.png",
    "sourceName": "妹子图(新)",
    "sourceUrl": "https://www.mzitu.com/",
    "style": "h2{\ntext-align:center;\nfont-size:15}\n\nimg {\nwidth:100%;\nheight:auto;\nborder:4px double black;\n}\n\n",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 385,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.update_area_lists@tag.li",
    "ruleContent": "<!DOCTYPE html>\r\n<html>\r\n\r\n<head>\r\n    <link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n    <script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\r\n</head>\r\n\r\n<body>\r\n    <div id=\"box\">{{@@class.content.1@tag.p@tag.img@html}}</div>\r\n    <div id=\"loads\">加载中 </div>\r\n    <script>\r\n        var box = document.getElementById(\"box\");\r\n        var loads = document.getElementById(\"loads\");\r\n       var io; document.querySelector(\"img\").onload = () => {\r\n            new Viewer(box, {\r\n                //设置图片地址来源\r\n                url: 'src',\r\n                //是否显示图片标题(true/false)\r\n                title: false,\r\n                //设置播放间隔(单位毫秒，1秒=1000毫秒)\r\n                interval: 3000\r\n            });\r\n            loads.id = 'load';\r\n            var i = 1;\r\n            var page = {{@@class.page@tag.a.-2@text}};\r\n            var url = \"{{baseUrl.replace('.html','_')}}\";\r\n            io = new IntersectionObserver(entries => {\r\n                if (entries[0].intersectionRatio <= 0) return;\n                for(var j=0;j<3;j++){\n                \tfetchHtml(i,page,url);\t\n                \ti+=1;\n                \t}\r\n              \r\n            });\r\n            io.observe(load);\r\n        }\r\n\r\nfunction fetchHtml(i,page,url){\r\n if (i <= page) {\r\n                    nurl = url + i + '.html';\r\n                    fetch(nurl).\r\n                        then(res => res.text()).\r\n                        then(text => {\n                        \t\r\n                           new DOMParser().parseFromString(text, \"text/html\").querySelectorAll(\"p img\").\r\n                            forEach(item => box.innerHTML +='<div style=\"width:100%;border-left:2px solid #000\"><h4>'+(++i)+'->'+(++page)+'</h4></div>'+ item.outerHTML.replace(\"size(this)\", 'box.viewer.update()'))\r\n                        })\r\n\r\n                } else {\r\n                    io.unobserve(load);\r\n                    load.innerHTML = ''\r\n                }\r\n                i += 1;\r\n}\r\n    </script>\r\n</body>\r\n\r\n</html>",
    "ruleDescription": "",
    "ruleImage": "tag.a@tag.img@src",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "text.下页@href",
    "rulePubDate": "class.meta-post@text",
    "ruleTitle": "tag.a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "推荐::https://www.xiurenji.net/hot.html\n最新::https://www.xiurenji.net/new.html\n秀人网::https://www.xiurenji.net/XiuRen/\nImiss爱蜜社::https://www.xiurenji.net/IMiss/\n模范学院::https://www.xiurenji.net/MFStar/\n魅妍社::https://www.xiurenji.net/MiStar/\n美媛馆::https://www.xiurenji.net/MyGirl/\n爱蜜社::https://www.xiurenji.net/IMiss/\n尤物馆::https://www.xiurenji.net/YouWu/\n嗲囡囡::https://www.xiurenji.net/FeiLin/\n蜜桃社::https://www.xiurenji.net/MiiTao/\n尤蜜荟::https://www.xiurenji.net/YouMi/\n画语界::https://www.xiurenji.net/XiaoYu/\n花漾::https://www.xiurenji.net/HuaYang/\n星颜社::https://www.xiurenji.net/XingYan/\n兔几盟::https://www.xiurenji.net/BoLoli/\n优星馆::https://www.xiurenji.net/Uxing/\n影私荟::https://www.xiurenji.net/WingS/\n星乐园::https://www.xiurenji.net/LeYuan/\n顽味生活::https://www.xiurenji.net/Taste/\n糖果画报::https://www.xiurenji.net/Candy/\n萌榜::https://www.xiurenji.net/Micat/",
    "sourceGroup": "h",
    "sourceIcon": "http://tva1.sinaimg.cn/large/008p4gOdly1gypuh2zvvaj30sg0sgdng.jpg",
    "sourceName": "秀人集v1.0",
    "sourceUrl": "https://www.xiurenji.net/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 393,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "id.masonry.0@class.item",
    "ruleContent": ".content@tag.img@data-original##\\n##\\$\n\n<js>\nli='\\n'\njava.log(result)\nlist=result.split('$')\nfor(i in list){\n\t     if(list[i].length<20) break;\n\t\tli += '<li><img src=\"/static/thumbnail.gif\" data-src=\"'+list[i]+'\"></li>\\n';\n\t}\nli\n</js>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n\n\n<ul id=\"box\">\n{{result}}\n</ul>\n<h3>{{@@.song-info@h3@text}}</h3>\r\n<h6>{{@@id.myList@h4@text}}</h6>\n\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\n<script>\n\troot = document.getElementById('box')\n\tlazy = new IntersectionObserver(entires => {\n\t\tentires.forEach(item => {\n\t\t\tif(item.isIntersecting){\n\t\t\t\titem=item.target\n\t\t\t\titem.src=item.getAttribute('data-src')\n\t\t\t\tlazy.unobserve(item)\n\t\t\t}\n\t\t})\n\t}, {\n\t\troot: root,\n\t\tthreshold: [0],\n\t\trootMargin:\"0px 0px 500px 0px\"\n\t})\n\nimgs = document.getElementsByTagName('img')\nArray.from(imgs).forEach(item => {\n\t\tlazy.observe(item)\n\t})\n\n//查看大图插件\nnew Viewer(root,{title:false,interval:3000})\n</script>",
    "ruleImage": "tag.img.0@data-original",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.item-sort.0@text",
    "ruleTitle": "class.item-link-text.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://www.hentaiclub.net/search/{{source.getVariable()}}\nR15::/sort/r15.html/{{page}}/\nR18::/sort/r18.html/{{page}}/\n随机R15::/sort/r15.html/{{ Math.ceil(Math.random()*690) }}/\n随机R18::/sort/r18.html/{{ Math.ceil(Math.random()*309) }}/",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "绅士会所",
    "sourceUrl": "https://www.hentaiclub.net/",
    "style": "* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 394,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n  \"User-Agent\": \"Mozilla/5.0 (Linux; Android 8.1.0; JKM-AL00b Build/HUAWEIJKM-AL00b; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044807 Mobile Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.column-2",
    "ruleContent": "<script src=\"https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js\"> </script>\n<p id=\"title\"><p>\n<div id=\"htm\"></div>\n<div id=\"page\"></div>\n<hr>\n{{page=src.match(/第1\\/(\\d+)页/)[1];p='';html='';for(i=1;i<=page;i++){url=baseUrl.replace(/(\\d+)\\/$/,'$1_'+i+'/');p+='<button class=\"p\" value=\"'+url+'\">第'+i+'页</button>'}html=java.getString(\"@@class.chapter-list.-1@class.list@html\",false);'<div id=\"list\">'+String(html).replace(/href/g,\"value\").replace(/<li><a/g,'<button class=\"button\"').replace(/<\\/a><\\/li>/g,'</button>')+'</div><div id=\"p\">'+p+'</div>'}}\n<script>\nfunction gethtml(url){\n$.get(url,function(data){\nre=String(data).match(/<div class=\"page-content font-large\">([\\s\\S]+?)<div/)[1];\npage=data.match(/class=\"chapterPages\">([\\s\\S]+?)<\\/center>/)[1];\npage=page.replace(/<a href/g,'<button onclick=\"gethtml(this.value);change(this)\" value').replace(/<\\/a>/g,'</button>');\nhtml=String(re).replace(/<br\\/>/g,'').replace(/\\&nbsp;/g,'').replace(/(。[」”]?)/g,\"$1<br/><br/>\");\ndiv=document.getElementById(\"htm\");\npdiv=document.getElementById(\"page\");\nif(!$(\"#page\").text()){\npdiv.innerHTML=page;}\ndiv.innerHTML=html;\nif(!$(\"#page button\").hasClass(\"upBtn\")){\n$(\"#page button:first\").addClass(\"upBtn\");}\n})\n};\nfunction change(e){\n$(\"#page button\").removeClass(\"upBtn\");\n$(e).addClass(\"upBtn\");document.getElementById(\"htm\").scrollTop =  0;\n}\n$(\".button\").click(function(){\n$(\".button\").removeClass(\"upBtn\");\n$(this).addClass(\"upBtn\");\nurl=$(this).val();\ngethtml(url);\ndocument.body.scrollTop = document.documentElement.scrollTop = 0;\n$(\"#title\").text($(this).text());\ndocument.getElementById(\"htm\").scrollTop =  0;\n});\n$(\".p\").click(function(){\nurl=$(this).val();\n$(\".p\").removeClass(\"upBtn\");\n$(this).addClass(\"upBtn\");\n$.get(url,function(data){\nhtml=data.match(/chapter-list\">[\\s\\S]+?\"bd\">[\\s\\S]+?<\\/div>/g)[1].match(/chapter-list\">[\\s\\S]+?\"bd\">([\\s\\S]+?)<\\/div>/)[1];\nhtml=String(html).replace(/href/g,\"value\").replace(/<li><a/g,'<button').replace(/<\\/a><\\/li>/g,'</button>');\ndiv=document.getElementById(\"list\");\ndiv.innerHTML=html;\n})\n})\n</script>",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.nextPage@tag.a@href",
    "rulePubDate": "{{@@tag.a.2@text}} · {{@@tag.span.1@text}} · {{@@tag.span.0@text}} · {{@@tag.p.-1@text}}##更新.",
    "ruleTitle": "tag.a.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::http://www.longtenghuaxia.com/s.php,{\"charset\": \"gbk\",\"method\": \"POST\",\"body\": \"s=我的&type=articlename\"}\n总榜::http://www.longtenghuaxia.com/shuku/0-allvisit-0-{{page}}.html\n月榜::http://www.longtenghuaxia.com/shuku/0-monthvisit-0-{{page}}.html\n字数::http://www.longtenghuaxia.com/shuku/0-size-0-{{page}}.html\n新书::http://www.longtenghuaxia.com/shuku/0-postdate-0-{{page}}.html\n奇幻玄幻::http://www.longtenghuaxia.com/shuku/1-lastupdate-2-{{page}}.html\n都市言情::http://www.longtenghuaxia.com/shuku/3-lastupdate-2-{{page}}.html\n穿越历史::http://www.longtenghuaxia.com/shuku/4-lastupdate-2-{{page}}.html\n科幻灵异::http://www.longtenghuaxia.com/shuku/5-lastupdate-2-{{page}}.html\n藏经阁::http://www.longtenghuaxia.com/shuku/6-lastupdate-2-{{page}}.html\n其他类型::http://www.longtenghuaxia.com/shuku/7-lastupdate-2-{{page}}.html\n仙侠武侠::http://www.longtenghuaxia.com/shuku/2-lastupdate-2-{{page}}.html",
    "sourceGroup": "h",
    "sourceIcon": "http://www.longtenghuaxia.com/images/jipin-default.jpg",
    "sourceName": "第一版主",
    "sourceUrl": "http://www.longtenghuaxia.com",
    "style": "button{outline:none;height:35px; border-radius: 10px; border:3px solid #fff; background-color: #E9E4E0;vertical-align:middle; margin-bottom:8px}\nul{margin:0;padding:0}\n.upBtn{ background-color: #ffffcc; }\n#htm{width:100%; height:500px;color: #000000; border:1px solid #000000;overflow:scroll}\nimg{height:13px;width:13px}\n#p{border:1px solid #000000;}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 396,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleImage": "",
    "ruleLink": "",
    "ruleNextPage": "",
    "shouldOverrideUrlLoading": "",
    "showWebLog": false,
    "singleUrl": true,
    "sortUrl": "",
    "sourceComment": "https://www.sshs.pw/\n\t",
    "sourceGroup": "h",
    "sourceIcon": "https://www.10357756.xyz/static/favicon.ico",
    "sourceName": "绅士会所",
    "sourceUrl": "https://www.10357756.xyz/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 401,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 10.0.0;  XXX Pro Build/GAMER) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "ul@li",
    "ruleContent": "@js: h=java.getStringList(\"[data-fancybox=\\\"gallery\\\"]@href\",false).toArray().map(d => \"<img class='lazy' data-origanl='\" + d + \"'/>\").join('');\n\nresult=\"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\"/><style>html,body,*{margin:0;padding:0;width:100%;}body{height: 100%;}img{width:100%;min-height: 40px;}h1{text-align: center;padding: 2em 0;}</style><script>function scrolled() { var imgs = document.querySelectorAll('.lazy'); for (let i = 0; i < imgs.length; i++) { const img = imgs[i]; if (img.offsetTop < document.body.scrollTop + document.body.offsetHeight + 100) { img.className = ''; img.src = img.attributes['data-origanl'].value } } } function init() { document.body.onscroll = scrolled;scrolled();}</script></head><body onload='init()'>\"+h+\"</body></html>\"",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "page",
    "rulePubDate": "time@text",
    "ruleTitle": "tag.li@id",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "主页::https://nsfwpicx.com/<,page/{{page}}>/",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "nsfwpicx复制粘贴",
    "sourceUrl": "https://nsfwpicx.com",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 407,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".col-xs-6",
    "ruleImage": "img@src",
    "ruleLink": ".title@a@href",
    "ruleNextPage": ".pager-next@a@href",
    "rulePubDate": ".username@text",
    "ruleTitle": ".title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "视频::https://www.iwara.tv/videos?language=zh-hans\n图片::https://www.iwara.tv/images?language=zh-hans",
    "sourceGroup": "h",
    "sourceIcon": "https://www.iwara.tv/sites/all/themes/main/img/logo.png?language=zh-hans",
    "sourceName": "lwara",
    "sourceUrl": "https://www.iwara.tv",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 410,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://s.panlai.com/upload/bizhihui_com_20231111163157169969151778018.jpg-arthumbs",
    "sourceName": "Kaizty Photos",
    "sourceUrl": "https://www.kaizty.com/?m=1",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 411,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".leftp",
    "ruleContent": "@js: \n   let pics=java.getString('.mainleft@img@data-original');   \n   let p=String(pics).split(\"\\n\").map(i=>`<img src=\"${i}\">`).join(\"\\n\");\n   p;",
    "ruleImage": "img@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "text.next@href",
    "ruleTitle": "p@a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::/search.php?keyword={{source.getVariable()}}&page={{page}}\nGravure::/Gravure.html\nJapan::/Japan.html\nKorea::/Korea.html\nThailand::/Thailand.html\nChinese::/Chinese.html\nCosplay::/Cosplay.html",
    "sourceComment": "//2025.5.17  夜明空 制作\n\n//源社区首发：https://taoba.cf\n\n//源变量搜索",
    "sourceGroup": "h",
    "sourceIcon": "EveriaClub",
    "sourceName": "eve",
    "sourceUrl": "http://www.everiaclub.com/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 413,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "ul@li",
    "ruleContent": "<js>\r\nhtml = result\r\n//总页数-1(最后一页没有图\r\npage = parseInt(java.getString('class.numpages.-1@tag.a@text'))\r\njava.log(\"共\"+page+\"页\")\r\nif(page>1){\r\nnurl=[];\nbase=baseUrl;\r\nfor(i=2;i<=page;i++){\r\n\tnurl.push(base+\"/\"+i+\",{'retry':16}\");\r\n}\r\n\r\nres=java.ajaxAll(nurl)\r\nfor(i in res){\r\n\thtml += org.jsoup.Jsoup.parse(res[i].body())\r\n}\r\n}\r\n</js>\r\n\r\ntag.figure@tag.img@src##\\n##,\r\n\r\n<js>\r\nli='\\n'\r\nlist=result.split(',')\r\nfor(i in list){\r\n\t\tli += '<li><img src=\"https://i0.wp.com/www.4khd.com/wp-content/uploads/2023/02/4khd-1.png?fit=32%2C32&ssl=1\" data-src=\"'+list[i]+'\"></li>\\n'\r\n\t}\r\n\r\n</js>\r\n\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\r\n\r\n\r\n<ul id=\"box\">\r\n{{result}}\r\n</ul>\r\n<h3>{{@@tag.h3.0@text}}</h3>\r\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\r\n<script>\n\r\n\troot = document.getElementById('box')\r\n\tlazy = new IntersectionObserver(entires => {\r\n\t\tentires.forEach(item => {\r\n\t\t\tif(item.isIntersecting){\r\n\t\t\t\titem=item.target\r\n\t\t\t\titem.src=item.getAttribute('data-src')\r\n\t\t\t\tlazy.unobserve(item)\r\n\t\t\t}\r\n\t\t})\r\n\t}, {\r\n\t\troot: root,\r\n\t\tthreshold: [0],\r\n\t\trootMargin:\"0px 0px 500px 0px\"\r\n\t})\r\n\r\nimgs = document.getElementsByTagName('img')\r\nArray.from(imgs).forEach(item => {\r\n\t\tlazy.observe(item)\r\n\t})\r\n\r\n//查看大图插件\r\nnew Viewer(root,{title:false,interval:3000})\r\n</script>\r\n",
    "ruleImage": "img@src",
    "ruleLink": "figure@a@href",
    "ruleNextPage": "page",
    "rulePubDate": "time@text",
    "ruleTitle": "h2.0@a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::/{{page - 1 == 0 ? \"\": \"?query-3-page=\"+page}}\n韩国::/pages/album{{page - 1 == 0 ? \"\": \"?query-3-page=\"+page}}\ncospaly::/pages/cosplay{{page - 1 == 0 ? \"\": \"?query-3-page=\"+page}}\ndjawa::/search/djawa/page/{{page}}\n搜索::/search/{{source.getVariable().length()<1?source.setVariable('손예은'):source.getVariable()}}/page/{{page}}",
    "sourceGroup": "h",
    "sourceIcon": "https://i0.wp.com/www.4khd.com/wp-content/uploads/2023/02/4khd-1.png?fit=32%2C32&ssl=1",
    "sourceName": "4kep",
    "sourceUrl": "https://www.4khd.com/",
    "style": "/*标题相关*/\nh3{text-align:center}\nh6{margin-bottom:0}\n* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 414,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 13; 2211133C Build/TKQ1.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Mobile Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".grid_post-box",
    "ruleContent": "@js:\nlet images = [];\nlet regex = /<a\\s[^>]*?href\\s*=\\s*['\"]([^'\"]+\\.(?:jpe?g|png|gif|webp|bmp))['\"][^>]*>\\s*<img[^>]*>/gi;\nlet match;\nwhile ((match = regex.exec(result)) !== null) {\n    let realUrl = match[1];\n    images.push(`<img src=\"${realUrl}\" style=\"max-width:100%;display:block;margin:0px auto;\">`);\n}\nlet imageContent = images.join('');\nlet p = `\n<title>🏄Mengteen</title>\n<style>\n  * {margin: 0; padding: 0}\n  img {width: 100%;height: auto}\n  /* Mengteen阅图基础UI */\n  /* 返回按钮基础 */\n  #backToTopBtn {\n    display: none;\n    position: fixed;\n    bottom: 36px;\n    right: 18px;\n    z-index: 999;\n    border: none;\n    outline: none;\n    background: linear-gradient(135deg, #ADD8E6, #FFF8DC);\n    color: white;\n    cursor: pointer;\n    padding: 2px;\n    border-radius: 10%;\n    font-size: 18px;\n    box-shadow: 0 8px 32px rgba(70, 130, 180, 0.3);\n    transition: all 0.3s ease;\n    backdrop-filter: blur(4px);\n    border: 1px solid rgba(255, 255, 255, 0.3);\n  }\n  \n  #backToTopBtn:hover {\n    background: linear-gradient(135deg, #ADD8E6, #FFF8DC);\n    transform: scale(1.08);\n    box-shadow: 0 8px 25px rgba(70, 130, 180, 0.4);\n  }\n  \n  #backToTopBtn:active {\n    transform: scale(0.95);\n  }\n  \n  /* 图片加载完成提示基础 */\n  #image-loaded-toast {\n    position: fixed;\n    bottom: 33px;\n    left: 50%;\n    transform: translateX(-50%);\n    background: rgba(0, 0, 0, 0.7);\n    color: white;\n    padding: 10px 20px;\n    border-radius: 20px;\n    font-size: 14px;\n    z-index: 998;\n    backdrop-filter: blur(4px);\n    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n    opacity: 0;\n    transition: opacity 0.3s;\n    pointer-events: none;\n  }\n  \n  /* 标题卡片基础 */\n  #image-loaded-toast.show {\n    opacity: 1;\n  }\n</style>\n<div style=\"\n  text-align:center;\n  padding:50px 20px 20px;\n  margin:0 0 0px;\n  position:relative;\n  background:linear-gradient(135deg, #f0f7ff, #e6f0ff);\n\">\n  <!-- 标题卡片 -->\n  <div style=\"\n    position:relative;\n    z-index:10;\n    display:inline-block;\n    transform:translateY(-20px);\n    filter: drop-shadow(0 15px 25px rgba(70,130,180,0.25));\n  \">\n    <div style=\"\n      background:rgba(255,255,255,0.75);\n      backdrop-filter:blur(12px);\n      padding:16px 48px;\n      border-radius:18px;\n      border:1px solid rgba(255,255,255,0.5);\n      box-shadow:0 8px 32px rgba(70,130,180,0.2), inset 0 0 12px rgba(255,255,255,0.6);\n      position:relative;\n      overflow:hidden;\n    \">\n      <!-- 顶部高光 -->\n      <div style=\"\n        position:absolute;\n        top:0; left:0; right:0;\n        height:40%;\n        background:linear-gradient(to bottom, rgba(255,255,255,0.4), transparent);\n        pointer-events:none;\n      \"></div>\n      \n      <h3 style=\"\n        background:linear-gradient(135deg, #4a7bd0, #00a2b8);\n        -webkit-background-clip:text;\n        background-clip:text;\n        color:transparent;\n        font-size:1.3rem;\n        font-weight:700;\n        margin:0;\n        letter-spacing:-0.5px;\n        position:relative;\n        z-index:2;\n      \">{{@@h1@text}}</h3>\n      \n      <!-- 左下装饰点 -->\n      <div style=\"\n        position:absolute;\n        bottom:12px;\n        left:20px;\n        width:6px;\n        height:6px;\n        background:#00a2b8;\n        border-radius:50%;\n        opacity:0.7;\n      \"></div>\n      \n      <!-- 右下装饰点 -->\n      <div style=\"\n        position:absolute;\n        bottom:12px;\n        right:20px;\n        width:6px;\n        height:6px;\n        background:#4a7bd0;\n        border-radius:50%;\n        opacity:0.7;\n      \"></div>\n    </div>\n  </div>\n  \n  <!-- 时间信息 -->\n  <div style=\"\n    margin-top:0px;\n    padding:0px 20px;\n  \">\n    <h5 style=\"\n      color:#6c757d;\n      font-weight:400;\n      font-size:1rem;\n      margin:0;\n      line-height:1.6;\n      letter-spacing:0.3px;\n      position:relative;\n      display:inline-block;\n      max-width:700px;\n    \">\n      {{@@.post-meta-bottom@time.0@text}}\n      <!-- 下划线装饰 -->\n      <div style=\"\n        position:absolute;\n        bottom:-5px;\n        left:0;\n        width:100%;\n        height:1px;\n        background:linear-gradient(90deg, transparent, rgba(70,130,180,0.3), transparent);\n      \"></div>\n    </h5>\n  </div>\n  \n  <!-- 左上装饰圆 -->\n  <div style=\"\n    position:absolute;\n    top:10%;\n    left:15%;\n    width:40px;\n    height:40px;\n    border-radius:50%;\n    background:linear-gradient(135deg, rgba(74,123,208,0.1), transparent);\n    filter:blur(2px);\n  \"></div>\n  \n  <!-- 右下装饰圆 -->\n  <div style=\"\n    position:absolute;\n    bottom:15%;\n    right:10%;\n    width:60px;\n    height:60px;\n    border-radius:50%;\n    background:linear-gradient(135deg, rgba(0,162,184,0.1), transparent);\n    filter:blur(4px);\n    transform:rotate(30deg);\n  \"></div>\n</div>\n${imageContent}  <!-- 这里是图片内容 -->\n<div id=\"image-loaded-toast\">✅ 全部图片已完成加载</div>\n<button id=\"backToTopBtn\" title=\"回到顶部\">🔝</button>\n<script>\n(function() {\n  const backToTopBtn = document.getElementById(\"backToTopBtn\");\n  const toast = document.getElementById(\"image-loaded-toast\");\n  \n  // 图片加载完成检测\n  const images = document.querySelectorAll(\"img\");\n  let loadedCount = 0;\n  const totalImages = images.length;\n  \n  // 如果页面没有图片，直接隐藏提示\n  if(totalImages === 0) {\n    toast.style.display = \"none\";\n  }\n  \n  // 检测图片加载完成\n  images.forEach(img => {\n    if(img.complete) {\n      checkAllLoaded();\n    } else {\n      img.addEventListener(\"load\", checkAllLoaded);\n      img.addEventListener(\"error\", checkAllLoaded);\n    }\n  });\n  \n  function checkAllLoaded() {\n    loadedCount++;\n    if(loadedCount >= totalImages) {\n      showToast();\n    }\n  }\n  \n  function showToast() {\n    toast.classList.add(\"show\");\n    setTimeout(() => {\n      toast.classList.remove(\"show\");\n    }, 2000);\n  }\n  \n  // 监听页面滚动事件\n  window.addEventListener(\"scroll\", () => {\n    const scrollPosition = window.scrollY || document.documentElement.scrollTop;\n    \n    if (scrollPosition > 288) {\n      backToTopBtn.style.display = \"block\";\n      backToTopBtn.style.opacity = \"1\";\n    } else {\n      backToTopBtn.style.display = \"none\";\n    }\n  });\n  \n  // 点击事件监听器\n  backToTopBtn.addEventListener(\"click\", () => {\n    window.scrollTo({\n      top: 0,\n      behavior: \"smooth\"\n    });\n  });\n})();\n</script>\n`;\np;",
    "ruleImage": "img@data-src",
    "ruleLink": ".clearfix@data-href",
    "ruleNextPage": "page",
    "rulePubDate": "🏄Mengteen｜🔖{{@@.post-cat@text}}",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/page/{{page}}/\n搜索::/page/{{page}}/?s={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('美女'):source.getVariable()}}\n女優画像::/category/avjoyuu/page/{{page}}/\n女高画像::/category/josikousei/page/{{page}}/\nおっぱい画像[美乳]::/category/oppai/page/{{page}}/\n太もも画像[美腿]::/category/hutomomo/page/{{page}}/\nオナニー画像[自慰]::/category/onani/page/{{page}}/\n野外セックス[野外啪啪]::/category/yagaisekkusu/page/{{page}}/\n乱交画像[群P]::/category/rankougazou/page/{{page}}/\nフェラ画像[口交]::/category/fera/page/{{page}}/\nクンニ画像[口交]::/category/kunnni/page/{{page}}/\nパイズリ画像[乳交]::/category/paizurigazou/page/{{page}}/\nレズ[女同]::/category/rezugazou/page/{{page}}/\nキス画像[接吻]::/category/kisugazou/page/{{page}}/\nSM::/category/smgazou/page/{{page}}/\n露出::/category/rosyutsugazou/page/{{page}}/\n偷拍::/category/tousatsugazou/page/{{page}}/\n素人::/category/sirouto/page/{{page}}/\n欧美::/category/gaizinerogazou/page/{{page}}/\n制服::/category/olgazou/page/{{page}}/\n泳衣::/category/mizugi/page/{{page}}/\n网袜::/category/amitaitsu/page/{{page}}/\n黑丝::/category/pannsuto/page/{{page}}/\n吊带::/category/ga-ta-beruto/page/{{page}}/\n浴衣::/category/yukatakimono/page/{{page}}/\n女仆::/category/meido/page/{{page}}/\n眼镜娘::/category/megane/page/{{page}}/",
    "sourceComment": "源社区：@Mengteen  2025.7.16\n二传二创或者是其它问题请联系我。\n我邮箱:[xxxmgqxxx@vip.qq.com]\n我QQ:99737563(备注来意)\n1.不需要挂🪜子,个别地方网络加载可能有点慢或者是需要挂🪜子才能访问，别急！\n2.使用了我自己的看图UI,卡片式标题,自适应全屏,一键返回顶上按钮,图片加载完成提示等。\n3.搜索和分类是按我自己个人喜欢的,你也可以放一些你自己喜欢的。",
    "sourceGroup": "h",
    "sourceIcon": "https://pashalism.com/wp-content/uploads/2022/03/2341-33.jpg",
    "sourceName": "👙工口画像",
    "sourceUrl": "https://pashalism.com/##@Mengteen",
    "type": 0,
    "variableComment": "🏄Mengteen提示：在此输入关键词搜索！"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 415,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://xiaohuangshu.me/images/favicon_2.0.png",
    "sourceName": "小黄书",
    "sourceUrl": "https://xiaohuangshu.me/",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 416,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\t\"User-Agent\": \"Mozilla/5.0 (Linux; Android 9) Mobile Safari/537.36\",\"referer\": \"{{baseUrl}}\"\n\t}",
    "jsLib": "let search = \"https://dns.jingluo.love/2025/68a878e00d302.jpg\";",
    "lastUpdateTime": 1770433530465,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".pornkvideos",
    "ruleContent": "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<title>内容提取</title>\n<!-- v2025.05.10 -->\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<script src=\"https://code.jquery.com/jquery-3.6.0.min.js\"></script>\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.css\" />\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.js\"></script>\n<style>\n    body { font-family: Arial, sans-serif; font-size: 16px; }\n    #title, #page, #loading-status { margin: 0 auto; font-size: 20px; text-align: center; }\n    #description, #urls, #video-url, #video-sources, #messages { width: 100%; max-width: 800px; margin: 1.5px auto; font-size: 14px; text-align: left; word-wrap: break-word; white-space: pre-wrap; }\n    #text, #text :not(img), #text img + * { text-indent: 2em; width: 100%; font-size: 16px; line-height: 1.5em; margin-top: 0; margin-bottom: 0; word-wrap: break-word; white-space: pre-wrap; }\n    img, #text img { width: 100%; height: auto; display: block; margin-bottom: 1.5px; }\n    .flex-container { display: flex; justify-content: center; align-items: center; gap: 10px; margin: 1.5px 0; font-size: 14px; }\n    button, select { flex: 1 1 31%; padding: 3px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; cursor: pointer; background-color: #f9f9f9; transition: background-color 0.3s ease; margin: 1.5px; min-width: 0; font-size: 14px; }\n    #url-select, #video-source-select { flex: 1 1 100%; margin-left: 0; margin-right: 0; text-align: center; }\n    #video-element { width: 100%; height: auto; }\n    textarea { width: 100%; height: auto; min-height: 100px; box-sizing: border-box; resize: vertical; }\n    .error, .warn { color: red; }\n</style>\n</head>\n<body>\n    <h3 id=\"title\">{{@@title@text||h1.0@text||h2.0@text||.title.0@text}}</h3>\n    <p id=\"description\">{{@@.info.0@html||.jianjie@html}}</p>\n    <p id=\"page\" style=\"display:none;\">共<span id=\"total-pages\">1</span>页</p>\n    <p id=\"loading-status\" style=\"display:none;\"></p>\n\n    <div class=\"flex-container\" id=\"loading-buttons\" style=\"display:none;\">\n        <button id=\"prev-page-btn\">上一页</button>\n        <button id=\"next-page-btn\">下一页</button>\n        <button id=\"auto-load-btn\">自&nbsp;&nbsp;动</button>\n    </div>\n    \n    <div class=\"flex-container\">\n        <select id=\"url-select\" style=\"display:none;\"></select>\n    </div>\n    \n    <div class=\"flex-container\">\n        <button id=\"toggle-urls-btn\">显/隐网址</button>\n        <button id=\"toggle-messages-btn\">显/隐信息</button>\n        <button id=\"toggle-debug-btn\">显/隐调试</button>\n    </div>\n    <div id=\"urls\"></div>\n    <div id=\"messages\"></div>\n    <div id=\"debug-info\"></div>\n    <div id=\"video-url\"></div>\n    <div id=\"video-container\" style=\"display: none;\">\n        <video id=\"video-element\" controls preload=\"auto\" width=\"640\" height=\"264\">\n            <source id=\"video-source\" src=\"\" type=\"\">您的浏览器不支持 video 标签。\n        </video>\n    </div>\n    <div class=\"flex-container\" id=\"video-source-container\" style=\"display: none;\">\n        <select id=\"video-source-select\" onchange=\"updateVideoSource()\"></select>\n    </div>\n    <div id=\"images\"></div>\n    <div id=\"text\"></div>\n\n    <script>\n        // 配置对象，包含各种选择器、延迟时间等配置项\n        const config = {    \n            videoSelector: 'body', // 视频选择器\n            imgSelector: '.gridlane-box-inside img,.photos figure img,.content p img', // 图片选择器\n            textSelector: '#content', // 文本选择器\n            debugSelector: '#content, .page, .pager, .content, script', // 调试信息选择器\n            swapImageAttributes: false, // 是否交换图片属性\n            delayTime: 1500, // 延迟提取时间\n            retryDelayTime: 1500, // 重试加载延迟时间\n            maxLoadAttempts: 3, // 最大加载次数\n            autoLoading: false, // true自动模式，false单页模式\n            debugOnce: 0, // 只在特定索引输出一次调试信息\n            totalPagesText: '{{@@.page.0@a.-2@textNodes}}', // 总页码\n            urlSuffixToRemove: /\\.html$/, // 移除url后缀\n            pageUrlText: '{urlPrefix}_{i}.html', // 拼接URL模板        \n            ListMode: true, // true网址列表模式，false网址拼接模式    \n            initialUrls: `{{@@#sort-item-5.0@a@href}}`, // 网址\n            initialUrlsName: `{{@@#sort-item-5.0@a@span@text}}`, // 网址名称\n            sourceurl: '', // 来源URL前缀\n        };\n\n        let videoSources = []; // 存储视频源数组\n        let loadAttempts = {}; // 记录每个URL的加载尝试次数\n        let urls = []; // 存储所有页面的URL\n        let imageBox;\n        let textBox;\n        let currentPageIndex = 0; // 当前页面索引\n        let canLoadNextPage = true; // 控制是否可以加载下一页\n        let autoLoadInProgress = false; // 自动加载状态\n\n        // 构建URL列表\n        function buildUrls(totalPages, baseUrl) {\n            let initialUrlsArray = config.initialUrls.trim().split('\\n').filter(url => url.trim() !== '');\n            let initialUrlsNameArray = config.initialUrlsName.trim().split('\\n').filter(name => name.trim() !== '');\n\n            if (config.ListMode && initialUrlsArray.length > 0) {\n                if (initialUrlsArray.length !== initialUrlsNameArray.length) {\n                    $('#messages').append(`<span class=\"warn\">警告：initialUrls 和 initialUrlsName 的长度不匹配。</span><br>`);\n                }\n\n                urls = initialUrlsArray.map(url => {\n                    if (config.sourceurl && url.startsWith('/') && !/^https?:\\/\\//i.test(url)) {\n                        return config.sourceurl.replace(/\\/$/, '') + url;\n                    } else {\n                        return url;\n                    }\n                });\n\n                urls.forEach((url, index) => {\n                    const name = initialUrlsNameArray[index] || `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            } else {\n                if (totalPages === 1) {\n                    urls.push(baseUrl);\n                } else {\n                    urls.push(baseUrl);\n                    for (let i = 2; i <= totalPages; i++) {\n                        urls.push(config.pageUrlText.replace('{urlPrefix}', baseUrl.replace(config.urlSuffixToRemove, '').replace(/\\/$/, '')).replace('{i}', i));\n                    }\n                }\n\n                urls.forEach((url, index) => {\n                    const name = `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            }\n\n            $('#total-pages').text(urls.length);\n            toggleNavigationButtons();\n            toggleTotalPagesDisplay();\n        }\n\n        // 规范化URL\n        function normalizeUrl(url) {\n            if (typeof url !== 'string' || !url.trim()) {\n                return '';\n            }\n            const match = url.match(/['\"](.*?)['\"]/);\n            if (match && match[1]) {\n                url = match[1];\n            }\n\n            function processUrl(str) {\n                str = str.trim();\n                str = str.replace(/\\\\u[\\dA-F]{4}/gi, match => String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16)));\n                str = decodeURIComponent(str);\n                str = str.replace(/^http:\\/([^/])/, 'http://$1');\n                str = str.replace(/^https:\\/([^/])/, 'https://$1');\n                return str;\n            }\n            return processUrl(url);\n        }\n\n        // 清空容器内容\n        function clearContainers() {\n            $('#messages').empty();\n            $('#images').empty();\n            $('#text').empty();\n        }\n\n        // 更新图像源\n        function updateImageSrc(elements, shouldSwap) {\n            elements.each(function () {\n                const $this = $(this);\n                const attrsToUpdate = {};\n                if (shouldSwap) {\n                    ['data-original', 'data-src', 'data-url'].forEach(attr => {\n                        if ($this.attr(attr)) {\n                            attrsToUpdate['src'] = $this.attr(attr);\n                        }\n                    });\n                }\n                $this.attr(attrsToUpdate);\n            });\n            return elements;\n        }\n\n        // 切换导航按钮显示状态\n        function toggleNavigationButtons() {\n            if ($('#url-select option').length > 1 && !config.autoLoading) {\n                $('#loading-buttons').show();\n                $('#url-select').show();\n            } else {\n                $('#loading-buttons').hide();\n                $('#url-select').hide();\n            }\n        }\n\n        // 显示加载状态\n        function showLoadingStatus(pageNumber) {\n            const selectedOption = $('#url-select option:selected').text();\n            $('#loading-status').text(`正在加载：${selectedOption}`).show();\n        }\n\n        // 隐藏加载状态\n        function hideLoadingStatus() {\n            $('#loading-status').hide();\n        }\n\n        // 加载指定索引的内容\n        function loadContent(index) {\n            if (index < 0 || index >= urls.length || !canLoadNextPage) return;\n            canLoadNextPage = false;\n            currentPageIndex = index;\n            $('#url-select').val(index);\n            $('#messages').append(`<div>当前地址: <span class=\"warn\">${urls[index]}</span></div>`);\n            if (autoLoadInProgress) {\n                showLoadingStatus(index + 1);\n            }\n            $.ajax({\n                url: urls[index],\n                type: 'GET',\n                success: function (data) {\n                    try {\n                    const $data = $(data);\n                    let updatedHtmlContent = data.replace(/(['\"])(\\/\\/)(?!\\/)/g, '$1https://')\n                        .replace(/src=\"upload/gi, 'src=\"/upload')\n                        .replace(/style=[\"'][^'\"]+[\"']/gi, '')\n                        .replace(/\\\\\\//g, '/');\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(updatedHtmlContent, \"text/html\");\n\n                    if (config.debugOnce === index) {\n                        const debugElements = $(doc).find(config.debugSelector);\n                        if (debugElements.length > 0) {\n                            const debugContents = $('<pre>').html(debugElements.clone().wrapAll('<div/>').parent().html()).html();\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">${debugContents}</textarea></span>`);\n                        } else {\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">调试信息未提取到内容，请检查选择器！</textarea></span>`);\n                        }\n                    }\n                    // 方法1：提取视频\n                    const videoSources1 = [];\n                    const videoContents = $(doc).find(config.videoSelector);\n                    const videoTags = $(videoContents).find('video, source');\n                    videoTags.each(function() {\n                        const videosrc = $(this).attr('src') || \n                                     $(this).attr('data-src') || \n                                     $(this).attr('data-original') || '';\n                        \n                        if (videosrc) {\n                            videoSources1.push(videosrc);\n                        }\n                    });\n                    //反馈\n                    if (videoSources1.length > 0) {\n                        $('#messages').append(`<span>方法1，找到 ${videoSources1.length} 个视频。</span><br>`);\n                    }\n\n                    // 方法2：正则提取视频\n                    const regex = /['\"]https?[^'<>\"]+(m3u8|mp4|webm|ogg|flv|mp3|m4a|wav|ape|flac)([^'<>\"]+)?['\"]/gi;\n                    const matches = data.match(regex);\n                    const videoSources2 = [];\n\n                    if (matches) {\n                        const uniqueMatches = [...new Set(matches)];\n                    \n                        uniqueMatches.forEach(match => {\n                            const normalizedSrc = normalizeUrl(match.replace(/['\"]/g, ''));\n                            videoSources2.push(normalizedSrc);\n                        });\n                    }\n                    //反馈\n                    if (videoSources2.length > 0) {\n                        $('#messages').append(`<span>方法2，找到 ${videoSources2.length} 个视频。</span><br>`);\n                    }\n\n                    // 合并两种方法的结果\n                    videoSources = [...videoSources1, ...videoSources2];\n\n                    // 去重并标准化 URL\n                    const imageExtensions = /\\.(jpg|jpeg|png|gif|bmp|svg)$/i;\n\n                    videoSources = videoSources\n                                  .map(src => normalizeUrl(src.replace(/\\\\+/g, '')))\n                                  .filter(src => src) // 过滤空值\n                                  .filter(src => !imageExtensions.test(src)); // 移除图片地址\n                        \n                    videoSources = [...new Set(videoSources)];// 去重\n\n                    // 显示最终结果\n                    $('#messages').append(`<span>总共找到 ${videoSources.length} 个视频。</span><br>`);\n\n                    if (videoSources.length > 0) {\n                        $('#messages').append(`<span>成功提取到视频，找到 ${videoSources.length} 个视频。</span><br>`);\n                        videoSources.forEach((src, idx) => {\n                            $('#messages').append(`<div>视频地址:<span class=\"warn\"> ${src}</span><br></div>`);\n                            $('#video-source-select').append(`<option value=\"${idx}\">视频源 ${idx + 1}</option>`);\n                        });\n                    \n                        if (videoSources.length == 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').hide();\n                            updateVideoSource();\n                        } else if (videoSources.length > 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').show();\n                            updateVideoSource();\n                        } else {\n                            $('#video-container').hide();\n                            $('#video-url').hide();\n                            $('#video-source-container').hide();\n                        }\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未找到视频源。</span><br>`);\n                        $('#video-container').hide();\n                        $('#video-url').hide();\n                        $('#video-source-container').hide();\n                    }\n\n                    //提取图片\n                    const $imgContents = $(doc).find(config.imgSelector);\n                    const shouldSwap = config.swapImageAttributes;\n                    const newContents = updateImageSrc($imgContents.clone(), shouldSwap);\n                    $('#images').append(newContents).show();\n                    if (newContents.length > 0) {\n                        $('#messages').append(`<span>成功提取图片，共 ${newContents.length} 张。</span><br>`);\n                        newContents.each(function () {\n                            const imgSrc = $(this).attr('src') || $(this).attr('data-original') || $(this).attr('data-src') || $(this).attr('data-url');\n                            $('#messages').append(`<div>地址:<span class=\"warn\"> ${imgSrc}</span><br></div>`);\n                        });\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图片。</span><br>`);\n                    }\n\n                    //提取图片和文本\n                    const textContents = $(doc).find(config.textSelector).map(function () {\n                        const $currentContents = $(this);\n                        $currentContents.find('img + br, script, video, source, iframe').remove();\n                        $currentContents.html($currentContents.html().replace(/>\\s+/gi, '>').replace(/<\\/?br\\s*([^>]*)\\s*\\/?>/gi, '\\n').replace(/\\n+/g, '\\n'));\n                        return $currentContents.html();\n                    }).get().join('');\n                    if (textContents.trim()) {\n                        $('#text').append(`<span>${textContents}</span><br>`).show();\n                        $('#messages').append(`<span>成功提取图文。</span><br>`);\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图文。</span><br>`);\n                    }\n\n                    if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                        setTimeout(() => { \n                            canLoadNextPage = true;\n                            loadContent(currentPageIndex + 1); \n                        }, config.delayTime);\n                    } else {\n                        canLoadNextPage = true;\n                        if (autoLoadInProgress) {\n                            hideLoadingStatus();\n                        }\n                    }\n                } catch (parseError) {\n                    $('#messages').append(`<span class=\"error\">解析页面内容时发生错误: ${parseError.message}</span><br>`);\n                    handleLoadFailure(urls, index);\n                } finally {\n                    if (imageBox) imageBox.viewer.update();\n                    if (textBox) textBox.viewer.update();\n                }\n            },\n            error: function (jqXHR, textStatus, errorThrown) {\n                let errorMessage = `内容加载失败: ${urls[index]}`;\n                switch (textStatus) {\n                    case 'timeout':\n                        errorMessage += ', 请求超时';\n                        break;\n                    case 'abort':\n                        errorMessage += ', 请求被取消';\n                        break;\n                    case 'parsererror':\n                        errorMessage += ', 解析响应出错';\n                        break;\n                    default:\n                        errorMessage += `, 状态码: ${jqXHR.status}, 错误信息: ${errorThrown}`;\n                        break;\n                }\n                $('#messages').append(`<span class=\"error\">${errorMessage}</span><br>`);\n                handleLoadFailure(urls, index);\n                }\n            });\n        }\n\n        // 处理加载失败的情况\n        function handleLoadFailure(urls, index) {\n            if (!loadAttempts[urls[index]]) {\n                loadAttempts[urls[index]] = 1;\n            } else {\n                loadAttempts[urls[index]]++;\n            }\n            if (loadAttempts[urls[index]] <= config.maxLoadAttempts) {\n                const retryMessage = `第${index + 1}页加载失败，正在进行第${loadAttempts[urls[index]]}次加载！`;\n                $('#messages').append(`<span class=\"error\">${retryMessage}</span><br>`);\n                setTimeout(() => { \n                    canLoadNextPage = true;\n                    loadContent(index); \n                }, config.retryDelayTime);\n            } else {\n                const finalErrorMessage = `第${index + 1}页加载失败，已达到最大尝试次数(${config.maxLoadAttempts})！`;\n                $('#messages').append(`<span class=\"error\">${finalErrorMessage}</span><br>`);\n                if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                    setTimeout(() => { \n                        canLoadNextPage = true;\n                        loadContent(currentPageIndex + 1); \n                    }, config.delayTime);\n                } else {\n                    canLoadNextPage = true;\n                    if (autoLoadInProgress) {\n                        hideLoadingStatus();\n                    }\n                }\n            }\n        }\n\n        // 更新视频源\n        function updateVideoSource() {\n            const selectedIndex = parseInt(document.getElementById('video-source-select').value);\n            if (isNaN(selectedIndex) || !videoSources[selectedIndex]) {\n                $('#messages').append(`<span class=\"warn\">未找到有效的视频源。</span><br>`);\n                console.warn(\"Invalid or undefined video source:\", selectedIndex, videoSources);\n                return;\n            }\n\n            const selectedSource = videoSources[selectedIndex];\n            document.getElementById('video-url').textContent = `视频地址:\\n ${selectedSource}`;\n\n            const videoSourceElement = document.getElementById('video-source');\n            videoSourceElement.src = selectedSource;\n\n            const videoElement = document.getElementById('video-element');\n            videoElement.load();\n\n            $('#messages').append(`<span>更新视频源为: ${selectedSource}</span><br>`);\n            console.log(\"Updated video source to:\", selectedSource);\n        }\n\n        // 切换总页数显示状态\n        function toggleTotalPagesDisplay() {\n            if (urls.length > 1) {\n                $('#page').show();\n            } else {\n                $('#page').hide();\n            }\n        }\n\n        // 页面加载完成后执行的主要逻辑\n        $(document).ready(function () {\n            imageBox = document.getElementById('images');\n            textBox = document.getElementById('text');\n            if (imageBox && textBox) {\n                new Viewer(imageBox, { title: true, interval: 2000 });\n                new Viewer(textBox, { title: true, interval: 2000 });\n            }\n\n            const totalPagesText = config.totalPagesText;\n            const totalPages = parseInt(totalPagesText, 10) || 1;\n            const baseUrl = '{{baseUrl}}';\n\n            clearContainers();\n            $('#urls, #debug-info textarea, #video-url, #video-source-select').empty();\n            $('#urls, #messages, #debug-info, #video-url, #video-container, #video-source-container, #images, #text').hide();\n\n            buildUrls(totalPages, baseUrl);\n\n            const urlSelect = document.getElementById('url-select');\n            if (urlSelect.options.length > 0) {\n                urlSelect.value = '0'; \n\n                if (config.autoLoading) {\n                    autoLoadInProgress = true;\n                    for (let i = 0; i < urls.length; i++) {\n                        loadContent(i);\n                    }\n                } else {\n                    loadContent(0);\n                }\n            } else {\n                loadContent(0);\n            }\n\n            $('#url-select').change(function () {\n                clearContainers();\n                const selectedIndex = parseInt($(this).val());\n                loadContent(selectedIndex);\n            });\n            $('#prev-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex > 0) {\n                    loadContent(currentPageIndex - 1);\n                }\n            });\n            $('#next-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex < urls.length - 1) {\n                    loadContent(currentPageIndex + 1);\n                }\n            });\n            $('#auto-load-btn').click(function () {\n                autoLoadInProgress = true;\n                showLoadingStatus(1); \n                for (let i = currentPageIndex + 1; i < urls.length; i++) {\n                    loadContent(i);\n                }\n            });\n            $('#toggle-messages-btn').click(function () { $('#messages').toggle(); });\n            $('#toggle-urls-btn').click(function () { $('#urls').toggle(); });\n            $('#toggle-debug-btn').click(function () { $('#debug-info').toggle(); });\n        });\n    </script>\n</body>\n</html>",
    "ruleImage": "img@data-src",
    "ruleLink": "/vodplay/{{@a.0@href##voddetail/(.*).html##$1##}}-1-1.html",
    "ruleNextPage": "text.下页@href",
    "rulePubDate": ".vlength@text",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "国产色情::/vodtype/12.html\n日本无码::/vodtype/20.html\n自拍偷拍::/vodtype/21.html\n人妻熟女::/vodtype/22.html\n黑人洋屌::/vodtype/23.html\n欧美精品::/vodtype/24.html\n岛国女优::/vodtype/25.html\n萝莉少女::/vodtype/26.html\n国产精品::/vodtype/55.html\n国产直播::/vodtype/56.html\n动漫禁漫::/vodtype/57.html\n黑料吃瓜::/vodtype/58.html\n欧美大屌::/vodtype/60.html\n探花约炮::/vodtype/61.html\n华语精品::/vodtype/63.html\n乱伦精品::/vodtype/64.html\n学生合集::/vodtype/65.html\n卡通动漫::/vodtype/69.html\n乱伦中出::/vodtype/70.html\n传媒原创::/vodtype/71.html\n口爆颜射::/vodtype/72.html\n岛国群交::/vodtype/73.html\n日本有码::/vodtype/74.html\n中文字幕::/vodtype/75.html\n吃瓜爆料::/vodtype/76.html\n角色扮演::/vodtype/77.html\n淫娃自慰::/vodtype/78.html\n日本有码::/vodtype/80.html\n主播网红::/vodtype/81.html\n韩国直播::/vodtype/84.html\n公开漏出::/vodtype/85.html\n日本无码::/vodtype/86.html\n重口调教::/vodtype/88.html\n户外打野::/vodtype/89.html",
    "sourceComment": "shewo1.cc",
    "sourceGroup": "h",
    "sourceIcon": "https://baf7baf7.shewo11.cc/template/shewo/images/logo.png",
    "sourceName": "射我里面了",
    "sourceUrl": "https://baf7baf7.shewo11.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "coverDecodeJs": "java.createSymmetricCrypto(\"AES/CBC/NoPadding\",\"f5d965df75336270\",\"97b60394abc2fbe1\").decrypt(result)",
    "customOrder": 417,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; U; Android 13; zh-Hans-CN; PFJM10 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/135.0.4896.58 Quark/6.13.6.581 Mobile Safari/537.36\",\n\"Accept-Language\":\"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7\"}",
    "lastUpdateTime": 1768948420510,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "#body>.container>.row>div[role=\"main\"]>article:not(:has(meta[content=\"广告\"]))>a",
    "ruleContent": "<js>\nvar step1 = java.base64Decode('QGpzOg0KbGV0IHVybHMgPSBbXTsNCmxldCByZXN1bHRTdHIgPSBTdHJpbmcocmVzdWx0KTsNCg0KLy8g566A5YyW5o+Q5Y+WbTN1OA0KbGV0IGdldE0zdTggPSBmdW5jdGlvbigpIHsNCiAgICBsZXQgdXJsU2V0ID0gW107DQogICAgDQogICAgLy8gMS4g5LuOdmlkZW/moIfnrb7mj5Dlj5YNCiAgICBsZXQgdmlkZW9zID0gamF2YS5nZXRFbGVtZW50cygndmlkZW8nKTsNCiAgICBpZiAodmlkZW9zICYmIHZpZGVvcy5sZW5ndGggPiAwKSB7DQogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlkZW9zLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBsZXQgdiA9IHZpZGVvc1tpXTsNCiAgICAgICAgICAgIGxldCBzcmMgPSBTdHJpbmcodi5hdHRyKCdzcmMnKSk7DQogICAgICAgICAgICBpZiAoc3JjLmluZGV4T2YoJy5tM3U4JykgPiAtMSkgew0KICAgICAgICAgICAgICAgIGlmICh1cmxTZXQuaW5kZXhPZihzcmMpID09PSAtMSkgew0KICAgICAgICAgICAgICAgICAgICB1cmxTZXQucHVzaChzcmMpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICAvLyAyLiDku45IVE1M5rqQ56CB5o+Q5Y+WDQogICAgbGV0IHJlZ2V4ID0gLyhodHRwcz86W14nIlxzXSo/XC5tM3U4W14nIlxzXSopL2c7DQogICAgbGV0IG1hdGNoOw0KICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHJlc3VsdFN0cikpICE9PSBudWxsKSB7DQogICAgICAgIGxldCB1cmwgPSBtYXRjaFsxXS5yZXBsYWNlKC9cXC9nLCAiIik7DQogICAgICAgIGlmICh1cmxTZXQuaW5kZXhPZih1cmwpID09PSAtMSkgew0KICAgICAgICAgICAgdXJsU2V0LnB1c2godXJsKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICByZXR1cm4gdXJsU2V0Ow0KfTsNCg0KLy8g5aSE55CG5YiG6ZuGDQppZiAoL+eCueaIkS8udGVzdChyZXN1bHQpICYmIC/mn6XnnIvor6bmg4UvLnRlc3QocmVzdWx0KSkgew0KICAgIGxldCBsaW5rcyA9IGphdmEuZ2V0RWxlbWVudHMoJ0BAI3Bvc3Q+YXJ0aWNsZT4ucG9zdC1jb250ZW50PnA+YScpOw0KICAgIGxldCB0ZW1wVXJscyA9IFtdOw0KICAgIA0KICAgIGlmIChsaW5rcyAmJiBsaW5rcy5sZW5ndGggPiAwKSB7DQogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoIC0gMTsgaSsrKSB7DQogICAgICAgICAgICBsZXQgaHJlZiA9IFN0cmluZyhsaW5rc1tpXS5hdHRyKCdocmVmJykpOw0KICAgICAgICAgICAgbGV0IGRvYyA9IFN0cmluZyhqYXZhLmFqYXgoc291cmNlLmtleSArIGhyZWYpKTsNCiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZG9jLm1hdGNoKC8oaHR0cHM/OlteJyJcc10qP1wubTN1OFteJyJcc10qKS9nKTsNCiAgICAgICAgICAgIGlmIChtYXRjaGVzKSB7DQogICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRjaGVzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBtYXRjaGVzW2pdLnJlcGxhY2UoL1xcL2csICIiKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBVcmxzLmluZGV4T2YodXJsKSA9PT0gLTEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBVcmxzLnB1c2godXJsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICB1cmxzID0gdGVtcFVybHM7DQp9IGVsc2Ugew0KICAgIHVybHMgPSBnZXRNM3U4KCk7DQp9DQoNCi8vIOWOu+mHje+8iOWGjeasoeehruS/ne+8iQ0KbGV0IGZpbmFsVXJscyA9IFtdOw0KZm9yIChsZXQgaSA9IDA7IGkgPCB1cmxzLmxlbmd0aDsgaSsrKSB7DQogICAgbGV0IHVybCA9IHVybHNbaV07DQogICAgaWYgKHVybCAmJiB1cmwuaW5kZXhPZignLm0zdTgnKSA+IC0xICYmIGZpbmFsVXJscy5pbmRleE9mKHVybCkgPT09IC0xKSB7DQogICAgICAgIGZpbmFsVXJscy5wdXNoKHVybCk7DQogICAgfQ0KfQ0KdXJscyA9IGZpbmFsVXJsczsNCg0KLy8g566A5YyW5pKt5pS+5ZmoDQp2YXIgaHRtbCA9ICc8IURPQ1RZUEUgaHRtbD4nICsNCic8aHRtbD4nICsNCic8aGVhZD4nICsNCiAgICAnPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCI+JyArDQogICAgJzxzdHlsZT4nICsNCiAgICAgICAgJyogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9JyArDQogICAgICAgICdib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAyMHB4OyBiYWNrZ3JvdW5kOiAjZjBmMGYwOyBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IH0nICsNCiAgICAgICAgJy5jb250YWluZXIgeyBtYXgtd2lkdGg6IDEwMDBweDsgbWFyZ2luOiAwIGF1dG87IGJhY2tncm91bmQ6IHdoaXRlOyBib3JkZXItcmFkaXVzOiAxMHB4OyBvdmVyZmxvdzogaGlkZGVuOyBib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwwLDAsMC4xKTsgfScgKw0KICAgICAgICAnLmhlYWRlciB7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMTVweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiBib2xkOyB9JyArDQogICAgICAgICcudmlkZW8td3JhcHBlciB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDEwMCU7IHBhZGRpbmctdG9wOiA1Ni4yNSU7IC8qIDE2Ojkg5a696auY5q+UICovIGJhY2tncm91bmQ6ICMwMDA7IH0nICsNCiAgICAgICAgJyN2aWRlbyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBvYmplY3QtZml0OiBjb250YWluOyB9JyArDQogICAgICAgICcuY29udHJvbHMgeyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IDE1cHggMjBweDsgYmFja2dyb3VuZDogI2Y4ZjlmYTsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWU7IH0nICsNCiAgICAgICAgJy5uYXYtZ3JvdXAgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDEwcHg7IH0nICsNCiAgICAgICAgJ2J1dHRvbiB7IHBhZGRpbmc6IDEwcHggMjBweDsgYmFja2dyb3VuZDogIzAwN2JmZjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDVweDsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDE0cHg7IHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4zczsgfScgKw0KICAgICAgICAnYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZDogIzAwNTZiMzsgfScgKw0KICAgICAgICAnYnV0dG9uOmRpc2FibGVkIHsgYmFja2dyb3VuZDogIzZjNzU3ZDsgY3Vyc29yOiBub3QtYWxsb3dlZDsgfScgKw0KICAgICAgICAnc2VsZWN0IHsgcGFkZGluZzogMTBweCAxNXB4OyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBib3JkZXItcmFkaXVzOiA1cHg7IGZvbnQtc2l6ZTogMTRweDsgYmFja2dyb3VuZDogd2hpdGU7IG1pbi13aWR0aDogMTIwcHg7IH0nICsNCiAgICAgICAgJy5pbmZvIHsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiAxMHB4OyBiYWNrZ3JvdW5kOiAjZjVmNWY1OyBjb2xvcjogIzY2NjsgZm9udC1zaXplOiAxNHB4OyB9JyArDQogICAgICAgICcuZnVsbHNjcmVlbi1idG4geyBwYWRkaW5nOiAxMHB4OyBiYWNrZ3JvdW5kOiAjMjhhNzQ1OyB9JyArDQogICAgICAgICcuZnVsbHNjcmVlbi1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMjE4ODM4OyB9JyArDQogICAgICAgICdAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsnICsNCiAgICAgICAgICAgICdib2R5IHsgcGFkZGluZzogMTBweDsgfScgKw0KICAgICAgICAgICAgJy5jb250YWluZXIgeyBib3JkZXItcmFkaXVzOiA1cHg7IH0nICsNCiAgICAgICAgICAgICcuY29udHJvbHMgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDEwcHg7IH0nICsNCiAgICAgICAgICAgICcubmF2LWdyb3VwIHsgd2lkdGg6IDEwMCU7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfScgKw0KICAgICAgICAgICAgJ2J1dHRvbiwgc2VsZWN0IHsgd2lkdGg6IDEwMCU7IH0nICsNCiAgICAgICAgJ30nICsNCiAgICAnPC9zdHlsZT4nICsNCic8L2hlYWQ+JyArDQonPGJvZHk+JyArDQogICAgJzxkaXYgY2xhc3M9ImNvbnRhaW5lciI+JyArDQogICAgICAgICc8ZGl2IGNsYXNzPSJoZWFkZXIiPicgKw0KICAgICAgICAgICAgJzxzcGFuIGlkPSJjdXJyZW50Ij4xPC9zcGFuPiAvIDxzcGFuIGlkPSJ0b3RhbCI+JyArIHVybHMubGVuZ3RoICsgJzwvc3Bhbj4g6ZuGJyArDQogICAgICAgICc8L2Rpdj4nICsNCiAgICAgICAgJzxkaXYgY2xhc3M9InZpZGVvLXdyYXBwZXIiPicgKw0KICAgICAgICAgICAgJzx2aWRlbyBjb250cm9scyBhdXRvcGxheSBwbGF5c2lubGluZSBpZD0idmlkZW8iPicgKw0KICAgICAgICAgICAgICAgICc8c291cmNlIHNyYz0iJyArICh1cmxzWzBdIHx8ICcnKSArICciIHR5cGU9ImFwcGxpY2F0aW9uL3gtbXBlZ1VSTCI+JyArDQogICAgICAgICAgICAgICAgJ+aCqOeahOa1j+iniOWZqOS4jeaUr+aMgeinhumikeaSreaUvicgKw0KICAgICAgICAgICAgJzwvdmlkZW8+JyArDQogICAgICAgICc8L2Rpdj4nICsNCiAgICAgICAgJzxkaXYgY2xhc3M9ImNvbnRyb2xzIj4nICsNCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJuYXYtZ3JvdXAiPicgKw0KICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9ImNoYW5nZVZpZGVvKC0xKSIgaWQ9InByZXZCdG4iPuS4iuS4gOmbhjwvYnV0dG9uPicgKw0KICAgICAgICAgICAgICAgICc8c2VsZWN0IG9uY2hhbmdlPSJqdW1wVG9WaWRlbyh0aGlzLnZhbHVlKSIgaWQ9InZpZGVvU2VsZWN0Ij4nOw0KDQovLyDnlJ/miJDpgInpobkNCmZvciAobGV0IGkgPSAwOyBpIDwgdXJscy5sZW5ndGg7IGkrKykgew0KICAgIGh0bWwgKz0gJzxvcHRpb24gdmFsdWU9IicgKyBpICsgJyI+56ysICcgKyAoaSArIDEpICsgJyDpm4Y8L29wdGlvbj4nOw0KfQ0KDQpodG1sICs9ICc8L3NlbGVjdD4nICsNCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJjaGFuZ2VWaWRlbygxKSIgaWQ9Im5leHRCdG4iPuS4i+S4gOmbhjwvYnV0dG9uPicgKw0KICAgICAgICAgICAgJzwvZGl2PicgKw0KICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0idG9nZ2xlRnVsbHNjcmVlbigpIiBjbGFzcz0iZnVsbHNjcmVlbi1idG4iPuWFqOWxjzwvYnV0dG9uPicgKw0KICAgICAgICAnPC9kaXY+JyArDQogICAgICAgICc8ZGl2IGNsYXNzPSJpbmZvIj7mib7liLAgJyArIHVybHMubGVuZ3RoICsgJyDkuKrop4bpopHmupA8L2Rpdj4nICsNCiAgICAnPC9kaXY+JyArDQoNCiAgICAnPHNjcmlwdD4nICsNCiAgICAgICAgJ3ZhciB2aWRlb1VybHMgPSAnICsgSlNPTi5zdHJpbmdpZnkodXJscykgKyAnOycgKw0KICAgICAgICAndmFyIGN1cnJlbnRJbmRleCA9IDA7JyArDQogICAgICAgICd2YXIgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKTsnICsNCiAgICAgICAgJ3ZhciB2aWRlb1NlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlb1NlbGVjdCIpOycgKw0KICAgICAgICAndmFyIGN1cnJlbnRTcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN1cnJlbnQiKTsnICsNCiAgICAgICAgJ3ZhciB0b3RhbFNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG90YWwiKTsnICsNCiAgICAgICAgJ3ZhciBwcmV2QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByZXZCdG4iKTsnICsNCiAgICAgICAgJ3ZhciBuZXh0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5leHRCdG4iKTsnICsNCiAgICAgICAgJycgKw0KICAgICAgICAnZnVuY3Rpb24gdXBkYXRlVUkoKSB7JyArDQogICAgICAgICAgICAnY3VycmVudFNwYW4udGV4dENvbnRlbnQgPSBjdXJyZW50SW5kZXggKyAxOycgKw0KICAgICAgICAgICAgJ3RvdGFsU3Bhbi50ZXh0Q29udGVudCA9IHZpZGVvVXJscy5sZW5ndGg7JyArDQogICAgICAgICAgICAndmlkZW9TZWxlY3QudmFsdWUgPSBjdXJyZW50SW5kZXg7JyArDQogICAgICAgICAgICAncHJldkJ0bi5kaXNhYmxlZCA9IGN1cnJlbnRJbmRleCA9PT0gMDsnICsNCiAgICAgICAgICAgICduZXh0QnRuLmRpc2FibGVkID0gY3VycmVudEluZGV4ID09PSB2aWRlb1VybHMubGVuZ3RoIC0gMTsnICsNCiAgICAgICAgICAgICd2aWRlby5zcmMgPSB2aWRlb1VybHNbY3VycmVudEluZGV4XTsnICsNCiAgICAgICAgICAgICd2aWRlby5sb2FkKCk7JyArDQogICAgICAgICd9JyArDQogICAgICAgICcnICsNCiAgICAgICAgJ2Z1bmN0aW9uIGNoYW5nZVZpZGVvKGRpcmVjdGlvbikgeycgKw0KICAgICAgICAgICAgJ3ZhciBuZXdJbmRleCA9IGN1cnJlbnRJbmRleCArIGRpcmVjdGlvbjsnICsNCiAgICAgICAgICAgICdpZiAobmV3SW5kZXggPj0gMCAmJiBuZXdJbmRleCA8IHZpZGVvVXJscy5sZW5ndGgpIHsnICsNCiAgICAgICAgICAgICAgICAnY3VycmVudEluZGV4ID0gbmV3SW5kZXg7JyArDQogICAgICAgICAgICAgICAgJ3VwZGF0ZVVJKCk7JyArDQogICAgICAgICAgICAnfScgKw0KICAgICAgICAnfScgKw0KICAgICAgICAnJyArDQogICAgICAgICdmdW5jdGlvbiBqdW1wVG9WaWRlbyhpbmRleCkgeycgKw0KICAgICAgICAgICAgJ2N1cnJlbnRJbmRleCA9IHBhcnNlSW50KGluZGV4KTsnICsNCiAgICAgICAgICAgICd1cGRhdGVVSSgpOycgKw0KICAgICAgICAnfScgKw0KICAgICAgICAnJyArDQogICAgICAgICdmdW5jdGlvbiB0b2dnbGVGdWxsc2NyZWVuKCkgeycgKw0KICAgICAgICAgICAgJ2lmICghZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQpIHsnICsNCiAgICAgICAgICAgICAgICAnaWYgKHZpZGVvLnJlcXVlc3RGdWxsc2NyZWVuKSB7JyArDQogICAgICAgICAgICAgICAgICAgICd2aWRlby5yZXF1ZXN0RnVsbHNjcmVlbigpOycgKw0KICAgICAgICAgICAgICAgICd9IGVsc2UgaWYgKHZpZGVvLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7JyArDQogICAgICAgICAgICAgICAgICAgICd2aWRlby53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOycgKw0KICAgICAgICAgICAgICAgICd9IGVsc2UgaWYgKHZpZGVvLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7JyArDQogICAgICAgICAgICAgICAgICAgICd2aWRlby5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpOycgKw0KICAgICAgICAgICAgICAgICd9JyArDQogICAgICAgICAgICAnfSBlbHNlIHsnICsNCiAgICAgICAgICAgICAgICAnaWYgKGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKSB7JyArDQogICAgICAgICAgICAgICAgICAgICdkb2N1bWVudC5leGl0RnVsbHNjcmVlbigpOycgKw0KICAgICAgICAgICAgICAgICd9IGVsc2UgaWYgKGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKSB7JyArDQogICAgICAgICAgICAgICAgICAgICdkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigpOycgKw0KICAgICAgICAgICAgICAgICd9IGVsc2UgaWYgKGRvY3VtZW50Lm1vekNhbmNlbEZ1bGxTY3JlZW4pIHsnICsNCiAgICAgICAgICAgICAgICAgICAgJ2RvY3VtZW50Lm1vekNhbmNlbEZ1bGxTY3JlZW4oKTsnICsNCiAgICAgICAgICAgICAgICAnfScgKw0KICAgICAgICAgICAgJ30nICsNCiAgICAgICAgJ30nICsNCiAgICAgICAgJycgKw0KICAgICAgICAnLy8g5Yid5aeL5YyWJyArDQogICAgICAgICd1cGRhdGVVSSgpOycgKw0KICAgICAgICAnJyArDQogICAgICAgICcvLyDplK7nm5jlv6vmjbfplK4nICsNCiAgICAgICAgJ2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBmdW5jdGlvbihlKSB7JyArDQogICAgICAgICAgICAnaWYgKGUua2V5ID09PSAiQXJyb3dMZWZ0IikgY2hhbmdlVmlkZW8oLTEpOycgKw0KICAgICAgICAgICAgJ2Vsc2UgaWYgKGUua2V5ID09PSAiQXJyb3dSaWdodCIpIGNoYW5nZVZpZGVvKDEpOycgKw0KICAgICAgICAgICAgJ2Vsc2UgaWYgKGUua2V5ID09PSAiZiIgfHwgZS5rZXkgPT09ICJGIikgdG9nZ2xlRnVsbHNjcmVlbigpOycgKw0KICAgICAgICAnfSk7JyArDQogICAgICAgICcnICsNCiAgICAgICAgJy8vIOinhumikemUmeivr+WkhOeQhicgKw0KICAgICAgICAndmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBmdW5jdGlvbigpIHsnICsNCiAgICAgICAgICAgICdjb25zb2xlLmxvZygi6KeG6aKR5Yqg6L296ZSZ6K+v77yM5bCd6K+V5YiH5o2i5Yiw5LiL5LiA5LiqIik7JyArDQogICAgICAgICAgICAnaWYgKGN1cnJlbnRJbmRleCA8IHZpZGVvVXJscy5sZW5ndGggLSAxKSB7JyArDQogICAgICAgICAgICAgICAgJ2N1cnJlbnRJbmRleCsrOycgKw0KICAgICAgICAgICAgICAgICd1cGRhdGVVSSgpOycgKw0KICAgICAgICAgICAgJ30nICsNCiAgICAgICAgJ30pOycgKw0KICAgICc8L3NjcmlwdD4nICsNCic8L2JvZHk+JyArDQonPC9odG1sPic7DQoNCmh0bWw7');\nvar step2 = java.getString(step1);\nresult = step2\n</js>",
    "ruleImage": "@js:\nvar text = java.getString('script@html');\nvar match = text.match(/loadBannerDirect\\('([^']+)'/);\nvar img = match ? match[1] : '';\nimg;",
    "ruleLink": "href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.wraps@text}}{{@@.post-card-info span@text##\\n}}",
    "ruleTitle": "h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::/search/{{source.getVariable()}}/{{page}}/\n首页::/page/{{page}}/\n今日看料::/category/24hcg/{{page}}/\n热门吃瓜::/category/rgtj/{{page}}/\n每日热瓜::/category/mrrg/{{page}}/\n反差女神::/category/fcns/{{page}}/\n学院热瓜::/category/xyrg/{{page}}/\n网红吃瓜::/category/whhl/{{page}}/\n每日大赛::/category/mrds/{{page}}/\n海角乱伦::/category/llsq/{{page}}/\n黑料大事::/category/hlda/{{page}}/\n撸友看片::/category/lydt/{{page}}/\n黑料杂谈::/category/hlzt/{{page}}/\nav解说::/category/avjs/{{page}}/\n禁播动漫::/category/mrst/{{page}}/\n性爱技巧::/category/wyxs/{{page}}/\n爽文短剧::/category/swdj/{{page}}/\n明星吃瓜::/category/mxbg/{{page}}/\n官场秘闻::/category/gcmw/{{page}}/\n学生::/search/学生/{{page}}/\n全部①::/<,page/{{page}}/>\n全部②::/page/3/\n全部③::/page/5/\n偷情::/search/偷情/{{page}}/\n白虎::/search/白虎/{{page}}/\n反差::/search/反差/{{page}}/\n极品::/search/极品/{{page}}/\n萝莉::/search/萝莉/{{page}}/\n00后::/search/00后/{{page}}/\n女同::/search/女同/{{page}}/\n双马尾::/search/双马尾/{{page}}/\n学院::/search/学院/{{page}}/\n高三::/search/高三/{{page}}/\n高中::/search/高中/{{page}}/\n少女::/search/少女/{{page}}/\n情趣::/search/情趣/{{page}}/\n自拍::/search/自拍/{{page}}/\n大学::/search/大学/{{page}}/\n大一::/search/大一/{{page}}/\n学妹::/search/学妹/{{page}}/\n校花::/search/校花/{{page}}/\n调教::/search/调教/{{page}}/\n女神::/search/女神/{{page}}/\n少妇::/search/少妇/{{page}}/\n巨乳::/search/巨乳/{{page}}/\n孕妇::/search/孕妇/{{page}}/\n口::/search/口交/{{page}}/\n精::/search/精/{{page}}/",
    "sourceGroup": "h",
    "sourceIcon": "https://i1.wp.com/i.postimg.cc/wjL5myHr/kpptube-cc-3e997cb42a6b0f37af6c6a40866ba202.gif",
    "sourceName": "黑料不打烊",
    "sourceUrl": "https://wiki.cvgdpnvq.xyz/",
    "style": "iframe{\n\theight:600px\n}\ntitle{\n\tdisplay:block\n}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 420,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n  \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36\",\n  \"Referer\": \"https://meirentu.club/\"\n}",
    "lastUpdateTime": 1769069467887,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "li.i_list",
    "ruleContent": "<!doctype html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n<title>{{@@h1@text}}</title>\n<style>\nbody {\n    margin: 0;\n    background: #000;\n    color: #eee;\n    font-family: sans-serif;\n}\n\n#statusBar {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    z-index: 999;\n    background: rgba(0, 0, 0, 0.7);\n    color: #aaa;\n    padding: 4px 10px;\n    font-size: 12px;\n    text-align: center;\n    backdrop-filter: blur(2px);\n    pointer-events: none;\n}\n\n#imgList img {\n    display: block;\n    width: 100%;\n    height: auto;\n    margin: 0;\n}\n</style>\n</head>\n<body>\n\n<div id=\"statusBar\">加载中…</div>\n\n\n{{@@h1@all}}\n\n<div id=\"detail\">\n{{@@article@all}}\n{{@@class.item_info@all}}\n</div>\n\n\n<div id=\"imgList\"></div>\n\n<script>\n// === 配置 ===\nconst pageUrls = `{{@@class.page@a:not(.current)@href}}`\n  .split('\\n')\n  .map(s => s.trim())\n  .filter(Boolean);\n\nlet allImages = []; // 所有已加载的图片URL\nlet pageImageCounts = []; // 每页图片数量，用于定位页码\nlet isLoading = false;\nlet currentPageIndex = 0; // 当前正在加载的页面索引\nconst maxRetry = 2;\nconst loadDelay = 100; // 页面组间的加载延迟（毫秒）\nconst batchSize = 5; // 每次加载的页面数量\n\n// === DOM ===\nconst imgList = document.getElementById('imgList');\nconst statusBar = document.getElementById('statusBar');\n\n// === 工具函数 ===\nfunction showStatus(text) {\n    if (statusBar) statusBar.textContent = text;\n}\n\n// 获取某页图片（简化版，优先 iframe）\nasync function fetchPageImages(url) {\n    return new Promise((resolve, reject) => {\n        const iframe = document.createElement('iframe');\n        iframe.style.display = 'none';\n        const timeout = setTimeout(() => {\n            cleanup();\n            reject(new Error('超时'));\n        }, 5000); // 缩短超时时间\n        \n        function cleanup() {\n            clearTimeout(timeout);\n            if (iframe.parentNode) iframe.parentNode.removeChild(iframe);\n        }\n        \n        iframe.onload = () => {\n            try {\n                const doc = iframe.contentDocument;\n                let imgs = doc.querySelectorAll('.content_left img') ||\n                           doc.querySelectorAll('.content img') ||\n                           doc.querySelectorAll('img');\n                const urls = Array.from(imgs).map(i => i.src).filter(Boolean);\n                cleanup();\n                resolve(urls);\n            } catch (e) {\n                cleanup();\n                reject(e);\n            }\n        };\n        iframe.onerror = () => { cleanup(); reject(new Error('加载失败')); };\n        iframe.src = url;\n        document.body.appendChild(iframe);\n    });\n}\n\n// 追加一页图片\nfunction appendPage(images) {\n    images.forEach(src => {\n        const img = document.createElement('img');\n        img.src = src;\n        img.loading = 'lazy';\n        imgList.appendChild(img);\n    });\n    allImages.push(...images);\n    pageImageCounts.push(images.length);\n}\n\n// 计算当前可视区域的图片索引\nfunction getCurrentImageIndex() {\n    const imgs = imgList.querySelectorAll('img');\n    if (imgs.length === 0) return -1;\n\n    // 优先选\"中心点最接近视口垂直中心\"的图片\n    let bestIndex = 0;\n    let minDistance = Infinity;\n\n    for (let i = 0; i < imgs.length; i++) {\n        const rect = imgs[i].getBoundingClientRect();\n        const centerY = rect.top + rect.height / 2;\n        const viewportCenter = window.innerHeight / 2;\n        const distance = Math.abs(centerY - viewportCenter);\n\n        // 如果图片完全不可见，跳过（可选）\n        if (rect.bottom < 0 || rect.top > window.innerHeight) {\n            continue;\n        }\n\n        if (distance < minDistance) {\n            minDistance = distance;\n            bestIndex = i;\n        }\n    }\n\n    return bestIndex;\n}\n\n// 根据图片索引计算所在页码\nfunction getPageInfo(imageIndex) {\n    if (imageIndex < 0) return { pageNum: 0, imageInPage: 0 };\n    let count = 0;\n    for (let i = 0; i < pageImageCounts.length; i++) {\n        if (imageIndex < count + pageImageCounts[i]) {\n            return {\n                pageNum: i + 1,\n                imageInPage: imageIndex - count + 1\n            };\n        }\n        count += pageImageCounts[i];\n    }\n    return { pageNum: pageImageCounts.length, imageInPage: pageImageCounts.at(-1) || 0 };\n}\n\n// 更新状态栏\nfunction updateStatusBar() {\n    const idx = getCurrentImageIndex();\n    if (idx === -1) return;\n    \n    const { pageNum, imageInPage } = getPageInfo(idx);\n    const totalPages = pageUrls.length;\n    const totalImages = allImages.length;\n    \n    showStatus(`[图片: ${idx + 1} / ${totalImages} | 页码: ${pageNum} / ${totalPages}]`);\n}\n\n// 批量加载多个页面\nasync function loadBatchPages(startIndex, count) {\n    const endIndex = Math.min(startIndex + count, pageUrls.length);\n    let successfulPages = 0;\n    \n    for (let i = startIndex; i < endIndex; i++) {\n        const pageIndex = i;\n        let retry = 0;\n        let success = false;\n        \n        // 重试机制\n        while (retry < maxRetry && !success) {\n            try {\n                showStatus(`正在加载 ${pageIndex + 1} / ${pageUrls.length} 页…`);\n                const urls = await fetchPageImages(pageUrls[pageIndex]);\n                if (urls.length === 0) {\n                    throw new Error('无图片');\n                }\n                appendPage(urls);\n                successfulPages++;\n                updateStatusBar(); // 每页加载后更新状态\n                success = true;\n            } catch (e) {\n                retry++;\n                if (retry >= maxRetry) {\n                    showStatus(`❌ 跳过第 ${pageIndex + 1} 页`);\n                    pageImageCounts.push(0); // 占位\n                    break;\n                }\n                await new Promise(r => setTimeout(r, 500)); // 重试延迟\n            }\n        }\n    }\n    \n    return successfulPages;\n}\n\n// 自动加载所有页面（分批）\nasync function loadAllRemainingPages() {\n    if (isLoading || currentPageIndex >= pageUrls.length) {\n        return;\n    }\n    \n    isLoading = true;\n    \n    try {\n        // 分批加载页面\n        while (currentPageIndex < pageUrls.length) {\n            const remainingPages = pageUrls.length - currentPageIndex;\n            const currentBatchSize = Math.min(batchSize, remainingPages);\n            \n            showStatus(`批量加载 ${currentPageIndex + 1}-${currentPageIndex + currentBatchSize} 页…`);\n            \n            // 加载当前批次\n            await loadBatchPages(currentPageIndex, currentBatchSize);\n            \n            currentPageIndex += currentBatchSize;\n            \n            // 如果不是最后一页，添加短暂延迟\n            if (currentPageIndex < pageUrls.length) {\n                await new Promise(r => setTimeout(r, loadDelay));\n            }\n        }\n        \n        showStatus(`✅ 全部页面加载完成，共 ${allImages.length} 张图片`);\n    } catch (error) {\n        showStatus('❌ 加载过程中出现错误');\n        console.error(error);\n    } finally {\n        isLoading = false;\n    }\n}\n\n// === 初始化 ===\n(async () => {\n    if (pageUrls.length === 0) {\n        showStatus('⚠️ 未获取到分页');\n        return;\n    }\n    \n    try {\n        showStatus(`开始加载，共 ${pageUrls.length} 页…`);\n        \n        // 立即加载第一页（不等待）\n        showStatus('加载第 1 页…');\n        const urls = await fetchPageImages(pageUrls[0]);\n        appendPage(urls);\n        currentPageIndex = 1; // 第一页已加载\n        \n        showStatus(`✅ 首页加载完成 (${urls.length}张图片)`);\n        updateStatusBar();\n        \n        // 启动滚动监听（仅更新状态栏）\n        window.addEventListener('scroll', updateStatusBar, { passive: true });\n        \n        // 立即开始加载剩余所有页面（分批）\n        loadAllRemainingPages();\n        \n    } catch (e) {\n        showStatus('❌ 首页加载失败');\n        console.error(e);\n    }\n})();\n</script>\n</body>\n</html>",
    "ruleImage": "img@data-src||img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": ".current+a@href||a[aria-label=\"Next\"]@href",
    "rulePubDate": "{{@@span.0@text}}  {{@@span.1@text}}",
    "ruleTitle": ".meta-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://meirentu.club/s/{{source.getVariable()}}-1.html\n首页::/\n热门精选::/hots.html\nXiuRen秀人网::/group/XiuRen-1.html\nMFStar模范学院::/group/MFStar-1.html\nMiStar魅妍社::/group/MiStar-1.html\nMyGirl美媛馆::/group/MyGirl-1.html\nImiss爱蜜社::/group/Imiss-1.html\nBoLoli兔几盟::/group/BoLoli-1.html\nYouWu尤物馆::/group/YouWu-1.html\nUxing优星馆::/group/Uxing-1.html\nMiiTao蜜桃社::/group/MiiTao-1.html\nFeiLin嗲囡囡::/group/FeiLin-1.html\nWingS影私荟::/group/WingS-1.html\nTaste顽味生活::/group/Taste-1.html\nLeYuan星乐园::/group/LeYuan-1.html\nHuaYan花の颜::/group/HuaYan-1.html\nDKGirl御女郎::/group/DKGirl-1.html\nMintYe薄荷叶::/group/MintYe-1.html\nYouMi尤蜜荟::/group/YouMi-1.html\nCandy糖果画报::/group/Candy-1.html\nMTMeng模特联盟::/group/MTMeng-1.html\nMicat猫萌榜::/group/Micat-1.html\nHuaYang花漾::/group/HuaYang-1.html\nXingYan星颜社::/group/XingYan-1.html\nXiaoYu画语界::/group/XiaoYu-1.html",
    "sourceGroup": "h",
    "sourceIcon": "https://meirentu.club/static/img/logo.png",
    "sourceName": "美人图 - 秀人",
    "sourceUrl": "https://meirentu.club ",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 421,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n  \"User-Agent\": \"Mozilla/5.0 (Linux; Android 13; SM-S918B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36\",\n  \"Referer\": \"https://hksexdoll.com/\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@js:\n// 1. 列表规则分流\nif (baseUrl.includes(\"hksexdoll.com\")) {\n    // 娃娃：原版规则不动\n    result = org.jsoup.Jsoup.parse(result).select(\".brxe-ivopbr\");\n} else {\n    // 【关键修改】影视：只抓取 class=\"my-movie-grid\" 下面的 li\n    // 这样可以避开 WordPress 顶部的菜单栏干扰\n    result = org.jsoup.Jsoup.parse(result).select(\".my-movie-grid li\");\n}\nresult;",
    "ruleContent": "@js:\n// 5. 详情页跳转逻辑（原版逻辑保持不变）\nif (!baseUrl.includes(\"hksexdoll.com\")) {\n    // 只要不是娃娃官网，直接跳浏览器\n    java.startBrowser(baseUrl, \"正在前往...\");\n    result = \"正在跳转到外部浏览器播放...<br>\" + baseUrl;\n} else {\n    // 娃娃详情页解析（原版代码不动）\n    var doc = org.jsoup.Jsoup.parse(result);\n    var myImgs = [];\n    var rawList = doc.select(\".brxe-image-gallery img, .bricks-image-gallery img, noscript img, .entry-content img\");\n    for (var i = 0; i < rawList.size(); i++) {\n        var s = rawList.get(i).attr(\"data-src\") || rawList.get(i).attr(\"src\");\n        if (s && s.startsWith(\"http\") && !s.toLowerCase().includes(\".svg\") && !s.includes(\"100x100\") && !myImgs.includes(s)) {\n            myImgs.push(s);\n        }\n    }\n    var displayTitle = (typeof title !== 'undefined' && title && title !== \"null\") ? title : (doc.select(\"h1\").text() || \"1:1 Show\");\n    var h = \"<!DOCTYPE html><html><head><style>body{margin:0;background:#000;color:#eee;font-family:sans-serif;padding-bottom:50px} .top{background:#1a1a1a;color:#888;text-align:center;padding:12px;font-size:11px;position:sticky;top:0;z-index:99;letter-spacing:2px;border-bottom:1px solid #222} .header{padding:35px 20px 20px;background:#000;text-align:center} .img-wrap{padding:0 8px} .img-item{position:relative;margin-bottom:10px;border-radius:2px;overflow:hidden} .img-item img{width:100%;display:block;background:#111} .img-count{position:absolute;bottom:8px;right:10px;background:rgba(0,0,0,0.4);color:#999;padding:2px 6px;border-radius:2px;font-size:10px;font-family:monospace}</style></head><body>\";\n    h += \"<div class='top'>HD VISUAL SHOWCASE</div>\";\n    h += \"<div class='header'><h1 style='font-size:19px;margin:0;font-weight:400;color:#fff;letter-spacing:0.5px'>\" + displayTitle + \"</h1></div>\";\n    h += \"<div class='img-wrap'>\";\n    for(var k=0; k<myImgs.length; k++){\n        h += \"<div class='img-item'><img src='\" + myImgs[k] + \"'><span class='img-count'>\" + (k+1) + \" / \" + myImgs.length + \"</span></div>\";\n    }\n    h += \"</div><p style='text-align:center;color:#222;font-size:9px;margin-top:30px;letter-spacing:1px'>EXHIBITION ONLY</p></body></html>\";\n    result = h;\n}\nresult;",
    "ruleImage": "@js:\n// 4. 图片分流\nif (baseUrl.includes(\"hksexdoll.com\")) {\n    // 娃娃：原版规则不动\n    var img = result.select(\"img\").first();\n    result = img ? (img.attr(\"data-src\") || img.attr(\"src\")) : \"\";\n} else {\n    // 【关键修改】影视：抓取你代码里的 Google API 图标\n    var img = result.select(\"img\").first();\n    // 如果抓到了图就用图，抓不到就用默认图标兜底\n    result = img ? img.attr(\"src\") : \"https://goradioai.com/favicon.ico\";\n}\nresult;",
    "ruleLink": "@js:\n// 3. 链接分流\nif (baseUrl.includes(\"hksexdoll.com\")) {\n    var el = result.select(\"a.brxe-sfypzq\").first();\n    result = el ? el.attr(\"href\") : \"\";\n} else {\n    var el = result.select(\"a\").first();\n    result = el ? el.attr(\"href\") : \"\";\n}\nresult;",
    "ruleNextPage": "text.Next@href || .next.page-numbers@href",
    "ruleTitle": "@js:\n// 2. 标题分流\nif (baseUrl.includes(\"hksexdoll.com\")) {\n    result = result.select(\".product-title a\").text();\n} else {\n    // 影视：直接获取文本（会自动忽略掉 img 标签，只留文字）\n    result = result.text();\n}\nresult;",
    "searchUrl": "/?s={{key}}&post_type=product",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部展示::/shop/\n🎬 影视大全::https://goradioai.com/share/",
    "sourceGroup": "h",
    "sourceIcon": "https://hksexdoll.com/favicon.ico",
    "sourceName": "1:1 娃娃美图秀",
    "sourceUrl": "https://hksexdoll.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 425,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1771004757028,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://s.panlai.com/upload/bizhihui_com_20231111163956169969199654484.jpg-arthumbs",
    "sourceName": "CosBlay",
    "sourceUrl": "https://cn.cosblay.com/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 427,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n  \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36\",\n  \"Referer\": \"https://everia.club\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".blog-entry-inner||.entry-title",
    "ruleContent": "@js:\nvar doc = org.jsoup.Jsoup.parse(result);\nvar html = \"\";\n\n// ========== 1. 简介部分 (增强兼容性) ==========\nvar titleEle = doc.select(\"h1.entry-title, h2.single-post-title, .post-title\").first();\nvar tagsEle = doc.select(\"div.post-tags, .entry-meta, .tags-links\").first();\n\nif (titleEle) {\n    html += \"<h2 style='font-size: 1.2em; font-weight: bold; margin: 10px 0;'>\" + titleEle.text() + \"</h2>\";\n}\nif (tagsEle) {\n    html += \"<div style='color: #666; font-size: 0.85em; margin-bottom: 10px;'>\" + tagsEle.html() + \"</div>\";\n}\nhtml += \"<hr style='border: 0; height: 1px; background: #eee; margin: 15px 0;'>\";\n\n// ========== 2. 正文图片 (保持之前的去噪逻辑) ==========\nvar entry = doc.select(\"div.entry-content, article .post-content, #content\");\nvar imgs = entry.select(\"img\");\n\nfor (var i = 0; i < imgs.size(); i++) {\n    var img = imgs.get(i);\n    var realSrc = img.attr(\"data-lazy-src\") || img.attr(\"data-src\") || img.attr(\"data-original\") || img.attr(\"src\");\n\n    if (realSrc && !realSrc.startsWith(\"data:image\") && !realSrc.includes(\"avatar\") && realSrc.startsWith(\"http\")) {\n        html += \"<img src='\" + realSrc + \"' style='display:block; width:100%; margin:0; padding:0;' />\";\n    }\n}\n\n// ========== 3. 相关推荐 (修复超链接和标题丢失问题) ==========\nvar relatedSection = doc.select(\"section#related-posts, .related-posts\");\nif (relatedSection.size() > 0) {\n    html += \"<hr><h3 style='text-align:center; font-size: 16px; margin: 20px 0;'>YOU MIGHT ALSO LIKE</h3>\";\n    \n    // 这里的选择器必须精准覆盖到每一项\n    var items = relatedSection.select(\"article, .related-post\");\n    for (var j = 0; j < items.size(); j++) {\n        var item = items.get(j);\n        \n        // 提取链接：优先找 a 标签\n        var aTag = item.select(\"a\").first();\n        var link = aTag ? aTag.attr(\"abs:href\") : \"\"; // 使用 abs:href 获取绝对路径\n        \n        // 提取图片\n        var rImg = item.select(\"img\").first();\n        var rSrc = \"\";\n        if (rImg) {\n            rSrc = rImg.attr(\"data-lazy-src\") || rImg.attr(\"data-src\") || rImg.attr(\"src\");\n        }\n        \n        // 提取标题：多渠道寻找标题文本\n        var rTitle = item.select(\".related-post-title, h4, .post-title\").text() || (aTag ? aTag.attr(\"title\") : \"\");\n\n        // 重新拼接 HTML：确保 a 标签包裹整个区域\n        if (link && (rSrc || rTitle)) {\n            html += \"<div style='margin-bottom: 25px; text-align: center; border: 1px solid #f0f0f0; padding: 10px; border-radius: 8px;'>\";\n            html += \"  <a href='\" + link + \"' style='text-decoration: none; color: #333;'>\";\n            if (rSrc && !rSrc.startsWith(\"data:image\")) {\n                html += \"    <img src='\" + rSrc + \"' style='width:100%; border-radius: 4px; margin-bottom: 8px;' />\";\n            }\n            if (rTitle) {\n                html += \"    <div style='font-size: 14px; font-weight: 500; line-height: 1.4;'>\" + rTitle + \"</div>\";\n            }\n            html += \"  </a>\";\n            html += \"</div>\";\n        }\n    }\n}\n\nhtml;\n",
    "ruleImage": "img@data-lazy-src",
    "ruleLink": "a@href",
    "ruleNextPage": " page||.page-numbers.next@href",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/\nJapan::/category/japan/page/{{page}}\nKorea::/category/korea/page/{{page}}\nChina::/category/chinese/page/{{page}}\nCosplay::/category/cosplay/page/{{page}}\nThailand::/category/thailand/page/{{page}}\n搜索::?s={{source.getVariable()}}",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "EVERIA.CLUB",
    "sourceUrl": "https://everia.club",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 431,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.list@li",
    "ruleContent": "class.block recipe-show@html",
    "ruleDescription": "",
    "ruleImage": "class.cover@img@data-src",
    "ruleLink": "class.name@a@href@js:\"https://www.xiachufang.com\"+result",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.score@text",
    "ruleTitle": "class.cover@img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "家常::https://www.xiachufang.com/category/40076/\n快手::https://www.xiachufang.com/category/40077/\n下饭::https://www.xiachufang.com/category/40078/\n早餐::https://www.xiachufang.com/category/40071/\n鱼::https://www.xiachufang.com/category/957/\n鸡蛋::https://www.xiachufang.com/category/394/\n汤羹::https://www.xiachufang.com/category/20130/\n烘焙::https://www.xiachufang.com/category/51761/\n主食::https://www.xiachufang.com/category/51490/\n面::https://www.xiachufang.com/category/20133/\n素食::https://www.xiachufang.com/special/vegetarian/",
    "sourceGroup": "noh",
    "sourceIcon": "https://s.chuimg.com/favicon.ico",
    "sourceName": "下厨房",
    "sourceUrl": "https://www.xiachufang.com/category/40076/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 451,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.pic-list pic-list-2 pic-list-shadow@li",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleImage": "img@data-original",
    "ruleLink": "a@href@js:\"https://m.umei.cc\"+result",
    "rulePubDate": "",
    "ruleTitle": "class.New-PL-tit@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "美女图片::https://m.umei.cc/meinvtupian/\n性感美女::https://m.umei.cc/meinvtupian/xingganmeinv/\n丝袜美女::https://m.umei.cc/meinvtupian/siwameinv/\n美女写真::https://m.umei.cc/meinvtupian/meinvxiezhen/\n外国美女::https://m.umei.cc/meinvtupian/waiguomeinv/\n街拍美女::https://m.umei.cc/meinvtupian/jiepaimeinv/",
    "sourceGroup": "h",
    "sourceIcon": "http://kr.shaodiyejin.com/file/2020/0503/small2711f2c54cbc99a400938c0347019fec.jpg",
    "sourceName": "优美图库-美女图片",
    "sourceUrl": "https://m.umei.cc/meinvtupian/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 456,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@css:#masonry>div",
    "ruleContent": "<js>\nvar doc=org.jsoup.Jsoup.parse(result)\nString(doc.select(\".content\").html()).replace(/src/g,/xxxx/).replace(/data-original/g,\"src\")\n</js>",
    "ruleDescription": "",
    "ruleImage": "img@data-original",
    "ruleLink": "@css:a@href",
    "ruleNextPage": "@css:li.next>a@href",
    "rulePubDate": "",
    "ruleTitle": "@css:.item-link-text@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "小姐姐::https://a7a7.net/meitu/index.php/category/xjj/\n森罗财团::https://a7a7.net/meitu/index.php/category/slct/\nROSI::https://a7a7.net/meitu/index.php/category/rosi/\n第四印象::https://a7a7.net/meitu/index.php/category/disi/\nCosplay::https://a7a7.net/meitu/index.php/category/Cosplay/\n私房写真::https://a7a7.net/meitu/index.php/category/Portrait/",
    "sourceGroup": "h",
    "sourceIcon": "https://a7a7.net/meitu/usr/themes/photograph/favicon.png",
    "sourceName": "阿七美图馆",
    "sourceUrl": "https://a7a7.net/meitu/index.php/category/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 459,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "//div[@class=\"main-content\"]/div[2]/div",
    "ruleContent": ".main-body@html",
    "ruleDescription": "",
    "ruleImage": "",
    "ruleLink": "//*[@class=\"pin-coat\"]/a[1]/@href",
    "ruleNextPage": "//div[@class=\"main-content\"]/div[4]/a[@title=\"下一页\"]/@href",
    "rulePubDate": "//div/div/span/span/text()",
    "ruleTitle": "//div/a/span/text()",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::http://www.jueduifucong.com/\ncosplay::http://www.jueduifucong.com/cos\n二次元::http://www.jueduifucong.com/ecy\n写真::http://www.jueduifucong.com/xz\n自拍::http://www.jueduifucong.com/zp\n套图::http://www.jueduifucong.com/tag/tt\n性感::http://www.jueduifucong.com/tag/sexy\n美腿::http://www.jueduifucong.com/tag/mt\n少女::http://www.jueduifucong.com/tag/sn\n丝袜::http://www.jueduifucong.com/tag/sw\n内衣::http://www.jueduifucong.com/tag/ny\n胖次::http://www.jueduifucong.com/tag/pc\n巨乳::http://www.jueduifucong.com/tag/ru\n果体::http://www.jueduifucong.com/tag/luo\n制服::http://www.jueduifucong.com/tag/zf\n御姐::http://www.jueduifucong.com/tag/yu\n日系::http://www.jueduifucong.com/tag/jp\n臀控::http://www.jueduifucong.com/tag/tk\n校服::http://www.jueduifucong.com/tag/sf\n萝莉::http://www.jueduifucong.com/tag/loli",
    "sourceGroup": "h",
    "sourceIcon": "https://android-artworks.25pp.com/fs08/2016/06/09/4/1_6f8d82c3c8a0cc7722c2fb4959090044_con_130x130.png",
    "sourceName": "绝对服从",
    "sourceUrl": "http://www.jueduifucong.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 475,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.excerpt",
    "ruleContent": "class.article-content@html##未经允许不得转载.*",
    "ruleImage": "img@data-original",
    "ruleLink": "h2@a@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.time@text##.*发布于",
    "ruleTitle": "h2@a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "宅男女神",
    "sourceUrl": "https://openys.cn/category/znns/page/{{page}}",
    "style": "img{width:100%; height:auto;}\nvideo{width:100%; height:auto;}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 478,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "tag.ul@tag.li",
    "ruleContent": "",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.1@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "tag.span.-1@text",
    "ruleTitle": "h5@tag.a@text||h3@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "短视频区::https://www.68dpf.com/shipin/list-短视频.html\n美女主播::https://www.68dpf.com/shipin/list-美女主播.html\n国产精品::https://www.68dpf.com/shipin/list-国产精品.html\n中文字幕::https://www.68dpf.com/shipin/list-中文字幕.html\n女优专区::https://www.68dpf.com/shipin/list-女优专区.html\n亚洲无码::https://www.68dpf.com/shipin/list-亚洲无码.html\n欧美精品::https://www.68dpf.com/shipin/list-欧美精品.html\n精彩动漫::https://www.68dpf.com/shipin/list-精彩动漫.html",
    "sourceGroup": "h",
    "sourceIcon": "https://jsjs.qcyn72.com/10/assets/images/theme/default/logo_300x300.png",
    "sourceName": "猫咪视频",
    "sourceUrl": "https://www.68dpf.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 480,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "header": " {\n\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "id.main@tag.article",
    "ruleContent": "@js:\nvar title = java.getElements(\".entry-header\");\n\nvar content = java.getElements(\".single-content\");\n\nvar doc = org.jsoup.Jsoup.parse(content);\n\n//解析剩下页数,并追加剩余页数内容\n\nvar pageNum = null;\nvar other = [];\nif(\"{{@@page-links}}\"!=null){\nvar page = doc.select(\".page-links\").select(\"a\");\npageNum = page.size()-1;\nfor(var i = 1;i < pageNum;i++){\nvar doc = org.jsoup.Jsoup.connect(page.get(i).attr(\"href\")).get()\nother[i] = doc.select(\".single-content\");\n}\n}\n\nvar all = title +'<hr><p>'+content+other.join(\" \")+'<hr><p><a href='+baseUrl+'>原文出处</a>'\n\nresult = String(all).replace(/(浏览 次)/,\"\")",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "text.下页@tag.a@href",
    "rulePubDate": "{{@@class.date@span@title}}   {{@@class.views@text}}##浏览 次",
    "ruleTitle": "tag.a.0@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "时事热点::https://www.kdtjq.com/fl/ssrd\n娱乐明星::https://www.kdtjq.com/fl/ylmx\n娱乐八卦::https://www.kdtjq.com/fl/ylbg\n宅男频道::https://www.kdtjq.com/fl/znpd\n美女翘臀::https://www.kdtjq.com/fl/美女翘臀\n女优番号::https://www.kdtjq.com/fl/nyfh\nav女星::https://www.kdtjq.com/fl/avnmx\n宅男女神::https://www.kdtjq.com/fl/znns\n邪恶gif出处::https://www.kdtjq.com/fl/ppp\n电影剧情::https://www.kdtjq.com/fl/dyjj",
    "sourceGroup": "h",
    "sourceIcon": "https://www.kdtjq.com/wp-content/themes/Unite/images/favicon.png",
    "sourceName": "宅男俱乐部",
    "sourceUrl": "https://www.kdtjq.com",
    "style": ".entry-title {\nfont-size:15;\n}\n\n.single_info {\nfont-size:10;\n}\n\np {\nfont-size:12;\n}\n\nimg {\nwidth:100%;\nheight:auto;\nborder:solid;\n}\n\n.page-links{\ndisplay:none;\n}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 481,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": " {\n\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "tag.article",
    "ruleContent": "@js:\nvar title = java.getElements(\".entry-title\");\n\nvar content = java.getElements(\".entry-content\");\n\nvar date = java.getElements(\".wpd-comment-date\");\n\nvar  text = java.getElements(\".wpd-comment-text\");\n\nvar author = java.getElements(\".wpd-comment-author\")\nvar list = [];\nfor(var i = 0;i < author.size();i++){\nlist[i] ='<p><a id = \"author\">'+author.get(i).text()+'</a><br><br><a id = \"text\">'+text.get(i).text()+'</a><br><br><a id = \"date\">'+date.get(i).text()+'</a><hr>'\n}\nvar clean = (content+list.join(\" \")).replace(/(\\<button.*\\】)|(\\<pre\\>\\<a.*pre\\>)/g,\"\");\n\nvar convert = clean.replace(/\\<pre\\>/g, \"\\<a id=\\\"convert\\\"\\>\").replace(/\\<\\/pre\\>/g,\"\\<\\/a\\>\")\n\nresult = title+convert",
    "ruleImage": "class.entry-content@tag.img@src",
    "ruleLink": "class.entry-title@tag.a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "@js:\nfunction myFormat(str) {\nvar d = new Date(str);\nvar weeks = d.getFullYear() + '/' + (d.getMonth() + 1) + '/' + d.getDate() + '  ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();\n\nreturn weeks\n}\nvar time = \"{{@@class.entry-date@datetime}}\";\n\nvar author = \"{{@@class.author@tag.a@text}}\"\nresult = myFormat(time)+'           '+author\n",
    "ruleTitle": "class.entry-title@tag.a.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "文章::https://www.liuli.pl/wp/age.html/page/{{page}}\n动画::https://www.liuli.pl/wp/anime.html/page/{{page}}\n漫画::https://www.liuli.pl/wp/comic.html/page/{{page}}\n游戏::https://www.liuli.pl/wp/game.html/page/{{page}}\n其他::https://www.liuli.pl/wp/book.html/page/{{page}}}",
    "sourceGroup": "h",
    "sourceIcon": "https://s3.ax1x.com/2020/11/19/DnHXhq.png",
    "sourceName": "琉璃神社",
    "sourceUrl": "https://www.liuli.pl",
    "style": ".entry-title {\nfont-size:15;\nword-break:break-all;\ncolor:white;\ntext-align:center\n}\n\n\np {\nfont-size:12;\nword-break:break-all;\ncolor:#BBBBBB;\n}\n\n#date {\nfont-size:10;\ncolor:#BBBBBB;\n}\n\n#text {\nfont-size:10;\ncolor:#BBBBBB;\nword-break:break-all;\n}\n\n#author {\nfont-size:12;\nfont-weight: bold;\ncolor:#00ADFF;\n}\n\n#convert{\nfont-size:12;\ncolor:#BBBBBB;\nword-break:break-all;\n}\n\nhr{\nwidth:100%;\nheight:1px;\nmargin:0 auto;\nborder:0;\nbackground: #333;\nbackground-image: linear-gradient(to right, #ccc, #333, #ccc); \n}\n\nimg {\nwidth:100%;\nheight:auto;\nborder:solid;\n}\n\nbody {\nbackground:#0F0F0F;\n}\n\nh2 {\ncolor:#BBBBBB;\n}\n\nul {\ncolor:#BBBBBB;\n}\n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 482,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "html",
    "ruleContent": "",
    "ruleImage": "",
    "ruleLink": "@js:result=baseUrl",
    "rulePubDate": "",
    "ruleTitle": "title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "官网:http://jmcomic.xyz/",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "禁漫网站发布页",
    "sourceUrl": "http://jmcomic.xyz/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 485,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.blockcontent1@class.cell",
    "ruleContent": "<script src=\"https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js\"> </script>\n<script>function changeurl(url){$(\"#ff\").attr(\"src\",url);\n};\n</script>\n{{@@class.detail_imform_desc_pre@html}}\n<iframe src=\"\" width=\"100%\" height=\"300px\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" scrolling=\"no\" id=\"ff\"></iframe>\n{{html='';list=java.getElements(\"@css:ul:not([class])\").toArray();num=0;for(i=0;i<list.length-1;i++){if(String(list[i]).match(/<\\/li>/)){num=num+1;a=String(list[i]).replace(/<ul>/g,'<ul id=\"list'+num+'\"><p>播放地址'+num+'</p>');html=html+a;};};html}}\n<js>result.replace(/<li>\\s*<a href=(\"\\/play\\/\\d+\\?playid=\\d+_\\d+\").*?>([^<]+)<\\/a>\\s*<\\/li>/g,'<button value=$1 onclick=\"changeurl(this.value)\">$2</button>').replace(/<button/,'<button id=\"but0\"');</js><js>result+'<script>$(\"button\").click(function(){$(\"button\").removeClass(\"upBtn\");$(this).addClass(\"upBtn\")});$(\"#ff\").attr(\"src\",$(\"#but0\").val());$(\"#but0\").addClass(\"upBtn\")</script>'</js>",
    "ruleDescription": "",
    "ruleImage": "img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.newname@text&&class.cell_imform_kv.0@tag.span.1@text&&class.cell_imform_kv.3@tag.span.1@text&&class.cell_imform_kv.6@tag.span.1@text##\\n##•",
    "ruleTitle": "class.cell_imform_name@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://www.agefans.net/search?query=你的名字&page={{page}}\n全部::https://www.agefans.net/catalog/all-all-all-all-all-time-{{page}}\n搞笑::https://www.agefans.net/catalog/all-all-all-搞笑-all-time-{{page}}\n运动::https://www.agefans.net/catalog/all-all-all-运动-all-time-{{page}}\n励志::https://www.agefans.net/catalog/all-all-all-励志-all-time-{{page}}\n热血::https://www.agefans.net/catalog/all-all-all-热血-all-time-{{page}}\n战斗::https://www.agefans.net/catalog/all-all-all-战斗-all-time-{{page}}\n竞技::https://www.agefans.net/catalog/all-all-all-竞技-all-time-{{page}}\n校园::https://www.agefans.net/catalog/all-all-all-校园-all-time-{{page}}\n青春::https://www.agefans.net/catalog/all-all-all-青春-all-time-{{page}}\n爱情::https://www.agefans.net/catalog/all-all-all-爱情-all-time-{{page}}\n冒险::https://www.agefans.net/catalog/all-all-all-冒险-all-time-{{page}}\n后宫::https://www.agefans.net/catalog/all-all-all-后宫-all-time-{{page}}\n百合::https://www.agefans.net/catalog/all-all-all-百合-all-time-{{page}}\n治愈::https://www.agefans.net/catalog/all-all-all-治愈-all-time-{{page}}\n萝莉::https://www.agefans.net/catalog/all-all-all-萝莉-all-time-{{page}}\n魔法::https://www.agefans.net/catalog/all-all-all-魔法-all-time-{{page}}\n悬疑::https://www.agefans.net/catalog/all-all-all-悬疑-all-time-{{page}}\n推理::https://www.agefans.net/catalog/all-all-all-推理-all-time-{{page}}\n奇幻::https://www.agefans.net/catalog/all-all-all-奇幻-all-time-{{page}}\n科幻::https://www.agefans.net/catalog/all-all-all-科幻-all-time-{{page}}\n游戏::https://www.agefans.net/catalog/all-all-all-游戏-all-time-{{page}}\n神魔::https://www.agefans.net/catalog/all-all-all-神魔-all-time-{{page}}\n恐怖::https://www.agefans.net/catalog/all-all-all-恐怖-all-time-{{page}}\n血腥::https://www.agefans.net/catalog/all-all-all-血腥-all-time-{{page}}\n机战::https://www.agefans.net/catalog/all-all-all-机战-all-time-{{page}}\n战争::https://www.agefans.net/catalog/all-all-all-战争-all-time-{{page}}\n犯罪::https://www.agefans.net/catalog/all-all-all-犯罪-all-time-{{page}}\n历史::https://www.agefans.net/catalog/all-all-all-历史-all-time-{{page}}\n社会::https://www.agefans.net/catalog/all-all-all-社会-all-time-{{page}}\n职场::https://www.agefans.net/catalog/all-all-all-职场-all-time-{{page}}\n剧情::https://www.agefans.net/catalog/all-all-all-剧情-all-time-{{page}}\n伪娘::https://www.agefans.net/catalog/all-all-all-伪娘-all-time-{{page}}\n耽美::https://www.agefans.net/catalog/all-all-all-耽美-all-time-{{page}}\n童年::https://www.agefans.net/catalog/all-all-all-童年-all-time-{{page}}\n教育::https://www.agefans.net/catalog/all-all-all-教育-all-time-{{page}}\n亲子::https://www.agefans.net/catalog/all-all-all-亲子-all-time-{{page}}\n真人::https://www.agefans.net/catalog/all-all-all-真人-all-time-{{page}}\n歌舞::https://www.agefans.net/catalog/all-all-all-歌舞-all-time-{{page}}\n肉番::https://www.agefans.net/catalog/all-all-all-肉番-all-time-{{page}}\n美少女::https://www.agefans.net/catalog/all-all-all-美少女-all-time-{{page}}\n轻小说::https://www.agefans.net/catalog/all-all-all-轻小说-all-time-{{page}}\n吸血鬼::https://www.agefans.net/catalog/all-all-all-吸血鬼-all-time-{{page}}\n乙女向::https://www.agefans.net/catalog/all-all-all-乙女向-all-time-{{page}}\n泡面番::https://www.agefans.net/catalog/all-all-all-泡面番-all-time-{{page}}\n欢乐向::https://www.agefans.net/catalog/all-all-all-欢乐向-all-time-{{page}}",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "AGE动漫",
    "sourceUrl": "https://www.agefans.net/catalog/all-all-all-all-all-time-{{page}}",
    "style": "button{outline:none;width:90px; height:35px; border-radius: 10px; border:3px solid #fff; background-color: #E9E4E0; }\n.upBtn{outline:none;width:90px; height:35px; border-radius: 10px; border:3px solid #fff; background-color: #ffffcc; }",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 486,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".lpic li",
    "ruleContent": "class.movurl@a@html&&class.thumb l@html&&class.info@html\n<js>\ndoc=org.jsoup.Jsoup.parse(result);\nimg=doc.select('img');\ninfo=doc.select('.info').html();\nzxb='';dxb='';\nlist=doc.select('a:not(:last-child)').toArray();\nfor(i in list){\na='http://www.yhdm.io'+list[i].select('a').attr('href');\nb='http://www.yhdm.io'+list[list.length-1-i].select('a').attr('href');\nzxb=zxb+'<button id=\"but'+i+'\" class=\"button\" value=\"'+a+'\">'+list[i].text()+'</button>';\ndxb=dxb+'<button id=\"dbut'+i+'\" class=\"button\" value=\"'+b+'\">'+list[list.length-1-i].text()+'</button>'\n}\nzx='<div id=\"zx\" style=\"display:block\">'+zxb+'</div>';\ndx='<div id=\"dx\" style=\"display:none\">'+dxb+'</div>';\n\n\nscript='(function(){$(\".button:first\").addClass(\"upBtn\");$(\"#ff\").attr(\"src\",$(\".button:first\").val())})();$(\".button\").click(function(){id=$(this).attr(\"id\");\\nid=\"#\"+id;\\n$(\".button\").removeClass(\"upBtn\");\\n$(id).addClass(\"upBtn\");\\nurl=$(id).val();$(\"#ff\").attr(\"src\",url)});$(\"li\").click(function(){id=$(this).attr(\"id\");\\nid=\"#\"+id;\\n$(\"li\").removeClass(\"active\");\\n$(id).addClass(\"active\");\\nif(id==\"#b1\"){$(\"#juji\").show();$(\"#info\").hide()}else{$(\"#info\").show();$(\"#juji\").hide()}});$(\"#dxb\").click(function(){if($(\"#dxb\").text()==\"倒序\"){$(\"#dxb\").text(\"正序\");$(\"#dx\").show();$(\"#zx\").hide();}else{$(\"#dxb\").text(\"倒序\");$(\"#dx\").hide();$(\"#zx\").show();}}) ';\n\ntap='<div id=\"tab\" style=\"display:inline;\"><ul><li id=\"b1\" class=\"active\">剧集</li><li id=\"b2\">剧情介绍</li><button id=\"dxb\" style=\"display:inline\">倒序</button></ul></div>';\n\n\njuji='<div id=\"juji\" style=\"display:block\">'+zx+dx+'</div>';\ninfo='<div id=\"info\" style=\"display:none\">'+img+info+'</div>';\n\nresult='<html><head> <script src=\"https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js\"> </script> </head><iframe src=\"\" id=\"ff\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" scrolling=\"no\"></iframe>'+tap+'<div id=\"html\">'+juji+info+'</div>\\n<script>'+script+'</script></html>'\n</js>",
    "ruleDescription": "",
    "ruleImage": "//@src",
    "ruleLink": "http://www.yhdm.io{{//h2//@href}}",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "//p/text()",
    "ruleTitle": "//@title&&//font/text()&&//span[2]//text()##\\n##∣",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "新番::http://www.yhdm.io/{{java.timeFormat(Date.now()).match(/(\\d{4})/)[1]}}/\nOVA::http://www.yhdm.io/36\n剧场::http://www.yhdm.io/37\n真人::http://www.yhdm.io/38\n搜索::http://www.yhdm.io/search/名侦探柯南/",
    "sourceGroup": "h",
    "sourceIcon": "https://gitee.com/zmn1307617161/booksource/raw/master/%E5%9B%BE%E7%89%87/pic.51yuansu.jpg",
    "sourceName": "樱花动漫",
    "sourceUrl": "http://www.yhdm.tv",
    "style": ".button{outline:none;width:90px; height:35px; border-radius: 10px; border:3px solid #fff; background-color: #E9E4E0; }\n.upBtn{outline:none;width:90px; height:35px; border-radius: 10px; border:3px solid #fff; background-color: #ffffcc; }\nimg {\nfloat:left;margin-right:30px;\nwidth:150px}\n\n#intro{float:left;\nborder-style:double;\nborder-color:black;padding:5px;\nborder-width:5px}\n#html{margin-top:20px}\niframe{width:100%;height:315px}\n#dxb{border-radius: 1px; border:3px solid #fff; background-color: #E9E4E0;outline:none}\n\nul{\nborder-bottom:0;\n\theight:40px;\n}\nli {\n\tlist-style:none;\n\tfloat:left;\n\theight:34px;\n\tmargin-right:20px;\n\tcolor:#909090;\n\tline-height:34px;\n}\nli.active {\n\tcolor:#50B400;\n\tborder-bottom:3px solid #50B400;\n}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 507,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "tag.article",
    "ruleContent": "<!-- 防止订阅默认标题变成网址，可以改成你喜欢的文字 -->\n<title>{{@@tag.h1@text}}</title>\n\n\n<!-- 标题和时间 -->\n<br><h3>{{@@tag.h1@text}}</h3>\n<h6>发布于 {{@@tag.time.0@text}}</h6>\n\n\n<!-- 图片和框架 -->\n<div id=\"TúPiàn\">\n{{@@class.czr-wp-the-content@tag.img@html}}\n</div>\n\n\n<!-- 查看大图的插件和启动js -->\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.2/viewer.min.css\">\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.2/viewer.min.js\"></script>\n\n<script>\n  new Viewer(\n    document.getElementById(\"TúPiàn\")    ,{\n//设置图片地址来源\n    url: 'src',\n//是否显示图片标题(true/false)\n    title: false,\n//设置播放间隔(单位毫秒，1秒=1000毫秒)\n    interval: 3000\n    }\n  );\n</script>\n##\\[?(合集(..)?)?下载\\]?",
    "ruleImage": "tag.img@src",
    "ruleLink": "class.czr-title@href",
    "ruleNextPage": "@js:\n//写成baseUrl也可以用，但是加载会比较慢\n//因为是调用了源URL的js，相当于要加载两次网址\n//以上情况仅在没有填写分类Url的时候使用\n\n\npage={{@@class.page-numbers.-1@text}}\n\n//java.log(page)\n\n'http://meiyuns.com/page/' + Math.ceil(Math.random()*page) + '/'",
    "rulePubDate": "",
    "ruleTitle": "class.czr-title@text ##\\[?(合集(..)?)?下载\\]?",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "",
    "sourceComment": "通过ajax实时获取page\n\n只适用于网址固定的网站\n\n\n//可以在text()后面加减乘除来改变page\n//例：\n.select(' .page-numbers ').last().text()-1\n\n//Math.ceil(Math.random()*(page-1))也行？\n\n\n不知道为什么eq不能获取倒数\n不会写分类URL，菜\n\n\n\n//.eq()和阅读一样，也是从零开始数\n//应该说阅读用的是eq选择\n\n\n//select里面的空格，相当于阅读的@\n//两边的空格不算，只是隔开了方便看\n//格式如下：\n.select(' .pag-item ').eq( 3 ).text()\n.select(' .pag-item a ').eq( 1 ).text()\n.select(' .page-numbers ').eq( 3 ).text()\n\n\n//这个网站的page显示在倒数第一个元素\n//.last()可以获取倒数第一个\n//所以写成下面也可以用\n.select(' .pag-item ').last().text()\n.select(' .pag-item a ').last().text()\n.select(' .page-numbers ').last().text()\n\n\n\n\n\n我既媚君姿，君亦悦我媚\n　　白丝，jk，死库水，cosplay，少女映画，来不及解释了，快上车！",
    "sourceGroup": "h",
    "sourceIcon": "http://meiyuns.com/wp-content/uploads/2021/01/cropped-meiyun_fang_512x512-32x32.png",
    "sourceName": "媚韵",
    "sourceUrl": "@js:\npage=org.jsoup.Jsoup.parse(\n\tjava.ajax(' http://meiyuns.com ')\n).select(' .pag-item a ').eq( 1 ).text()\n\n//java.log(page)\n\n'http://meiyuns.com/page/' + Math.ceil(Math.random()*page) + '/'",
    "style": "/*标题相关*/\nh3{text-align:center}\nh6{text-align:right; margin-bottom:0}\n\n/*图片相关*/\nimg{width:100%}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 508,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "class.content@class.post",
    "ruleContent": "class.post-mode2 single@html",
    "ruleDescription": "",
    "ruleImage": "class.post-mode2@tag.a@tag.img@data-original",
    "ruleLink": "a.1 @href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.post-mode1-2@text",
    "ruleTitle": "tag.a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "美胸::https://www.ikmjx.com/list/1.html\n美腿::https://www.ikmjx.com/list/2.html\n制服::https://www.ikmjx.com/list/3.html",
    "sourceComment": "没技术含量，娱乐而已",
    "sourceGroup": "h",
    "sourceIcon": "https://photo.nsny.ltd/2022/02/13/2b20e5dceb782.jpg",
    "sourceName": "买家秀",
    "sourceUrl": "https://www.ikmjx.com",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 509,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "li.xzdh-kz-li",
    "ruleContent": ".wrap.single-box@html##标签(.|\\n)*",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "span.link-info@text",
    "ruleTitle": "{{@@a@title}}{{@@span.post-fbtime@text}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "影视网站::https://mengdaohang.com/category-13_{{page}}.html",
    "sourceComment": "分类Url快速生成\nhttp://dalaoha.github.io/yuedu",
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "萌导航",
    "sourceUrl": "https://mengdaohang.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 510,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "li@.li_text",
    "ruleContent": ".fx-card!-1:-2@html",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "p@text",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "acg图片::https://www.52ecy.com/ACGtupian/{{page}}/",
    "sourceComment": "分类Url快速生成\nhttp://dalaoha.github.io/yuedu",
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "吾爱二次元导航",
    "sourceUrl": "https://www.52ecy.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 512,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "ul.ml.waterfall.cl@li",
    "ruleContent": "ignore_js_op@img@zoomfile@js:\nlist=result.split(\"\\n\");//提取完整图片链接\nhtml='';//html化\nfor(i in list){\nhtml+='<img src=\"https://www.ruanmeizishe.com/'+list[i]+'\">\\n'\n//将图片数据打印出来\n}\nhtml",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".auth.cl@a.1@text",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "cos::https://www.ruanmeizishe.com/forum-41-{{page}}.html",
    "sourceComment": "自行补全分类\n分类Url快速生成\nhttp://dalaoha.github.io/yuedu",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "cos图(需要的自行启用)",
    "sourceUrl": "https://www.ruanmeizishe.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 513,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".container@.grid",
    "ruleContent": "ul.focus@li@img@data-original@js:\nlist=result.split(\"\\n\");//提取完整图片链接\nhtml='';//html化\nfor(i in list){\nhtml+='<img src=\"'+list[i]+'\">\\n'\n//将图片数据打印出来\n}\nhtml",
    "ruleImage": "img@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "ruleTitle": "strong@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "cos::http://www.nvpoo.com/cosplay/index_2.html",
    "sourceComment": "分类自行补全\n分类快速生成\nhttp://dalaoha.github.io/yuedu",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "cos美女网",
    "sourceUrl": "http://www.nvpoo.com",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 516,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "div.video_list:nth-of-type(n+3)",
    "ruleContent": "id.cuerpo@html",
    "ruleImage": "class.video_list@tag.a@tag.img@src",
    "ruleLink": "class.video_list@tag.a@href",
    "ruleNextPage": "text.Next@href",
    "ruleTitle": "class.video_list@tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceComment": "内容规则有点烂",
    "sourceGroup": "h",
    "sourceIcon": "https://photo.nsny.ltd/2022/02/21/87ba45075bf65.jpg",
    "sourceName": "kindgirls",
    "sourceUrl": "https://www.kindgirls.com/video-archive.php",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 520,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "tag.ul@class.list@tag.li",
    "ruleContent": "<!DOCTYPE html>\r\n<html>\r\n\r\n<head>\r\n<title>{{@@tag.title@text}}</title>\r\n\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\r\n    <link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n    <script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\r\n</head>\r\n\r\n<body>\n   <h4>{{@@tag.title@text}}</h4>\r\n    <div id=\"box\">{{@@class.photo-center@tag.a@tag.img@html}}</div>\r\n    <div id=\"loads\">加载中</div>\r\n    <script>\r\n        var box = document.getElementById(\"box\");\r\n        var loads = document.getElementById(\"loads\");\r\n        document.querySelector(\"img\").onload = () => {\r\n            new Viewer(box, {\r\n                //设置图片地址来源\r\n                url: 'src',\r\n                //是否显示图片标题(true/false)\r\n                title: false,\r\n                //设置播放间隔(单位毫秒，1秒=1000毫秒)\r\n                interval: 3000\r\n            });\r\n            loads.id = 'load';\r\n            var i = 1;\n            var page = 100;\n            \r\n            if('{{@@tag.title@text##\\D+}}'!=''){\n            \tpage = {{@@tag.title@text##\\D+}};\n            \t}\n         \n            \r\n            var url = \"{{baseUrl}}\";\r\n            var io = new IntersectionObserver(entries => {\r\n                if (entries[0].intersectionRatio <= 0) return;\r\n                for(var j=0;j<5;j++){\r\n                \t     fetchHtml(i,page,url);\r\n                      i+=1;\r\n                \t}\r\n            });\r\n            io.observe(load);\r\n        }\r\n\r\n\r\nfunction fetchHtml(i,page,url){\r\n if (i <= page) {\r\n                    nurl = url + \"?page=\" + i ;\r\n                    fetch(nurl).\r\n                        then(res => res.text()).\r\n                        then(text => {\r\n                        \t\r\n                           new DOMParser().parseFromString(text, \"text/html\").querySelectorAll(\".photo-center a img\").\r\n                            forEach(item =>\r\n                            \t\r\n                            \t box.innerHTML +='<div style=\"width:100%;border-left:2px solid #000\"><h4>'+(++i)+'->'+(++page)+'</h4></div>'+ item.outerHTML.replace(\"<img\", '<img onload=\"box.viewer.update()\"'))\r\n                        })\r\n\r\n                } else {\r\n                    io.unobserve(load);\r\n                    load.innerHTML = ''\r\n                }\r\n               \r\n}\r\n    </script>\r\n</body>\r\n\r\n</html>",
    "ruleImage": "class.lazy@data-original",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "page",
    "ruleTitle": "class.title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "",
    "sourceGroup": "h",
    "sourceIcon": "https://www.oxxx.cc/template/img/oxxx_favicon.ico",
    "sourceName": "oxxx",
    "sourceUrl": "https://www.oxxx.cc/photo/?page={{page}}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 521,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "内购账号已被屏蔽。",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "萝莉社(百万萝莉视频)(请看源注释，已内购)",
    "sourceUrl": "https://luolishe.me?_share=L6OC",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 524,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "id.content@class.mozaique cust-nb-cols@div",
    "ruleContent": "",
    "ruleImage": "",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.no-page next-page@href",
    "ruleTitle": "class.title.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::http://yxy003.com/?k=福利姬",
    "sourceGroup": "h",
    "sourceIcon": "https://gongkouxueyuan.top/1.png",
    "sourceName": "玉羞园",
    "sourceUrl": "http://yxy003.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 525,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "按照提示注册后>就可以下载软件了\n内有1000+小姐姐直播美腿+美脚的",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "奶茶妹妹(美腿美脚直播)",
    "sourceUrl": "http://share-jupln4e3.i.plasticlink.cn/promoter/zcs.php?pcid=1649729458819272857&app=ellite&r=728&ic=26513668",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 526,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.data.images",
    "ruleContent": "",
    "ruleDescription": "{{$.description}}<br>\n<img src=\"http://wpstatic.zuimeia.com/{{$.image_url}}\"</>",
    "ruleImage": "http://wpstatic.zuimeia.com/{{$.image_url}}",
    "ruleLink": "http://wpstatic.zuimeia.com/{{$.image_url}}",
    "rulePubDate": "$.pub_time",
    "ruleTitle": "$.description",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "每日一图",
    "sourceUrl": "http://lab.zuimeia.com/wallpaper/category/2",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 529,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n  \"User-Agent\": \"Mozilla/5.0 (Linux; Android 8.1.0; JKM-AL00b Build/HUAWEIJKM-AL00b; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044807 Mobile Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "ul.vod-list.col-3@li",
    "ruleContent": "ul.tab-num-list@all",
    "ruleImage": "img@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": ".t-rb@text",
    "ruleTitle": "a.1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "电视剧::https://m.bayiyy.tv/dianshiju/list_0_0_0_0_2_1.html\n电影::https://m.bayiyy.tv/dianshiju/list_0_0_0_0_1_1.html",
    "sourceComment": "//解析列表，自行按格式添加\njiexi=[\n{\n\t\"title\":\"blbo高清\",\n\t\"url\":\"https://jx.blbo.cc:4433/?url=\"},\n\t{\n\t\"title\":\"猪蹄影院1\",\n\t\"url\":\"https://api.iztyy.com/jiexi/?url=\"\n\t},\n\t{\n\t\t\"title\":\"ok解析\",\n\t\t\"url\":\"https://api.okjx.cc:3389/jx.php?url=\"\n\t\t}\n\t]",
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "八一影院(有请关耳小姐姐写内容规则👉用优ku那个)",
    "sourceUrl": "https://m.bayiyy.tv",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 530,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n  \"User-Agent\": \"Mozilla/5.0 (Linux; Android 8.1.0; JKM-AL00b Build/HUAWEIJKM-AL00b; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044807 Mobile Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "ul.stui-vodlist.clearfix@li",
    "ruleContent": ".myui-panel_hd@all%%.tab-content@all",
    "ruleImage": "a@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": ".pic-text@text",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "电视剧::https://www.haidao.la/lanmu/2.html\n电影::https://www.haidao.la/lanmu/1.html",
    "sourceComment": "//解析列表，自行按格式添加\njiexi=[\n{\n\t\"title\":\"blbo高清\",\n\t\"url\":\"https://jx.blbo.cc:4433/?url=\"},\n\t{\n\t\"title\":\"猪蹄影院1\",\n\t\"url\":\"https://api.iztyy.com/jiexi/?url=\"\n\t},\n\t{\n\t\t\"title\":\"ok解析\",\n\t\t\"url\":\"https://api.okjx.cc:3389/jx.php?url=\"\n\t\t}\n\t]",
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "海盗影院(有请关耳小姐姐写内容规则👉用优ku那个)",
    "sourceUrl": "https://www.haidao.la",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 531,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n  \"User-Agent\": \"Mozilla/5.0 (Linux; Android 8.1.0; JKM-AL00b Build/HUAWEIJKM-AL00b; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044807 Mobile Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".macplus-vodlist.clearfix@li",
    "ruleContent": ".playlist.macplus-pannel_hd@all",
    "ruleImage": "a@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": ".pic-text@text",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "电视剧::https://www.cechicc.com/vodtype/2.html\n电影::https://www.cechicc.com/vodtype/1.html",
    "sourceComment": "//解析列表，自行按格式添加\njiexi=[\n{\n\t\"title\":\"blbo高清\",\n\t\"url\":\"https://jx.blbo.cc:4433/?url=\"},\n\t{\n\t\"title\":\"猪蹄影院1\",\n\t\"url\":\"https://api.iztyy.com/jiexi/?url=\"\n\t},\n\t{\n\t\t\"title\":\"ok解析\",\n\t\t\"url\":\"https://api.okjx.cc:3389/jx.php?url=\"\n\t\t}\n\t]",
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "驰骋影院(有请关耳小姐姐写内容规则👉用优ku那个)",
    "sourceUrl": "https://www.cechicc.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 532,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n  \"User-Agent\": \"Mozilla/5.0 (Linux; Android 8.1.0; JKM-AL00b Build/HUAWEIJKM-AL00b; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044807 Mobile Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".box-video-list@li",
    "ruleContent": "ul.dropdown-menu.1@all%%.layout-box.clearfix.m-0@all",
    "ruleImage": "a@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "span.note@text",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "电视剧::http://www.5knk.com/guocanju/\n电影::http://www.5knk.com/dongzuopian/",
    "sourceComment": "//解析列表，自行按格式添加\njiexi=[\n{\n\t\"title\":\"blbo高清\",\n\t\"url\":\"https://jx.blbo.cc:4433/?url=\"},\n\t{\n\t\"title\":\"猪蹄影院1\",\n\t\"url\":\"https://api.iztyy.com/jiexi/?url=\"\n\t},\n\t{\n\t\t\"title\":\"ok解析\",\n\t\t\"url\":\"https://api.okjx.cc:3389/jx.php?url=\"\n\t\t}\n\t]",
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "5k影院(有请关耳小姐姐写内容规则👉用优ku那个)",
    "sourceUrl": "http://www.5knk.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 533,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "ul.myui-vodlist.clearfix@li",
    "ruleContent": "ul.nav.nav-tabs.active@all%%ul.myui-content__list@all",
    "ruleImage": "a@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@span.0@text}}{{@span.pic-text@text}}{{@p.text@text}}",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "电视剧::https://www.booom.net/show/guochanju-----------.html\n电影::https://www.booom.net/show/wuxiapian-----------.html",
    "sourceComment": "线路\n全能\nhttps://www.booom.net/jx/?url=",
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "全能影视(有请关耳小姐姐写内容规则，优ku那种)",
    "sourceUrl": "https://www.booom.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 534,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.gal_list||div.video_list:nth-of-type(n+3)",
    "ruleContent": "<js>\nurl=baseUrl.replace('https://www.kindgirls.com/','').replace(/\\..*/g,'')\njava.log(url)\n\tif( url=='video' ){\n\t\tv1=java.getString('source.0@src')\n  v2=java.getString('source.1@src')\n  var array =[v1,v2]\n  var n =   array[Math.round(Math.random()*array.length)]\nif(n=\"undefined\"){\n\tn=array[0]\n\t}\nresult = \"<video src=\\\"\" + n + \"\\\" width=\\\"100%\\\" height=\\\"680px\\\" controls=\\\"controls\\\" ></video>\"; \nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" +result + \"</body></html>\"\n\t}else{\tpage=parseInt(java.getString('class.gal_list.-1@text').replace('#',''))\nurl=java.getString('img.0@src');\nbase=url.replace('1.jpg','');\nhtml='1 '+java.getString('img.0@html')\nif(page>1){\nfor(i=2;i<=page;i++){\nhtml+=i+'<img src=\"'+base+i+'.jpg'+'\" />\\n'\n}\n}\n }\n</js>\n\n<!-- 图片和框架 -->\n<div id=\"TúPiàn\">\n{{result}}\n</div>\n\n\n<!-- 查看大图的插件和启动js -->\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.2/viewer.min.css\">\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.2/viewer.min.js\"></script>\n\n<script>\n  new Viewer(\n  \tdocument.getElementById(\"TúPiàn\"),{\n//设置图片地址来源\n    url: 'src',\n//是否显示图片标题(true/false)\n    title: false,\n//设置播放间隔(单位毫秒，1秒=1000毫秒)\n    interval: 3000\n    }\n  );\n</script>",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "text.Next@href||class.paginar@a.0@href",
    "rulePubDate": "img@alt##.*,",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "图片::https://www.kindgirls.com/photo-archive.php\n视频::https://www.kindgirls.com/video-archive.php",
    "sourceGroup": "h",
    "sourceIcon": "https://kindgirls.com/graf/favicon.png",
    "sourceName": "KindGirls(各个资源复制粘贴偷来的测试一下还能用)",
    "sourceUrl": "https://www.kindgirls.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 535,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.movie!0",
    "ruleContent": "<iframe id=\"video_frame\" src=\"{{@@id.video_frame@src}}\" allowfullscreen=\"true\" frameborder=\"0\" width=\"100%\" height=\"250\" allowtransparency=\"false\" scrolling=\"on\"> </iframe>\n<img src=\"{{@@class.m_preview_image.0@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.1@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.2@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.3@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.4@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.5@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.6@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.7@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.8@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.9@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.10@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.11@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.12@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.13@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.14@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.15@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.16@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.17@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.18@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.19@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.20@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.21@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.22@img@src}}\"></img>\n<img src=\"{{@@class.m_preview_image.23@img@src}}\"></img>",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "//把MEYD替换成你想要系列或番号\n//搜索人名要URL编码，百度自己拿日文转换\n搜索::http://goodav17.com/search/IPX/{{page}}/\n女优::http://goodav17.com/search/%E7%AD%B1%E7%94%B0/{{page}}/\n无码::http://goodav17.com/search/%E5%B7%A8%E4%B9%B3/{{page}}/\n人妻::http://goodav17.com/type/%E4%BA%BA%E5%A6%BB/{{page}}/\n乱伦::http://goodav17.com/type/%E8%BF%91%E8%A6%AA%E7%9B%B8%E5%A7%A6/{{page}}/\n巨乳::http://goodav17.com/search/%E5%B7%A8%E4%B9%B3/{{page}}/\n中出::http://goodav17.com/type/%E4%B8%AD%E5%87%BA/{{page}}/\n丝袜::http://goodav17.com/type/%E7%B5%B2%E8%A5%AA/{{page}}/\n兔女郎:http://goodav17.com/type/%E5%85%94%E5%A5%B3%E9%83%8E/{{page}}/\n户外::http://goodav17.com/type/%E6%88%B6%E5%A4%96/{{page}}/\n强迫::http://goodav17.com/type/%E5%BC%B7%E8%BF%AB/{{page}}/\n禁声::http://goodav17.com/type/%E4%B8%8D%E8%83%BD%E7%99%BC%E8%81%B2/{{page}}/\n搜查官::http://goodav17.com/type/%E6%90%9C%E6%9F%A5%E5%AE%98/{{page}}/\n教师::http://goodav17.com/type/%E6%95%99%E5%B8%AB%E6%88%96%E5%AE%B6%E6%95%99/{{page}}/\n学生::http://goodav17.com/type/%E5%AD%B8%E7%94%9F/{{page}}/\n护士::http://goodav17.com/type/%E8%AD%B7%E5%A3%AB/{{page}}/\n空姐::http://goodav17.com/type/%E7%A9%BA%E5%A7%90/{{page}}/\n自慰::http://goodav17.com/type/%E8%87%AA%E6%85%B0/{{page}}/\n医生::http://goodav17.com/type/%E5%A5%B3%E9%86%AB%E7%94%9F/{{page}}/\n突然::http://goodav17.com/type/%E7%AA%81%E7%84%B6%E6%8F%92%E5%85%A5/{{page}}/\n痴汉::http://goodav17.com/type/%E7%99%A1%E6%BC%A2/{{page}}/\n凌辱::http://goodav17.com/type/%E5%87%8C%E8%BE%B1/{{page}}/\n秘书::http://goodav17.com/type/%E7%A7%98%E6%9B%B8/{{page}}/\n女仆::http://goodav17.com/type/%E5%A5%B3%E5%83%95/{{page}}/\n家政::http://goodav17.com/type/%E5%AE%B6%E6%94%BF%E5%A9%A6/1/\n萝莉::http://goodav17.com/type/%E8%98%BF%E8%8E%89/{{page}}/\n其他::http://goodav17.com/type/%E5%85%B6%E4%BB%96%E5%88%B6%E6%9C%8D/{{page}}/\n多P::http://goodav17.com/type/%E5%A4%9A%E5%90%8D%E5%A5%B3%E5%84%AA/{{page}}/\n无毛:http://goodav17.com/type/%E7%84%A1%E6%AF%9B/{{page}}/",
    "sourceGroup": "h",
    "sourceIcon": "https://s1.ax1x.com/2022/04/27/Lqn0gK.jpg",
    "sourceName": "(SSR)正妹",
    "sourceUrl": "正妹",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 536,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.module-item",
    "ruleContent": "{{@@head@all}}\n<div class=\"play_video\">\n{{@@class.player-wrapper@all}}\n</div>\n",
    "ruleImage": "img@data-src",
    "ruleLink": "class.module-item-pic@a@href",
    "ruleNextPage": "page",
    "ruleTitle": "class.module-item-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "无码::https://www.bsmav.cc/index.php/vodtype/34-{{page}}.html\n人妻::https://www.bsmav.cc/index.php/vodtype/39-{{page}}.html\n巨乳::https://www.bsmav.cc/index.php/vodtype/36-{{page}}.html\n乱伦::https://www.bsmav.cc/index.php/vodtype/37-{{page}}.html\n制服::https://www.bsmav.cc/index.php/vodtype/38-{{page}}.html\n动漫::https://www.bsmav.cc/index.php/vodtype/49-{{page}}.html\n强奸::https://www.bsmav.cc/index.php/vodtype/35-{{page}}.html\n调教::https://www.bsmav.cc/index.php/vodtype/40-{{page}}.html\n出轨::https://www.bsmav.cc/index.php/vodtype/41-{{page}}.html\n中文::https://www.bsmav.cc/index.php/vodtype/59.html",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "鲍鲜膜",
    "sourceUrl": "https://www.bsmav.cc/",
    "style": ".play_video{\n\tposition:absolute;\n\ttop:0px;\n  height:250px;\n  padding: 0px;\n  width:100%;\n\t}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 538,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "td@.IndexLink",
    "ruleContent": ".NeiRong@all",
    "ruleLink": "a@href",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "😊::http://xjj.cn/N.asp?CID=1\n😊::http://xjj.cn/N.asp?CID=2\n😊::http://xjj.cn/N.asp?CID=3\n😊::http://xjj.cn/N.asp?CID=4\n😊::http://xjj.cn/N.asp?CID=5\n😊::http://xjj.cn/N.asp?CID=6\n😊::http://xjj.cn/N.asp?CID=7\n😊::http://xjj.cn/N.asp?CID=8\n😊::http://xjj.cn/N.asp?CID=9\n😊::http://xjj.cn/N.asp?CID=10\n😊::http://xjj.cn/N.asp?CID=11\n😊::http://xjj.cn/N.asp?CID=12\n😊::http://xjj.cn/N.asp?CID=13\n😊::http://xjj.cn/N.asp?CID=14\n😊::http://xjj.cn/N.asp?CID=15\n😊::http://xjj.cn/N.asp?CID=16\n😊::http://xjj.cn/N.asp?CID=17\n😊::http://xjj.cn/N.asp?CID=18\n😊::http://xjj.cn/N.asp?CID=19\n😊::http://xjj.cn/N.asp?CID=20\n😊::http://xjj.cn/N.asp?CID=21",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "小姐姐(希佳杰)官网",
    "sourceUrl": "http://xjj.cn/N.asp?CID=3",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 539,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "section@.clearfix",
    "ruleContent": ".hot-news@all&&h3@all&&.content@all",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": ".m_article_time@text",
    "ruleTitle": "{{@@.m_article_channel@text}}  {{@@.m_article_title@text}}",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "🍺新增网",
    "sourceUrl": "http://www.haicent.com/3g/class.asp?id=18&page={{page}}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 540,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "ul.list-unstyled@li",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "ruleTitle": "h3@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "全球🍺欣赏",
    "sourceUrl": "https://www.jiuhuar.com/craftbeer?rule=newest&filter=all&page={{page}}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 542,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.item",
    "ruleContent": "\n.entry-content@tag.img@data-original ##\\n##,\n<js>result</js>\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\r\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\r\n<script src=\"http://libs.baidu.com/jquery/2.0.0/jquery.min.js\"></script>\r\n<h3>{{@@.entry-title@text}}</h3>\r\n<h6>{{@@.entry-date@text}}</h6>\n<div id=\"box\"></div>\r\n<h6 id=\"loads\"><i>加载中...</i></h6>\r\n\r\n<script>\r\n    srclist = \"{{result}}\".split(\",\")\r\n    page = srclist.length\r\n\r\n    box = document.getElementById(\"box\")\r\n    loads = document.getElementById(\"loads\")\r\n\r\n    h5 = '<h5 style=\"border-left:2px solid#000;margin-bottom:0;padding-left:5;\">'\r\n    h55 = '/' + page + '</h5>'\r\n\r\n    img = '<img onload=\"box.viewer.update()\" src=\"'\r\n\r\n    $(document).ready(function () {\r\n        //初始加载四张图\r\n        for (i = 0; i < 4; i++) {\r\n            box.innerHTML += h5 + (i + 1) + h55\r\n            box.innerHTML += img + srclist[i] + '\">'\r\n        }\r\n        new Viewer(box, { title: false, interval: 3000 })\r\n        i = 4\r\n        io = new IntersectionObserver(x => {\r\n            if (x[0].intersectionRatio <= 0) return\r\n            for (I = 0; I < 4; I++) {\r\n                getImg(i, page, srclist)\r\n                i += 1\r\n            }\r\n        }).observe(loads)\r\n\r\n    })\r\n\r\n    function getImg(i, page, srclist) {\r\n\r\n        if (i <= page && srclist[i] != undefined) {\r\n            box.innerHTML += h5 + (i + 1) + h55\r\n            box.innerHTML += img + srclist[i] + '\">'\r\n        } else {\r\n            $('#loads').html(\"\");\r\n            if (i == page) {\r\n                pl = \"{{@@class.relist@tag.li@class.sum@textNodes##\\n##\\$}}\".split(\"$\");\r\n                times = \"{{@@class.relist@tag.li@class.author@class.date@textNodes##\\n##\\$}}\".split(\"$\");\r\n                layers = \"{{@@class.relist@tag.li@class.reLayer@text##\\n##\\$}}\".split(\"$\");\r\n\r\n                for (x = layers.length - 1; x >= 0; x--) {\r\n                    box.innerHTML += \"<h4>\" + layers[x] + \"<span style='color: #999; font-size: 12px;'>\" + times[x] + \"</span><br>\" + pl[x] + \"</h4>\"\r\n                }\r\n            }\r\n        }\r\n    }\r\n</script>",
    "ruleImage": "tag.img@data-original",
    "ruleLink": ".item-thumb@href",
    "ruleNextPage": ".next@tag.a@href",
    "rulePubDate": ".item-meta-left@text",
    "ruleTitle": ".item-title@tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "cos::https://dongtidemi.com/category/tu/cos\n福利姬::https://dongtidemi.com/category/tu/%e7%a6%8f%e5%88%a9%e5%a7%ac\n写真::https://dongtidemi.com/category/tu/xiezhen",
    "sourceGroup": "h",
    "sourceIcon": "http://tva1.sinaimg.cn/large/008p4gOdly1h3wazur347j303c03cdg2.jpg",
    "sourceName": "胴体的秘密",
    "sourceUrl": "https://dongtidemi.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 545,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".listTxt@li",
    "ruleContent": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n<title>{{@@title@text}}</title>\n{{@@.wrap@html}}\n{{@@.article@html}}",
    "ruleLink": "a@href",
    "ruleNextPage": ".next@href",
    "rulePubDate": ".date@text",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "政策::http://sousuo.gov.cn/column/30469/0.htm\n要闻::http://sousuo.gov.cn/column/31421/0.htm\n头条::http://sousuo.gov.cn/column/44477/0.htm",
    "sourceGroup": "noh",
    "sourceIcon": "http://www.gov.cn/govweb/xhtml/2016gov/images/public/logo.jpg",
    "sourceName": "国务院",
    "sourceUrl": "http://sousuo.gov.cn/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 546,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "//li",
    "ruleContent": "{{//div.xxi/text()}}{{@id.zzzxcwqsdas@text}}",
    "ruleImage": "",
    "ruleLink": "a.1@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{//div.news_list_content/p/a/text()}}😊{{//span.span_num/text()}}",
    "ruleTitle": "//div.news_list_title/text()",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "故事会",
    "sourceUrl": "http://m.bestgushi.com/o/kongbu/index<,_{{page}}>.html",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 548,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.well well-sm videos-text-align",
    "ruleContent": "<html>\n<body>\n<video src=\"{{baseUrl}}\" controls  width=390px height=320px></video>\n<br></br>\n<hr></hr>\n<video src=\"{{baseUrl.match(/.*m3u8\\/\\d*\\/(\\d*).m3u8/)[1].replace(/^/,\"https://vthumb.killcovid2021.com/thumb/\").replace(/$/,\".mp4\")}}\" controls autoplay muted loop width=390px height=320px></video>",
    "ruleImage": "img@src",
    "ruleLink": "img.0@src##.*thumb/(\\d*).jpg##https://la2.killcovid2021.com/m3u8/$1/$1.m3u8",
    "ruleNextPage": "page",
    "rulePubDate": "@text##.*?(\\d{2}:\\d{2}).*时间:(.*?前).*##时长:$1  上传于:$2",
    "ruleTitle": "a@span.1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "91原创::https://f0727.wonderfulday29.live/v.php?category=ori&viewtype=basic&page={{page}},{'webView': true}\n当前最热::https://f0727.wonderfulday29.live/v.php?category=hot&viewtype=basic&page={{page}},{'webView': true}\n本月最热::https://f0727.wonderfulday29.live/v.php?category=top&viewtype=basic&page={{page}},{'webView': true}\n10分钟以上 ::https://f0727.wonderfulday29.live/v.php?category=long&viewtype=basic&page={{page}},{'webView': true}\n20分钟以上 ::https://f0727.wonderfulday29.live/v.php?category=longer&viewtype=basic&page={{page}},{'webView': true}\n本月收藏::https://f0727.wonderfulday29.live/v.php?category=tf&viewtype=basic&page={{page}},{'webView': true}\n 收藏最多::https://f0727.wonderfulday29.live/v.php?category=mf&viewtype=basic&page={{page}},{'webView': true}\n最近加精::https://f0727.wonderfulday27.live/v.php?category=rf&viewtype=basic&page={{page}},{'webView': true}\n高清::https://f0727.wonderfulday29.live/v.php?category=hd&viewtype=basic&page={{page}},{'webView': true}\n上月最热::https://f0727.wonderfulday29.live/v.php?category=top&m=-1&viewtype=basic&page={{page}},{'webView': true}\n本月讨论::https://f0727.wonderfulday29.live/v.php?category=md&viewtype=basic&page={{page}},{'webView': true}\n",
    "sourceComment": "发布页::http://91freedz.com/",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "91自拍视频",
    "sourceUrl": "https://f0727.wonderfulday29.live/v.php?category=ori&viewtype=basic&page={{page}},{'webView': true}",
    "style": "body{text-align: center}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 550,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.thumbnail group",
    "ruleContent": "script[6:9]@all&&html",
    "ruleImage": "img@data-src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "时长：{{@@span.-1@text}}",
    "ruleTitle": ".text-secondary@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://missav888.com/cn/search/{{source.getVariable()?source.getVariable():\"学生\"}}?page={{page}}\n\n中字::https://missav888.com/cn/chinese-subtitle?page={{page}},{'webView': true}&&最新::https://missav888.com/cn/new?page={{page}},{'webView': true}&&新作::https://missav888.com/cn/release?page={{page}},{'webView': true}&&无码流出::https://missav888.com/cn/uncensored-leak?page={{page}},{'webView': true}&&素人::https://missav888.com/cn/siro?page={{page}},{'webView': true}&&素人-SIRO::https://missav888.com/cn/siro?page={{page}},{'webView': true}&&素人-LUXU::https://missav888.com/cn/luxu?page={{page}},{'webView': true}&&素人::GANAhttps://missav888.com/cn/gana?page={{page}},{'webView': true}&&麻豆::https://missav888.com/cn/madou?page={{page}},{'webView': true}&&台湾::https://missav888.com/cn/twav?page={{page}},{'webView': true}&&FC2::https://missav888.com/cn/fc2?page={{page}},{'webView': true}&&HEYZO::https://missav888.com/cn/heyzo?page={{page}},{'webView': true}&&东京热::https://missav888.com/cn/tokyohot?page={{page}},{'webView': true}&&一本道::https://missav888.com/cn/1pondo?page={{page}},{'webView': true}&&caribbeancom::https://missav888.com/cn/caribbeancom?page={{page}},{'webView': true}&&xxxav::https://missav888.com/cn/xxxav?page={{page}},{'webView': true}&&人妻斩::https://missav888.com/cn/marriedslash?page={{page}},{'webView': true}",
    "sourceComment": "https://missav.live/",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "missav",
    "sourceUrl": "https://missav888.com/cn/new?page={{page}}",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 551,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.list",
    "ruleContent": "html",
    "ruleDescription": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n    <meta charset=\"UTF-8\">\n\n    <title>{{$.videoName}}</title>\n\n</head>\n\n<body>\n<h3>{{$.videoName}}</h3>\n    <p style=\"text-align: center;\">\n\n        <img src=\"{{$.videoGif}}\" alt=\"\">\n\n    </p>\n\n</body>\n\n</html>",
    "ruleImage": "$.videoImage",
    "ruleLink": "$.id##^##https://qztv01.co/#/apps/player/index?videoId=",
    "ruleNextPage": "page",
    "rulePubDate": "$.createDate",
    "ruleTitle": "$.videoName",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=47c31358f7599629&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo={{page+1}}&pageSize=16&platform=5&sortField=4&sysVersion=1&userId=2259831033538815&version=100000\n国产视频::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=461ef4539308ef07&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo={{page}}&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=949\n亚洲激情::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=62aecae1a36456ff&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo={{page}}&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=950\n中文字幕::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=da5b4a57c4733796&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo={{page}}&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=951\n欧美视频::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=ca2c8c85e4bc44d2&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo={{page}}&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=952\n动漫::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=26c5cdf6b03d88dd&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo={{page}}&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=953\n三级片::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=26c5cdf6b03d88dd&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo={{page}}&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=954\n口交::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=b97464762615dd89&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo={{page}}&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=1005\n最热::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=28d072f149f87f48&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo={{page}}&pageSize=16&platform=5&sortField=1&sysVersion=1&userId=2259831033538815&version=100000\n",
    "sourceComment": "源视频有密钥，想看原视频，正文页浏览器打开，用m浏览器观看。连接超时，02改03递增",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "🍆视频-欢迎改善",
    "sourceUrl": "https://qztv02.co/top/",
    "style": "img{\n    max-width: 100%;\n}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 552,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.list",
    "ruleContent": "<js>\nresult=JSON.parse(result).data.map(url=>url.videoUrl)[0];\n`<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" />\n</head>\n<body>\n<video src=\"${result}\" width=\"100%\" height=\"280px\" controls=\"controls\" ></video>\n</body>\n</html>`\n</js>",
    "ruleDescription": "",
    "ruleImage": "$.videoImage",
    "ruleLink": "https://qztv02.co/top/video/getVideoPlayUrl?videoId={{$.id}}",
    "ruleNextPage": "@js:try{\n  var page=baseUrl.match(/pageNo=(\\d+)/)[1];\n  var page=Number(page)+1;\nbaseUrl.replace(/pageNo=\\d+/,'pageNo='+page)}\ncatch{null}",
    "rulePubDate": "$.createDate",
    "ruleTitle": "$.videoName",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=47c31358f7599629&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo=1&pageSize=16&platform=5&sortField=4&sysVersion=1&userId=2259831033538815&version=100000\n国产视频::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=461ef4539308ef07&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo=1&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=949\n亚洲激情::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=62aecae1a36456ff&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo=1&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=950\n中文字幕::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=da5b4a57c4733796&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo=1&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=951\n欧美视频::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=ca2c8c85e4bc44d2&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo=1&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=952\n动漫::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=26c5cdf6b03d88dd&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo=1&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=953\n三级片::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=26c5cdf6b03d88dd&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo=1&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=954\n口交::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=b97464762615dd89&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo=1&pageSize=16&platform=5&sysVersion=1&userId=2259831033538815&version=100000&videoLabelId=1005\n最热::https://qztv02.co/top/video/getVideoScreenByPCH5Page?accessToken=160c3b7808678628bd73bb859864775b&appId=1000&channel=1005&cliSign=28d072f149f87f48&device=15f18a74-d8f1-03ce-48c0-c86f6fecd48c&domain=https:%2F%2Fqztv01.co&pageNo=1&pageSize=16&platform=5&sortField=1&sysVersion=1&userId=2259831033538815&version=100000\n",
    "sourceComment": "连接超时，02改03递增",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "🍆视频(添加视频)",
    "sourceUrl": "https://qztv01.co/top/",
    "style": "body{background-color:black;margin:0;padding:0;width:100%;}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 553,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "article",
    "ruleContent": "article@html&&tag.script@all",
    "ruleDescription": "",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一頁@href",
    "rulePubDate": "",
    "ruleTitle": "h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "國產情色::http://www.258porn.com/list/%E5%9C%8B%E7%94%A2%E6%83%85%E8%89%B2/0.html\n國產精品::http://www.258porn.com/list/%E5%9C%8B%E7%94%A2%E7%B2%BE%E5%93%81/0.html\n國產自拍::http://www.258porn.com/list/%E5%9C%8B%E7%94%A2%E8%87%AA%E6%8B%8D/0.html\n中文字幕::http://www.258porn.com/list/%E4%B8%AD%E6%96%87%E5%AD%97%E5%B9%95/0.html\n日本無碼::http://www.258porn.com/list/%E6%97%A5%E6%9C%AC%E7%84%A1%E7%A2%BC/0.html\n亞洲情色::http://www.258porn.com/list/%E6%97%A5%E6%9C%AC%E7%84%A1%E7%A2%BC/0.html\n強奸亂倫::http://www.258porn.com/list/%E5%BC%B7%E5%A5%B8%E4%BA%82%E5%80%AB/0.html",
    "sourceComment": "V*P*N\n源分类太多 可自行添加",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/bJm0xX7y/1660523726918.png",
    "sourceName": "©258porn",
    "sourceUrl": "http://www.258porn.com/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 554,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "#post_container@li!0:1:2:3",
    "ruleContent": "#post_content@all##width=\"auto\" height=\"400\"##width=\"auto\" height=\"600\"",
    "ruleDescription": "",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": ".info_date@text",
    "ruleTitle": "h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://www.ta770.com/wp-content/themes/Loostrive/images/logo.png",
    "sourceName": "媛来是你",
    "sourceUrl": "https://www.ta770.com/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 556,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".bloglist@ul@tr",
    "ruleContent": ".contentbox@all##上一篇(.|\\n)*",
    "ruleImage": "@js:\"https://inisqw.gitee.io/rss/66.jpg\"",
    "ruleLink": "li.0@a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "li.0@span@text",
    "ruleTitle": "li.0@a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceComment": "双数据\n自行将 标题  时间  链接\n0  改为  1\n就是另一个数据啦",
    "sourceGroup": "h",
    "sourceIcon": "https://inisqw.gitee.io/rss/66.jpg",
    "sourceName": "ii文学(必看源注释)",
    "sourceUrl": "https://233335.xyz/e/action/ListInfo/?classid=1",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 558,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": ".post-loop@li.item",
    "ruleContent": ".entry-content@tag.img@data-original##\\n##\\$\n<js>\nli='\\n'\nlist=result.split('$')\nfor(i in list){\n\t\tli += '<li><img src=\"https://s2.1231216.xyz/uploads/2022/01/1643635257-dongtilogo.png\" data-src=\"'+list[i]+'\"></li>\\n'\n\t}\nli\n</js>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n\n<h3>{{@@.entry-title@text}}</h3>\r\n<h6>{{@@.entry-date.0@text}}</h6>\n<ul id=\"box\">\n{{result}}\n</ul>\n\n\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\n<script>\n\troot = document.getElementById('box')\n\tlazy = new IntersectionObserver(entires => {\n\t\tentires.forEach(item => {\n\t\t\tif(item.isIntersecting){\n\t\t\t\titem=item.target\n\t\t\t\titem.src=item.getAttribute('data-src')\n\t\t\t\tlazy.unobserve(item)\n\t\t\t}\n\t\t})\n\t}, {\n\t\troot: root,\n\t\tthreshold: [0],\n\t\trootMargin:\"0px 0px 500px 0px\"\n\t})\n\nimgs = document.getElementsByTagName('img')\nArray.from(imgs).forEach(item => {\n\t\tlazy.observe(item)\n\t})\n\n//查看大图插件\nnew Viewer(root,{title:false,interval:3000,url:'data-src'})\n</script>",
    "ruleDescription": "",
    "ruleImage": "tag.img@data-original||i.0@data-original",
    "ruleLink": ".item-thumb@href||.item-title@a@href",
    "ruleNextPage": ".next@tag.a@href",
    "rulePubDate": ".item-meta-left@text||.date@text",
    "ruleTitle": ".item-title@tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "cos::https://dongtidemimi.org/category/tu/cos\n福利姬::https://dongtidemimi.org/category/tu/%e7%a6%8f%e5%88%a9%e5%a7%ac\n搜索::https://dongtidemimi.org/?s={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('白莉'):\"\"}}{{source.getVariable()}}\n写真::https://dongtidemimi.org/category/tu/xiezhen\n随机cos::https://dongtidemimi.org/category/tu/cos/page/{{ Math.ceil(Math.random()*94) }}\n随机福利::https://dongtidemimi.org/category/tu/%e7%a6%8f%e5%88%a9%e5%a7%ac/page/{{ Math.ceil(Math.random()*259) }}",
    "sourceComment": "有时封面图会是一个加载中的样式,这是网站的问题.他没有设置封面图",
    "sourceGroup": "h",
    "sourceIcon": "http://tva1.sinaimg.cn/large/008p4gOdly1h3wazur347j303c03cdg2.jpg",
    "sourceName": "胴体的秘密",
    "sourceUrl": "https://dongtidemimi.org/",
    "style": "* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 563,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "a",
    "ruleContent": "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.2/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.2/viewer.min.js\"></script>\r\n</head>\r\n<body>\n{{@@#metadata_qrcode@tag.span!-1@all}}\n<div id=\"box\">\n{{@@.spotlight-group@all}}\n</div>\n<script>\n    new Viewer(document.getElementById(\"box\"), { title: false, interval: 3000 });\n</script>\r\n</body>\n</html>",
    "ruleImage": ".background_miniatura@img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.contar_imagens@text}} photos",
    "ruleTitle": ".background_miniatura@img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页:: https://www.fljloli.ml/ajax/buscar_posts.php?post=&cat=&tag=&search=&page=&index={{page-1}}&ver=\n搜索::https://www.fljloli.ml/ajax/buscar_posts.php?post=&cat=&tag=&search={{source.getVariable()}}&page=&index={{page-1}}&ver=",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "福利姬图库",
    "sourceUrl": "https://www.fljloli.ml/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 567,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "所有内容均取自网络 仅用于网络环境测试 请于二十四小时之内删除\n侵删\n免费书源交流群：178801993",
    "sourceGroup": "h",
    "sourceIcon": "https://www.xgmn01.xyz/uploadfile/202306/2/A4161748326.jpg",
    "sourceName": "XNXX（免翻版）",
    "sourceUrl": "https://xnuu.cc/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 568,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "ul@li",
    "ruleContent": "<js>\r\nhtml = result\r\n//总页数-1(最后一页没有图\r\npage = parseInt(java.getString('class.numpages.-1@tag.a@text'))\r\njava.log(\"共\"+page+\"页\")\r\nif(page>1){\r\nnurl=[];\nbase=baseUrl;\r\nfor(i=2;i<=page;i++){\r\n\tnurl.push(base+\"/\"+i+\",{'retry':16}\");\r\n}\r\n\r\nres=java.ajaxAll(nurl)\r\nfor(i in res){\r\n\thtml += org.jsoup.Jsoup.parse(res[i].body())\r\n}\r\n}\r\n</js>\r\n\r\ntag.figure@tag.img@src##\\n##,\r\n\r\n<js>\r\nli='\\n'\r\nlist=result.split(',')\r\nfor(i in list){\r\n\t\tli += '<li><img src=\"https://i0.wp.com/www.4khd.com/wp-content/uploads/2023/02/4khd-1.png?fit=32%2C32&ssl=1\" data-src=\"'+list[i]+'\"></li>\\n'\r\n\t}\r\n\r\n</js>\r\n\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\r\n\r\n\r\n<ul id=\"box\">\r\n{{result}}\r\n</ul>\r\n<h3>{{@@tag.h3.0@text}}</h3>\r\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\r\n<script>\n\r\n\troot = document.getElementById('box')\r\n\tlazy = new IntersectionObserver(entires => {\r\n\t\tentires.forEach(item => {\r\n\t\t\tif(item.isIntersecting){\r\n\t\t\t\titem=item.target\r\n\t\t\t\titem.src=item.getAttribute('data-src')\r\n\t\t\t\tlazy.unobserve(item)\r\n\t\t\t}\r\n\t\t})\r\n\t}, {\r\n\t\troot: root,\r\n\t\tthreshold: [0],\r\n\t\trootMargin:\"0px 0px 500px 0px\"\r\n\t})\r\n\r\nimgs = document.getElementsByTagName('img')\r\nArray.from(imgs).forEach(item => {\r\n\t\tlazy.observe(item)\r\n\t})\r\n\r\n//查看大图插件\r\nnew Viewer(root,{title:false,interval:3000})\r\n</script>\r\n",
    "ruleImage": "img@src",
    "ruleLink": "figure@a@href",
    "ruleNextPage": "page",
    "rulePubDate": "time@text",
    "ruleTitle": "h2.0@a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::/{{page - 1 == 0 ? \"\": \"?query-3-page=\"+page}}\n韩国::/pages/album{{page - 1 == 0 ? \"\": \"?query-3-page=\"+page}}\ncospaly::/pages/cosplay{{page - 1 == 0 ? \"\": \"?query-3-page=\"+page}}\ndjawa::/search/djawa/page/{{page}}\n搜索::/search/{{source.getVariable().length()<1?source.setVariable('손예은'):source.getVariable()}}/page/{{page}}",
    "sourceGroup": "h",
    "sourceIcon": "https://i0.wp.com/www.4khd.com/wp-content/uploads/2023/02/4khd-1.png?fit=32%2C32&ssl=1",
    "sourceName": "4kep",
    "sourceUrl": "https://www.4kep.com",
    "style": "/*标题相关*/\nh3{text-align:center}\nh6{margin-bottom:0}\n* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 569,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "//$(\"div.layui-panel\").eq(0).remove();\nsetInterval(function () {\n    $(\"div.layui-hide-md\").css(\"display\",\"none\");\n},100)",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUrl": "https://xchina.co/login.php",
    "preload": false,
    "ruleArticles": "class.item",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleImage": "tag.video@poster",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.duration@text",
    "ruleTitle": "class.text@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://xchina.co/search/mode-video/keyword-{{v=source.getVariable();(v!='',v!=null)?v:(source.setVariable('女友'),source.getVariable())}}.html\n日本av::https://xchina.co/videos/series-6206216719462.html\n中文av::/videos/series-63824a975d8ae/2.html\n麻豆::https://xchina.co/videos/series-5f904550b8fcc/2.html\n有码::https://xchina.co/videos/series-6395aba3deb74.html\n模特私拍::https://xchina.co/videos/series-6030196781d85.html\n蜜桃::https://xchina.co/videos/series-5fe8403919165.html\n天美::https://xchina.co/videos/series-60153c49058ce.html\n业余拍摄::https://xchina.co/videos/series-617d3e7acdcc8.html\n无码av::https://xchina.co/videos/series-6395ab7fee104.html\n果冻::https://xchina.co/videos/series-5fe840718d665.html\n探花::https://xchina.co/videos/series-63965bf7b7f51.html\n糖心::https://xchina.co/videos/series-61014080dbfde.html\npans::https://xchina.co/videos/series-63963186ae145.html\n精东::https://xchina.co/videos/series-60126bcfb97fa.html\n星空::https://xchina.co/videos/series-6054e93356ded.html\n其他模特::https://xchina.co/videos/series-63963534a9e49.html\n性视界::https://xchina.co/videos/series-63490362dac45.html\n杏吧::https://xchina.co/videos/series-6072997559b46.html\n其他影视::https://xchina.co/videos/series-6072997559b46.html",
    "sourceGroup": "h",
    "sourceIcon": "https://img0.baidu.com/it/u=3490247645,2945703119&fm=253&app=120&size=b931,262&q=75&n=0&f=JPEG&fmt=auto&maxorilen2heic=2000000",
    "sourceName": "🔞小黄片（视频）🚀",
    "sourceUrl": "https://xchina.co/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 570,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\"=\"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36\"}",
    "injectJs": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUrl": "",
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://asset.brandfetch.io/idIlKj_n7C/idSsbP7h1m.png",
    "sourceName": "Pixiv",
    "sourceUrl": "https://www.pixiv.net/novel",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 571,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 10; TEL-AN00 Build/HONORTEL-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.105 Mobile Safari/537.36\"}",
    "injectJs": "const video = document.getElementById('video');\n        let isDragging = false;\n        let startX = 0;\n        let startTime = 0;\n\n        video.addEventListener('touchstart', (e) => {\n            isDragging = true;\n            startX = e.touches[0].clientX;\n            startTime = video.currentTime;\n            video.pause();  // 暂停视频\n        });\n\n        video.addEventListener('touchmove', (e) => {\n            if (!isDragging) return;\n            const dx = e.touches[0].clientX - startX;\n            const duration = video.duration;\n            const change = (dx / video.clientWidth) * duration;\n            video.currentTime = Math.min(Math.max(startTime + change, 0), duration);\n        });\n\n        video.addEventListener('touchend', () => {\n            if (isDragging) {\n                video.play();  // 继续播放视频\n                isDragging = false;\n            }\n        });",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.model.data",
    "ruleContent": "<div class=\"container\">\n        <h3>{{$.model.title}}</h3>\n        <div class=\"video-container\">\n            <video id=\"video\" src=\"{{$.model.url}}\" poster=\"{{$.model.coverUrl}}\" controls></video>\n        </div>\n        <hr />\n        <div class=\"info-container\">\n            <p>⌚️ 时长：<span>{{$.model.durationFormat}}</span></p>\n            <p>📆 日期：<span>{{$.model.onlineTime##T|.000.*## }}</span></p>\n            <p>🎥 播放：<span>{{$.model.viewCount}}次</span></p>\n            <p>📩 收藏：<span>{{$.model.collectCount}}</span></p>\n            <p>🕵 片商：<span>{{$.model.authors}}</span></p>\n            <p>👤 上传：<span>{{$.model.uploader}}</span></p>\n            <p>🔖 标签：<span>{{$.model.categories}},{{$.model.tags}}</span></p>\n            <p>🏷 简介：<span>{{$.model.brief}}</span></p>\n        </div>\n    </div>",
    "ruleDescription": "",
    "ruleImage": "$.coverUrl",
    "ruleLink": "https://www.uaa.com/api/video/app/video/intro?force=false&id={{$.id}}&viewId=17225706561773551",
    "ruleNextPage": "page",
    "rulePubDate": "{{$.onlineTime##T.*}} {{$.tags}}",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::/api/video/app/video/search?keyword={{source.getVariable()}}&orderType=0&page={{page}}&size=33\n国产视频::/api/video/app/video/search?orderType=1&origin=1&page={{page}}&size=33\n日本AV::/api/video/app/video/search?orderType=1&origin=2&page={{page}}&size=33\nH动漫::/api/video/app/video/search?orderType=1&origin=3&page={{page}}&size=33\n\n观看排行::/api/video/app/video/search?category=&orderType=3&page={{page}}&searchType=1&size=32\n收藏排行::/api/video/app/video/search?category=&orderType=4&page={{page}}&searchType=1&size=32\n\n自拍偷拍::/api/video/app/video/search?category=&keyword=自拍偷拍&orderType=0&page={{page}}&searchType=1&size=32\n探花精选::/api/video/app/video/search?category=&keyword=探花精选&orderType=0&page={{page}}&searchType=1&size=32\n主播福利::/api/video/app/video/search?category=主播福利&orderType=1&page={{page}}&size=33\n",
    "sourceComment": "//改uaa",
    "sourceGroup": "h",
    "sourceIcon": "https://www.uaa.com/assets/uaalogo.7acb1f90.svg",
    "sourceName": "UAA-视频",
    "sourceUrl": "https://www.uaa.com",
    "style": "body {\n            margin: 0;\n            font-family: Arial, sans-serif;\n            background: linear-gradient(135deg, #ece9e6, #ffffff);\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: flex-start;\n            padding: 20px;\n        }\n        .container {\n            width: 100%;\n            max-width: 800px;\n            background: #fff;\n            border-radius: 10px;\n            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n            overflow: hidden;\n            margin-bottom: 20px;\n        }\n        h3 {\n            margin: 0;\n            padding: 10px 20px;\n            font-size: 0.9em;\n            background: #333;\n            color: #fff;\n            border-radius: 10px 10px 0 0;\n        }\n        .video-container {\n            width: 100%;\n            background: #000;\n            position: relative;\n        }\n        video {\n            width: 100%;\n            height: auto;\n            display: block;\n        }\n        .info-container {\n            padding: 20px;\n        }\n        .info-container p {\n            margin: 10px 0;\n            color: #555;\n        }\n        .info-container p span {\n            font-weight: bold;\n            color: #000;\n        }",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 572,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.xb3 xl6 xm4 xs6 ul",
    "ruleContent": "",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@@class.extra@text}}{{@@class.data@text}}",
    "ruleTitle": "class.title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "国产视频::https://blsn3.buzz/list/181\n国产情色::https://blsn3.buzz/list/275\n国产自拍::https://blsn3.buzz/list/193\n国产情色::https://blsn3.buzz/list/204\n精品推荐::https://blsn3.buzz/list/82\n短视频::https://blsn3.buzz/list/175\n国产自拍::https://blsn3.buzz/list/66\n国产精品::https://blsn3.buzz/list/132",
    "sourceComment": "分类众多 需要自己添加\n内容不会写↓\n望大佬能发个教程",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/DfY4ffsk/yaFwy4.png",
    "sourceName": "不良少女(非成品)",
    "sourceUrl": "https://blsn3.buzz/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 573,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://avatars.githubusercontent.com/u/49548316",
    "sourceName": "舒淇视频",
    "sourceUrl": "https://www.jieav.com/index.php?module=search&keyword=%E8%88%92%E6%B7%87",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 574,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": ".status-publish",
    "ruleContent": "#main@tag.article@html",
    "ruleDescription": "",
    "ruleImage": ".entry-content@tag.p.0@img@src",
    "ruleLink": ".entry-title@tag.a@href",
    "ruleNextPage": "page",
    "rulePubDate": ".entry-date@text",
    "ruleTitle": ".entry-title@tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页[搜索]::https://blog.reimu.net/search/{{source.getVariable()}}/page/{{page}}&&\n动画::/archives/category/anime/page/{{page}}&&漫画::/archives/category/comic/page/{{page}}&&3D::/archives/category/3d/page/{{page}}&&合集::/archives/category/collection/page/{{page}}&&图包::/archives/category/picture/page/{{page}}&&壁纸::/archives/category/wallpaper/page/{{page}}&&游戏::/archives/category/game/page/{{page}}&&独立::/archives/category/indie/page/{{page}}&&音声::/archives/category/music/page/{{page}}&&安卓::/archives/category/android/page/{{page}}&&三次::/archives/category/reality/page/{{page}}&&表番推荐::/archives/category/recommend/page/{{page}}&&御所限定::/archives/category/reimuproject/page/{{page}}",
    "sourceComment": "//魔法上网\n//设置变量源搜索，搜索标题越全越好",
    "sourceGroup": "h",
    "sourceIcon": "https://imgsa.baidu.com/forum/pic/item/d0c8a786c9177f3e8ebb0cca7ecf3bc79e3d566e.jpg",
    "sourceName": "灵梦御所",
    "sourceUrl": "https://blog.reimu.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 575,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n    'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 3 XL Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.4988.0 Mobile Safari/537.36 SearchCraft/3.9.2 (Baidu; P1 11) '\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".col-sm-4",
    "ruleContent": ".art-content@img@all##src=\"/static/pub/img/loading2.jpg\" data-original##src",
    "ruleDescription": "",
    "ruleImage": "img@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": ".btn-green@text",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "https://inisqw.gitee.io/rss/66.jpg",
    "sourceName": "玉足美图",
    "sourceUrl": "https://www.ludianpic.xyz/ludianpicxyz-tag-玉足-{{page}}.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 576,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n    'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 3 XL Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.4988.0 Mobile Safari/537.36 SearchCraft/3.9.2 (Baidu; P1 11) '\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".list li",
    "ruleContent": ".image-list@img@all##src=\"/static/pub/img/load.jpg\" data-original##src",
    "ruleDescription": "",
    "ruleImage": "img@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "黑料美图",
    "sourceUrl": "https://www.heiliaopic.xyz/heiliaopicxyz-class-ydq-{{page}}.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 577,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n    'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 3 XL Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.4988.0 Mobile Safari/537.36 SearchCraft/3.9.2 (Baidu; P1 11) '\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".gallery-one a",
    "ruleDescription": "<img src=\"{{@img@src}}\">",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "ruleTitle": ".img-fluid@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "uu美图",
    "sourceUrl": "http://dgh.kyuioy.info/?page={{page}}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 578,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".row.col5.clearfix dl",
    "ruleContent": "source@src<js>\nresult = `<video src=\"${result}\" width=\"100%\" height=\"280px\" controls=\"controls\" ></video>`;\nresult = `<html><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" /><style>html,body{background-color:black;margin:0;padding:0;width:100%;}</style></head><body>${result}</body></html>`\n</js>",
    "ruleImage": "img@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "i@text",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "国产::https://lsj154.com:22888/home/vodlist/99/1623-{{page}}.html",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "老司机视频",
    "sourceUrl": "https://lsj154.com:22888",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 580,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n    'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 3 XL Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.4988.0 Mobile Safari/537.36 SearchCraft/3.9.2 (Baidu; P1 11) '\n}",
    "injectJs": "//选择需要删除的标签，以,分隔\nitems = document.querySelectorAll(`\n\t.notice-top,\n\t.dropdown-menu,\n\t.footer,\n\t.post-info,\n\t.post-info-box,\n\t.navbar-header\n`)\n\n//把选择的html值改成空\nArray.from(items,(item)=>{\n\titem.innerHTML = ``\n\titem.style.display = `none`\n})",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleImage": "img@data-src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".meta-date@text",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "https://inisqw.gitee.io/rss/66.jpg",
    "sourceName": "呦糖社",
    "sourceUrl": "https://www.nicesss.com/siz/rosiyxm/page/{{page}}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 581,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n    'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 3 XL Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.4988.0 Mobile Safari/537.36 SearchCraft/3.9.2 (Baidu; P1 11) '\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".post-inner-item",
    "ruleContent": ".swiper-slide@all##data-src##src\n<js>##注册(.|\\n)*</js>",
    "ruleImage": "img@data-src",
    "ruleLink": "a.1@href##$##,{'webView': true}",
    "ruleNextPage": "page",
    "rulePubDate": "h3@text",
    "ruleTitle": "text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "https://inisqw.gitee.io/rss/66.jpg",
    "sourceName": "抖你妹美图",
    "sourceUrl": "https://www.dounimei.co/page/{{page}}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 582,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 8.1.0; JKM-AL00b Build/HUAWEIJKM-AL00b; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044807 Mobile Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "",
    "loginUrl": "https://hanime1.me",
    "preload": false,
    "ruleArticles": "class.row no-gutter@class.multiple-link-wrapper||class.home-rows-videos-wrapper@tag.a",
    "ruleContent": "<js>\nresult+=\".m3u8\";\r\nresult = \"<video src=\\\"\" + result + \"\\\" width=\\\"100%\\\" height=\\\"240px\\\" controls=\\\"controls\\\" ></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result + \"</body></html>\"\n</js>",
    "ruleImage": "tag.img.1@src||tag.img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "",
    "ruleTitle": "class.card-mobile-title@text||class.home-rows-videos-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页[搜索]::/search?query={{source.getVariable()}}&page={{page}}\n\n裏番::/search?query={{source.getVariable()}}&genre=%E8%A3%8F%E7%95%AA&page={{page}}\n\nMotion Anime ::/search?query={{source.getVariable()}}&genre=Motion%20Anime&page={{page}}\n\n3D动画::/search?query={{source.getVariable()}}&genre=3D%E5%8B%95%E7%95%AB&page={{page}}\n\n同人作品::/search?query={{source.getVariable()}}&genre=%E5%90%8C%E4%BA%BA%E4%BD%9C%E5%93%81&page={{page}}\n\nCosplay::/search?query={{source.getVariable()}}&genre=Cosplay&page={{page}}",
    "sourceComment": "//魔法上网",
    "sourceGroup": "h",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/jokogebai/jokogebai@v1.0.0/tab_logo.jpg",
    "sourceName": "hanime1",
    "sourceUrl": "https://hanime1.me",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "coverDecodeJs": "",
    "customOrder": 583,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n    'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 3 XL Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.4988.0 Mobile Safari/537.36 SearchCraft/3.9.2 (Baidu; P1 11) '\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.col-6 col-sm-4 col-lg-3",
    "ruleContent": "link@all&&script@all",
    "ruleImage": "img@data-src",
    "ruleLink": "a@href##$##,{'webView': true}",
    "ruleNextPage": "page",
    "rulePubDate": ".label@text",
    "ruleTitle": "a.1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "国产精品::/list/3-{{page}}.html",
    "sourceComment": "更多订阅源\nhttps://ktt.pinduoduo.com/t/uYGqevqBNp",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "色哟哟",
    "sourceUrl": "https://10.seyoyo115.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 768,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleContent": "{\"content\":\"class.page-content@html\",\"nextContentUrl\":\"\",\"webJs\":\"\",\"sourceRegex\":\"\",\"replaceRegex\":\"\"}",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "无cp交流窝",
    "sourceUrl": "http://www.wu-cp.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 819,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleContent": "{\"content\":\"class.reader__text@p@html\",\"nextContentUrl\":\"\",\"webJs\":\"\",\"sourceRegex\":\"\",\"replaceRegex\":\"\"}",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "91baby",
    "sourceUrl": "http://m.91baby.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 820,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleContent": "{\"content\":\"//div[contains(@class, \\\"widget-episode\\\")]\",\"nextContentUrl\":\"\",\"webJs\":\"\",\"sourceRegex\":\"\",\"replaceRegex\":\"\"}",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "カクヨム🇯🇵",
    "sourceUrl": "https://kakuyomu.jp",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 821,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://gitlab.com/fuyuan360/fuyuan-rules/-/raw/master/surce_icon.png",
    "sourceName": "浮园",
    "sourceUrl": "https://gitlab.com/fuyuan360/fuyuan-rules",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 822,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.well well-sm",
    "ruleContent": "<video src=\"{{@@id.video_html5_api@source.0@src}}\" width=\\\"100%\\\" controls height=\\\"auto\\\"></video>\n<html><head><meat charset=\\\"utf-8\\\"><meat name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\"/><style>html,body{margin:0;padding:0;width:100%;}</style></head><body></body></html>",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "class.pagination pagination-lg@li.-1@a@href",
    "ruleTitle": "class.video-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::\n最爱::https://ecchi100.xyz/videos?o=tf\n最受欢迎::https://ecchi100.xyz/videos?o=mv",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "里番在线",
    "sourceUrl": "https://ecchi100.xyz",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 836,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".module-items@a",
    "ruleContent": ".module-info-introduction-content@p@html",
    "ruleImage": "img@data-original||img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "ruleTitle": "img@alt||.module-poster-item-info@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::vodsearch/-------------.html?wd={{source.getVariable()}}\nCOS::artshow-516/page/{{page}}.html\n写真::artshow-517/page/{{page}}.html\n网红::artshow-518/page/{{page}}.html\n漫画::artshow-519/page/{{page}}.html\n插画::artshow-520.html\nCG::artdetail-6119.html",
    "sourceComment": "https://all.baozouj8.icu/",
    "sourceGroup": "h",
    "sourceIcon": "https://all.baozouj8.icu/images/headimg_dl.jpg",
    "sourceName": "暴走",
    "sourceUrl": "https://tianna.coshan.sbs/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 839,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/059.webp",
    "sourceName": "逼特逼",
    "sourceUrl": "https://3.bqngveqi.cc:8888/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 843,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "//div.list-com/a",
    "ruleContent": "//ul/li",
    "ruleImage": "//img@src##.*?<img src=\"(.*?)\".*?##$1###@js:header={\"Referer\":baseUrl}\nheaders={\"headers\":JSON.stringify(header)}\nresult=result+','+JSON.stringify(headers)",
    "ruleLink": "href",
    "ruleNextPage": "page",
    "rulePubDate": "//img@src##.*?<img src=\"https://imgfzone.tooopen.com/(.*?)/.*?.jpg\".*?##$1###",
    "ruleTitle": "//text()",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://img2.baidu.com/it/u=3447143413,168358415&fm=253&fmt=auto&app=138&f=JPEG?w=347&h=500",
    "sourceName": "美图公社",
    "sourceUrl": "https://desk.tooopen.com/artphoto_3<,_{{page}}>.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 844,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.pb@tag.div",
    "ruleDescription": "",
    "ruleImage": "class.focus@tag.span@tag.img@src",
    "ruleNextPage": "class.pagination pagination-multi@class.next-page@tag.a@href",
    "rulePubDate": "class.text-muted time.0@text##发布于:",
    "ruleTitle": "class.excerpt excerpt-one.0@tag.header@tag.a@text",
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://www.xx3004.vip/wp-content/themes/xiu/images/wap-logo.png",
    "sourceName": "美女写真",
    "sourceUrl": "https://www.san421.com/meinv",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 851,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "injectJs": "// 选择所有需要隐藏的元素（多个选择器用逗号分隔）\nconst elementsToHide = document.querySelectorAll('.nav-fixed,.respond,.content-tabs,a,blockquote,form');\n\nelementsToHide.forEach(elem => {\n  elem.style.display = 'none'; \n});",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "article",
    "ruleContent": "",
    "ruleImage": "//div[contains(@style, 'background-image: url(\"data:image/jpeg;base64,\")')]",
    "ruleLink": "a@href",
    "ruleNextPage": ".page-navigator@text.下一页@href",
    "rulePubDate": "meta[itemprop=\"dateModified\"]@content",
    "ruleTitle": "h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "暗网吃瓜::/category/jrrg/\n暗网热搜::/category/qwrs/\n暗网爆料::/category/awcg/\n暗网反差::/category/fcll/\n暗网乱伦::/category/anwangluanlun/\n暗网校园::/category/xycg/\n每日大赛::/category/mrds/\n暗网网红::/category/dywh/\n暗网猎奇::/category/awlq/\n暗网视频::/category/sxzq/\n暗网海外::/category/hwaw/\n暗网AV解说::/category/awdz/",
    "sourceComment": "https://www.usnlzzxy.org/ybml.html",
    "sourceGroup": "h",
    "sourceIcon": "https://www.usnlzzxy.org/usr/themes/Mirages/images/51cg.png",
    "sourceName": "51暗网",
    "sourceUrl": "https://www.usnlzzxy.org",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "concurrentRate": "1000",
    "customOrder": 852,
    "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,
    "preload": false,
    "ruleArticles": "class.sousuo&&.update_area_content@ul@li&&section",
    "ruleContent": "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<title>内容提取</title>\n<!-- v2025.05.10 -->\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<script src=\"https://code.jquery.com/jquery-3.6.0.min.js\"></script>\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.css\" />\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.js\"></script>\n<style>\n    body { font-family: Arial, sans-serif; font-size: 16px; }\n    #title, #page, #loading-status { margin: 0 auto; font-size: 20px; text-align: center; }\n    #description, #urls, #video-url, #video-sources, #messages { width: 100%; max-width: 800px; margin: 1.5px auto; font-size: 14px; text-align: left; word-wrap: break-word; white-space: pre-wrap; }\n    #text, #text :not(img), #text img + * { text-indent: 2em; width: 100%; font-size: 16px; line-height: 1.5em; margin-top: 0; margin-bottom: 0; word-wrap: break-word; white-space: pre-wrap; }\n    img, #text img { width: 100%; height: auto; display: block; margin-bottom: 1.5px; }\n    .flex-container { display: flex; justify-content: center; align-items: center; gap: 10px; margin: 1.5px 0; font-size: 14px; }\n    button, select { flex: 1 1 31%; padding: 3px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; cursor: pointer; background-color: #f9f9f9; transition: background-color 0.3s ease; margin: 1.5px; min-width: 0; font-size: 14px; }\n    #url-select, #video-source-select { flex: 1 1 100%; margin-left: 0; margin-right: 0; text-align: center; }\n    #video-element { width: 100%; height: auto; }\n    textarea { width: 100%; height: auto; min-height: 100px; box-sizing: border-box; resize: vertical; }\n    .error, .warn { color: red; }\n</style>\n</head>\n<body>\n    <h3 id=\"title\">{{@@title@text||h1.0@text||h2.0@text||.title.0@text}}</h3>\n    <p id=\"description\">{{@@.info.0@html||.jianjie@html}}</p>\n    <p id=\"page\" style=\"display:none;\">共<span id=\"total-pages\">1</span>页</p>\n    <p id=\"loading-status\" style=\"display:none;\"></p>\n\n    <div class=\"flex-container\" id=\"loading-buttons\" style=\"display:none;\">\n        <button id=\"prev-page-btn\">上一页</button>\n        <button id=\"next-page-btn\">下一页</button>\n        <button id=\"auto-load-btn\">自&nbsp;&nbsp;动</button>\n    </div>\n    \n    <div class=\"flex-container\">\n        <select id=\"url-select\" style=\"display:none;\"></select>\n    </div>\n    \n    <div class=\"flex-container\">\n        <button id=\"toggle-urls-btn\">显/隐网址</button>\n        <button id=\"toggle-messages-btn\">显/隐信息</button>\n        <button id=\"toggle-debug-btn\">显/隐调试</button>\n    </div>\n    <div id=\"urls\"></div>\n    <div id=\"messages\"></div>\n    <div id=\"debug-info\"></div>\n    <div id=\"video-url\"></div>\n    <div id=\"video-container\" style=\"display: none;\">\n        <video id=\"video-element\" controls preload=\"auto\" width=\"640\" height=\"264\">\n            <source id=\"video-source\" src=\"\" type=\"\">您的浏览器不支持 video 标签。\n        </video>\n    </div>\n    <div class=\"flex-container\" id=\"video-source-container\" style=\"display: none;\">\n        <select id=\"video-source-select\" onchange=\"updateVideoSource()\"></select>\n    </div>\n    <div id=\"images\"></div>\n    <div id=\"text\"></div>\n\n    <script>\n        // 配置对象，包含各种选择器、延迟时间等配置项\n        const config = {    \n            videoSelector: 'body', // 视频选择器\n            imgSelector: '.gridlane-box-inside img,.photos figure img,.content p img', // 图片选择器\n            textSelector: '#content', // 文本选择器\n            debugSelector: '#content, .page, .pager, .content, script', // 调试信息选择器\n            swapImageAttributes: false, // 是否交换图片属性\n            delayTime: 1500, // 延迟提取时间\n            retryDelayTime: 1500, // 重试加载延迟时间\n            maxLoadAttempts: 3, // 最大加载次数\n            autoLoading: false, // true自动模式，false单页模式\n            debugOnce: 0, // 只在特定索引输出一次调试信息\n            totalPagesText: '{{@@.page.0@a.-2@textNodes}}', // 总页码\n            urlSuffixToRemove: /\\.html$/, // 移除url后缀\n            pageUrlText: '{urlPrefix}_{i}.html', // 拼接URL模板        \n            ListMode: true, // true网址列表模式，false网址拼接模式    \n            initialUrls: `{{@@#sort-item-5.0@a@href}}`, // 网址\n            initialUrlsName: `{{@@#sort-item-5.0@a@span@text}}`, // 网址名称\n            sourceurl: '', // 来源URL前缀\n        };\n\n        let videoSources = []; // 存储视频源数组\n        let loadAttempts = {}; // 记录每个URL的加载尝试次数\n        let urls = []; // 存储所有页面的URL\n        let imageBox;\n        let textBox;\n        let currentPageIndex = 0; // 当前页面索引\n        let canLoadNextPage = true; // 控制是否可以加载下一页\n        let autoLoadInProgress = false; // 自动加载状态\n\n        // 构建URL列表\n        function buildUrls(totalPages, baseUrl) {\n            let initialUrlsArray = config.initialUrls.trim().split('\\n').filter(url => url.trim() !== '');\n            let initialUrlsNameArray = config.initialUrlsName.trim().split('\\n').filter(name => name.trim() !== '');\n\n            if (config.ListMode && initialUrlsArray.length > 0) {\n                if (initialUrlsArray.length !== initialUrlsNameArray.length) {\n                    $('#messages').append(`<span class=\"warn\">警告：initialUrls 和 initialUrlsName 的长度不匹配。</span><br>`);\n                }\n\n                urls = initialUrlsArray.map(url => {\n                    if (config.sourceurl && url.startsWith('/') && !/^https?:\\/\\//i.test(url)) {\n                        return config.sourceurl.replace(/\\/$/, '') + url;\n                    } else {\n                        return url;\n                    }\n                });\n\n                urls.forEach((url, index) => {\n                    const name = initialUrlsNameArray[index] || `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            } else {\n                if (totalPages === 1) {\n                    urls.push(baseUrl);\n                } else {\n                    urls.push(baseUrl);\n                    for (let i = 2; i <= totalPages; i++) {\n                        urls.push(config.pageUrlText.replace('{urlPrefix}', baseUrl.replace(config.urlSuffixToRemove, '').replace(/\\/$/, '')).replace('{i}', i));\n                    }\n                }\n\n                urls.forEach((url, index) => {\n                    const name = `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            }\n\n            $('#total-pages').text(urls.length);\n            toggleNavigationButtons();\n            toggleTotalPagesDisplay();\n        }\n\n        // 规范化URL\n        function normalizeUrl(url) {\n            if (typeof url !== 'string' || !url.trim()) {\n                return '';\n            }\n            const match = url.match(/['\"](.*?)['\"]/);\n            if (match && match[1]) {\n                url = match[1];\n            }\n\n            function processUrl(str) {\n                str = str.trim();\n                str = str.replace(/\\\\u[\\dA-F]{4}/gi, match => String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16)));\n                str = decodeURIComponent(str);\n                str = str.replace(/^http:\\/([^/])/, 'http://$1');\n                str = str.replace(/^https:\\/([^/])/, 'https://$1');\n                return str;\n            }\n            return processUrl(url);\n        }\n\n        // 清空容器内容\n        function clearContainers() {\n            $('#messages').empty();\n            $('#images').empty();\n            $('#text').empty();\n        }\n\n        // 更新图像源\n        function updateImageSrc(elements, shouldSwap) {\n            elements.each(function () {\n                const $this = $(this);\n                const attrsToUpdate = {};\n                if (shouldSwap) {\n                    ['data-original', 'data-src', 'data-url'].forEach(attr => {\n                        if ($this.attr(attr)) {\n                            attrsToUpdate['src'] = $this.attr(attr);\n                        }\n                    });\n                }\n                $this.attr(attrsToUpdate);\n            });\n            return elements;\n        }\n\n        // 切换导航按钮显示状态\n        function toggleNavigationButtons() {\n            if ($('#url-select option').length > 1 && !config.autoLoading) {\n                $('#loading-buttons').show();\n                $('#url-select').show();\n            } else {\n                $('#loading-buttons').hide();\n                $('#url-select').hide();\n            }\n        }\n\n        // 显示加载状态\n        function showLoadingStatus(pageNumber) {\n            const selectedOption = $('#url-select option:selected').text();\n            $('#loading-status').text(`正在加载：${selectedOption}`).show();\n        }\n\n        // 隐藏加载状态\n        function hideLoadingStatus() {\n            $('#loading-status').hide();\n        }\n\n        // 加载指定索引的内容\n        function loadContent(index) {\n            if (index < 0 || index >= urls.length || !canLoadNextPage) return;\n            canLoadNextPage = false;\n            currentPageIndex = index;\n            $('#url-select').val(index);\n            $('#messages').append(`<div>当前地址: <span class=\"warn\">${urls[index]}</span></div>`);\n            if (autoLoadInProgress) {\n                showLoadingStatus(index + 1);\n            }\n            $.ajax({\n                url: urls[index],\n                type: 'GET',\n                success: function (data) {\n                    try {\n                    const $data = $(data);\n                    let updatedHtmlContent = data.replace(/(['\"])(\\/\\/)(?!\\/)/g, '$1https://')\n                        .replace(/src=\"upload/gi, 'src=\"/upload')\n                        .replace(/style=[\"'][^'\"]+[\"']/gi, '')\n                        .replace(/\\\\\\//g, '/');\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(updatedHtmlContent, \"text/html\");\n\n                    if (config.debugOnce === index) {\n                        const debugElements = $(doc).find(config.debugSelector);\n                        if (debugElements.length > 0) {\n                            const debugContents = $('<pre>').html(debugElements.clone().wrapAll('<div/>').parent().html()).html();\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">${debugContents}</textarea></span>`);\n                        } else {\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">调试信息未提取到内容，请检查选择器！</textarea></span>`);\n                        }\n                    }\n                    // 方法1：提取视频\n                    const videoSources1 = [];\n                    const videoContents = $(doc).find(config.videoSelector);\n                    const videoTags = $(videoContents).find('video, source');\n                    videoTags.each(function() {\n                        const videosrc = $(this).attr('src') || \n                                     $(this).attr('data-src') || \n                                     $(this).attr('data-original') || '';\n                        \n                        if (videosrc) {\n                            videoSources1.push(videosrc);\n                        }\n                    });\n                    //反馈\n                    if (videoSources1.length > 0) {\n                        $('#messages').append(`<span>方法1，找到 ${videoSources1.length} 个视频。</span><br>`);\n                    }\n\n                    // 方法2：正则提取视频\n                    const regex = /['\"]https?[^'<>\"]+(m3u8|mp4|webm|ogg|flv|mp3|m4a|wav|ape|flac)([^'<>\"]+)?['\"]/gi;\n                    const matches = data.match(regex);\n                    const videoSources2 = [];\n\n                    if (matches) {\n                        const uniqueMatches = [...new Set(matches)];\n                    \n                        uniqueMatches.forEach(match => {\n                            const normalizedSrc = normalizeUrl(match.replace(/['\"]/g, ''));\n                            videoSources2.push(normalizedSrc);\n                        });\n                    }\n                    //反馈\n                    if (videoSources2.length > 0) {\n                        $('#messages').append(`<span>方法2，找到 ${videoSources2.length} 个视频。</span><br>`);\n                    }\n\n                    // 合并两种方法的结果\n                    videoSources = [...videoSources1, ...videoSources2];\n\n                    // 去重并标准化 URL\n                    const imageExtensions = /\\.(jpg|jpeg|png|gif|bmp|svg)$/i;\n\n                    videoSources = videoSources\n                                  .map(src => normalizeUrl(src.replace(/\\\\+/g, '')))\n                                  .filter(src => src) // 过滤空值\n                                  .filter(src => !imageExtensions.test(src)); // 移除图片地址\n                        \n                    videoSources = [...new Set(videoSources)];// 去重\n\n                    // 显示最终结果\n                    $('#messages').append(`<span>总共找到 ${videoSources.length} 个视频。</span><br>`);\n\n                    if (videoSources.length > 0) {\n                        $('#messages').append(`<span>成功提取到视频，找到 ${videoSources.length} 个视频。</span><br>`);\n                        videoSources.forEach((src, idx) => {\n                            $('#messages').append(`<div>视频地址:<span class=\"warn\"> ${src}</span><br></div>`);\n                            $('#video-source-select').append(`<option value=\"${idx}\">视频源 ${idx + 1}</option>`);\n                        });\n                    \n                        if (videoSources.length == 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').hide();\n                            updateVideoSource();\n                        } else if (videoSources.length > 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').show();\n                            updateVideoSource();\n                        } else {\n                            $('#video-container').hide();\n                            $('#video-url').hide();\n                            $('#video-source-container').hide();\n                        }\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未找到视频源。</span><br>`);\n                        $('#video-container').hide();\n                        $('#video-url').hide();\n                        $('#video-source-container').hide();\n                    }\n\n                    //提取图片\n                    const $imgContents = $(doc).find(config.imgSelector);\n                    const shouldSwap = config.swapImageAttributes;\n                    const newContents = updateImageSrc($imgContents.clone(), shouldSwap);\n                    $('#images').append(newContents).show();\n                    if (newContents.length > 0) {\n                        $('#messages').append(`<span>成功提取图片，共 ${newContents.length} 张。</span><br>`);\n                        newContents.each(function () {\n                            const imgSrc = $(this).attr('src') || $(this).attr('data-original') || $(this).attr('data-src') || $(this).attr('data-url');\n                            $('#messages').append(`<div>地址:<span class=\"warn\"> ${imgSrc}</span><br></div>`);\n                        });\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图片。</span><br>`);\n                    }\n\n                    //提取图片和文本\n                    const textContents = $(doc).find(config.textSelector).map(function () {\n                        const $currentContents = $(this);\n                        $currentContents.find('img + br, script, video, source, iframe').remove();\n                        $currentContents.html($currentContents.html().replace(/>\\s+/gi, '>').replace(/<\\/?br\\s*([^>]*)\\s*\\/?>/gi, '\\n').replace(/\\n+/g, '\\n'));\n                        return $currentContents.html();\n                    }).get().join('');\n                    if (textContents.trim()) {\n                        $('#text').append(`<span>${textContents}</span><br>`).show();\n                        $('#messages').append(`<span>成功提取图文。</span><br>`);\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图文。</span><br>`);\n                    }\n\n                    if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                        setTimeout(() => { \n                            canLoadNextPage = true;\n                            loadContent(currentPageIndex + 1); \n                        }, config.delayTime);\n                    } else {\n                        canLoadNextPage = true;\n                        if (autoLoadInProgress) {\n                            hideLoadingStatus();\n                        }\n                    }\n                } catch (parseError) {\n                    $('#messages').append(`<span class=\"error\">解析页面内容时发生错误: ${parseError.message}</span><br>`);\n                    handleLoadFailure(urls, index);\n                } finally {\n                    if (imageBox) imageBox.viewer.update();\n                    if (textBox) textBox.viewer.update();\n                }\n            },\n            error: function (jqXHR, textStatus, errorThrown) {\n                let errorMessage = `内容加载失败: ${urls[index]}`;\n                switch (textStatus) {\n                    case 'timeout':\n                        errorMessage += ', 请求超时';\n                        break;\n                    case 'abort':\n                        errorMessage += ', 请求被取消';\n                        break;\n                    case 'parsererror':\n                        errorMessage += ', 解析响应出错';\n                        break;\n                    default:\n                        errorMessage += `, 状态码: ${jqXHR.status}, 错误信息: ${errorThrown}`;\n                        break;\n                }\n                $('#messages').append(`<span class=\"error\">${errorMessage}</span><br>`);\n                handleLoadFailure(urls, index);\n                }\n            });\n        }\n\n        // 处理加载失败的情况\n        function handleLoadFailure(urls, index) {\n            if (!loadAttempts[urls[index]]) {\n                loadAttempts[urls[index]] = 1;\n            } else {\n                loadAttempts[urls[index]]++;\n            }\n            if (loadAttempts[urls[index]] <= config.maxLoadAttempts) {\n                const retryMessage = `第${index + 1}页加载失败，正在进行第${loadAttempts[urls[index]]}次加载！`;\n                $('#messages').append(`<span class=\"error\">${retryMessage}</span><br>`);\n                setTimeout(() => { \n                    canLoadNextPage = true;\n                    loadContent(index); \n                }, config.retryDelayTime);\n            } else {\n                const finalErrorMessage = `第${index + 1}页加载失败，已达到最大尝试次数(${config.maxLoadAttempts})！`;\n                $('#messages').append(`<span class=\"error\">${finalErrorMessage}</span><br>`);\n                if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                    setTimeout(() => { \n                        canLoadNextPage = true;\n                        loadContent(currentPageIndex + 1); \n                    }, config.delayTime);\n                } else {\n                    canLoadNextPage = true;\n                    if (autoLoadInProgress) {\n                        hideLoadingStatus();\n                    }\n                }\n            }\n        }\n\n        // 更新视频源\n        function updateVideoSource() {\n            const selectedIndex = parseInt(document.getElementById('video-source-select').value);\n            if (isNaN(selectedIndex) || !videoSources[selectedIndex]) {\n                $('#messages').append(`<span class=\"warn\">未找到有效的视频源。</span><br>`);\n                console.warn(\"Invalid or undefined video source:\", selectedIndex, videoSources);\n                return;\n            }\n\n            const selectedSource = videoSources[selectedIndex];\n            document.getElementById('video-url').textContent = `视频地址:\\n ${selectedSource}`;\n\n            const videoSourceElement = document.getElementById('video-source');\n            videoSourceElement.src = selectedSource;\n\n            const videoElement = document.getElementById('video-element');\n            videoElement.load();\n\n            $('#messages').append(`<span>更新视频源为: ${selectedSource}</span><br>`);\n            console.log(\"Updated video source to:\", selectedSource);\n        }\n\n        // 切换总页数显示状态\n        function toggleTotalPagesDisplay() {\n            if (urls.length > 1) {\n                $('#page').show();\n            } else {\n                $('#page').hide();\n            }\n        }\n\n        // 页面加载完成后执行的主要逻辑\n        $(document).ready(function () {\n            imageBox = document.getElementById('images');\n            textBox = document.getElementById('text');\n            if (imageBox && textBox) {\n                new Viewer(imageBox, { title: true, interval: 2000 });\n                new Viewer(textBox, { title: true, interval: 2000 });\n            }\n\n            const totalPagesText = config.totalPagesText;\n            const totalPages = parseInt(totalPagesText, 10) || 1;\n            const baseUrl = '{{baseUrl}}';\n\n            clearContainers();\n            $('#urls, #debug-info textarea, #video-url, #video-source-select').empty();\n            $('#urls, #messages, #debug-info, #video-url, #video-container, #video-source-container, #images, #text').hide();\n\n            buildUrls(totalPages, baseUrl);\n\n            const urlSelect = document.getElementById('url-select');\n            if (urlSelect.options.length > 0) {\n                urlSelect.value = '0'; \n\n                if (config.autoLoading) {\n                    autoLoadInProgress = true;\n                    for (let i = 0; i < urls.length; i++) {\n                        loadContent(i);\n                    }\n                } else {\n                    loadContent(0);\n                }\n            } else {\n                loadContent(0);\n            }\n\n            $('#url-select').change(function () {\n                clearContainers();\n                const selectedIndex = parseInt($(this).val());\n                loadContent(selectedIndex);\n            });\n            $('#prev-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex > 0) {\n                    loadContent(currentPageIndex - 1);\n                }\n            });\n            $('#next-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex < urls.length - 1) {\n                    loadContent(currentPageIndex + 1);\n                }\n            });\n            $('#auto-load-btn').click(function () {\n                autoLoadInProgress = true;\n                showLoadingStatus(1); \n                for (let i = currentPageIndex + 1; i < urls.length; i++) {\n                    loadContent(i);\n                }\n            });\n            $('#toggle-messages-btn').click(function () { $('#messages').toggle(); });\n            $('#toggle-urls-btn').click(function () { $('#urls').toggle(); });\n            $('#toggle-debug-btn').click(function () { $('#debug-info').toggle(); });\n        });\n    </script>\n</body>\n</html>",
    "ruleDescription": "",
    "ruleImage": "img@data-original||img@data-src||img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": ".page@text.下一页@href||.page@text.下页@href",
    "rulePubDate": "{{@class.meta-post@textNodes}}_浏览:{{@class.cx_like@textNodes}}",
    "ruleTitle": "{{@tag.a@title##\\[.*\\]## }}{{@class.meta-title@text##\\[.*\\]##}} {{@tag.span.0@text##\\n ##\\[.*\\]##}}{{@class.title@tag.span@text##\\[.*\\]##}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "秀人网:: /XiuRen/\n最新::/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": "//:a.2222x.vi   a.2xiu.vip (都可从a-z)",
    "sourceGroup": "h",
    "sourceIcon": "/template/images/logo.png",
    "sourceName": "秀人集v",
    "sourceUrl": "http://d4.xiuren004.top/",
    "style": "",
    "type": 0,
    "variableComment": "搜索关键词"
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "concurrentRate": "1000",
    "customOrder": 860,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\r\n\"User-Agent\": \"Dalvik/2.1.0 (Linux; U; Android 10; BAH3-W09 Build/HUAWEIBAH3-W09)\",\n\"Host\":\"25.xiuren005.top\"\r\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.list@class.node@class.sousuo||tag.ul.4@tag.li",
    "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>{{@@.item_title@tag.h1@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>{{@@.item_title@tag.h1@text}}</h3>\r\n    <h5>{{@class.jianjie@text}}</h5>\r\n    <div>{{@@tag.p@tag.img@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: {{@@class.page.0@tag.a.-2@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": "tag.a@tag.img@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 ##\\[.*\\]##}}{{@class.title@tag.span@text##\\[.*\\]##}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::/zx.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一周推荐::/tj.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": "h",
    "sourceIcon": "https://images.weserv.nl/?url=https://article.biliimg.com/bfs/article/ded67638d944a7e0ef4452b721fd6434a22de16d.png",
    "sourceName": "秀人集v24",
    "sourceUrl": "https://www.xiu01.top/",
    "style": "/*标题相关*/\r\nh3{text-align:center}\r\nh6{margin-bottom:0}\r\nimg{width:100%}\nh5{margin-bottom:0;padding-left:5;}",
    "type": 0,
    "variableComment": "搜索关键词"
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 884,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "<js>\nheaders={\n    \"User-Agent\": \"okhttp/3.14.9\"\n}\ncache.put(java.md5Encode16(Get('url') + \"headers\"),JSON.stringify(headers));\nJSON.stringify(headers);\n</js>",
    "injectJs": "",
    "jsLib": "{\"囧次元(纯净版)\":\"https://qyyuapi.com/dy/js/囧次元(纯净版)/jsLib.js\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "[\n  {\n    name: \"💡　　 源　　 站　　 更　　 新　　 💡\",\n    type: \"button\",\n    action: \"update()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n\n  { name: \"查看当前\", type: \"button\", action: \"look(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"查看历史\", type: \"button\", action: \"look(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"恢复默认\", type: \"button\", action: \"test(-1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"搜索：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  设置动漫分类  ɞ´«ˇ༻\", type: \"button\", action: \"login('【可选分类】' + n(2) + '[0]日本动漫[1]国产动漫\\\\n[2]动漫剧场[3]欧美动漫\\\\n多个分类用逗号隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"分类：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  点击切换排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"最新\", type: \"button\", action: \"o(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"最热\", type: \"button\", action: \"o(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"最赞\", type: \"button\", action: \"o(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  筛选发布年份  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"年份：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻\", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号“,”隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"收藏：\", type: \"text\" },\n\n  { name: \"长按倍速：\", type: \"text\" },\n  { name: \"跳过片头：\", type: \"text\" },\n  { name: \"跳过片尾：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  主题模式切换  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"日间模式\", type: \"button\", action: \"a(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"夜间模式\", type: \"button\", action: \"a(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  {\n    name: \"清除网站Cookie缓存\",\n    type: \"button\",\n    action: \"deleteCookie()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n\n  { name: \"清除远程代码标识\", type: \"button\", action: \"DeleteJskey()\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n\n  {\n    name: \"💡　　 源　　 站　　 打　　 印　　 💡\",\n    type: \"button\",\n    action: \"test()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  }\n]",
    "loginUrl": "eval(String(Reload('https://qyyuapi.com/dy/js/囧次元(纯净版)/loginUrl.js')));",
    "preload": false,
    "ruleArticles": "<js>\neval(String(source.loginUrl));\neval(String(Reload('https://qyyuapi.com/dy/file/history.js')));\nvar res = JSON.parse(decode(JSON.parse(result).data));\nvar data = [];\nvar list = res.search_list || res.recommend_list;\nfor (i in list) {\n    data.push({\n        'name': list[i].vod_name,\n        'time': String(list[i].vod_score + '/' + list[i].vod_year + '/' + list[i].vod_remarks + '/' + list[i].vod_lang + '/' + list[i].vod_class + '/' + list[i].vod_actor + '/' + list[i].vod_blurb).replace(/\\/+\\s*/g,'/').replace(/^\\/|\\/$|undefined\\/|内详.?\\//g,''),\n        'cover': list[i].vod_pic,\n        'url': Get('url') + '/?vod_id=' + list[i].vod_id\n    });\n}\ndata;\n</js>",
    "ruleContent": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/囧次元(纯净版)/ruleContent.js')));\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title>{{JSON.parse(result).data.vod.vod_name}}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<meta name=\"referrer\" content=\"no-referrer\">\n<link rel=\"stylesheet\" href=\"https://qyyuapi.com/css/plyr.css\">\n<style>\n{{String(Reload('https://qyyuapi.com/dy/file/player' + Get('a') + '.css'))}}\n</style>\n</head>\n<body>\n<p></p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<details>\n  <summary>\n    <h3>{{JSON.parse(result).data.vod.vod_name}}</h3>\n  </summary>\n  <img>\n</details>\n<div class=\"all-info\">\n<div>\n    <p>🕵 导演：{{String(JSON.parse(result).data.vod.vod_director).replace(/[\\/,，]$|内详/g,'')}}</p>\n    <p>👨‍🎤 主演：{{String(JSON.parse(result).data.vod.vod_actor).replace(/[/,，]$|内详/g,'')}}</p>\n    <p>💻 连载：{{String(JSON.parse(result).data.vod.vod_remarks).replace(/\\s*\\/\\s*/g,'/')}}</p>\n    <p>🔖 标签：{{String(JSON.parse(result).data.vod.vod_year + '/' + JSON.parse(result).data.vod.vod_area + '/' + JSON.parse(result).data.vod.vod_lang + '/' + JSON.parse(result).data.vod.vod_class).replace(/\\,\\/|\\/+/g,'/').replace(/[\\/,，]$/g,'')}}</p>\n    <p>📋 简介：{{JSON.parse(result).data.vod.vod_content}}</p>\n</div>\n{{JSON.parse(result).jishu}}\n</div>\n\n<script src=\"https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/crypto-js/4.1.1/crypto-js.min.js\" type=\"application/javascript\"></script>\n<script src=\"https://gcore.jsdelivr.net/npm/hls.js@canary\"></script>\n<script src=\"https://qyyuapi.com/js/plyr.js\"></script>\n\n<script>\n{{String(Reload('https://qyyuapi.com/dy/file/player.js'))}}\n\nconst JKkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\/\\/[^\\/]+\\//, ''))}}\";\nconst JDkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\/\\/[^\\/]+\\//, '') + 'time')}}\";\nconst PTtime = {{/^\\d+$/.test(Map('跳过片头：')) ? Map('跳过片头：') : 0}};\nconst PWtime = {{/^\\d+$/.test(Map('跳过片尾：')) ? Map('跳过片尾：') : 0}};\nconst BSspeed = {{Map('长按倍速：') || 2}};\n\nfunction aesEncrypt(data, key, iv) {\n    key = CryptoJS.enc.Utf8.parse(key);\n    iv = CryptoJS.enc.Utf8.parse(iv);\n    data = CryptoJS.enc.Utf8.parse(data);\n    let encrypt = CryptoJS.AES.encrypt(data, key, {\n        iv,\n        mode: CryptoJS.mode.CBC,\n        padding: CryptoJS.pad.Pkcs7\n    });\n    return encrypt.toString();\n}\n\nfunction aesDecrypt(data, key, iv) {\n    key = CryptoJS.enc.Utf8.parse(key);\n    iv = CryptoJS.enc.Utf8.parse(iv);\n    data = CryptoJS.enc.Base64.parse(data);\n    let decrypted = CryptoJS.AES.decrypt({\n        ciphertext: data\n    }, key, {\n        iv,\n        mode: CryptoJS.mode.CBC,\n        padding: CryptoJS.pad.Pkcs7\n    });\n    return decrypted.toString(CryptoJS.enc.Utf8);\n}\n\n// 获取视频URL并更新视频源\nasync function geturl() {\n    let zyurl = JSON.parse($(\".jishu button.active\")[0].value);\n    let img = $('img')[0];\n    let de = $(\".jishu button.active\")[0].dataset.de;\n    let api = $(\".jishu button.active\")[0].dataset.api;\n    let fm = \"{{JSON.parse(result).data.vod.vod_pic}}\";\n\n    if (/1/.test(de)) {\n        var key = '{{aeskey}}';\n        var iv = '{{aesiv}}';\n        let Enurl = aesEncrypt(zyurl[0].src, key, iv);\n        let body = `parse_api=${api}&url=${Enurl}`;\n        let src = \"{{Get('url')}}/api.php/getappapi.index/vodParse\";\n        try {\n            let result = await fetchRequest(src, {{String(cache.get(java.md5Encode16(Get('url') + \"headers\")))}}, body);\n            if (result) {\n                var data = aesDecrypt(result.data, key, iv);\n                url = JSON.parse(JSON.parse(data).json).url;\n                zyurl = [];\n                zyurl.push({src: url, size: '0'});\n            } else {\n                console.error(\"获取视频 URL 失败\");\n            }\n        } catch (error) {\n            console.error(\"geturl 函数错误:\", error);\n        }\n    }\n\n    // 更新详情封面\n    img.src = fm;\n\n    // 更新视频封面\n    $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n    let sources = zyurl;\n    return { sources: sources };\n}\n\n// 点击集数按钮时调用的函数\nasync function jishu(item) {\n    var video = $('video')[0];\n    var wasPlaying = video && !video.paused;\n    omit($('.jishu button.active'));\n    item.className = \"active\";\n    const { sources } = await geturl();\n    setTimeout(updatePadding, 100);\n    var index1 = $('#selected-jiekou button')[0].dataset.id;\n    var index2 = Array.from(item.parentNode.children).indexOf(item);\n    var Progress = {\n        index1: index1,\n        index2: index2\n    };\n    localStorage.setItem(JKkey, JSON.stringify(Progress));\n    localStorage.removeItem(JDkey);\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed, 1);\n    if (wasPlaying && video) {\n        const tryAutoPlay = () => {\n            if (video.readyState >= 3) {\n                video.play().catch(e => {\n                    console.log(\"自动播放被阻止:\", e);\n                    $('.plyr__control--overlaid').show();\n                });\n                video.removeEventListener('canplay', tryAutoPlay);\n            }\n        };\n        if (video.readyState >= 3) {\n            video.play().catch(e => console.log(\"立即播放失败:\", e));\n        } else {\n            video.addEventListener('canplay', tryAutoPlay);\n        }\n    }\n}\n\n// 页面加载时初始化播放器\n(async () => {\n    var m = 0,n = 0;\n    var Progress = localStorage.getItem(JKkey);\n    if (Progress) {\n        var history = JSON.parse(Progress);\n        m = history.index1;\n        n = history.index2;\n    }\n    if (m > 0) {\n        const buttonList = $('#jiekou-list')[0].querySelectorAll('button');\n        const targetButton = Array.from(buttonList).find(btn => btn.getAttribute('data-id') == m);\n        jiekou(targetButton);\n        const allButtons = $('.jishu')[m].querySelectorAll('button');\n        active(allButtons, n);\n    } else {\n        active($('.jishu button'), n);\n    }\n    const { sources } = await geturl();\n    setTimeout(updatePadding, 100);\n    localStorage.setItem('HistoryTAG', 1);\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed, 1);\n})();\n</script>\n</body>\n</html>\n<js>\nresult\n.replace(/：\\s*/g,'：')\n.replace(/<p>(.+)：<\\/p>/gm, '<p style=\"display:none;\">$1：</p>');\n</js>",
    "ruleDescription": "",
    "ruleImage": "cover",
    "ruleLink": "url",
    "ruleNextPage": "page",
    "rulePubDate": "time",
    "ruleTitle": "name",
    "shouldOverrideUrlLoading": "if (url.startsWith('legadovideo://')) {\n    java.openUrl(\n        decodeURIComponent(url.replace('legadovideo://', '')),\n        'video/*'\n    );\n    true;\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/囧次元(纯净版)/sortUrl.js')));\n</js>",
    "sourceComment": "修改：1、播放器增加切换上下集按钮；2、增加点击顶部视频链接调用播放器应用播放；by：xiaohan231-2025/04/30\n\n修改：1、增加清除远程代码标识按钮；by：xiaohan231-2025/04/26\n\n修改：1、新增源变量与localStorage双向备份功能，确保清理缓存和清除WebView数据时，播放历史记录和设置信息不会丢失；by：xiaohan231-2025/04/22\n\n修改：1、播放状态点击切换集数，自动开始播放；by：xiaohan231-2025/04/21\n\n修改：1、播放器增加标记片头片尾功能；2、jsLib代码适配新版阅读；by：xiaohan231-2025/04/20\n\n修改：1、增加清除网站Cookie缓存按钮；2、优化详情信息高度调整；3、优化视频集数切换，结尾切换下一集时不再销毁重建播放器实例；4、增加切换下集自动播放功能；5、增加跳过片尾功能；by：xiaohan231-2025/04/17\n\n新增：1、新增囧次元(纯净版)；by：xiaohan231-2025/04/16",
    "sourceGroup": "h",
    "sourceIcon": "https://qyyuapi.com/img/囧次元.png",
    "sourceName": "囧次元(纯净版)",
    "sourceUrl": "囧次元(纯净版)@js:`{{Get('url')+path}}`",
    "style": "",
    "type": 0,
    "variableComment": "JspHXCgzmq549cSvxZRk3cM5EE7N5V32mKk5ZsGlzH7mB4iKPcwRvTVF+nSsYaYkyHFh6tU0uM6gAcU2LO/ZQnF45pl+sO+D+/WIYPhUQyHGEp6lyVJ7JKp9yWihRr9Al3sqXhKPltzub2PZi96Ke4YxqVZPjPSmL3O6xY025Sa7Vm1r1ZLIrgpD4Ksa99Q488bytyVS2P8fSjkQvADOECPkrKGclkhYWKWj0hAAvyDNKDxrCyqqqUjrKooVXTcQ3DDxjpsx5Wd29wdbu4YgaMwdlq7eM7Wgq20PNHRYMQv6mzqElmMn9R4S7YEaJiDpXXStroRJTJtLEB2i6pMCY4F02mndjqQW0PbM+tfwlL8BPYfaSJDdVkvSCRNfUL1rVOJY3HHHX1kAyOG/METDaU0ord6qUbQQMGQVmCgqResqjExJ6AI33IXMtAF1485MjO1nSz2Mi9jw/NoCjXBhnxv0A/3lmQZoYsdfz3LCCOOZKjZQKAZj20BFKz9CBUrmh0JDEZ3nAYVB1gyCKiKX1ggVppLVomlrWGW5+I5UX/5ZkqCucNxVckbJruLtKfOj2gIfGm3kal4YeJqQuSK1wUrU5uLgTDpgox9qPir7etK+0JIlYrlg4TVWln3zuf+4irCZSmjNTNonXb/scyboqwwxxs0m4gpBR6WJPKyNQf/H/pMEkzkQ1+TMO80uRyUj62GS1yS2zmWQnhmw5zC/e6gGMG+n3UoJVX7M5ebG+6eczZXttRv5daHp6UYhK9hETv6nUs0KndVbrB4xZa5JNH3SloTv48koLVJu+0NT+AIrxc1v9RB/6ClGNxWDl2ia0zkKvQsmkHDe1Ln0RzsdTWp1twd+OLzPxmZZ8DK2gkSC2+kLnG4NoSwl66hT8XUUQz8kNeIwpM8uyV1ZkArLpTSv+gN8CItVu9ISTyP3wTbe45+086Ag7tvHwawqCUUlwLzdKh+UHhqCa5EE3qGQbLOaASWmwrOsg/qhf65xBeW34nF5E4ouWsZ5OctjUyfPh3bGNWBta+OVuv5ZMVQH6xad8QNM7gNurML05I9yR8jQ2RsuvqGZA4kpbwGAvkGyUE6FWafVPrlyzjhAvM62NX+Lv5Sctymh+CCt60oO3UrLNFIlzm/Aplkg9n8xnB/YFp3xA0zuA26swvTkj3JHyEj82FLCEpw6uq915M1jjSRQToVZp9U+uXLOOEC8zrY1PSb4cQGqMbjseWdLi1WBhSJPwB2CdB+3VcE4kGmc8CDo1v5txSiD7GKjZ1ExpA/n0TI7uW6ZR3nvNOg/wEoPV9imzoa/Cp1IPhpfn0jvG5wtnG7OsTI+/eCIi6Vv9xsJW1q1FmzjfVoFyHH1/8YCBJgZInJ9HDsguXQZrO1IHWDR2kBHiloP7PEIRR8PW2268gdab40Qku+wn4SGAPnAFLTiKvacQjHpvm6MHg5qNnDPaWzjWU2yqLXqwvjvuvVQHhfax5xG7RPn8qjnnpf7fNeg8Hie5UfiqGUDHivnkrraLULZP20oLpCNmkZspQMww4JZB6KdU8ZFbQ1Dtcf0WDFdALiHBvry+3Tr7P6rnAO4W30SN5zTZOL143gt9ToGQUtPVjY4H9/hfsBA2I8iwlUmzYFYH3lDUyUeFZxmxuyWJgiCOKccgjCrFLw3ecOD47YqJyx5VzuColnzoHTAzvL0eaqgFdhbcdzLBrMF9eChijLK0ZNUgZvxmD+S5PWUhg5yzpFajFkKf+ktawtf7001RMvWRvkpQHzTC2WuR2zxSBmH1TFSNF/My97FY2wlhBDnpfrrpu6Sqp1Q2dB+cc6QN7iCqeItsVuE7RK2sugaHsq/PslfDqNvVOxKwzWi2SBTJcfgURWvAR1rLfzGGsSzqjWszFEQ/Y/pqJNefccfClfxJ/oYoyjySYoJUphtufvpgVVfbIlnA1X/C4vdwSZ87ZFR0tGbAvtA+4E+Z1WPCFwCrW/n1w47tMwyFPkCW14lE/ErB9Er3OB0GR9us/gIE/NXn073ACFcsRQfM/lHs3bJZn83cnqJJgTc3ffD6zHcJKu5QLIm8TxVatj2C6nj6WUERPKunOLvCMkRMqyKMXYeJV2BAXeg7Fv8wBttmGV7vNaFGXXi0A7JTwwmiPV6QWnF7fJbg8NHX57YKHRtW9oKv7/GO4rVegJCRZp+vaiSpMg4sb0jG4QLv6HlGtyj2vEPqGEerjWxXf9x3md3wIuACT1kXQvCCj6O/jPNPbAQbSvXliA+oH/7/Q7kcpv5mqmLi4cTslGYlaoJI5T7mum5KBhU2Sy0lfomJNz0V+svoBeDeGqDNt79gyMR2Z6dLGf1frXTuKocDbMwjPNABkMJ13q74WAaWVB16GhjaA5q9SgPfGvnfePNBH1eQkOe9vAe0mfKC2SsNj9q5YUjItkLCwTMGxGl36uHjctQmgo6wy86SBGvogm95+4LUkYH6iTVf+ouZaelqGI2qm1jdUl/xmyHwctSAPijV+bMQvs37ZJHOHL6Hnp3LlnctEulNDI3SbsgxzlxrSHDD/H5VaKaXgq/7+iCLFbAUHQ5m6Hp6Flx5psBsgHt1hzsUIaKdpHZAIDOJLf4PHwL2QhUsrF0iy2Y8qGg2ybYRj1Nm/maqYuLhxOyUZiVqgkjlCRRNw5ukCAT9V8Op1veBNqzWzdnU5nAhDcpCoHllJglmkq2Swxq9sd/AaFw8JUpMdWUf/hqVFb3YP2/+RujDlovgd7Ye4KqDmc9vqdqpMdg2ILKuOA+eHoKov0HC2VA7+SV/Lv4bVWBHgVCIZwTsc9IWNucdXdYLE8CYpHbXcp3Rucr4N5RMa+wiKIip3p031vSB1pv3++oQp8pZVGdP0hRzSoQBK54t3Y+v/vK5s6lHnKb1SH+3aBYTPDNkKZQwd6cK0xoHXmijkdJTA3I3JMxqmPzDZ8VVgf89E8oRVlVtV2DahMurt31oJUiveBBGRnKzykQ4JM6a2A1Hqz/be73tofkDucmcy1Vu4joEsqH4FGQ595Q8noc/xHfqdyjMVmb6IshfgIB1mCcKfWN9FLDeML77m9XU2H4pMImJd2f4XujhbkStX9SGvuifIQUa3LJej2GvcINlPdYzX5ABz5oPFphAadWuzrP2kvFi/fkjLMn6OOJd8jTIzANraQRNMgHu27PE7vtVszZN74q4PNQM3n07LiunU81SdH75otsKfOPusZEgzDKBUhPLuamsbXHh7R6JgV77f62CwuVWMd9jhQsZm0i/g6m+ApKeuWGVsoRG9h/g97+uvNQ6vR11F3rN7BazqbGZqWaFlJ0bWTgsHDgD/1kv7E3Ebjsnp+/pyI9Lfy6d3Z1Gvttk+GlItlG40CAQdd8MsBamCArw0mGu2nyAcCdNCMxDDBWyH4qWmfHSeIyIR0+aE1kqxxdiS+hNroCfUNnuyW/ZoX0A+UIb0iptDcOfaVemEv1DQ9fRKh0FIijFWBvDLO1C5j22WacK9Rwl3oGS8LUVWvijpkcR44UOftDjP/SWe18Y/1iCkxfblgllWWEs7Vo4RPbG4FqkFkwLicC6HJqVm/k+1yzxTcHM32xAZJ1owUTG9bmdndHcijOdGDaQVsN07LL/B20gUFBu1yNTiu9kdZLBsvcM7NXS2mb5EnllFOINkhYLyXBaO5GWhgRhvNwCvhy6ofR3Xetx43mNVTqGUgvA6cv8B8qhpGBHmJ62Ew/+cLqu3MA5VFyu+zXvIWuEsf16/e8flClUSSseEEOAezpv1MxU4SfEHTqusVegDWR8gLfKqqTHowaglcUrPeUkYosxVJp8yn55xj4gKbgq0amZfYTYNfzzj4AOFtqeMh90l1C0xPfiZPPLF1ofoUKGfVy3IOEQgab6GTyhKqDmcBbb4kPPxrUwMvCcj9JP08HFiZYwn+Bxc+BvQpW3lnSu+2FY5dig91m14QQVMK4kVmwIvDmfZ7hAtavOmEo36/hoTPIhUmdqetrh5ohxsAVl1EUjl1ZHoV8dL8D3H12J0G9zsPKDL7kqPuFwpiQfjDe11glLenpMmozatccHwHYUI4nDqRzoO5dp627JvRVq/xHaXq5dWo+2i4MFxR1ugHMd0L2gN9NiXLA+AwPAGKx6GKlZVhKPo0fdOKMbI8LapnXlEmFZDe2PF6V5gbiJmSyS4ofyATtehkFXltpsYqkwrkJ0wjDCnapvetl5NlozEOQ+FOVd9rRWB1xK2UnD62r7RsSz3vJreRchmF/B56QBNOZiYA2wZoX9WM3a58QamZ4J061B1nIzhqwiTK0E8DalIAC4N7HUUQ488rQNWqzX6Sig4aF8JBIudjgX70Glq3K53swOrEs9BdTcS5MHFatRJar9uLSGZdCxRQWLYS5imcGdOekeGTJGeoyjSqcJo2Cr0vlgUP/vvpw+JffhEDVWBAOddDGHUH6AEJAZDavQVCm8nVhn27m0FlnYC8UqRT2x0BABkMJ13q74WAaWVB16GhjHMPDg0g+tWi89y3O61G+8as5QvYyN4FX93z1Wyn0dEdrzKxBZjxxubyR0nsXBW81GkM0epSZYrLw0WaDx58EmP9xTKoB2vXJJfs8WhXiCgeyfplTjNtKwjEYjjzxv9cZ7Xix1dJjo15PWoF5xoB4612tF03xX/tdhEXZjKGJv0jVlH/4alRW92D9v/kbow5axILAMf0m95vfnECyiKYVvuT9PXdaeloW86MJtl3UoYi0vmGwnEX6wxxdHCVXxW+YAe7xeAUXxIz5j5EDAOshdxxhH+7vLoozRvnNSv4j3yrtOYqKvTdr2vpMDcEaFbQ1UhUJLZ/wPoBL4I16axsdtDlve3Q33MxQwd1fMqwCWtJYmjojEWFLUvBMHtmsWSmsyoj9P1ypwN8V/o5N9KioXPf0PcoisdyDOgU1rPNtwAbbNWeheyrxBxGNptIj2QwmJ3KyJQHOP/PzjQfo6C8uKVx3XdeYK6+9KFuOuFTJQ6iPvCfdOZ+kKaeRZ34K4psSjQpu/M9SV37V9qkfzuA4AXhaWQF3Ph4lqj1XGBEo4bs="
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "concurrentRate": "1500",
    "customOrder": 885,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "<js>\nheaders={\n    \"User-Agent\": java.getWebViewUA(),\n    \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n    \"Accept-Encoding\": \"identity;q=1, *;q=0\",\n    \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n    \"Cookie\": cache.get(Get('url') + 'ck') || \"\"\n}\ncache.put(java.md5Encode16(Get('url') + \"headers\"),JSON.stringify(headers));\nJSON.stringify(headers);\n</js>",
    "jsLib": "{\"袋鼠影视\":\"https://qyyuapi.com/dy/js/袋鼠影视/jsLib.js\"}",
    "lastUpdateTime": 1762159194882,
    "loadWithBaseUrl": true,
    "loginCheckJs": "var res = result;\nurl = java.ruleUrl;\nif(/安全验证|提示信息|<title><\\/title>/.test(res.body())){\n    cookie.removeCookie(Get('url'));\n    result = java.startBrowserAwait(url,\"验证\");\n    ck = cookie.getCookie(Get('url'));\n    cache.put(Get('url') + 'ck',ck);\n}\nresult;",
    "loginUi": "[\n  {\n    name: \"💡　　 源　　 站　　 测　　 试　　 💡\",\n    type: \"button\",\n    action: \"test(1)\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n  { name: \"查看当前\", type: \"button\", action: \"look(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"查看历史\", type: \"button\", action: \"look(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"恢复默认\", type: \"button\", action: \"test(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"搜索：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  设置动漫分类  ɞ´«ˇ༻\", type: \"button\", action: \"login('【可选分类】' + n(2) + '[0]电影[1]电视剧\\\\n多个分类用逗号隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"分类：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  点击切换地区  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"o(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"大陆\", type: \"button\", action: \"o(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"香港\", type: \"button\", action: \"o(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"台湾\", type: \"button\", action: \"o(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"日本\", type: \"button\", action: \"o(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"韩国\", type: \"button\", action: \"o(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"美国\", type: \"button\", action: \"o(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"英国\", type: \"button\", action: \"o(7)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"印度\", type: \"button\", action: \"o(8)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"西班牙\", type: \"button\", action: \"o(9)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"法国\", type: \"button\", action: \"o(10)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"泰国\", type: \"button\", action: \"o(11)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"新加坡\", type: \"button\", action: \"o(12)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"其他\", type: \"button\", action: \"o(13)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"时间\", type: \"button\", action: \"p(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"人气\", type: \"button\", action: \"p(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"推荐\", type: \"button\", action: \"p(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换语言  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"q(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"国语\", type: \"button\", action: \"q(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"粤语\", type: \"button\", action: \"q(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"英语\", type: \"button\", action: \"q(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"日语\", type: \"button\", action: \"q(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"韩语\", type: \"button\", action: \"q(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"泰语\", type: \"button\", action: \"q(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"法语\", type: \"button\", action: \"q(7)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n\n  { name: \"༺ˇ»`ʚ  筛选发布年份  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"年份：\", type: \"text\" },\n  { name: \"字母：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻\", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号“,”隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"收藏：\", type: \"text\" },\n\n  { name: \"长按倍速：\", type: \"text\" },\n  { name: \"跳过片头：\", type: \"text\" },\n  { name: \"跳过片尾：\", type: \"text\" },\n  { name: \"背景图片：\", type: \"text\" },\n  { name: \"图片透明度：\", type: \"text\" },\n  { name: \"按钮透明度：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  主题模式切换  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"日间模式\", type: \"button\", action: \"a(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"夜间模式\", type: \"button\", action: \"a(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  {\n    name: \"清除网站Cookie缓存\",\n    type: \"button\",\n    action: \"deleteCookie()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n\n  { name: \"清除远程代码标识\", type: \"button\", action: \"DeleteYckey()\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n\n  {\n    name: \"💡　　 源　　 站　　 打　　 印　　 💡\",\n    type: \"button\",\n    action: \"test()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  }\n]",
    "loginUrl": "eval(String(Reload('https://qyyuapi.com/dy/js/袋鼠影视/loginUrl.js')));",
    "preload": false,
    "preloadJs": "window.run=run;\nwindow.java=java;",
    "ruleArticles": "<js>\neval(String(source.loginUrl));\neval(String(Reload('https://qyyuapi.com/dy/file/history.js')));\nif(/安全验证|提示信息|<title><\\/title>/.test(result)){\n    cookie.removeCookie(Get('url'));\n    cache.delete(Get('url') + 'ck');\n    result = java.startBrowserAwait(baseUrl,\"验证\",false).body();\n    ck = cookie.getCookie(Get('url'));\n    cache.put(Get('url') + 'ck',ck);\n    java.setContent(result);\n}\nvar data = [];\nif (/searchtype=5/.test(baseUrl)) {\n    var list = java.getElements('.col-xs-4');\n    for (i in list) {\n        data.push({\n            'name': list[i].select('h5').text(),\n            'time': String(list[i].select('.note').text() + '/' + list[i].select('.score').text() + '/' + list[i].select('.subtitle').text()).replace(/\\/\\//g,'/'),\n            'cover': list[i].select('.videopic').attr('data-original'),\n            'url': Get('url') + list[i].select('.videopic').attr('href')\n        });\n    }\n} else {\n    var list = java.getElements('.hy-video-details');\n    for (i in list) {\n        data.push({\n            'name': list[i].select('h3').text(),\n            'time': String(list[i].select('.note').text() + '/' + Array.from(list[i].select('ul li')).map(el => el.text().trim()).join('/')).replace(/：/g,':').replace(/\\/\\//g,'/'),\n            'cover': String(list[i].select('.videopic').attr('style')).match(/url\\(([^\\)]+)/)[1],\n            'url': Get('url') + list[i].select('.videopic')[0].attr('href')\n        });\n    }\n}\ndata;\n</js>",
    "ruleContent": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/袋鼠影视/ruleContent.js')));\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title>{{@@.content h1@text}}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https://qyyuapi.com/css/plyr.css\">\n<style>\n{{String(Reload('https://qyyuapi.com/dy/file/player' + Get('a') + '.css'))}}\n</style>\n</head>\n<body>\n<p></p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<details>\n  <summary>\n    <h3>{{@@.content h1@text}}</h3>\n  </summary>\n  <img>\n</details>\n<div class=\"all-info\">\n<div>\n    <p>🕵 导演：{{@@li:contains(导演：)@text##导演：}}</p>\n    <p>👨‍🎤 主演：{{@@li:contains(主演：)@text##主演：}}</p>\n    <p>📆 年份：{{@@li:contains(年份：)@text##年份：}}ㅤ🗺 地区：{{@@li:contains(地区：)@text##地区：}}ㅤ💻 评分：{{@@li:contains(豆瓣：)@text##豆瓣：}}</p>\n    <p>📠 语言：{{@@li:contains(语言：)@text##语言：}}ㅤ📦 类型：{{@@li:contains(类型：)@text##类型：}}</p>\n    <p>👔 别名：{{@@li:contains(又名：)@text##又名：}}</p>\n    <p>📋 简介：{{@@.plot@text}}</p>\n</div>\n{{JSON.parse(result).jishu}}\n</div>\n\n<script src=\"https://gcore.jsdelivr.net/npm/hls.js@canary\"></script>\n<script src=\"https://qyyuapi.com/js/plyr.js\"></script>\n\n<script>\n{{String(Reload('https://qyyuapi.com/dy/file/player.js'))}}\n\nconst JKkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\/\\/[^\\/]+\\//, ''))}}\";\nconst JDkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\/\\/[^\\/]+\\//, '') + 'time')}}\";\nconst PTtime = {{/^\\d+$/.test(Map('跳过片头：')) ? Map('跳过片头：') : 0}};\nconst PWtime = {{/^\\d+$/.test(Map('跳过片尾：')) ? Map('跳过片尾：') : 0}};\nconst BSspeed = {{/^\\d+$/.test(Map('长按倍速：')) ? Map('长按倍速：') : 2}};\nconst ImageUrl = \"{{/^http/.test(Map('背景图片：')) ? Map('背景图片：') : ''}}\";\nconst Opacity1 = \"{{/0|1|^0\\.\\d+$/.test(Map('图片透明度：')) ? Map('图片透明度：') : ''}}\";\nconst Opacity2 = \"{{/0|1|^0\\.\\d+$/.test(Map('按钮透明度：')) ? Map('按钮透明度：') : ''}}\";\nupdateBackground(ImageUrl, Opacity1, Opacity2);\n\n// 获取视频URL并更新视频源\nasync function geturl() {\n    try {\n        let src = String($(\".jishu button.active\")[0].dataset.src);\n        let result = await fetchRequest(src, {{String(cache.get(java.md5Encode16(Get('url') + \"headers\")))}});\n\n        if (result) {\n            let src = result.match(/now=['\"]([^'\"]+)['\"]/)[1];\n\n            // 获取页面信息\n            let fm = \"{{@@[property=\"og:image\"]@content}}\";\n\n            // 获取视频源\n            let zyurl = [];\n            zyurl.push({src:src,size:\"1\"});\n\n            // 更新详情封面\n            $(\"img\")[0].src = fm;\n\n            // 更新视频封面\n            $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n\n            // 返回视频源\n            let sources = zyurl;\n            return { sources: sources };\n        } else {\n            throw new Error(\"请求失败\");\n        }\n    } catch (error) {\n        weblog(error, '错误:', true);\n        console.error(\"错误:\", error);\n        throw error;\n    }\n}\n\n// 点击集数按钮时调用的函数\nasync function jishu(item) {\n    var video = $('video')[0];\n    var wasPlaying = (video && !video.paused) || localStorage.getItem('fromEnded') === 'true';\n    if (localStorage.getItem('fromEnded') === 'true') {\n        localStorage.removeItem('fromEnded');\n    }\n    omit($('.jishu button.active'));\n    item.className = \"active\";\n    const { sources } = await geturl();\n    setTimeout(updatePadding, 100);\n    var index1 = $('#selected-jiekou button')[0].dataset.id;\n    var index2 = Array.from(item.parentNode.children).indexOf(item);\n    var Progress = {\n        index1: index1,\n        index2: index2\n    };\n    localStorage.setItem(JKkey, JSON.stringify(Progress));\n    localStorage.removeItem(JDkey);\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed, 1);\n    if (wasPlaying && video) {\n        const tryAutoPlay = () => {\n            if (video.readyState >= 3) {\n                video.play().catch(e => {\n                    console.log(\"自动播放被阻止:\", e);\n                    $('.plyr__control--overlaid').show();\n                });\n                video.removeEventListener('canplay', tryAutoPlay);\n            }\n        };\n        if (video.readyState >= 3) {\n            video.play().catch(e => console.log(\"立即播放失败:\", e));\n        } else {\n            video.addEventListener('canplay', tryAutoPlay);\n        }\n    }\n}\n\n// 页面加载时初始化播放器\n(async () => {\n    var m = 0,n = 0;\n    var Progress = localStorage.getItem(JKkey);\n    if (Progress) {\n        var history = JSON.parse(Progress);\n        m = history.index1;\n        n = history.index2;\n    }\n    if (m > 0) {\n        const buttonList = $('#jiekou-list')[0].querySelectorAll('button');\n        const targetButton = Array.from(buttonList).find(btn => btn.getAttribute('data-id') == m);\n        jiekou(targetButton);\n        const allButtons = $('.jishu')[m].querySelectorAll('button');\n        active(allButtons, n);\n    } else {\n        active($('.jishu button'), n);\n    }\n    setTimeout(updatePadding, 100);\n    const { sources } = await geturl();\n    localStorage.setItem('HistoryTIME', Date.now());\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed, 1);\n})();\n</script>\n</body>\n</html>\n<js>\nString(result)\n.replace(/专线1/g,'非凡视频')\n.replace(/专线2/g,'暴风视频')\n.replace(/专线3/g,'量子视频')\n.replace(/内详/g,'')\n.replace(/：\\s*/g,'：')\n.replace(/<p>(?!.*集数)(.*：)<\\/p>/gm, '<p style=\"display:none;\">$1</p>');\n</js>",
    "ruleImage": "cover",
    "ruleLink": "url",
    "ruleNextPage": "page",
    "rulePubDate": "time",
    "ruleTitle": "name",
    "searchUrl": "<js>\n`{{Get('url')}}/search.php?searchword={{key}}&page={{page}},{\"webView\": true}`\n</js>",
    "shouldOverrideUrlLoading": "if (url.startsWith('legadovideo://')) {\n    java.openUrl(\n        decodeURIComponent(url.replace('legadovideo://', '')),\n        'video/*'\n    );\n    true;\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/袋鼠影视/sortUrl.js')));\n</js>",
    "sourceComment": "修改：1、优化fetch请求函数；2、优化线路切换样式；by：xiaohan231-2025/11/16\n\n新增：1、新增袋鼠影视；by：xiaohan231-2025/11/03",
    "sourceGroup": "noh",
    "sourceIcon": "https://qyyuapi.com/img/袋鼠影视.png",
    "sourceName": "袋鼠影视",
    "sourceUrl": "袋鼠影视@js:`{{Get('url')}}/search.php?searchtype=5&tid=0`",
    "type": 0,
    "variableComment": "JspHXCgzmq549cSvxZRk3cZwMPbFTNUqF8izYT/lL7zmB4iKPcwRvTVF+nSsYaYkyHFh6tU0uM6gAcU2LO/ZQnF45pl+sO+D+/WIYPhUQyHGEp6lyVJ7JKp9yWihRr9Al3sqXhKPltzub2PZi96Ke4YxqVZPjPSmL3O6xY025Sa7Vm1r1ZLIrgpD4Ksa99Q488bytyVS2P8fSjkQvADOECPkrKGclkhYWKWj0hAAvyDNKDxrCyqqqUjrKooVXTcQ3DDxjpsx5Wd29wdbu4YgaMwdlq7eM7Wgq20PNHRYMQv6mzqElmMn9R4S7YEaJiDpXXStroRJTJtLEB2i6pMCY4F02mndjqQW0PbM+tfwlL8BPYfaSJDdVkvSCRNfUL1rVOJY3HHHX1kAyOG/METDaU0ord6qUbQQMGQVmCgqResqjExJ6AI33IXMtAF1485MjO1nSz2Mi9jw/NoCjXBhnxv0A/3lmQZoYsdfz3LCCOOZKjZQKAZj20BFKz9CBUrmh0JDEZ3nAYVB1gyCKiKX1ggVppLVomlrWGW5+I5UX/5ZkqCucNxVckbJruLtKfOj2gIfGm3kal4YeJqQuSK1wUrU5uLgTDpgox9qPir7etK+0JIlYrlg4TVWln3zuf+4irCZSmjNTNonXb/scyboqwwxxs0m4gpBR6WJPKyNQf/H/pMEkzkQ1+TMO80uRyUj62GS1yS2zmWQnhmw5zC/e6gGMG+n3UoJVX7M5ebG+6eczZXttRv5daHp6UYhK9hETv6nUs0KndVbrB4xZa5JNH3SloTv48koLVJu+0NT+AIrxc1v9RB/6ClGNxWDl2ia0zkKvQsmkHDe1Ln0RzsdTWp1twd+OLzPxmZZ8DK2gkSC2+kLnG4NoSwl66hT8XUUQz8kNeIwpM8uyV1ZkArLpTSv+gN8CItVu9ISTyP3wTbe45+086Ag7tvHwawqCUUlwLzdKh+UHhqCa5EE3qGQbLOaASWmwrOsg/qhf65xBeW34nF5E4ouWsZ5OctjUyfPh3bGNWBta+OVuv5ZMVQH6xad8QNM7gNurML05I9yR8jQ2RsuvqGZA4kpbwGAvkGyUE6FWafVPrlyzjhAvM62NX+Lv5Sctymh+CCt60oO3UrLNFIlzm/Aplkg9n8xnB/YFp3xA0zuA26swvTkj3JHyEj82FLCEpw6uq915M1jjSRQToVZp9U+uXLOOEC8zrY1PSb4cQGqMbjseWdLi1WBhSJPwB2CdB+3VcE4kGmc8CDo1v5txSiD7GKjZ1ExpA/n0TI7uW6ZR3nvNOg/wEoPV9imzoa/Cp1IPhpfn0jvG5wtnG7OsTI+/eCIi6Vv9xsJW1q1FmzjfVoFyHH1/8YCBJgZInJ9HDsguXQZrO1IHWDR2kBHiloP7PEIRR8PW2268gdab40Qku+wn4SGAPnAFLTiKvacQjHpvm6MHg5qNnDPaWzjWU2yqLXqwvjvuvVQHhfax5xG7RPn8qjnnpf7fNeg8Hie5UfiqGUDHivnkrraLULZP20oLpCNmkZspQMww4JZB6KdU8ZFbQ1Dtcf0WDFdALiHBvry+3Tr7P6rnAO4W30SN5zTZOL143gt9ToGQUtPVjY4H9/hfsBA2I8iwlUmzYFYH3lDUyUeFZxmxuyWJgiCOKccgjCrFLw3ecOD47YqJyx5VzuColnzoHTAzvL0eaqgFdhbcdzLBrMF9eChijLK0ZNUgZvxmD+S5PWUhg5yzpFajFkKf+ktawtf7001RMvWRvkpQHzTC2WuR2zxSBmH1TFSNF/My97FY2wlhBDnpfrrpu6Sqp1Q2dB+cc6QN7iCqeItsVuE7RK2sugaHsq/PslfDqNvVOxKwzWi2SBTJcfgURWvAR1rLfzGGsSzqjWszFEQ/Y/pqJNefccfClfxJ/oYoyjySYoJUphtufvpgVVfbIlnA1X/C4vdwSZ87ZFR0tGbAvtA+4E+Z1WPCFwCrW/n1w47tMwyFPkCW14lE/ErB9Er3OB0GR9us/gIE/NXn073ACFcsRQfM/lHs3bJZn83cnqJJgTc3ffD6zHcJKu5QLIm8TxVatj2C6nj6WUERPKunOLvCMkRMqyKMXYeJV2BAXeg7Fv8wBttmGV7vNaFGXXi0A7JTwwmiPV6QWnF7fJbg8NHX57YKHRtW9oKv7/GO4rVegJCRZp+vaiSpMg4sb0jG4QLv6HlGtyj2vEPqGEerjWxXf9x3md3wIuACT1kXQvCCj6O/jPNPbAQbSvXliA+oH/7/Q7kcpv5mqmLi4cTslGYlaoJI5T7mum5KBhU2Sy0lfomJNz0V+svoBeDeGqDNt79gyMR2Z6dLGf1frXTuKocDbMwjPNABkMJ13q74WAaWVB16GhjaA5q9SgPfGvnfePNBH1eQkOe9vAe0mfKC2SsNj9q5YUjItkLCwTMGxGl36uHjctQmgo6wy86SBGvogm95+4LUkYH6iTVf+ouZaelqGI2qm1jdUl/xmyHwctSAPijV+bMQvs37ZJHOHL6Hnp3LlnctEulNDI3SbsgxzlxrSHDD/H5VaKaXgq/7+iCLFbAUHQ5m6Hp6Flx5psBsgHt1hzsUIaKdpHZAIDOJLf4PHwL2QhUsrF0iy2Y8qGg2ybYRj1Nm/maqYuLhxOyUZiVqgkjlCRRNw5ukCAT9V8Op1veBNqzWzdnU5nAhDcpCoHllJglmkq2Swxq9sd/AaFw8JUpMdWUf/hqVFb3YP2/+RujDlovgd7Ye4KqDmc9vqdqpMdg2ILKuOA+eHoKov0HC2VA7+SV/Lv4bVWBHgVCIZwTsc9IWNucdXdYLE8CYpHbXcp3Rucr4N5RMa+wiKIip3p031vSB1pv3++oQp8pZVGdP0hRzSoQBK54t3Y+v/vK5s6lHnKb1SH+3aBYTPDNkKZQwd6cK0xoHXmijkdJTA3I3JMxqmPzDZ8VVgf89E8oRVlVtV2DahMurt31oJUiveBBGRnKzykQ4JM6a2A1Hqz/be73tofkDucmcy1Vu4joEsqH4FGQ595Q8noc/xHfqdyjMVmb6IshfgIB1mCcKfWN9FLDeML77m9XU2H4pMImJd2f4XujhbkStX9SGvuifIQUa3LJej2GvcINlPdYzX5ABz5oPFphAadWuzrP2kvFi/fkjLMn6OOJd8jTIzANraQRNMgHu27PE7vtVszZN74q4PNQM3n07LiunU81SdH75otsKfOPusZEgzDKBUhPLuamsbXHh7R6JgV77f62CwuVWMd9jhQsZm0i/g6m+ApKeuWGVsoRG9h/g97+uvNQ6vR11F3rN7BazqbGZqWaFlJ0bWTgsHDgD/1kv7E3Ebjsnp+/pyI9Lfy6d3Z1Gvttk+GlItlG40CAQdd8MsBamCArw0mGu2nyAcCdNCMxDDBWyH4qWmfHSeIyIR0+aE1kqxxdiS+hNroCfUNnuyW/ZoX0A+UIb0iptDcOfaVemEv1DQ9fRKh0FIijFWBvDLO1C5j22WacK9Rwl3oGS8LUVWvijpkcR44UOftDjP/SWe18Y/1iCkxfblgllWWEs7Vo4RPbG4FqkFkwLicC6HJqVm/k+1yzxTcHM32xAZJ1owUTG9bmA0FGmRkVBZxzy+s/fdsyTddVduMY8iKGYsV9up7pzz3W7oNVXLT4qDmeObZVHkaIKp46stZYpui3sAm5JlK+5LN+mNBanXg4vkskJ/vd23GlSy0v+t4ejxpiZLb/hdGBnorKsSOUCZ7asHwVk/corlSIHYRelJcJtlsGlC65iQltFkqdUtgtr20XiN6u3F3DkcQMoeieIPqQvJ/TCugu5idZa+HF2lmxXnjqiydB+IquXeLCoNMLmlYLUOJIqMy2qsgAKhoKGCR4QPypHowNc0tssAOzksCyO9FyAxPr9lBLM8bRkNHLTD54rWfu4lTh+TJ2rX+U5qR47aY87GnmRDgaHDWOA+cEwpH47XOxF1oZhdNDkx/PdLztnKa8iDJeDk0BeUaJF/JtuBDHjogC51XydQBXP7qUi+y4+NOBvHGN70RJBmdnGbXw1QPPuPh1doavd+Uqom/wYq0N8XZpn9S/zoQl2qE6E+v9k2ZkiIa2zyJABpZKEr//aNW89hhVYO7NemuNy31DC0prSHWWrDKUuhGtJdM+rfd+fbnRdpSJ/h8EHTOYdqvTbX6dWIzyJYJUvHN847rcUIvWAqIY4Il1y2lt9OPYDh31xgythy872mmLS8ggkhxKWlgRK5EyzSg8awsqqqlI6yqKFV03EERYv3Ng1Ytnvly587pKi2nssCkIAqP61ILyvhZCGiTaQHDIHE6d0D5/9Dl8p3TjHG4pogTPmqwyRmki94IFHaNPZ9S+eZYdoj9680rUGsZyhv7qvTk6yo+Q4Ws2801DKOBRkOfeUPJ6HP8R36ncozFJkbujWogvjLdBmu/NUS4QgvZqfXwGUPWPPT03kDi00fzWKq0dGHUH7MQN/27l3ZFGqlKbtFGBqFCPSnR2sp0gifLLMCMrWqoUWi8CKbH3wQpgM99GNJvXUDu11XLpdjJTmXAodUmIeoXtjrqYMMVWDK9JVlOCpW7cdc5URjUhOTEbXz2UzbE+YqFC1v+J0REuDNNUK52vB6A74ZZfq/Y8PRnzrDm+J6vWYXbOWXBlBT7H34HMJH6j8uONbYU5Y1MRh6dQgN8QR/mao30Gw0GyQQUCFXxEsZN3Wtoze2khAFdCtfzOzZVvXRn/YJBOpKyQXefO34NbogSy7RuOOiMUh8ofk70X9CyoZLHEdIY5cHeM1863ZAqrSuOhsWF7qwEid/vVnUojl8ZLkJ6z62mb19EpduhnZLA/acDc+LQLN6FpDuTSnOc/p+qroAsQWaWqYoUIYuvXf9n3ny2dIt3J7lgVIECIuTKsrQcWAx+l9ShHkzqOSN42MFM5HDg8PZRcN+y9YzZuKD0XGTinLnoy11B0DhUx9+ulaemJaMuuJlIVCS2f8D6AS+CNemsbHbRVpmUSavmxKdYO6BG6n5N1rs0GMIdc6qkmGfE0RTSjmw6b8bNzjn8+nek//lddPmcb7d++VEMmLSfEVvxNTuLIoHUFOzhsKhzl7MJrADmDCgfwcm54dt1XRsqB7axxqwwm5KDzfrAGlftKaxHocKl6UK8zhCIeJnqFwBj+IbUiAtaBHPj6sHilt1xbprwD4YQpG1rHiiSlrY87LhgHqMaq122H+4LlnvXsk/EK/qc/GkF8lCFsQ7XzTyOP/8Dp57hEMNVdelDA2MFhDIr/T1E9zSC+AuTAmew9aNdKuWYTH6syCY9Zh6n38zAT+/R5SLEPHciVHD0j1mRBCdWyRExBw8EmPcIEHG9M5mzKSat5njPkK3dNmBUrcy6INdnV2pUiX2QNgPqwxkmdt8RhhU1Ryy/TDEL4giaz7R9L7SAg/jA6sSz0F1NxLkwcVq1Elqva1WdwQjYtkYJfBcV9L5TjVkKtkOIygzmZ28iMA0WSTsC3Jq+lFkBH/B93ZxaHn3pMieg0RdkjFLYNu0LbwRHnD1HcahW7AaXd2kydQMcZnwThzQvJ0PkJ9D6espdR/Beci4MoQK6Y5nTVcAhhbtvxl72purr9Oypk8SxQ15QrgT75SFL0Tv5xiBM+anq15Wx5gbXxyuKPwCUQBe68uyN+bHfAQfvYQsWk7L8ZrR+qx+/JBpmkuIjMu8FS3eApxinpOeRTOfgRaOnGL6JFi6mk8ypVfjYxRCAC543lQygfFHWzx3L1Qs3Dm7eZWcwW1ikYAmWuTVHJEmYbz5Wcm2XTqje62UFLgM7B/G2fDzqEAcj1erxKFMWItJHnQ+X3LnFowoniKzjCTHjaStWl7SXYRBy4GfkVfTuTI18xXxdRbV58rvp+fwD5rp42GycH4XIC7bfUypfI1ER4S3X5PC+rxgRgxYAeq+EsXs75VCKl+B6ocS+ifVQFRKxzp+/hGW+1yZjsP8W8/jJlaxZ6ejjxp6qXnh8Gy6aPQgy1rUbcijjtEFTljwjS5O55EOvuKqsno3PWaYqWlnf/SXGlntUQ5/OVInesu02urA97PLB0VVZCrZDiMoM5mdvIjANFkk7Tn/puGXgWWos5DJUKqnq9kkQc1BEmfUgo+hULUeEKUPssegFo22YGVM5Dx0duIETteLHV0mOjXk9agXnGgHjrXa0XTfFf+12ERdmMoYm/SPXa8LpO7xaUgHLuHJmQ57MLLk0GD1sW0M4ki0MTJLi1b+4IRPvr6peXrciHPCZa+Jpsa8PRXax9A7KS0/Os/1X56ZoAahWaPUgtvrvAFTcNuuSKzH8ixOxmcgrNICzzbIFqkFkwLicC6HJqVm/k+1yYvuSyxmO6c0yDNWLhUMguwi8bYQFtaJObhAeEN7X8Tw=="
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 887,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.layui-flow-more layui-anim layui-anim-scaleSpring",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleImage": "tag.a@tag.img@src",
    "ruleLink": "tag.a@href<js>\nbastUrl = \"http://qk.lifves.com/\"+result\n</js>",
    "ruleNextPage": "class.page@text.下页@href",
    "rulePubDate": "",
    "ruleTitle": "tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "noh",
    "sourceIcon": "http://img04.sogoucdn.com/app/a/100520146/d086a8d4d575d1c64992d69d5857e220",
    "sourceName": "意林•原创版",
    "sourceUrl": "http://qk.lifves.com/magazine.php?s=%E6%84%8F%E6%9E%97&key=4fd8f670-f98d-459d-8263-044f6d5e4d4a",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 894,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.layui-flow-more layui-anim layui-anim-scaleSpring",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleImage": "tag.a@tag.img@src",
    "ruleLink": "tag.a@href<js>\nbastUrl = \"http://qk.lifves.com/\"+result\n</js>",
    "ruleNextPage": "class.page@text.下页@href",
    "rulePubDate": "",
    "ruleTitle": "tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "noh",
    "sourceIcon": "http://img02.sogoucdn.com/app/a/100520146/6ef9ecb00ce1579d98b9a78d13ea1448",
    "sourceName": "读者",
    "sourceUrl": "http://qk.lifves.com/magazine.php?s=%E8%AF%BB%E8%80%85&key=ea265b17-0d79-4240-b3db-0b4cf94de08b",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 900,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n \"User-Agent\":\"Mozilla/5.0 (Linux; Android 12; HarmonyOS; OCE-AN50; HMSCore 6.15.0.302) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 HuaweiBrowser/16.0.3.302 Mobile Safari/537.36\",\n \"referer\":\"https://jav98.xyz/\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUrl": "https://jav98.link/",
    "preload": false,
    "ruleArticles": ".works@a",
    "ruleContent": "<script>host=\"{{source.getKey()}}\"</script>\n\n<!--播放器-->\n<div id=\"MacPlayer\">\n  <iframe src=\"\" border=\"0\" marginwidth=\"0\" framespacing=\"0\" marginheight=\"0\" frameborder=\"0\" scrolling=\"no\" vspale=\"0\" allowfullscreen=\"ture\" noresize=\"\"></iframe>\n</div>\n\n{{data=java.getElements('html');data=String(result).replace(/href=\\\"\\/(actress|genre|series|studio|label)\\/[^\"]+\\\"/g,'').replace(/href=\\\"\\/play/g,'link=\"/play').replace(/磁链资源/,'点击番号跳转外部下载').replace(/<html>|<\\/html>/g,'')}}\n\n\n<!--引入jquery-->\n<script src=\"https://code.jquery.com/jquery-3.0.0.min.js\"></script>\n<script>\n  var play=$('.is-link');\n  var embla=$('.embla');\n  var player= $('#MacPlayer');\n  var iframe= $('#MacPlayer iframe');\n  play.click(function(){\n  \t  url=host+$(this).attr('link');\n  \t  req(url);\n  });\n  //发送请求\n function req(url){\n   var xhr = new XMLHttpRequest();\n   xhr.open('get',url);\n   xhr.send();\n   //接收返回数据\n   xhr.onload=async function(){\n      data=await xhr.responseText;\n      //获取播放链接\n      data=data.match(/http.*\\.m3u8/)[0];\n      jx=\"https://codjx.com?url=\";\n      embla.css('height','240px');\n      player.css('display','block');\n      iframe.attr('src',data);\n   }\n };\n //初始化\n  (()=>{\n   \t \n\t  })();\n</script>",
    "ruleImage": "{{@@.work-cover@img@src}},{\"headers\":{\"Accept\":\"image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8\",\"referer\":\"{{source.sourceUrl}}\"}}\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "a.0@href##$##,{\"webView\":true}",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.work-id@text}} {{@@.work-actress@text}} {{@@.work-date@text}}",
    "ruleTitle": ".work-title@text\n<js>\njava.put('title',result)\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "🔥热门::/top-videos?page={{page}}\n可播放::/stream?page={{page}}\n最新影片::/latest?page={{page}}\n番号搜索::/search?type=id&q={{source.getVariable()}}\n磁力::/updated?page={{page}}\n7日::/rank/7-days\n30日::/rank/30-days\n昨日::/rank/1-days\n去年::/rank/{{year=(new Date()).getFullYear();year=Number(year)-1}}\n最新::/latest?page={{page}}",
    "sourceComment": "源变量番号需要输入完整才有搜索结果\n例如：RCTD-065\n\n地址发布页  https://jav98.link/\n\nhttps://img2.baidu.com/it/u=1877882868,1186480563&fm=253&fmt=auto&app=138&f=PNG?w=500&h=500\nhttps://img1.baidu.com/it/u=634625250,3422457345&fm=253&fmt=auto?w=800&h=800",
    "sourceGroup": "h",
    "sourceIcon": "https://img0.baidu.com/it/u=1621557539,808532458&fm=253&fmt=auto?w=800&h=800",
    "sourceName": "JAV档案ᴴ",
    "sourceUrl": "https://jav8.pro",
    "style": "html,body,.container{\n\tbackground-color:#222 !important;\n}\n#MacPlayer{\n\tdisplay:none;\n\tposition:fixed;\n\ttop:0;left:0;\n\twidth:100%;height:240px;\n\tz-index:99999;\n\tbackground-color:black;\n}\niframe{\n\twidth:100%;height:100%;\n}\n#main{\n\tmargin:0 !important;\n\tpadding:15px !important;\n}\n.tags,.intro{\n\tmargin:0 !important;\n\tpadding:0 !important;\n}\n.tag{\n\tmargin-right:5px !important;\n}\n.actors{\n\tmargin-bottom:10px !important;\n}\n.navbar,.article-more,.apps,.intro-text,footer{\n\tdisplay:none !important;\n}\n.column{\n\tmargin-top:0 !important;\n\tpadding:0 10px !important;\n}\ndt a,dt a:focus{\n\tborder:none !important;\n\toutline:none !important;\n}\n.attributes dd:nth-child(3){\n\tdisplay:none !important;\n}\n.attributes dt:nth-child(4){\n\tdisplay:none !important;\n}\n.attributes dd:nth-child(n+8){\n\tdisplay:none !important;\n}\n.attributes dt:nth-child(n+9){\n\tdisplay:none !important;\n}\n.magnet-info .button:nth-child(even){\n\tdisplay:none !important;\n}\n.column:nth-child(1){\n\tpadding:10px !important;\n\tmargin:15px 10px !important;\n\tborder:0 !important;\n\tborder-radius:10px !important;\n\tbox-shadow: 0 2px 8px 0 rgba(0,0,0,0.50);\n}\n.attributes,.magnets{\n\tborder:0 !important;\n\tborder-radius:10px !important;\n\tbox-shadow: 0 2px 8px 0 rgba(0,0,0,0.50);\n}\n.panel-header{\n\tborder-radius:10px 10px 0 0 !important;\n}\n.magnets a{\n\tcolor:black;\n}\n.highlight{\n\tcolor:#FF3D00 !important;\n}\n\n/*白天主题配色*/\n@media(prefers-color-scheme:light){\n  html,body,.container{background:#FEFEFE !important;}\n  .title,.actors a{color:black !important;}\n  .highlight{color:#BF360C !important;}\n  .tag{background:black !important;color:#FEFEFE !important;}\n  dd,dt{color:black !important;}\n  .magnets{background:#FEFEFE !important;}\n  dt a{color: black !important;}\n  .panel-header{color:#FEFEFE !important;\n\tbackground:black !important;}\n\t.attributes,.magnets{background:#FEFEFE !important;}\n}",
    "type": 0,
    "variableComment": "❗️源变量番号需要输入完整才有搜索结果❗️\n❗️例如：RCTD-065❗️\n❗️仅支持番号❗️"
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "concurrentRate": "20/10000",
    "contentBlacklist": "",
    "customOrder": 901,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "<js>\nvar _0x4742=[\"YWVzQmFzZTY0RGVjb2RlVG9TdHJpbmc=\",\"dmFyaWFibGVDb21tZW50\",\"IyMjI3hpYW8taGFuJiYmJg==\",\"QUVTL0VDQi9QS0NTN1BhZGRpbmc=\"],_0xc7ef=function(_0x474281,_0xc7ef55){_0x474281=_0x474281-0x0;var _0x1db329=_0x4742[_0x474281];if(_0xc7ef.xhTBFx===void 0x0){(function(){var _0x1c36ea=function(){var _0x2bf78c;try{_0x2bf78c=Function(\"return (function() {}.constructor(\\\"return this\\\")( ));\")()}catch(_0xcfd8ec){_0x2bf78c=window}return _0x2bf78c},_0xfc2bd5=_0x1c36ea(),_0x336b66=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";_0xfc2bd5.atob||(_0xfc2bd5.atob=function(_0x53f773){var _0x31bc68=String(_0x53f773).replace(new RegExp(\"=+$\",\"\"),\"\"),_0x393f6b=\"\";for(var _0x2aec0d=0x0,_0x2d3c6f,_0x1587ad,_0x4c8021=0x0;_0x1587ad=_0x31bc68.charAt(_0x4c8021++);~_0x1587ad&&(_0x2d3c6f=_0x2aec0d%0x4?_0x2d3c6f*0x40+_0x1587ad:_0x1587ad,_0x2aec0d++%0x4)?_0x393f6b+=String.fromCharCode(0xff&_0x2d3c6f>>(-0x2*_0x2aec0d&0x6)):0x0)_0x1587ad=_0x336b66.indexOf(_0x1587ad);return _0x393f6b})})();_0xc7ef.ylPppH=function(_0x1cf9a9){var _0x1bdc89=atob(_0x1cf9a9),_0x3d0935=[];for(var _0x58ca16=0x0,_0x45cb33=_0x1bdc89.length;_0x58ca16<_0x45cb33;_0x58ca16++)_0x3d0935+=\"%\"+(\"00\"+_0x1bdc89.charCodeAt(_0x58ca16).toString(0x10)).slice(-0x2);return decodeURIComponent(_0x3d0935)};_0xc7ef.WMElMN={};_0xc7ef.xhTBFx=!0x0}var _0x191547=_0xc7ef.WMElMN[_0x474281];_0x191547===void 0x0?(_0x1db329=_0xc7ef.ylPppH(_0x1db329),_0xc7ef.WMElMN[_0x474281]=_0x1db329):_0x1db329=_0x191547;return _0x1db329};eval(String(java[_0xc7ef(\"0x0\")](source[_0xc7ef(\"0x1\")],_0xc7ef(\"0x2\"),_0xc7ef(\"0x3\"),\"\")));\nuser_Check();\nheaders={\n    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0\",\n    \"Origin\": Get('url'),\n    \"Referer\": Get('url'),\n    \"Cookie\": cache.get(Get('url') + 'ck') || ''\n}\ncache.put(java.md5Encode16(Get('url') + \"headers\"),JSON.stringify(headers));\nJSON.stringify(headers);\n</js>",
    "injectJs": "",
    "jsLib": "function get(tag,num) {\n    flag = ['','2109','192','15','4747','1821'];\n    sort = ['','post_date','video_viewed','rating','duration'];\n    duration = ['','&duration_from=60','&duration_from=300','&duration_from=600','&duration_from=1200','&duration_from=1800','&duration_from=3600','&duration_to=600&duration_from=1','&duration_to=1200&duration_from=1'];\n    var e = eval(tag + '[' + num + ']');\n    return e;\n}\nfunction Get(e) {\n    const { java, source, cookie, cache } = this;\n    var get = JSON.parse(source.getVariable());\n    return get[e];\n}\nfunction Map(e) {\n    const { java, source, cookie, cache } = this;\n    var infomap = source.getLoginInfoMap();\n    var map = (infomap !== null && infomap.get(e)) ? infomap.get(e) : '';\n    return String(map);\n}\nfunction Skey(e) {\n    const { java, source, cookie, cache } = this;\n    var infomap = source.getLoginInfoMap();\n    var map = (infomap !== null && infomap.get(e) && String(infomap.get(e)).length > 0) ? infomap.get(e) : 'secret';\n    return String(map).replace(/\\/$/,'');\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "var res = result;\nurl = java.ruleUrl;\nif(res.body().includes('no-js')){\n    cookie.removeCookie(Get('url'));\n    result = java.startBrowserAwait(url,\"验证\");\n    ck = cookie.getCookie(Get('url'));\n    cache.put(Get('url') + 'ck',ck);\n}\nresult;",
    "loginUi": "[\n  {\n    name: \"💡　　 源　　 站　　 测　　 试　　 💡\",\n    type: \"button\",\n    action: \"test(1)\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n  { name: \"查看当前\", type: \"button\", action: \"look(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"查看历史\", type: \"button\", action: \"look(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"恢复默认\", type: \"button\", action: \"test(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"搜索：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  点击切换分类  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"主题标签\", type: \"button\", action: \"o(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"作者标签\", type: \"button\", action: \"o(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  { name: \"༺ˇ»`ʚ  主题标签排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"标题\", type: \"button\", action: \"p(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"浏览\", type: \"button\", action: \"p(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"评价\", type: \"button\", action: \"p(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"数量\", type: \"button\", action: \"p(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n\n  { name: \"༺ˇ»`ʚ  切换列表排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"默认\", type: \"button\", action: \"q(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"最新\", type: \"button\", action: \"q(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"观看\", type: \"button\", action: \"q(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"好评\", type: \"button\", action: \"q(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"时长\", type: \"button\", action: \"q(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  筛选上传时间  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"s(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"一天\", type: \"button\", action: \"s(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"两天\", type: \"button\", action: \"s(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"一周\", type: \"button\", action: \"s(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"一月\", type: \"button\", action: \"s(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"三月\", type: \"button\", action: \"s(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"一年\", type: \"button\", action: \"s(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n\n  { name: \"༺ˇ»`ʚ  筛选视频时长  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"t(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">1m\", type: \"button\", action: \"t(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">5m\", type: \"button\", action: \"t(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">10m\", type: \"button\", action: \"t(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">20m\", type: \"button\", action: \"t(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">30m\", type: \"button\", action: \"t(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">60m\", type: \"button\", action: \"t(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"0-10m\", type: \"button\", action: \"t(7)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"0-20m\", type: \"button\", action: \"t(8)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换取向  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"r(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"Straight\", type: \"button\", action: \"r(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"Gay\", type: \"button\", action: \"r(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"Futa\", type: \"button\", action: \"r(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"Music\", type: \"button\", action: \"r(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"Iwara\", type: \"button\", action: \"r(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  分类加载页数  ɞ´«ˇ༻\", type: \"button\", action: \"login('【加载页数】' + n(2) + '填写数字或范围，如：15或10-20')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"页数：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  作者字母筛选  ɞ´«ˇ༻\", type: \"button\", action: \"login('【字母筛选】' + n(2) + '填写字母筛选作者')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"字母：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻\", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号“,”隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"收藏：\", type: \"text\" },\n\n  { name: \"长按倍速：\", type: \"text\" },\n  { name: \"跳过片头：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  主题模式切换  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"日间模式\", type: \"button\", action: \"a(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"夜间模式\", type: \"button\", action: \"a(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  {\n    name: \"💡　　 源　　 站　　 打　　 印　　 💡\",\n    type: \"button\",\n    action: \"test()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  }\n]",
    "loginUrl": "var fburl = '';\noriginal = {\n    'ci0': 0,\n    'ci1': 0,\n    'ci2': 0,\n    'ci3': 0,\n    'o': 0,\n    'p': 0,\n    'q': 0,\n    'r': 0,\n    's': 0,\n    't': 0,\n    'a': 0,\n    'url': 'https://rule34gen.com',\n    'urls': [\n        'https://rule34gen.com',\n        'https://rule34gen.com'\n    ]\n};\ntry {\n    $$$ = JSON.parse(source.getVariable());\n    if ($$$ == null) {\n        error;\n    } else {\n        '';\n    };\n} catch (e) {\n    $$$ = original;\n    put($$$);\n}\nx = '⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚';\nvar Headers = String(cache.get(java.md5Encode16(Get('url') + \"headers\")));\nvar Option = {\n    \"method\": \"GET\",\n    \"headers\": Headers\n};\nfunction test(e) {\n    if (e == undefined) {\n        return java.log('\\n' + JSON.stringify($$$['urls'], null, '\\t')) + login('【源站输出提示】' + n(2) + '源站已打印完毕，请到日志查看');\n    }\n    if (e == 0) {\n        login('【初始化提示】' + n(2) + '已恢复默认设置');\n        return put(original);\n    }\n    date1 = new Date().getTime();\n    html = java.ajax($$$.urls[e]);\n    if(html.includes('no-js')){\n        cookie.removeCookie(Get('url'));\n        java.startBrowserAwait($$$.urls[e],\"验证\").body();\n        date1 = new Date().getTime();\n        html = java.ajax($$$.urls[e]);\n    }\n    date2 = new Date().getTime();\n    t = date2 - date1;\n    time = t / 1000 + 's';\n    c = String(html).indexOf('Login');\n    logTime = '【' + name(e) + '】\\n┋┋\\n' + '解析时间：' + time;\n    if (c == -1 || t > 5000) {\n        return login('【访问失败提示】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♣️源站已失效(可能被墙)♣️\\n┋┋\\n请更新网址/切换源站/切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else if (t < 1000) {\n        return login('【网络环境优良】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n❤️延迟低，推荐使用此站❤️\\n┋┋\\n网络环境优良，请继续保持状态\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else if (t >= 1000 && t < 2000) {\n        return login('【网络环境一般】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♦️延迟一般，勉强可使用♦️\\n┋┋\\n请切换其他源站或切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else if (t >= 2000 && t < 5000) {\n        return login('【网络环境堪忧】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♠延迟过高，不建议使用♠\\n┋┋\\n请切换其他源站或切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    }\n}\nfunction put(data) {\n    return source.setVariable(JSON.stringify(data, null, '\\t'));\n}\nfunction update() {\n    $$$['urls'].splice(original['urls'].length);\n    time = new Date().getTime();\n    html = java.webViewGetOverrideUrl(null, fburl + '?t=' + time, null, '');\n    J = org.jsoup.Jsoup.parse(html);\n    u = J.select('.col-md-8 a');\n    for (i in u) {\n        host = String(u[i].attr('href'));\n        if (String($$$['urls']).indexOf(host) === -1) {\n            java.log('\\n✅已添加源站：\\n' + host);\n            $$$['urls'].push(host);\n            put($$$);\n        }\n    }\n    return login('【源站更新提示】' + n(2) + '源站更新完毕，请到日志查看');\n}\nfunction name(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return x[e] + $$$.urls[e];\n}\nfunction login(e) {\n    if (e == undefined) {\n        return;\n    }\n    java.longToast(e);\n}\nfunction n(e) {\n    n = '\\n';\n    for (m = 1; m < e; m++) {\n        n = n + '\\n';\n    }\n    return n;\n}\nfunction k(e) {\n    k = ' ';\n    for (q = 1; q < e; q++) {\n        k = k + ' ';\n    }\n    return k;\n}\nfunction l(e) {\n    l = '';\n    for (o = 1; o < e; o++) {\n        l = l + '';\n    }\n    return l;\n}\nfunction look(e) {\n    if (e == 0) {\n        return login('【查看当前源站】\\n\\n┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋' + ('\\n ' + '📌' + name($$$.ci0)) + '\\n┋┋' + ('\\n' + '🗳订阅分类：' + typeO($$$.o)) + '\\n┋┋' + ('\\n' + '🎯取向分类：' + typeR($$$.r)) + '\\n┋┋' + ('\\n' + '📚主题排序：' + typeP($$$.p)) + '\\n┋┋' + ('\\n' + '📚分类排序：' + typeQ($$$.q)) + '\\n┋┋' + ('\\n' + '📅上传时间：' + typeS($$$.s)) + '\\n┋┋' + ('\\n' + '🎞视频时长：' + typeT($$$.t)) + '\\n┋┋' + ('\\n' + '🌗主题模式：' + typeA($$$.a)) + '\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else {\n        return login('【查看历史接口】\\n\\n┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋' + ('\\n ci1：' + name($$$.ci1)) + '\\n┋┋' + ('\\n ci2：' + name($$$.ci2)) + '\\n┋┋' + ('\\n ci3：' + name($$$.ci3)) + '\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    }\n}\nfunction $(e) {\n    if (e == undefined) {\n        e = result['序号：'];\n        e = e > 0 ? e : '0';\n    }\n    if (/^ci[123]$/.test(e)) {\n        eval('i=$$$.' + e);\n    }\n    if (/\\D|^$/.test(e) || e < 0 || e >= $$$['urls'].length) {\n        return login('【源站错误提示】' + n(2) + '已选择的源站无效，请重新选择');\n    }\n    $$$['url'] = $$$['urls'][e];\n    $$$['ci3'] = $$$['ci2'];\n    $$$['ci2'] = $$$['ci1'];\n    $$$['ci1'] = $$$['ci0'];\n    $$$['ci0'] = e;\n    put($$$);\n    test(e);\n}\nO = ['主题标签','全部作者'];\nfunction typeO(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return O[e];\n}\nfunction o(e) {\n    if (o == undefined) {\n        o = result.o;\n    }\n    if (e == $$$.o) {\n        return login('【分类切换提示】' + n(2) + '已经选择此分类，无需更换');\n    }\n    login('【分类切换提示】' + n(2) + '已经切换到[' + typeO(e) + ']分类，请刷新分类');\n    $$$.o = e;\n    return put($$$);\n}\nP = ['标题','浏览','评价','数量'];\nfunction typeP(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return P[e];\n}\nfunction p(e) {\n    if (p == undefined) {\n        p = result.p;\n    }\n    if (e == $$$.p) {\n        return login('【主题排序提示】' + n(2) + '已经选择此排序，无需更换');\n    }\n    login('【主题排序提示】' + n(2) + '已经切换到[' + typeP(e) + ']排序，请刷新分类');\n    $$$.p = e;\n    return put($$$);\n}\nQ = ['默认','最新','观看','好评','时长'];\nfunction typeQ(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return Q[e];\n}\nfunction q(e) {\n    if (q == undefined) {\n        q = result.q;\n    }\n    if (e == $$$.q) {\n        return login('【排序切换提示】' + n(2) + '已经选择此排序，无需更换');\n    }\n    login('【排序切换提示】' + n(2) + '已经切换到[' + typeQ(e) + ']排序');\n    $$$.q = e;\n    return put($$$);\n}\nR = ['全部','Straight','Gay','Futa','Music','Iwara'];\nfunction typeR(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return R[e];\n}\nfunction r(e) {\n    if (r == undefined) {\n        r = result.r;\n    }\n    if (e == $$$.r) {\n        return login('【取向切换提示】' + n(2) + '已经选择此取向，无需更换');\n    }\n    login('【取向切换提示】' + n(2) + '已经切换到[' + typeR(e) + ']取向');\n    $$$.r = e;\n    return put($$$);\n}\n\nS = ['全部','一天','两天','一周','一月','三月','一年'];\nfunction typeS(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return S[e];\n}\nfunction s(e) {\n    if (s == undefined) {\n        s = result.s;\n    }\n    if (e == $$$.s) {\n        return login('【筛选上传时间】' + n(2) + '已经选择此时间，无需更换');\n    }\n    login('【筛选上传时间】' + n(2) + '已经切换到[' + typeS(e) + ']时间');\n    $$$.s = e;\n    return put($$$);\n}\n\nT = ['全部','>1m','>5m','>10m','>20m','>30m','>60m','0-10m','0-20m'];\nfunction typeT(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return T[e];\n}\nfunction t(e) {\n    if (t == undefined) {\n        t = result.t;\n    }\n    if (e == $$$.t) {\n        return login('【筛选视频时长】' + n(2) + '已经选择此时长，无需更换');\n    }\n    login('【筛选视频时长】' + n(2) + '已经切换到[' + typeT(e) + ']时长');\n    $$$.t = e;\n    return put($$$);\n}\n\nA = ['日间','夜间'];\nfunction typeA(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return A[e];\n}\nfunction a(e) {\n    if (a == undefined) {\n        a = result.a;\n    }\n    if (e == $$$.a) {\n        return login('【主题切换提示】' + n(2) + '已经选择此模式，无需更换');\n    }\n    login('【主题切换提示】' + n(2) + '已经切换到[' + typeA(e) + ']模式');\n    $$$.a = e;\n    return put($$$);\n}",
    "preload": false,
    "ruleArticles": ".th",
    "ruleContent": "<js>\n//获取集数\nvar n = 0;\nvar names = ['原版视频'];\nvar list = [];\nURL = baseUrl;\nlist.push(URL);\njishu = list.map(($, i)=>{\n    var value = '',name = '',bt = '',fm = '';\n    html = $ == baseUrl ? result : java.ajax($);\n    J = org.jsoup.Jsoup.parse(html);\n    name = names[i];\n    var Value = [];\n    var Value1 = [];\n    var list1 = J.select('.wrap:contains(Download)').select('a');\n    for (j in list1) {\n        Value1.push({src:String(list1[j].attr('href')).replace(/([^']+\\/get_file\\/\\d+\\/[^']{32}).*/,'$1'),size:String(list1[j].text()).replace(/.*?(\\d+)p/,'$1')});\n    }\n    Value1.sort((a, b) => parseInt(b.size) - parseInt(a.size));\n    var regex = /function\\/0\\/([^']+\\/get_file\\/[^']+)/g;\n    var Value2 = [];\n    let match;\n    while ((match = regex.exec(html)) !== null) {\n        Value2.push({src:String(match[1]).replace(/[^']+\\/get_file\\/\\d+\\/[^']{32}(.*)/,'$1'),size:String(match[1]).replace(/.*?_(\\d+)p?\\..*/,'$1')});\n    }\n    Value2.sort((a, b) => parseInt(b.size) - parseInt(a.size));\n    for (j in Value1) {\n        Value.push({src:Value1[j].src+Value2[j].src,size:Value1[j].size});\n    }\n    value = JSON.stringify(Value);\n    bt = J.select('h1')[0].text();\n    fm = Get('url') + '/contents/videos_screenshots/' + String(Value2[0].src).replace(/.*?\\/(\\d+\\/\\d+\\/).*/,'$1') + 'preview.jpg';\n    return `<button onclick=\"jishu(this)\" value=${value} data-bt=\"${bt}\"  data-fm=\"${fm}\"><b>${name}</b></button>`;\n}).join('\\n');\n\nstyle = ' style=\"display:none;\"';\njishu = `<div class=\"jishu\" data-n=\"${n}\"${style}>\\n<p>🎥 视频版本：&lrm;</p>\\n<p>${jishu}</p>\\n</div>\\n`;\n\n//返回json\nJSON.stringify({\n    jishu: jishu\n})\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title>{{@@h1@text}}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https://qyyuapi.com/css/plyr.css\">\n<style>\n* {\n    z-index: 0;\n    margin: 0;\n    padding: 0;\n}\n\nbody {\n    margin: auto;\n    background: #{{Get('a') == 0 ? 'bbb' : '333'}};/* 网页背景颜色 */\n    width: 100%;\n}\n\nbody>p:first-of-type {\n    width: 100%;\n    position: fixed;\n    top: 0px;\n    text-indent: 0px;\n    height: 16px;\n    font-size: 0.7rem;\n    border-radius: 0px 0px 0px 0px;\n    background: #000;\n    color: #fff;\n    white-space: nowrap;\n    overflow: auto;\n    z-index: 300;\n}\n\nvideo {\n    visibility: hidden;\n}\n\n.video-container {\n    position: fixed;\n    top: 15px;\n    width: 100%;\n    height: 56.25vw;\n    z-index: 200;\n}\n\n#player {\n    position: relative;\n    width: 100%;\n}\n\n:root {\n    --plyr-color-main: #00aaff;/* 播放器主要颜色 */\n    --plyr-control-color: #fff;/* 播放器控件图标颜色 */\n    --plyr-control-background: transparent;/* 播放器控件背景颜色 */\n    --plyr-video-background: transparent;/* 视频背景颜色 */\n    --plyr-range-fill-background: #0099ee;/* 进度条已填充部分的颜色 */\n    --plyr-range-thumb-background: #fff;/* 进度条滑块的颜色 */\n}\n\n.plyr {\n    height: 100% !important;\n    width: 100% !important;\n    object-fit: cover;\n}\n\n.plyr__control--overlaid {\n    background: transparent;\n    border: 0;\n    border-radius: 100%;\n    color: #fff;\n    left: calc(50% - 25px);\n    top: calc(50% - 45px);\n    transform: none;\n    width: 60px;\n    height: 60px;\n    padding: 0;\n    z-index: 2;\n}\n\n.plyr__control--overlaid svg {\n    width: 50px;\n    height: 50px;\n    left: calc(50% - 25px);\n    top: calc(50% - 25px);\n    transform: none;\n    fill: #fff;/* 大播放器控件图标颜色 */\n}\n\n.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true] {\n    background: transparent;/* 播放器控件悬停/点击背景颜色 */\n    color: #00aaff;/* 播放器控件悬停/点击图标颜色 */\n}\n\n.plyr__controls .plyr__controls__item {\n    margin-left: auto;\n    margin: calc(var(--plyr-control-spacing,10px)/4);\n}\n\n.plyr__time--duration {\n    display: inline-block!important;\n}\n\n.plyr__time+.plyr__time:before {\n    margin-right: 8px!important\n}\n\n@media (max-width: 640px) {\n    .plyr__captions {\n        margin-bottom:-8px\n    }\n\n    .plyr__progress__container {\n        margin-right: 5px\n    }\n\n    .plyr__time {\n        position: absolute;\n        bottom: 29px;\n    }\n\n    .plyr__time--current {\n        left: 108px\n    }\n\n    .plyr__time+.plyr__time:before {\n        content: \"\"!important\n    }\n\n    .plyr__time--duration {\n        right: 110px;\n    }\n\n    .plyr__volume {\n        width: auto;\n        max-width: 32px!important;\n        min-width: 32px!important\n    }\n\n    input[id^=plyr-volume-] {\n        display: none!important;\n    }\n\n    .plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--pip-supported [data-plyr=pip] {\n        display: none!important;\n    }\n}\n\ndetails {\n    width: 100%;\n    height: auto;\n    margin: auto;\n}\n\ndetails>img {\n    position: fixed;\n    width: 100%;\n    max-height: 90vw;\n    object-fit: contain;\n    border-bottom: 0.5px solid #333;\n    padding-top: calc(56.25vw + 16px + 1.5em);\n    z-index: 50;\n}\n\ndetails[open]>summary {\n    background: #{{Get('a') == 0 ? 'bbb' : '333'}};/* 标题背景颜色 */\n}\n\nsummary {\n    position: fixed;\n    background: #{{Get('a') == 0 ? 'ddd' : '555'}};/* 标题背景颜色 */\n    color: #{{Get('a') == 1 ? 'ddd' : '111'}};/* 标题文字颜色 */\n    box-shadow: 0 0.5px 3px #{{Get('a') == 1 ? '000' : '555'}};/* 标题阴影颜色 */\n    list-style: none;\n    width: 100%;\n    padding-top: calc(56.25vw + 16px);\n    outline: none;\n    line-height: 1.5;\n    text-align: left;\n    word-wrap: break-word;\n    z-index: 100;\n}\n\nsummary>h3 {\n    width: 95%;\n    margin: auto;\n}\n\nsummary::-webkit-details-marker {\n    display: none;\n}\n\n.all-info {\n    position: relative;\n    background: #{{Get('a') == 0 ? 'bbb' : '333'}};/* 详情信息背景颜色 */\n    color: #{{Get('a') == 1 ? 'bbb' : '333'}};/* 详情信息文字颜色 */\n    margin: auto;\n    width: 100%;\n    height: auto;\n    padding-top: calc(56.25vw + 24px + 1.5em);\n}\n\n.all-info>div {\n    width: 100%;\n    margin: auto;\n}\n\n.all-info>p {\n    text-indent: 0px;\n}\n\n.all-info>div>p {\n    width: 90%;\n    margin: 5px 5%;\n    outline: none;\n    text-align: left;\n    word-wrap: break-word;\n}\n\n.jishu button:hover {\n    background-color: #{{Get('a') == 0 ? 'ccc' : '222'}};/* 按钮悬停背景颜色 */\n    border: 1px solid #267198;/* 按钮悬停边框颜色 */\n}\n\n.jishu button {\n    width: 29.5%;\n    margin: 1.25%;\n    padding: 5px;\n    outline: none;\n    border-radius: 8px;\n    border: 1px solid #888;\n    background-color: #{{Get('a') == 0 ? 'ccc' : '222'}};/* 集数按钮背景颜色 */\n    color: #{{Get('a') == 1 ? 'bbb' : '333'}};/* 集数按钮文字颜色 */\n    font-size: 0.7rem;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n}\n\n.jishu button.active {\n    background-color: #{{Get('a') == 0 ? 'ccc' : '222'}};/* 已选集数按钮背景颜色 */\n    color: #267198;\n    border: 1px solid #267198;\n    position: sticky;\n    left: 0;\n    right: 0;\n}\n</style>\n</head>\n<body>\n<p></p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<details>\n  <summary>\n    <h3>{{@@h1@text}}</h3>\n  </summary>\n  <img>\n</details>\n<div class=\"all-info\">\n{{JSON.parse(result).jishu}}\n<div>\n    <p>📆 更新：{{@@.item_info.0@text}}</p>\n    <p>🎥 播放：{{@@.item_info.1@text##\\s}}</p>\n    <p>👍 点赞：{{@@.voters.count@text}}</p>\n    <p>👤 上传：#{{@@.col:contains(Uploaded)@img@alt}}</p>\n    <p>🕵️‍♀️ 作者：#{{@@.col:contains(Artist)@span@text##\\n## \\#}}</p>\n    <p>📦 主题：#{{@@.col:contains(Categories)@span@text##\\n## \\#}}</p>\n    <p>🔖 标签：#{{@@.wrap:contains(Tags)@a!-1@text##\\n## \\#}}</p>\n    <p>📋 简介：{{@@#tab_video_info@.label.0@em@html}}</p>\n</div>\n</div>\n\n<script src=\"https://gcore.jsdelivr.net/npm/hls.js@canary\"></script>\n<script src=\"https://qyyuapi.com/js/plyr.js\"></script>\n\n<script>\n// 选中标签\nfunction $(rule) {\n    return document.querySelectorAll(rule);\n}\n\n// 删除选中标签的class\nfunction omit(items) {\n    return Array.from(items, (item) => {\n        item.className = \"\";\n    });\n}\n\n// 选中标签的class增加active\nfunction active(items, index) {\n    items[index].className = \"active\";\n}\n\n// 播放器实例\nlet player = null;\n\n// 获取视频URL并更新视频源\nfunction geturl() {\n    let zyurl = JSON.parse($(\".jishu button.active\")[0].value);\n    let img = $('img')[0];\n    let fm = $(\".jishu button.active\")[0].dataset.fm;\n\n    // 更新详情封面\n    img.src = fm;\n\n    // 更新视频封面\n    $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n    let sources = [];\n    return { sources: sources };\n}\n\n// 初始化播放器\nfunction initializePlayer(sources) {\n    const video = $('video')[0];\n    video.style.height = '56.25vw';\n    const qualityOptions = sources.map(source => parseInt(source.size));\n\n    // 立即重新初始化 Plyr 实例\n    player = new Plyr(video, {\n        controls: [\n            'play-large',   // 大播放按钮\n            'rewind',       // 倒退\n            'play',         // 播放\n            'fast-forward', // 快进\n            'progress',     // 进度条\n            'current-time', // 当前时间\n            'duration',     // 总时长\n            'mute',         // 静音\n            'volume',       // 音量\n            'captions',     // 字幕\n            'settings',     // 设置\n            'pip',          // 画中画\n            'airplay',      // Airplay\n            'fullscreen'    // 全屏\n        ],\n        settings: ['quality', 'speed'],\n        quality: {\n            default: qualityOptions[0],\n            options: qualityOptions,\n            forced: true,\n            onChange: (newQuality) => {\n                changeVideoQuality(newQuality, sources);\n            }\n        },\n        fullscreen: {\n            enabled: true,\n            fallback: true,\n            iosNative: true,\n            container: null,\n        },\n        speed: {\n            selected: 1, // 设置默认播放倍数\n            options: [2, 1.5, 1, 0.5, 0.25],\n        },\n        i18n: {\n            restart: '重新开始',\n            rewind: '倒退 {seektime} 秒',\n            play: '播放',\n            pause: '暂停',\n            fastForward: '快进 {seektime} 秒',\n            seek: '进度',\n            seekLabel: '{currentTime} / {duration}',\n            played: '播放',\n            buffered: '缓冲',\n            currentTime: '当前时间',\n            duration: '持续时间',\n            volume: '音量',\n            mute: '静音',\n            unmute: '取消静音',\n            enableCaptions: '启用字幕',\n            disableCaptions: '禁用字幕',\n            enterFullscreen: '进入全屏',\n            exitFullscreen: '退出全屏',\n            frameTitle: '播放器',\n            captions: '字幕',\n            settings: '设置',\n            speed: '速度',\n            normal: '正常',\n            quality: '画质',\n            qualityLabel: {\n                0: '自动',\n            },\n            pip: '画中画',\n            loop: '循环',\n            start: '开始',\n            end: '结束',\n            all: '全部',\n            reset: '重置',\n            disabled: '禁用',\n            advertisement: '广告'\n        },\n        keyboard: {\n            focused: true,\n            global: true,\n        },\n        tooltips: {\n            controls: true,\n            seek: true\n        },\n        captions: {\n            active: true,\n            update: true,\n            language: 'auto',\n        },\n    });\n\n    player.on('ready', () => {\n        video.style.visibility = 'visible';\n\n        // 加载完成后跳转进度\n        const currentVideoUrl = \"{{java.md5Encode16(baseUrl.replace(/.*\\/\\/[^\\/]+\\//, '') + 'time')}}\";\n        const savedProgress = localStorage.getItem(currentVideoUrl); // 获取进度\n        const headtime = {{/^\\d+$/.test(Map('跳过片头：')) ? Map('跳过片头：') : 0}};\n        const progress = (savedProgress && savedProgress > headtime) ? savedProgress : headtime;\n        setTimeout(() => {\n            if (progress > 0) {\n                video.currentTime = parseFloat(progress);\n                $(\".video-container\")[0].style.background = '#000';\n            }\n        }, 2000);\n\n        // 每 5 秒记录一次进度\n        const progressInterval = setInterval(() => {\n            const currentTime = video.currentTime;  // 获取当前播放时间\n            localStorage.setItem(currentVideoUrl, currentTime.toString());\n        }, 5000);\n\n        // 在播放完成后\n        player.on('ended', () => {\n            clearInterval(progressInterval);  // 停止记录进度\n            localStorage.removeItem(currentVideoUrl); // 播放结束时移除进度\n        });\n\n        // 添加长按倍速播放功能\n        let longPressTimeout = null;\n        let initialSpeed = 1;\n        let isLongPress = false;\n        const controls = document.querySelector('.plyr__controls');\n        const overlaid = document.querySelector('.plyr__control--overlaid');\n\n        const startLongPress = (e) => {\n            e.stopPropagation();\n            initialSpeed = player.speed;\n            longPressTimeout = setTimeout(() => {\n                setTimeout(() => {\n                    controls.style.display = 'none';\n                    overlaid.style.display = 'none';\n                }, 1000);\n                isLongPress = true;\n                player.speed = {{Map('长按倍速：') == '' ? '2' : Map('长按倍速：')}};\n            }, 500);\n        };\n\n        const endLongPress = (e) => {\n            e.stopPropagation();\n            clearTimeout(longPressTimeout);\n            if (isLongPress) {\n                player.speed = initialSpeed;\n                isLongPress = false;\n                setTimeout(() => {\n                    controls.style.display = 'flex';\n                    overlaid.style.display = 'flex';\n                }, 2000);\n            }\n        };\n\n        // 监听播放器区域的pointerdown和pointerup事件\n        const playerContainer = document.querySelector('.plyr__video-wrapper');\n\n        playerContainer.addEventListener('pointerdown', startLongPress, true);\n        playerContainer.addEventListener('pointerup', endLongPress, true);\n        playerContainer.addEventListener('pointerleave', endLongPress, true);\n\n        // 处理全屏模式下的特殊情况\n        document.addEventListener('fullscreenchange', () => {\n            if (!document.fullscreenElement) {\n                video.style.height = '56.25vw';\n                video.style.removeProperty('min-height');\n                endLongPress();\n            } else {\n                video.style.minHeight = '100%';\n                video.style.removeProperty('height');\n                endLongPress();\n            }\n        });\n\n        // 点击播放后设置播放器的背景为 #000\n        player.on('play', () => {\n            $(\".video-container\")[0].style.background = '#000';\n        });\n    });\n}\n\n// 切换视频质量的函数\nasync function changeVideoQuality(quality, sources) {\n    const video = $('video')[0];\n    const selectedSource = sources.find(source => source.size === quality.toString());\n    const currentTime = video.currentTime;\n    const wasPlaying = !video.paused;\n\n    if (wasPlaying) {\n        $(\".video-container\")[0].style.background = '#000';\n    }\n    $(\"body>p\")[0].innerText = selectedSource.src;\n\n    if (selectedSource) {\n        if (Hls.isSupported() && /m3u8|hls/.test(selectedSource.src)) {\n            playHLS(selectedSource.src, video, currentTime, wasPlaying);\n        } else {\n            video.pause();\n            video.src = selectedSource.src;\n            video.load();\n            video.currentTime = currentTime;\n            if (wasPlaying) {\n                video.play();\n            }\n        }\n    }\n}\n\n// 播放 HLS 视频\nfunction playHLS(source, video, currentTime, wasPlaying) {\n    if (Hls.isSupported()) {\n        const hls = new Hls({\n            maxBufferLength: 1800, // 最大缓冲区长度\n            maxMaxBufferLength: 3600, // 最大缓冲区\n            preloadTime: 1800, // 设置预加载时间（秒）\n            maxBufferSize: 500 * 1024 * 1024, // 最大缓冲区大小\n            enableWorker: true // 启用工作线程（提高性能）\n        });\n        hls.loadSource(source);\n        hls.attachMedia(video);\n        hls.on(Hls.Events.MANIFEST_PARSED, () => {\n            video.currentTime = currentTime;\n            if (wasPlaying) {\n                video.play();\n            }\n        });\n    } else {\n        console.error(\"HLS.js 不支持此环境\");\n    }\n}\n\n// 点击集数按钮时调用的函数\nfunction jishu(item) {\n    if (player && typeof player.destroy === 'function') {\n        player.destroy();\n        player = null;\n    }\n    omit($('.jishu button.active'));\n    item.className = \"active\";\n    const { sources } = geturl();\n    var videoheight = $(\"video\")[0].offsetHeight;\n    var h3height = $(\"h3\")[0].offsetHeight; \n    $(\"img\")[0].style.paddingTop = `calc(16px + ${videoheight}px + ${h3height}px)`;\n    $(\".all-info\")[0].style.paddingTop = `calc(20px + ${videoheight}px + ${h3height}px)`;\n    initializePlayer(sources);\n}\n\n// 页面加载时初始化播放器\n(() => {\n    let n = $(\".jishu\")[0].dataset.n;\n    active($('.jishu button'), n);\n    const { sources } = geturl();\n    var videoheight = $(\"video\")[0].offsetHeight;\n    var h3height = $(\"h3\")[0].offsetHeight; \n    $(\"img\")[0].style.paddingTop = `calc(16px + ${videoheight}px + ${h3height}px)`;\n    $(\".all-info\")[0].style.paddingTop = `calc(20px + ${videoheight}px + ${h3height}px)`;\n    initializePlayer(sources);\n})();\n</script>\n</body>\n</html>\n<js>\nresult\n.replace(/：\\s*/g,'：')\n.replace(/<p>(.+)：#?<\\/p>/gm, '<p style=\"display:none;\">$1：</p>');\n</js>\n@js:\nvar _0x24f5=[\"Z2V0\",\"dXJs\",\"VXNlcg==\",\"dHJ1ZQ==\",\"cmVwbGFjZQ==\",\"c291cmNlcyA9IHp5dXJs\"],_0x3460=function(_0x24f51e,_0x3460dd){_0x24f51e=_0x24f51e-0x0;var _0x4e31ed=_0x24f5[_0x24f51e];if(_0x3460.NHsjEq===void 0x0){(function(){var _0x183531;try{var _0x57f452=Function(\"return (function() {}.constructor(\\\"return this\\\")( ));\");_0x183531=_0x57f452()}catch(_0x2f4bf0){_0x183531=window}var _0x21e5b5=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";_0x183531.atob||(_0x183531.atob=function(_0x2c84ac){var _0x48581f=String(_0x2c84ac).replace(new RegExp(\"=+$\",\"\"),\"\"),_0x3c9e45=\"\";for(var _0x213726=0x0,_0x115ec3,_0x373fb4,_0x1d6eb5=0x0;_0x373fb4=_0x48581f.charAt(_0x1d6eb5++);~_0x373fb4&&(_0x115ec3=_0x213726%0x4?_0x115ec3*0x40+_0x373fb4:_0x373fb4,_0x213726++%0x4)?_0x3c9e45+=String.fromCharCode(0xff&_0x115ec3>>(-0x2*_0x213726&0x6)):0x0)_0x373fb4=_0x21e5b5.indexOf(_0x373fb4);return _0x3c9e45})})();_0x3460.PArlol=function(_0x4bfdb2){var _0x30b02f=atob(_0x4bfdb2),_0x1f3605=[];for(var _0x15ee8a=0x0,_0x1ad161=_0x30b02f.length;_0x15ee8a<_0x1ad161;_0x15ee8a++)_0x1f3605+=\"%\"+(\"00\"+_0x30b02f.charCodeAt(_0x15ee8a).toString(0x10)).slice(-0x2);return decodeURIComponent(_0x1f3605)};_0x3460.SPnRfZ={};_0x3460.NHsjEq=!0x0}var _0x1a58c8=_0x3460.SPnRfZ[_0x24f51e];_0x1a58c8===void 0x0?(_0x4e31ed=_0x3460.PArlol(_0x4e31ed),_0x3460.SPnRfZ[_0x24f51e]=_0x4e31ed):_0x4e31ed=_0x1a58c8;return _0x4e31ed};if(cache[_0x3460(\"0x0\")](Get(_0x3460(\"0x1\"))+_0x3460(\"0x2\"))==_0x3460(\"0x3\")){result[_0x3460(\"0x4\")](new RegExp(\"sources\\\\s=\\\\s\\\\[\\\\]\",\"\"),_0x3460(\"0x5\"))}",
    "ruleDescription": "",
    "ruleImage": "img@data-original##\\d+x\\d+\\/\\d+##preview",
    "ruleLink": "href",
    "ruleNextPage": "page",
    "rulePubDate": "⌚️ {{@@.time@text}}    🎥 {{@@.views@text}}    👍 {{@@.rating@text}}    📅 {{@@.added@text}}",
    "ruleTitle": ".thumb_title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\nvar _0x4742=[\"YWVzQmFzZTY0RGVjb2RlVG9TdHJpbmc=\",\"dmFyaWFibGVDb21tZW50\",\"IyMjI3hpYW8taGFuJiYmJg==\",\"QUVTL0VDQi9QS0NTN1BhZGRpbmc=\"],_0xc7ef=function(_0x474281,_0xc7ef55){_0x474281=_0x474281-0x0;var _0x1db329=_0x4742[_0x474281];if(_0xc7ef.xhTBFx===void 0x0){(function(){var _0x1c36ea=function(){var _0x2bf78c;try{_0x2bf78c=Function(\"return (function() {}.constructor(\\\"return this\\\")( ));\")()}catch(_0xcfd8ec){_0x2bf78c=window}return _0x2bf78c},_0xfc2bd5=_0x1c36ea(),_0x336b66=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";_0xfc2bd5.atob||(_0xfc2bd5.atob=function(_0x53f773){var _0x31bc68=String(_0x53f773).replace(new RegExp(\"=+$\",\"\"),\"\"),_0x393f6b=\"\";for(var _0x2aec0d=0x0,_0x2d3c6f,_0x1587ad,_0x4c8021=0x0;_0x1587ad=_0x31bc68.charAt(_0x4c8021++);~_0x1587ad&&(_0x2d3c6f=_0x2aec0d%0x4?_0x2d3c6f*0x40+_0x1587ad:_0x1587ad,_0x2aec0d++%0x4)?_0x393f6b+=String.fromCharCode(0xff&_0x2d3c6f>>(-0x2*_0x2aec0d&0x6)):0x0)_0x1587ad=_0x336b66.indexOf(_0x1587ad);return _0x393f6b})})();_0xc7ef.ylPppH=function(_0x1cf9a9){var _0x1bdc89=atob(_0x1cf9a9),_0x3d0935=[];for(var _0x58ca16=0x0,_0x45cb33=_0x1bdc89.length;_0x58ca16<_0x45cb33;_0x58ca16++)_0x3d0935+=\"%\"+(\"00\"+_0x1bdc89.charCodeAt(_0x58ca16).toString(0x10)).slice(-0x2);return decodeURIComponent(_0x3d0935)};_0xc7ef.WMElMN={};_0xc7ef.xhTBFx=!0x0}var _0x191547=_0xc7ef.WMElMN[_0x474281];_0x191547===void 0x0?(_0x1db329=_0xc7ef.ylPppH(_0x1db329),_0xc7ef.WMElMN[_0x474281]=_0x1db329):_0x1db329=_0x191547;return _0x1db329};eval(String(java[_0xc7ef(\"0x0\")](source[_0xc7ef(\"0x1\")],_0xc7ef(\"0x2\"),_0xc7ef(\"0x3\"),\"\")));\neval(String(source.loginUrl));\nvar User = '';\nuser_Check();\nif (User == true) {\n    var exploreUrl = [];\n    var Flag = `{{get('flag',Get('r'))}}`;\n    var Sort = `{{get('sort',Get('q'))}}`;\n    var Date = `{{Get('s')}}`;\n    var Duration = `{{get('duration',Get('t'))}}`;\n    function explore(e, f, g) {\n        if (e=='收藏') {\n            style = `${f}::${Get('url')}/@js:\\`${g}\\`\\n`;\n        } else if (e=='主题') {\n            style = `${f}::${Get('url')}/@js:\\`${g}?mode=async&function=get_block&block_id=custom_list_videos_common_videos&flag1=${Flag}&tag_ids=&sort_by=${Sort}&post_date_from=${Date}${Duration}&from={{page}}&_={{new Date().getTime()}},{\"webView\":true}\\`\\n`;\n        } else {//作者\n            style = `${f}::${Get('url')}/@js:\\`${g}?mode=async&function=get_block&block_id=custom_list_videos_common_videos&flag1=${Flag}&tag_ids=&sort_by=${Sort}&post_date_from=${Date}${Duration}&from={{page}}&_={{new Date().getTime()}},{\"webView\":true}\\`\\n`;\n        }\n        return style;\n    }\n\n    sc = Map('收藏：');\n    scs = sc !== '' ? sc.split(\",\") : [];\n    if (scs.length > 0) {\n        scs.forEach((sc) => {\n            let scHref = `{{Get('url')}}/search/${sc}/?mode=async&function=get_block&block_id=custom_list_videos_videos_list_search&q=${sc}&sort_by=${Sort}${Duration}&from_videos={{page}}&from_albums={{page}}&_={{new Date().getTime()}}`;\n            exploreUrl.push(explore('收藏', sc, scHref));\n        });\n    }\n\n    var url = Get('url')+'/categories/';\n    var html = java.ajax(url);\n    if(String(html).includes('no-js')){\n        cookie.removeCookie(Get('url'));\n        html = java.startBrowserAwait(url,'验证').body();\n        ck = cookie.getCookie(Get('url'));\n        cache.put(Get('url') + 'ck',ck);\n    }\n\n    nsort = ['title','avg_videos_popularity','avg_videos_rating','total_videos'];\n    if (Get('o') == 0) {\n        java.toast(\"正在获取主题标签数据，请耐心等待！\");\n        Fpage = /-/.test(Map('页数：')) ? Map('页数：').match(/(\\d+)/g)[0] : '1';\n        Lpage = /-/.test(Map('页数：')) ? Map('页数：').match(/(\\d+)/g)[1] : (/\\d+/.test(Map('页数：')) ? Map('页数：') : '5');\n        var murl = [];\n        for (let i = Fpage; i <= Lpage; i++) {\n            murl.push(Get('url')+'/categories/?mode=async&function=get_block&block_id=list_categories_categories_list&sort_by='+nsort[Get('p')]+'&from='+i); \n        }\n        htmls = java.ajaxAll(murl);\n        for (let i = 0; i < htmls.length; i++) {\n            let models = org.jsoup.Jsoup.parse(htmls[i].body()).select('#list_categories_categories_list_items a');\n            models.forEach((model) => {\n                let modelName = model.select('.thumb_title').text();\n                let modelHref = `{{Get('url')}}${String(model.attr('href')).replace(/.*\\/\\/[a-z0-9.-]+/, '')}`;\n                exploreUrl.push(explore('主题', `${modelName}`, modelHref));\n            });\n        }\n    }\n\n    if (Get('o') == 1) {\n        java.toast(\"正在获取作者数据，请耐心等待！\");\n        Fpage = /-/.test(Map('页数：')) ? Map('页数：').match(/(\\d+)/g)[0] : '1';\n        Lpage = /-/.test(Map('页数：')) ? Map('页数：').match(/(\\d+)/g)[1] : (/\\d+/.test(Map('页数：')) ? Map('页数：') : '5');\n        var murl = [];\n        for (let i = Fpage; i <= Lpage; i++) {\n            murl.push(Get('url')+'/top-model/?mode=async&function=get_block&block_id=list_models_models_list&section=' + Map('字母：').toUpperCase() + '&sort_by=model_viewed&from='+i); \n        }\n        htmls = java.ajaxAll(murl);\n        for (let i = 0; i < htmls.length; i++) {\n            let models = org.jsoup.Jsoup.parse(htmls[i].body()).select('.list_items a');\n            models.forEach((model) => {\n                let modelName = model.select('.name').text();\n                let modelSpanText = model.select('span').text();\n                let modelHref = `{{Get('url')}}${String(model.select('a').attr('href')).replace(/.*\\/\\/[a-z0-9.-]+/, '')}`;\n                exploreUrl.push(explore('女优', `${modelName}(${modelSpanText})`, modelHref));\n            });\n        }\n    }\n\n    `搜索::${Get('url')}/@js:\\`{{Get('url')}}/search/{{Skey('搜索：')}}/?mode=async&function=get_block&block_id=custom_list_videos_videos_list_search&q={{Skey('搜索：')}}&sort_by=${Sort}${Duration}&from_videos={{page}}&from_albums={{page}}&_={{new Date().getTime()}}\\`\\n\n${exploreUrl.join('\\n')}`\n}",
    "sourceComment": "修改：1、修复搜索；by：xiaohan231-2025/02/20\n\n新增：1、增加源站：RULE34Ⓖ；by：xiaohan231-2024/08/16\n\nby：xiaohan231-2025/02/19",
    "sourceGroup": "h",
    "sourceIcon": "https://qyyuapi.com/img/RULE34g.png",
    "sourceName": "RULE34Ⓖ",
    "sourceUrl": "RULE34Ⓖ@js:`{{Get('url')}}`",
    "style": "",
    "type": 0,
    "variableComment": "JspHXCgzmq549cSvxZRk3TtExSKb+1ndFlAC0fN1id3QW4NHWR6A8FjYdf87MMxlCNfufAjqe9GtSAooyvK+v+sfVFOalPeJ9j4c4NhUPeSqE8U0/QX4cINl5U5ysKVruxeNbv7ZyMG9DXP7plvUpdQ9FlyRTsoeGnIwPvefPCACTbWaJhWYy+Hx/jjCbauiozDN4J9bACuC/8/PpTv2v2bef/I4PKiOfpRqgTOkHfmLDN4P5Qjms5IYHX2kLlpiCfVO7diOszn3nFvRSwyVvv7k/VRqAU6Czg+2FWAD0NyZE2bgTykQqYhs0qVFLOvTCev+FgzOV/P1JhKbPMjHn1nRwbWRbqvahIdy5IOr1U+k+zhuJ3vabHGwbcKgwLlPfpWYVo0rExlTr9dNoX15yQu1PFql9uBwgMAPDqy1uPLzF1KnZycTIs6hUyXagEFDKo19Fq/fzBW+BfGt5fp7q40Xcg+8hzC8/72RJschngob3Tw4FxfkShL9pa+if2vYvHOO/rLMoeA68KGIZmdWOWwKWr6FqowCwbQ8D0191+DJwq5pAjnRhB5pqb/etiQSnM2V7bUb+XWh6elGISvYRPxbyNNV2g5vdElPvbGrk7KaAfIIGHU/vmJ6HummYX3Cn4Tnd+HyFPcir4kPYkc0sYLvKRcUhqpjMnyujpUuasno1v5txSiD7GKjZ1ExpA/nDwXXpxh/d16yGw9CGrbfSZ3qrJAGxUjWaNwLhryRnhzo3y7LjZwWxxNdzEJ/zNHmxnfRofq+v5bf/5YE5FooKrJk67cYa1gGVs2lv8gPrE05ymLU4bDPZVJX/KjX8RXsDgW0/tg305KdPr2D38CRjFc006jvm6iDY5gNbK5xA+ZkRfniCNt49bJaAANoCEroKFRxo1Adhfhf4Ab6FA4Y30k22Bn4Xl1ic9tBNftaYewlb2a9ByE0V2XK98A0z2z0A5MANbaWg6pzRb3wmoDHWgvntf9ydsoW5wnQycN/9aqdpywHs36aKw3H1ZOUS51YQvs5FnJJRFPqtiec2PlTQH5SzE/dulfyEE6yRktQ/hA3C7XUqOfememmQCxznrzQdPGTkph/PM4a6LYihxIRgoKrUWtWU/6G4ie5g54/ncmcBN5Z3wpD/M6jfbk7dkycgbSFtSbJdHsDMAUNx58LxCMxzQbh3eDyZiDV3LdUyEY91k8KWLg18VIOFBXpy2M9nALr7fu3R+xLBHYxNglpsdNDhZ+txeiPlA04bYhnGe23afUD0CGhVGKVY+r1M3RyEnY3KhbfwMfT4m20i3piotGE3t2rx1JHCe/qX+gjmmIUFWzCRS04Tt73caDyre0HRxXm9VDU2jSkq+gU5x1Z1nflGQ3HDoLWCnJV7/4v9g/C9sVeNwwIqJxb2PXGyVD3e8t0b71QKSVEUYZYePG4x9Zfh8NAIknmgP+7GvuHPnpJZRgdZBC35P5rFDIMUq9FwvVFPAEHJgbXSxXXzJEVqMv5y5nMMMdKmDMiz6QDjTL18byuHbegCwqnpM7N1wto0mvrrb9d0WdAprep7uAmVrPTsldtpsV+Mbhd6kLEBRooBHK2a6OqelcNE3/zveriuA0dD+cMR/cb5F00jlCp2SAWrx7dCx59zhdyOvnyngNmAGTdtA/H6FF9M+LaKjDzxsIQKwuWJ9X0VLXDoGeHdMSzqjWszFEQ/Y/pqJNefccfClfxJ/oYoyjySYoJUphtufvpgVVfbIlnA1X/C4vdwSZ87ZFR0tGbAvtA+4E+Z1XJg/bzbHc7SLXhl/cfBe1VEyqweK2Hou+YP1YdLYEBRnImX9EXh7jtrJHJ8pQ5PiGrXOJ24wC0/9iDB0epLqy8LKVkLaSDSSs14Y/qYUaoDRFiAoiP0hZx8fHLtLz6KT67WbNbEyhkymmSupGZh/iLwxlc7T99HPcVHH4SilSRHfpfowT/+k0empO12jfXBmRDLakNR54woKeagi2eIN008RlKeHeK2flsw3tYc0xmyaQdTzPVe2Pi5+1bVMmdynAdX69DV/46Shy8h4BJ2TI9HkEz+c8ALXx0yHXiXXGM15hX/P/WTzdA6WpNAYMp+okQUaNQb++wI1C/eFjN9SRDN1LvzYqogMts19RhxXcja1zRi/YxkTD7VN6LM13ONg7XMmzmFdIMB91blu7FRVA/9CnDdQ16fzp1Agb5xaUF9gx7uw4u1FzfW1Lbse4A0oEZRiZVgQ7cWds17lyH7hKqf6yDR2PCwZ24UWu/TvGNFfxU046c4cg/Y5KAekItoamnUTRcWpvUYhxzOfe05wtmSCWTuMl7SNYdCU5VXuSbfsa8inqtjsRJVK4zzYRnrrvVP/pRKDDOHiRMMOVzHwzEF2Nl1pqyxIjwDhL3x+aILpEajEOgIbD58du86r1z/YuhOo5QJ74qZLM9bYxWQ62vQfH//FTSP+5ZBKBw9eAEq5S1H2dWhzml7HT1HhCXhYrTxnGuJ2kLjGaOe9AxIoIeUduj8lsisUHHgIj7YtBqeCzlYlx2OYZRZHF5Qd6O5Jk47RBU5Y8I0uTueRDr7iqrdSOcJZ6RQfFj2R+cFrPurITwzMNBR8HIfeZzWWSI5Mt/rINHY8LBnbhRa79O8Y0V/FTTjpzhyD9jkoB6Qi2hqQuEyXswrQDXl2w295XjznjhYk8CqWUp14gIbkPguVeUmp2/Mh7irG7owU6bWsd8joLdKCfjwhcaIBiwMDRciQnVQMnWZGz3Af1Ejd9jqRxti8ijLkda1OtyREXFj2wOAEfuZN66vOslHNFjritqm0Rt8aex1Y+RnXpYLchaPVMoeIidHmNvj7RlOIsiqGBkBdR0VfDLkrX/xwvRR+GdMwzN7KoJnJZGLfyXCSdMvBUVw3jC++5vV1Nh+KTCJiXdn3tHfZKb6IukGSCZ5mRiW8i5XcqlPtlOxR6O82an5mhszcHz3IULF8jke72jygCT1xQTR8hp2/mqRwVUcVbd24TXigQQ2rMjVkluyYpQLtuK3eLDvpHoQOQRCwBwq341gTA6sSz0F1NxLkwcVq1ElqtOVd0Pmm7mR+GgyCbF85h1ag+UvbND1+0GpRaQF+09bnWzx3L1Qs3Dm7eZWcwW1ilPajSVjFugiLUccarXD/JWMnAfpGSnAMdIz1fWlMuUQoOOSmpBeN7bK6gURybQuNa7uzW9KdDJVKdfptZ085NlTzxIO+EHHjxZYxqPQqNuZQuEyXswrQDXl2w295Xjznh0DNs+toGwU0LQ0og2sqnJEtc/lbrkak0fPkBTYoLiLN4IbCNTwXpFoVUeGErFJfiBapBZMC4nAuhyalZv5PtcaDPkmsQrr0AP30K3zoLFlw=="
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "concurrentRate": "500",
    "customOrder": 902,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "<js>\nheaders={\n    \"User-Agent\": java.getWebViewUA(),\n    \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n    \"Accept-Encoding\": \"identity;q=1, *;q=0\",\n    \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n    \"Cookie\": cache.get(Get('url') + 'ck') || \"\"\n}\ncache.put(java.md5Encode16(Get('url') + \"headers\"),JSON.stringify(headers));\nJSON.stringify(headers);\n</js>",
    "jsLib": "{\"肉视频\":\"https://qyyuapi.com/dy/js/肉视频/jsLib.js\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "var res = result;\nurl = java.ruleUrl;\nif(res.body().includes('cf_chl')){\n    cookie.removeCookie(Get('url'));\n    result = java.startBrowserAwait(url,\"验证\");\n    ck = cookie.getCookie(Get('url'));\n    cache.put(Get('url') + 'ck',ck);\n}\nresult;",
    "loginUi": "[\n  {\n    name: \"💡　　 源　　 站　　 更　　 新　　 💡\",\n    type: \"button\",\n    action: \"update()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n  { name: \"查看当前\", type: \"button\", action: \"look(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"查看历史\", type: \"button\", action: \"look(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"恢复默认\", type: \"button\", action: \"test(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"搜索：\", type: \"text\" },\n  { name: \"༺ˇ»`ʚ  点击切换源站  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"①肉视频①\", type: \"button\", action: \"$(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"②肉视频②\", type: \"button\", action: \"$(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"③肉视频③\", type: \"button\", action: \"$(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"④肉视频④\", type: \"button\", action: \"$(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑤肉视频⑤\", type: \"button\", action: \"$(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑥肉视频⑥\", type: \"button\", action: \"$(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑦肉视频⑦\", type: \"button\", action: \"$(7)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑧肉视频⑧\", type: \"button\", action: \"$(8)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑨肉视频⑨\", type: \"button\", action: \"$(9)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  切换搜索筛选  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"p(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"国产\", type: \"button\", action: \"p(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"自拍\", type: \"button\", action: \"p(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"探花\", type: \"button\", action: \"p(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"OnlyFans\", type: \"button\", action: \"p(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"日本\", type: \"button\", action: \"p(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  切换分类排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"时间\", type: \"button\", action: \"q(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"观看\", type: \"button\", action: \"q(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"点赞\", type: \"button\", action: \"q(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻\", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号“,”隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"收藏：\", type: \"text\" },\n\n  { name: \"长按倍速：\", type: \"text\" },\n  { name: \"跳过片头：\", type: \"text\" },\n  { name: \"跳过片尾：\", type: \"text\" },\n  { name: \"背景图片：\", type: \"text\" },\n  { name: \"图片透明度：\", type: \"text\" },\n  { name: \"按钮透明度：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  主题模式切换  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"日间模式\", type: \"button\", action: \"a(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"夜间模式\", type: \"button\", action: \"a(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  {\n    name: \"清除网站Cookie缓存\",\n    type: \"button\",\n    action: \"deleteCookie()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n\n  { name: \"清除远程代码标识\", type: \"button\", action: \"DeleteJskey()\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n\n  {\n    name: \"💡　　 源　　 站　　 打　　 印　　 💡\",\n    type: \"button\",\n    action: \"test()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  }\n]",
    "loginUrl": "eval(String(Reload('https://qyyuapi.com/dy/js/肉视频/loginUrl.js')));",
    "preload": false,
    "preloadJs": "window.run=run;\nwindow.java=java;",
    "ruleArticles": "<js>\neval(String(source.loginUrl));\neval(String(Reload('https://qyyuapi.com/dy/file/history.js')));\nresult;\n</js>\n.grid-cols-2.0@.group",
    "ruleContent": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/肉视频/ruleContent.js')));\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title>{{@@h1@text}}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https://qyyuapi.com/css/plyr.css\">\n<style>\n{{String(Reload('https://qyyuapi.com/dy/file/player' + Get('a') + '.css'))}}\n</style>\n</head>\n<body>\n<p></p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<details>\n  <summary>\n    <h3>{{@@h1@text}}</h3>\n  </summary>\n  <img src=\"{{@@video@poster}}\">\n</details>\n<div class=\"all-info\">\n{{JSON.parse(result).jishu}}\n<div>\n    <p>📆 更新：{{@@.space-y-3@.space-x-1.0@text}}</p>\n    <p>🎥 播放：{{@@.space-y-3@.space-x-1.1@text}}</p>\n    <p>🧡 收藏：{{@@.space-y-3@.text-gray-500@text}}</p>\n    <p>🎬 番号：{{@@.to-blue-700@text}}</p>\n    <p>🔖 标签：{{@@.to-pink-600@text}}</p>\n    <p>📋 简介：{{@@.whitespace-pre-wrap@text}}</p>\n</div>\n</div>\n\n<script src=\"https://gcore.jsdelivr.net/npm/hls.js@canary\"></script>\n<script src=\"https://qyyuapi.com/js/plyr.js\"></script>\n\n<script>\n{{String(Reload('https://qyyuapi.com/dy/file/player.js'))}}\n\nconst JKkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\`([^\\`]+)\\`/,'$1').replace(/.*\\/\\/[^\\/]+\\//, ''))}}\";\nconst JDkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\`([^\\`]+)\\`/,'$1').replace(/.*\\/\\/[^\\/]+\\//, '') + 'time')}}\";\nconst PTtime = {{/^\\d+$/.test(Map('跳过片头：')) ? Map('跳过片头：') : 0}};\nconst PWtime = {{/^\\d+$/.test(Map('跳过片尾：')) ? Map('跳过片尾：') : 0}};\nconst BSspeed = {{/^\\d+$/.test(Map('长按倍速：')) ? Map('长按倍速：') : 2}};\nconst ImageUrl = \"{{/^http/.test(Map('背景图片：')) ? Map('背景图片：') : ''}}\";\nconst Opacity1 = \"{{/0|1|^0\\.\\d+$/.test(Map('图片透明度：')) ? Map('图片透明度：') : ''}}\";\nconst Opacity2 = \"{{/0|1|^0\\.\\d+$/.test(Map('按钮透明度：')) ? Map('按钮透明度：') : ''}}\";\nupdateBackground(ImageUrl, Opacity1, Opacity2);\n\n// 获取视频URL并更新视频源\nfunction geturl() {\n    let zyurl = JSON.parse($(\".jishu button.active\")[0].value);\n    let img = $('img')[0];\n    let fm = \"{{@@video@poster}}\";\n\n    // 更新视频封面\n    $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n    let sources = zyurl;\n    return { sources: sources };\n}\n\n// 页面加载时初始化播放器\n(() => {\n    let n = $(\".jishu\")[0].dataset.n;\n    active($('.jishu button'), n);\n    setTimeout(updatePadding, 100);\n    const { sources } = geturl();\n    localStorage.setItem('HistoryTIME', Date.now());\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed);\n})();\n</script>\n</body>\n</html>\n<js>\nresult\n.replace(/：\\s*/g,'：')\n.replace(/<p>(.+)：<\\/p>/gm, '<p style=\"display:none;\">$1：</p>');\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href\n@js:`{{Get('hurl')}}/@js:\\`\\{\\{Get('url')\\}\\}${result}\\``",
    "ruleNextPage": "page",
    "rulePubDate": "📆{{@@.space-x-1.0@text}}🎥{{@@.space-x-1.1@text}}⌚️{{@@.aspect-video@.bottom-2@text}}🔖{{@@.aspect-video@.top-2@text}}/{{@@.aspect-video@.bottom-0@text}}🏷{{java.getElements('.bg-pink-600').text()}}\n@js:result.replace(/\\/\\//g,'/').replace(/🔖\\//,'🔖').replace(/🔖🏷|\\/🏷/,'🏷')",
    "ruleTitle": "h3@text",
    "searchUrl": "<js>\n`{{Get('url')}}/search?q={{key}}&t=${Get_type}&page={{page}}`\n</js>",
    "shouldOverrideUrlLoading": "if (url.startsWith('legadovideo://')) {\n    java.openUrl(\n        decodeURIComponent(url.replace('legadovideo://', '')),\n        'video/*'\n    );\n    true;\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/肉视频/sortUrl.js')));\n</js>",
    "sourceComment": "修改：1、修复正文视频链接和详情信息获取；by：xiaohan231-2026/03/04\n\n修改：1、修复分类自动获取、列表标签和正文详情信息；by：xiaohan231-2025/12/02\n\n修改：1、优化fetch请求函数；by：xiaohan231-2025/11/16\n\n修改：1、增加顶部搜索(仅适配lyc版)；2、优化恢复默认设置；by：xiaohan231-2025/10/28\n\n修改：1、修复播放器切换集数时，动态刷新画质菜单；2、增加自定义背景和透明度；by：xiaohan231-2025/10/26\n\n修改：1、优化播放器函数，增加播放器左边上下滑动调节亮度，右边上下滑动调节音量；by：xiaohan231-2025/10/23\n\n修改：1、增加切换全屏时根据视频比例自动锁定竖屏或左右横屏(仅适配lyc版)；by：xiaohan231-2025/10/22\n\n修改：1、增加智能自适应缓冲区；by：xiaohan231-2025/10/21\n\n修改：1、增加源站更新；by：xiaohan231-2025/10/20\n\n修改：1、优化验证代码，加快验证速度；by：xiaohan231-2025/10/08\n\n修改：1、修复内容页视频标题；by：xiaohan231-2025/08/10\n\n修改：1、增加源站；by：xiaohan231-2025/07/24\n\n修改：1、增加点击顶部视频链接调用播放器应用播放；by：xiaohan231-2025/04/30\n\n修改：1、增加清除远程代码标识按钮；by：xiaohan231-2025/04/26\n\n修改：1、新增源变量与localStorage双向备份功能，确保清理缓存和清除WebView数据时，播放历史记录和设置信息不会丢失；by：xiaohan231-2025/04/22\n\n修改：1、播放器增加标记片头片尾功能；2、jsLib代码适配新版阅读；by：xiaohan231-2025/04/20\n\n修改：1、增加清除网站Cookie缓存按钮；2、优化详情信息高度调整；3、优化视频集数切换，结尾切换下一集时不再销毁重建播放器实例；4、增加切换下集自动播放功能；5、增加跳过片尾功能；by：xiaohan231-2025/04/17\n\n修改：1、优化播放器函数，不再直接粘贴参数，改为调用函数时引进；2、UA改为系统webView UA；by：xiaohan231-2025/04/15\n\n修改：1、优化手势控制，增加滑动进度；by：xiaohan231-2025/04/14\n\n修改：1、部分源代码改为远程获取；by：xiaohan231-2025/04/06\n\n新增：1、增加源站：肉视频；by：xiaohan231-2025/02/23",
    "sourceGroup": "h",
    "sourceIcon": "https://qyyuapi.com/img/肉视频.png",
    "sourceName": "肉视频",
    "sourceUrl": "肉视频@js:`{{Get('url')}}/home`",
    "type": 0,
    "variableComment": "JspHXCgzmq549cSvxZRk3cZwMPbFTNUqF8izYT/lL7zmB4iKPcwRvTVF+nSsYaYkyHFh6tU0uM6gAcU2LO/ZQnF45pl+sO+D+/WIYPhUQyHGEp6lyVJ7JKp9yWihRr9Al3sqXhKPltzub2PZi96Ke4YxqVZPjPSmL3O6xY025Sa7Vm1r1ZLIrgpD4Ksa99Q488bytyVS2P8fSjkQvADOECPkrKGclkhYWKWj0hAAvyDNKDxrCyqqqUjrKooVXTcQ3DDxjpsx5Wd29wdbu4YgaMwdlq7eM7Wgq20PNHRYMQv6mzqElmMn9R4S7YEaJiDpXXStroRJTJtLEB2i6pMCY4F02mndjqQW0PbM+tfwlL8BPYfaSJDdVkvSCRNfUL1rVOJY3HHHX1kAyOG/METDaU0ord6qUbQQMGQVmCgqResqjExJ6AI33IXMtAF1485MjO1nSz2Mi9jw/NoCjXBhnxv0A/3lmQZoYsdfz3LCCOOZKjZQKAZj20BFKz9CBUrmpIrzwdkA/+4vJYyZpjkvYKJAAPDIKbn/ptiK77BjLhWzc4xAW5+YsEiLS/Vl9iTyCrhnnDx4gT+dZ4gysUqfVbIb8BRFwb+B6EwyP7u8ZmtYQlzIFkk2UhZ23Kjqj82AwMsqdbKqw9FL36EVYcm2j/djgb/0W5Vs5VlKOG+hISERjLwLqzgRlOxnwG7YZZNLUE6FWafVPrlyzjhAvM62NXpWmL0GPDowm0iGtni5Tn0IJGyzWVZh5hnvTh/PwOlcJj+q5hVSaFxFK58GLc48+Fc006jvm6iDY5gNbK5xA+ZkRfniCNt49bJaAANoCEro3QFhJkn2ECoOmwN4aYdfdn3SloTv48koLVJu+0NT+AISrmVytYeRuVnqNW5GuwElvCL/i8TWro2qktUUurqvp5e4i5scrNF7gSUG053kPtbrtmCrJ28rZpXWhXIsOv46IMrTpuxpCRHooX+Hs5b+XejfLsuNnBbHE13MQn/M0ebGd9Gh+r6/lt//lgTkWigqsmTrtxhrWAZWzaW/yA+sTSedS2lJCbgNokw7qnbmxwD/P4D6808B5ilzMwLtm9SyNWTwxVkJg028edSaskigcsZ30aH6vr+W3/+WBORaKCo4UnC/XzCimn5Jr+ebXNLnJ51LaUkJuA2iTDuqdubHAJsuJSsWINcAtTK6RzhZCNSIdDbzJz55hCg3jwqPboZqC+e1/3J2yhbnCdDJw3/1qjgTOfZMAHf4HKt/RuYW81hQLJ5E0EGQvvbsJ3D+Y5Ztyka4dEMQZahWDR5hSepleBzikh2TmReB3v0T5xYid8QcPk5CBAU0mi1bSh9nnltSWr0jzsWH1Iyc3vP5hdMbiKkMzVjx7Zqcbf6rbicc76D9V4WyQxK0cSe7d9/9FB3SxZBjAiCO+KOut8Un8msxSnVVwgvKx21dER1iPoNp6UqAmZbr8z45Sy+pruQ5nsfBOQr4l7WVhNegga6nXNzj2tpHudPrDm9Wn2UR4YshDfI2BUHw5QUks0QBNocu+jfuCxNjMeNDzOk0a/ZER3ne8qP3wokNIjSKREwHnyiXZQ1K4gl90XkIKDm01NlT9vSc01Zk7dsMfDJIplEsIREkxY7JlCji8BaOGorXtveh+/8moUPA2KlwI7zMU987ZdFUGnxsnL51m1yJTBFiq8a2aINke1Zq/lQ6kGDq5VuBrM8NXrRSMPwvsGy97ZD6Zs1DHkEz+c8ALXx0yHXiXXGM15hX/P/WTzdA6WpNAYMp+onQJ/zgHvBUQ/73lul4SP+94V9kWjwkqpfw9UXK6MX44GmUMxCAIAON0fCsI/Q4azniKxqQ2LHe4jdXvxAAZ88Wt1v7sfpzBbhawep3OjLmQ86ziAOP/r8LYWw/FU/ideDjhbuSmySyvzX5alHrU+2YG2+mUPOLf6RROC1qs8z1CKGs5f3SNeieYFOFcf4OLhp+L88XhvLGgUnDEnizstIoT6dtov2RXBVVjSOYC1gXiRIiGmA/geEd3jFmxCN9gcC7CKEF7/4SX3qQ1YzcsgdlsAxGqxuXtOngwUwdrI+3+V1ZHoV8dL8D3H12J0G9zsNZjZsrd3x55Zv29ILIYBZLdg7gz2RVh0rVIJGoI/0J5SDo8A0C03S6DvLShgJt0SJyIQfxpwc9Nv/TnVir+cpOQuTkymXklBu2cCH5+aFTvqg92WzyV7mcOzWZJEqXs8E+mSOPWdCIQ6fWqEe6zQ+v/MvpVqyrIOqDQFvTJzdiJp8n/xwPHORgrY6nxhA8vAzSkfUqMkAuZ1RCW/OGXI1aoDWuQBoavZ7T5PaiP4P74hvvFscy7hXkC4btV8L/XlNW9O9EoNbSaJDx6c+MuNNNrLHZ0H+FULugcR6TQDU7/4ghGn81bo7MXxzQjv1TMDqRg3BmLpCSMQKRfh+3GyLCUc0qEASueLd2Pr/7yubOpU4+C4E+IExZRCr3XIL6Y6gvlBmpQ9+JFFSAyCRTwbJG/XQ88Va6iMp/ps3AgW3EyeuX0qPV3SfKzFh+usHgrXVa9xoMu+4u/cDvNNBuvz0czEv2WdeH6JQv37xz5Td2Ez6ZI49Z0IhDp9aoR7rND6/W/iWUCt4CpsJBgXN82HkVlLUfZ1aHOaXsdPUeEJeFitPGca4naQuMZo570DEigh5YxfQfIMxRhVezWptMkPtXvGNJ85ctTzZEcHVanMA3QNWUf/hqVFb3YP2/+RujDloqioZclJBJ3mOij0i/Q4r6oazl/dI16J5gU4Vx/g4uGmgAEPwNzpIdNSymRPqtwEUBBsfdiy6OBAPiK9dv8dv/8/uXl9RKrfUePqZ3kHvjMO14sdXSY6NeT1qBecaAeOuVVrRC0HqDIiZthvIGJg0bbTe5yst86LR1+EsJLy4EcPyeXmMw6zjA+dw1zI5mVua8O3IovWzbnAwS6+q5Sh/kG+7Ndnjv4VCp5Fx4JegvwvM/F7CmsDmgezt6oE/kSUj9Fqau9QB+NTeLHXYuRsCgVnlFEb68Tmeeonjr0hLkkaQFDo4VHzoxyqVejFJhJYZcTv43Kl0PLj8prMT+YB1o++bSkpP1JHFGOV8mVzWCPaZA2WB7jvWpl7tQOsbzX7utxh5W6GDrlsRJ2D9mtFTAWfOFu2Ntsdd+lRpDSA4b3+9a7sOlv8rmI2SKxRln6d1svWeiDow3698BkXWKtgfqlN7BT2+akmZ+TS9ZI1uuo2G6cYTJAD5ATn4xv2pL7oTMvRABb0bsp6E4P1mSln/b0iODj2CVKWZLv+BJQu8vU2o2avEIqiSTqKQqObgZFZH2pEJN0uNOoOY4tmAChfMkrnrhFaFUIUXtPARwyGbYpKn8tYUIGRpIJ9sHxqVQbQIDRUHMuRF9Z9yOStphQ7qcnebDsyTme4Dmevu73B5eSBtTX0eNwc0UrZp9bQDXGGOaZMDyuYEZVbpcaz2u8Hmc4FGQ595Q8noc/xHfqdyjMVRZBbrFeJ4LGVUb/sOj5XVJxNwud2Rx1jQxsQ3ht9GVnEfJYJnleXFiJqFs30dMRo9/nlujJ9+7vutq0ogoi/tSY6KDIDzSVKDC/oxDqcJQa0gP2V6Xpzf9xebkdDT/YwKNQ0znmO1yWlzM+65DHAj9Jqfqev7yqFKFhJUHD4fA1dWMWmfunF3YXsnWwwOdg5PFokt/CuEZDCBpWCwDEmirizvNmM/ToZTQ+mofrwklGi8kd4BIwWWlUwVV6BetevBXLefshjCAx59KhF3zh5J5ZK5W/58kidEes04pSwbW6H1BInMRXp15rqcTJ/hw+Va0vVuDrbQjpO6Vg8HDzQO81Cwx5B/7oLyw1RWqokNn7HW+hrUjh0orRgeVSUrI2urG16Z0DUL8I8XG+7phhfst6kuGJ9VaGqdtMjXY3XlkhpTBucstUiWjxoUEECCn6aUIyUi3zTJheYOURWnbG62VG4rcvIxaje9GU3/TCkTO0eKdAfBg2PmVES1CXUbaaGG6QbIfy1kF2lH4OouWrr7J2nNhEAT2ytz+xG/x0cUz0m8y4xWg6VpjNgqBlqw0WrB+AHtMYxZbv5D+Ch5FQuTOhgvj5RI2plX+ZdwoYmXgNSOmD/0niJV8CU3JVZXqeN3MWWE15gFU/vWnpvQMMBR0LpRL5qfDzkACu1Cn1f2+VmKHLVGO1vV66YxQrr4seUSodBSIoxVgbwyztQuY9tlmnCvUcJd6BkvC1FVr4o6ZHEeOFDn7Q4z/0lntfGP9YqlBJf81KGGikcn1s5fp87GBapBZMC4nAuhyalZv5Ptcs8U3BzN9sQGSdaMFExvW5tozWuNHJJxood8XZci5GwXzPxewprA5oHs7eqBP5ElIW7ScP9q3VFIEcL5ky7fkfJJCYm4cY6YugS+P2N7BYPpkkeao4+0nZXOAxGkeGLPifof75OkOa0dE13m+LuT8AsVQ+YRi4oDuqfqLJvCkdtCgQz1C5SlvbxwAaaVQGkeauSsTmDJ1l9ix6JwuEeOrzVJwJWtsP4m7Q+PgKYsn8MrbE4gHPXIW1OdcgjDSx07n4LQzlZq/f5WIDo/jEC6vvvNEWoKMKmVadTq/yRF+hQXNjx2HK3qKtVCjO5POqexjiPdqO+/dvvCgE8i9WLbqc9dth/uC5Z717JPxCv6nPxpBfJQhbEO1808jj//A6ee48O+lRUBGQmUVsnkrSLX9xG6wLKEc7td4L95TgdKwN/ydI9Ynd/otyoYlmPnVWgoXSbW9CtGbw6EJMfswcj2pF+M8h2rVHAf2V7LuNDLVJxDcs3EMeEyaT1IGTD8Q3phcZFV0dk9+nWjzIObKn0cgP4bLfuRn9N2wUEaTQCkWGzkZ+0GptnWJ4mhFTmMQaykE7cknE4J+rL4G/JL+feGaGv7LqaGd4yGVOrBk4QaRg1/AtyavpRZAR/wfd2cWh596VLqWX93xjhRA6TzqrNSkP55qSWygTEFNMN7Tv1Qqp3YWiK6lGvRvKAFohL5/k6nySbW9CtGbw6EJMfswcj2pFwJDrUv5GQGKO3YG1UG7syzTH1mF1TWamaK52aldy7ErqeIvLGoDJQmoV0hMvfCxNb/GBc7G6pN8ZFH3XtCxjo1S+h/ONnunMTV2TkdbDZHvYxAU6BLS8ojfor4i0bnBFp5de5GKi99evxyt/FX0J5z9LdUTx4AbiKFB1NS8PR6DXFzFWM8t6C7BoAEhPu51NpdmRPUxp/I+7IQNU5SbyjiHG33JLpTYjbkFs95CmC5DO62CJk8ip4kW/qekRwdu/f4AF4kje1FDZTUUs341ac7JF2DFIyqgNajwovdO3XPogtvhQGO3ce6AEmsv3eNCmbyVh+VsIFkJbqCLsviLIrp4/fRNOW7sggEOb+/6okOw2qJRqGNMW0qqRLNeAA1t1em6xUyvC5LTrGsd+mjXOdOW6n3wyWP3TQUGOAJRldadSg0gNfKERPwH/Oj5S1P5VDYfe5m7YLszltYoU1FTy7Rcd13XmCuvvShbjrhUyUOoGo+YnfAREv4nskWOdeoIryUs8na0HQkYCJno2X1LeGb0ax2LiLQ8Ur/sZ0qMuf/RRf9R/lRdzvYG2KkTt/4vpwd+eCJEM7QEjQsk1qqDqumnRoYWUoUfuG6vyVzd7nOvp1bViiRNzrV1EH/e1OX9RU9Sn4x1+BXSK4cOKyMlauoUQjZOvYMaBuOiZjkEn5f6o7HBbltHc7qWwR407Er8xCcaXAyLcG8G2oUc5HymS+K011lW29Vd/xpfei8ITsNM8ypVfjYxRCAC543lQygfFAWg8PRcUIP0I+I38RcamYGHWAjxMpmyfFi+W0BeNoTKCd6CDhhEBqkzpKvaiIezhvHd84kdc4z9QORwjcZW+hKDR3qGbWDmgC2F38TnXmhv9mWbkbKIzVOPbM4rVjvKJ4HgKWoW7Lmsuil9JxNv4BSHdLhpcO6zIj7+f7wGy1e9MDqxLPQXU3EuTBxWrUSWq/bi0hmXQsUUFi2EuYpnBnR6WrQV4yddWnGJ7Da+TRkq"
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 905,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".blog",
    "ruleContent": "video@all",
    "ruleImage": "img@data-src",
    "ruleLink": "h3@data-id",
    "ruleNextPage": "page",
    "rulePubDate": "h4.1@text",
    "ruleTitle": "h3@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新a片::http://fangsung.com/a片/3?page={{page}}\n日本精品::http://fangsung.com/a片/3?type=日本精品&source=3&page={{page}}\n精品推荐::http://fangsung.com/a片/3?type=精品推荐&source=3&page={{page}}\n国产色情::http://fangsung.com/a片/3?type=国产色情&source=3&page={{page}}\n主播直播::http://fangsung.com/a片/3?type=主播直播&source=3&page={{page}}\n亚洲无码::http://fangsung.com/a片/3?type=亚洲无码&source=3&page={{page}}\n中文字幕::http://fangsung.com/a片/3?type=中文字幕&source=3&page={{page}}\n巨乳美乳::http://fangsung.com/a片/3?type=巨乳美乳&source=3&page={{page}}\n人妻熟女::http://fangsung.com/a片/3?type=人妻熟女&source=3&page={{page}}\n强奸乱伦::http://fangsung.com/a片/3?type=强奸乱伦&source=3&page={{page}}\n欧美精品::http://fangsung.com/a片/3?type=欧美精品&source=3&page={{page}}\n萝莉少女::http://fangsung.com/a片/3?type=萝莉少女&source=3&page={{page}}\n伦理三级::http://fangsung.com/a片/3?type=伦理三级&source=3&page={{page}}\n成人动漫::http://fangsung.com/a片/3?type=成人动漫&source=3&page={{page}}\n自拍偷拍::http://fangsung.com/a片/3?type=自拍偷拍&source=3&page={{page}}\n制服丝袜::http://fangsung.com/a片/3?type=制服丝袜&source=3&page={{page}}\n口交颜射::http://fangsung.com/a片/3?type=口交颜射&source=3&page={{page}}\nCosplay::http://fangsung.com/a片/3?type=Cosplay&source=3&page={{page}}\n素人自拍::http://fangsung.com/a片/3?type=素人自拍&source=3&page={{page}}\n台湾辣妹::http://fangsung.com/a片/3?type=台湾辣妹&source=3&page={{page}}\n韩国御姐::http://fangsung.com/a片/3?type=韩国御姐&source=3&page={{page}}\n唯美港姐::http://fangsung.com/a片/3?type=唯美港姐&source=3&page={{page}}\n东南亚AV::http://fangsung.com/a片/3?type=东南亚AV&source=3&page={{page}}\n欺辱凌辱::http://fangsung.com/a片/3?type=欺辱凌辱&source=3&page={{page}}\n剧情介绍::http://fangsung.com/a片/3?type=剧情介绍&source=3&page={{page}}\n多人多P::http://fangsung.com/a片/3?type=多人多P&source=3&page={{page}}\n91探花::http://fangsung.com/a片/3?type=91探花&source=3&page={{page}}\n网红流出::http://fangsung.com/a片/3?type=网红流出&source=3&page={{page}}\n野外露出::http://fangsung.com/a片/3?type=野外露出&source=3&page={{page}}\n古装扮演::http://fangsung.com/a片/3?type=古装扮演&source=3&page={{page}}\n女优系列::http://fangsung.com/a片/3?type=女优系列&source=3&page={{page}}\n可爱学生::http://fangsung.com/a片/3?type=可爱学生&source=3&page={{page}}\n风情旗袍::http://fangsung.com/a片/3?type=风情旗袍&source=3&page={{page}}\n兽耳系列::http://fangsung.com/a片/3?type=兽耳系列&source=3&page={{page}}\n瑜伽裤::http://fangsung.com/a片/3?type=瑜伽裤&source=3&page={{page}}\n闷骚护士::http://fangsung.com/a片/3?type=闷骚护士&source=3&page={{page}}\n过膝袜::http://fangsung.com/a片/3?type=过膝袜&source=3&page={{page}}\n网曝门::http://fangsung.com/a片/3?type=网曝门&source=3&page={{page}}\n传媒出品::http://fangsung.com/a片/3?type=传媒出品&source=3&page={{page}}\n女同性恋::http://fangsung.com/a片/3?type=女同性恋&source=3&page={{page}}\n男同性恋::http://fangsung.com/a片/3?type=男同性恋&source=3&page={{page}}\n恋腿狂魔::http://fangsung.com/a片/3?type=恋腿狂魔&source=3&page={{page}}\n亚洲有码::http://fangsung.com/a片/3?type=亚洲有码&source=3&page={{page}}",
    "sourceGroup": "h",
    "sourceIcon": "http://fangsung.com/themes/fangsung/assets/img/favicon.ico",
    "sourceName": "A片",
    "sourceUrl": "http://fangsung.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 911,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": " {\n  \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "tag.ul.0@tag.li&&tag.ul.3@tag.li",
    "ruleContent": "",
    "ruleImage": "",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "",
    "rulePubDate": "",
    "ruleTitle": "tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://www.h6s5.com/index/home.html",
    "sourceGroup": "h",
    "sourceIcon": "https://jsjs.qcyn72.com/10/assets/images/theme/default/logo_300x300.png",
    "sourceName": "猫咪",
    "sourceUrl": "https://www.h6s5.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 912,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "header": " {\n\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@js:\n(function a(){\nvar a = java.getElements(\".postcate\");\nvar b = java.getElements(\".postauthor\");\nvar c = java.getElements(\".postcon\");\nvar d = java.getElements(\".post-like\")\n\nvar list = [];\nfor(var i = 0;i < a.size();i++){\nlist[i] =a.get(i)+b.get(i)+c.get(i)+d.get(i)\n}\nreturn list})()",
    "ruleContent": "@js:\nvar doc = java.getElements(\"link&&.contentbox\")\n\n//清除广告\ndoc.select(\"img[src$=ass.jpg]\").remove()\n\nresult = doc",
    "ruleImage": "tag.img.0@data-original",
    "ruleLink": "tag.a.1@href",
    "ruleNextPage": "page",
    "rulePubDate": "Date：{{@@tag.time@datetime}}    Like：{{@@class.post-like@text}}    {{@@class.postthumb@text}} P    [{{@@tag.a.0@text}}]##$##@js:if(baseUrl.match(/xiu/)){result.replace(/P/,\"\")}else{result}",
    "ruleTitle": "h1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::https://www.ikmjx.com/page/{{page}}\n最热::https://www.ikmjx.com/page/{{page}}?orderby=views\n随机::https://www.ikmjx.com/page/{{page}}?orderby=rand\n制服秀::https://www.ikmjx.com/xiu/zhifu/page/{{page}}\n美胸秀::https://www.ikmjx.com/xiu/xiong/page/{{page}}\n美腿秀::https://www.ikmjx.com/xiu/tui/page/{{page}}",
    "sourceGroup": "h",
    "sourceIcon": "https://www.ikmjx.com/wp-content/themes/xiuerpro%2B/static/picture/favicon.ico",
    "sourceName": "爱看买家秀(除新广告)",
    "sourceUrl": "https://www.ikmjx.com/",
    "style": ".pagebtn, .singleinfo, .shoping, .postcate, .articlename{\ndisplay:none;\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 913,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.data[*]",
    "ruleContent": "<h1>{$.data.title}</h1><p>时间:{$.data.createTimeString}({$.data.createTime})</p>{$.data.content}<a href=\"{$.data.url}\">原文链接</a>",
    "ruleDescription": "",
    "ruleImage": "$.thumbnail",
    "ruleLink": "http://47.105.79.245/v2/text/{$.id}",
    "rulePubDate": "$.createTimeString",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "http://47.105.79.245/anitama.jpg",
    "sourceName": "Anitama",
    "sourceUrl": "http://47.105.79.245/v3/article?feedId=86&articleId=0&pageSize=20&isLookDown=true",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 914,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".sousuo||class.update_area_lists@tag.li",
    "ruleContent": "<!DOCTYPE html>\r\n<html>\r\n\r\n<head>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\r\n    <link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n    <script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\r\n    <script src=\"http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js\"></script>\r\n</head>\r\n\r\n<body>\r\n    <h3>{{@@.item_title@tag.h1@text}}</h3>\r\n<h5>{{@class.jianjie@text}}</h5>\r\n    <div id=\"box\">{{@@class.content.0@tag.p@tag.img@html}}</div>\r\n    <div id=\"loads\">加载中 </div>\r\n    <script>\r\n        var loads;\r\n        $(document).ready(function () {\r\n            var box = document.getElementById(\"box\");\r\n            loads = document.getElementById(\"loads\");\r\n            new Viewer(box, { title: false, interval: 3000 })\r\n            var i = 1;\r\n            var page = {{@@class.page.0@tag.a.-2@textNodes##\\n}}-1;\r\n            var url = \"{{baseUrl.replace('.html','_')}}\";\r\n            new IntersectionObserver(entries => {\r\n                if (entries[0].intersectionRatio) {\r\n                    if (entries[0].intersectionRatio <= 0) return;\r\n                    for (var j = 0; j < 1; j++) {\r\n                        fetchHtml(i, page, url);\r\n                        i += 1;\r\n                    }\r\n                }\r\n            }).observe(loads)\r\n        });\r\n\r\n\r\n        function fetchHtml(i, page, url) {\n        \t\r\n            if (i <= page) {\r\n                nurl = url + i + '.html';\r\n                $.ajax({\r\n                    url: nurl,\r\n                    dataType: 'html',\r\n                    success: function (html) {\r\n                        $('#box').append('<h5>' + (++i) + '->' + (++page) + '</h5>');\r\n                        $('#box').append($(html).find('p img'));\r\n                        box.viewer.update();\r\n                    },\r\n                    error: function (xhr) { }\r\n                });\r\n            } else {\r\n                $('#loads').html(\"\");\r\n            }\r\n        }\r\n    </script>\r\n</body>\r\n\r\n</html>",
    "ruleDescription": "",
    "ruleImage": "tag.a@tag.img@src",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "<js>\nvar page={{@@class.current@text}}\n//java.log(baseUrl)\nif(baseUrl.indexOf(\"p=\")>0){\n\tvar base=baseUrl.replace(\"p=\"+page,\"p=\")\n\tresult=base+(page+1)\n\t}\nelse{\nbase=baseUrl.replace(\"index\"+page+\".html\",\"\")\n\tresult=base+\"index\"+(page+1)+\".html\"\n\t}\n</js>",
    "rulePubDate": "{{@class.meta-post@textNodes}}_浏览:{{@class.cx_like@textNodes}}",
    "ruleTitle": "h2@text||tag.a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::/plus/search/index.asp?keyword={{source.getVariable()}}&searchtype=title&p=1\r\n随机::/XiuRen/index{{ Math.ceil(Math.random()*50) }}.html\r\n秀人网::/XiuRen/\r\nImiss爱蜜社::/IMiss/\r\n模范学院::/MFStar/\r\n魅妍社::/MiStar/\r\n美媛馆::/MyGirl/\r\n尤物馆::/YouWu/\r\n嗲囡囡::/FeiLin/\r\n蜜桃社::/MiiTao/\r\n尤蜜荟::/YouMi/\r\n画语界::/XiaoYu/\r\n花漾::/HuaYang/\r\n星颜社::/XingYan/\r\n兔几盟::/BoLoli/\r\n优星馆::/Uxing/\r\n影私荟::/WingS/\r\n星乐园::/LeYuan/\r\n顽味生活::/Taste/\r\n糖果画报::/Candy/\r\n萌榜::/Micat/",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://images.weserv.nl/?url=https://article.biliimg.com/bfs/article/ded67638d944a7e0ef4452b721fd6434a22de16d.png",
    "sourceName": "秀人集表",
    "sourceUrl": "https://xrmn3.vkkk.bf/\n@",
    "style": "/*标题相关*/\r\nh3{text-align:center}\r\nh6{margin-bottom:0}\r\nimg{width:100%}\nh5{margin-bottom:0;padding-left:5;}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "concurrentRate": "1000",
    "customOrder": 918,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "<js>\nheaders={\n    \"User-Agent\": \"Dart/3.6 (dart:io)\",\n    \"Referer\": \"https://www.uaa.com/\",\n    \"token\": cache.get(\"uaaToken\") || \"\"\n}\ncache.put(\"uaaheaders\",JSON.stringify(headers));\nJSON.stringify(headers);\n</js>",
    "jsLib": "{\"UAA视频\":\"https://qyyuapi.com/dy/js/UAA视频/jsLib.js\"}",
    "lastUpdateTime": 1766658369205,
    "loadWithBaseUrl": true,
    "loginUi": "[\n  { name: \"账号：\", type: \"text\" },\n  { name: \"密码：\", type: \"password\" },\n  {\n    name: \"💡登录账号💡\",\n    type: \"button\",\n    action: \"Login()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45}\n  },\n  {\n    name: \"💡源站更新💡\",\n    type: \"button\",\n    action: \"update()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45}\n  },\n\n  { name: \"查看当前\", type: \"button\", action: \"look(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"查看历史\", type: \"button\", action: \"look(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"恢复默认\", type: \"button\", action: \"test(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"搜索：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  填写筛选词条  ɞ´«ˇ༻\", type: \"button\", action: \"login('【筛选词条】' + n(2) + '填写分类、标签、屏蔽的词条\\\\n\\\\n多个词条用逗号隔开\\\\n\\\\n🔶搜索增加分类、标签、屏蔽🔶\\\\n\\\\n%%后接分类词条\\\\n\\\\n@@后接标签词条\\\\n\\\\n##后接屏蔽词条')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}},\n  { name: \"分类：\", type: \"text\" },\n  { name: \"标签：\", type: \"text\" },\n  { name: \"屏蔽：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  点击切换源站  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"①UAA①\", type: \"button\", action: \"$(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"②UAA②\", type: \"button\", action: \"$(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"③UAA③\", type: \"button\", action: \"$(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换类型  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部 \", type: \"button\", action: \"t(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"国产\", type: \"button\", action: \"t(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"日本\", type: \"button\", action: \"t(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"动漫\", type: \"button\", action: \"t(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"正规\", type: \"button\", action: \"t(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"欧美\", type: \"button\", action: \"t(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换进度  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"o(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"完结\", type: \"button\", action: \"o(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"连载\", type: \"button\", action: \"o(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换来源  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"q(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"原创首发\", type: \"button\", action: \"q(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"会员上传\", type: \"button\", action: \"q(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"默认\", type: \"button\", action: \"r(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"上架\", type: \"button\", action: \"r(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"更新\", type: \"button\", action: \"r(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"观看\", type: \"button\", action: \"r(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"收藏\", type: \"button\", action: \"r(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"评分\", type: \"button\", action: \"r(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换取向  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"u(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"男主\", type: \"button\", action: \"u(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"女主\", type: \"button\", action: \"u(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"男男\", type: \"button\", action: \"u(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"女女\", type: \"button\", action: \"u(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换日期  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"v(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"今日\", type: \"button\", action: \"v(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"本周 \", type: \"button\", action: \"v(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"本月\", type: \"button\", action: \"v(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n\n  { name: \"༺ˇ»`ʚ  点击切换评分  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"w(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.15} },\n  { name: \">1\", type: \"button\", action: \"w(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.15} },\n  { name: \">2\", type: \"button\", action: \"w(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.15} },\n  { name: \">3\", type: \"button\", action: \"w(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.15} },\n  { name: \">4\", type: \"button\", action: \"w(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.15} },\n\n  { name: \"༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻\", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号“,”隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"收藏：\", type: \"text\" },\n\n  { name: \"长按倍速：\", type: \"text\" },\n  { name: \"跳过片头：\", type: \"text\" },\n  { name: \"跳过片尾：\", type: \"text\" },\n  { name: \"背景图片：\", type: \"text\" },\n  { name: \"图片透明度：\", type: \"text\" },\n  { name: \"按钮透明度：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  主题模式切换  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"日间模式\", type: \"button\", action: \"a(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"夜间模式\", type: \"button\", action: \"a(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  {\n    name: \"清除网站Cookie缓存\",\n    type: \"button\",\n    action: \"deleteCookie()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n\n  { name: \"清除远程代码标识\", type: \"button\", action: \"DeleteJskey()\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n\n  {\n    name: \"💡　　 源　　 站　　 打　　 印　　 💡\",\n    type: \"button\",\n    action: \"test()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  }\n]",
    "loginUrl": "eval(String(Reload('https://qyyuapi.com/dy/js/UAA视频/loginUrl.js')));",
    "preload": false,
    "preloadJs": "window.run=run;\nwindow.java=java;",
    "ruleArticles": "<js>\neval(String(source.loginUrl));\neval(String(Reload('https://qyyuapi.com/dy/file/history.js')));\nresult;\n</js>\n.[?(@.title)]",
    "ruleContent": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/UAA视频/ruleContent.js')));\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title>{{$.model.title}}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https://qyyuapi.com/css/plyr.css\">\n<style>\n{{String(Reload('https://qyyuapi.com/dy/file/player' + Get('a') + '.css'))}}\n</style>\n</head>\n<body>\n<p></p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<details>\n  <summary>\n    <h3>{{$.model.title}}</h3>\n  </summary>\n  <img src=\"{{$.model.coverUrl}}\">\n</details>\n<div class=\"all-info\">\n{{JSON.parse(result).jishu}}\n<div>\n    <p>📆 更新：{{$.model.updateTime||$.model.updateTimeFormat##T.*}}</p>\n    <p>👩‍🎤 女优：{{$.model.actress}}</p>\n    <p>🎦 片商：{{$.model.authors}}</p>\n    <p>👤 上传：{{$.model.uploader}}</p>\n    <p>🎥 播放：{{$.model.viewCountFormat}}</p>\n    <p>🧡 收藏：{{$.model.collectCountFormat}}</p>\n    <p>🎬 番号：{{$.model.number}}</p>\n    <p>📦 分类：{{$.model.categories}}</p>\n    <p>🔖 标签：{{$.model.tags}}</p>\n    <p>📋 简介：{{$.model.brief}}</p>\n    <p>📇 女优介绍：{{$.model.videoActress[*].brief}}</p>\n</div>\n</div>\n\n<script src=\"https://gcore.jsdelivr.net/npm/hls.js@canary\"></script>\n<script src=\"https://qyyuapi.com/js/plyr.js\"></script>\n\n<script>\n{{String(Reload('https://qyyuapi.com/dy/file/player.js'))}}\n\nconst JKkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\`([^\\`]+)\\`/,'$1').replace(/.*\\/\\/[^\\/]+\\//, ''))}}\";\nconst JDkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\`([^\\`]+)\\`/,'$1').replace(/.*\\/\\/[^\\/]+\\//, '') + 'time')}}\";\nconst PTtime = {{/^\\d+$/.test(Map('跳过片头：')) ? Map('跳过片头：') : 0}};\nconst PWtime = {{/^\\d+$/.test(Map('跳过片尾：')) ? Map('跳过片尾：') : 0}};\nconst BSspeed = {{/^\\d+$/.test(Map('长按倍速：')) ? Map('长按倍速：') : 2}};\nconst ImageUrl = \"{{/^http/.test(Map('背景图片：')) ? Map('背景图片：') : ''}}\";\nconst Opacity1 = \"{{/0|1|^0\\.\\d+$/.test(Map('图片透明度：')) ? Map('图片透明度：') : ''}}\";\nconst Opacity2 = \"{{/0|1|^0\\.\\d+$/.test(Map('按钮透明度：')) ? Map('按钮透明度：') : ''}}\";\nupdateBackground(ImageUrl, Opacity1, Opacity2);\n\n// 获取视频URL并更新视频源\nfunction geturl() {\n    let zyurl = JSON.parse($(\".jishu button.active\")[0].value);\n    let img = $('img')[0];\n    let fm = \"{{$.model.coverUrl}}\";\n\n    // 更新视频封面\n    $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n    let sources = zyurl;\n    return { sources: sources };\n}\n\n// 页面加载时初始化播放器\n(() => {\n    let n = $(\".jishu\")[0].dataset.n;\n    active($('.jishu button'), n);\n    setTimeout(updatePadding, 100);\n    const { sources } = geturl();\n    localStorage.setItem('HistoryTIME', Date.now());\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed);\n})();\n</script>\n</body>\n</html>\n<js>\nresult\n.replace(/：\\s*/g,'：')\n.replace(/<p>(?!.*集数)(.*：)<\\/p>/gm, '<p style=\"display:none;\">$1</p>');\n</js>",
    "ruleImage": "$.coverUrl##$##,{\"headers\":{\"Referer\":\"https://www.uaa.com/\"}}",
    "ruleLink": "@js:`{{Get('hurl')}}/@js:\\`\\{\\{Get('url') + Path\\}\\}intro?id={{$.id}}&viewId=viewId&force=false\\``",
    "ruleNextPage": "page",
    "rulePubDate": "📆{{$.updateTime||$.updateTimeFormat##T.*}}🎥{{$.viewCountFormat}}📦{{$.categories||$.category}}🔖{{$.tags}}##🔖$",
    "ruleTitle": "$.title\n@js:\nbq = `{{$.title}},{{$.authors}},{{$.actress}},{{$.categories||$.category}},{{$.tags}}`;\nvar key = java.get('key') || '';\npb = `{{Map('屏蔽：')}},${Tag('屏蔽：',key||Skey('搜索：'))}`.replace(/^,|,$/g,'');\nvar containsAny = pb.split(',').some(item => new RegExp(item).test(bq));\n(pb !== '' && containsAny) ? '' : result;",
    "searchUrl": "<js>\njava.put('key',key);\n`{{Get('url') + Path}}search?keyword={{key.replace(/%%.*|@@.*|##.*/g, '')}}&category={{Tag('分类：',key)}}&tag={{Tag('标签：',key)}}&origin=${Get_origin}&page={{page}}&searchType=1&source=${Get_q}&finished=${Get_finished}&orderType=${Get_r}&orientation=${Get_orientation}&period=${Get_period}&score=${Get_score}&size=50`\n</js>",
    "shouldOverrideUrlLoading": "if (url.startsWith('legadovideo://')) {\n    java.openUrl(\n        decodeURIComponent(url.replace('legadovideo://', '')),\n        'video/*'\n    );\n    true;\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/UAA视频/sortUrl.js')));\n</js>",
    "sourceComment": "修改：1、优化fetch请求函数；by：xiaohan231-2025/11/16\n\n修改：1、增加顶部搜索(仅适配lyc版)；2、优化恢复默认设置；by：xiaohan231-2025/10/28\n\n修改：1、修复播放器切换集数时，动态刷新画质菜单；2、增加自定义背景和透明度；by：xiaohan231-2025/10/26\n\n修改：1、优化播放器函数，增加播放器左边上下滑动调节亮度，右边上下滑动调节音量；2、优化正文请求；by：xiaohan231-2025/10/23\n\n修改：1、增加切换全屏时根据视频比例自动锁定竖屏或左右横屏(仅适配lyc版)；by：xiaohan231-2025/10/22\n\n修改：1、修复源变量与localStorage双向备份功能失效问题；2、增加智能自适应缓冲区；by：xiaohan231-2025/10/21\n\n修改：1、优化验证代码，加快验证速度；by：xiaohan231-2025/10/08\n\n修改：1、增加账号轮询；by：xiaohan231-2025/07/20\n\n修改：1、修复封面图片；by：xiaohan231-2025/05/30\n\n修改：1、增加正文限制弹窗验证；by：xiaohan231-2025/05/04\n\n修改：1、增加点击顶部视频链接调用播放器应用播放；by：xiaohan231-2025/04/30\n\n修改：1、增加清除远程代码标识按钮；by：xiaohan231-2025/04/26\n\n修改：1、新增源变量与localStorage双向备份功能，确保清理缓存和清除WebView数据时，播放历史记录和设置信息不会丢失；by：xiaohan231-2025/04/22\n\n修改：1、播放器增加标记片头片尾功能；2、jsLib代码适配新版阅读；by：xiaohan231-2025/04/20\n\n修改：1、增加清除网站Cookie缓存按钮；2、优化详情信息高度调整；3、优化视频集数切换，结尾切换下一集时不再销毁重建播放器实例；4、增加切换下集自动播放功能；5、增加跳过片尾功能；by：xiaohan231-2025/04/17\n\n修改：1、优化播放器函数，不再直接粘贴参数，改为调用函数时引进；by：xiaohan231-2025/04/15\n\n修改：1、优化手势控制，增加滑动进度；by：xiaohan231-2025/04/14\n\n修改：1、部分源代码改为远程获取；2、优化视频资源链接，可直连播放；by：xiaohan231-2025/04/06\n\n修改：1、优化查看当前信息；2、增加筛选词条功能；by：xiaohan231-2025/03/08\n\n修改：1、优化内容链接；2、查看当前增加显示当前登录账号；by：xiaohan231-2025/03/07\n\n新增：1、新增UAA视频；by：xiaohan231-2025/03/07",
    "sourceGroup": "h",
    "sourceIcon": "https://qyyuapi.com/img/uaa.png",
    "sourceName": "UAA视频",
    "sourceUrl": "UAA视频@js:`{{Get('url') + Path}}rank?type=1`",
    "type": 0,
    "variableComment": "JspHXCgzmq549cSvxZRk3cZwMPbFTNUqF8izYT/lL7zmB4iKPcwRvTVF+nSsYaYkyHFh6tU0uM6gAcU2LO/ZQnF45pl+sO+D+/WIYPhUQyHGEp6lyVJ7JKp9yWihRr9Al3sqXhKPltzub2PZi96Ke4YxqVZPjPSmL3O6xY025Sa7Vm1r1ZLIrgpD4Ksa99Q488bytyVS2P8fSjkQvADOECPkrKGclkhYWKWj0hAAvyDNKDxrCyqqqUjrKooVXTcQ3DDxjpsx5Wd29wdbu4YgaMwdlq7eM7Wgq20PNHRYMQv6mzqElmMn9R4S7YEaJiDpXXStroRJTJtLEB2i6pMCY4F02mndjqQW0PbM+tfwlL8BPYfaSJDdVkvSCRNfUL1rVOJY3HHHX1kAyOG/METDaU0ord6qUbQQMGQVmCgqResqjExJ6AI33IXMtAF1485MjO1nSz2Mi9jw/NoCjXBhnxv0A/3lmQZoYsdfz3LCCOOZKjZQKAZj20BFKz9CBUrmpIrzwdkA/+4vJYyZpjkvYKJAAPDIKbn/ptiK77BjLhWzc4xAW5+YsEiLS/Vl9iTyCrhnnDx4gT+dZ4gysUqfVbIb8BRFwb+B6EwyP7u8ZmtYQlzIFkk2UhZ23Kjqj82AwMsqdbKqw9FL36EVYcm2j/djgb/0W5Vs5VlKOG+hISERjLwLqzgRlOxnwG7YZZNLUE6FWafVPrlyzjhAvM62NXpWmL0GPDowm0iGtni5Tn0IJGyzWVZh5hnvTh/PwOlcJj+q5hVSaFxFK58GLc48+Fc006jvm6iDY5gNbK5xA+ZkRfniCNt49bJaAANoCEro3QFhJkn2ECoOmwN4aYdfdn3SloTv48koLVJu+0NT+AISrmVytYeRuVnqNW5GuwElvCL/i8TWro2qktUUurqvp5e4i5scrNF7gSUG053kPtbrtmCrJ28rZpXWhXIsOv46IMrTpuxpCRHooX+Hs5b+XejfLsuNnBbHE13MQn/M0ebGd9Gh+r6/lt//lgTkWigqsmTrtxhrWAZWzaW/yA+sTSedS2lJCbgNokw7qnbmxwD/P4D6808B5ilzMwLtm9SyNWTwxVkJg028edSaskigcsZ30aH6vr+W3/+WBORaKCo4UnC/XzCimn5Jr+ebXNLnJ51LaUkJuA2iTDuqdubHAJsuJSsWINcAtTK6RzhZCNSIdDbzJz55hCg3jwqPboZqC+e1/3J2yhbnCdDJw3/1qjgTOfZMAHf4HKt/RuYW81hQLJ5E0EGQvvbsJ3D+Y5Ztyka4dEMQZahWDR5hSepleBzikh2TmReB3v0T5xYid8QcPk5CBAU0mi1bSh9nnltSWr0jzsWH1Iyc3vP5hdMbiKkMzVjx7Zqcbf6rbicc76D9V4WyQxK0cSe7d9/9FB3SxZBjAiCO+KOut8Un8msxSnVVwgvKx21dER1iPoNp6UqAmZbr8z45Sy+pruQ5nsfBOQr4l7WVhNegga6nXNzj2tpHudPrDm9Wn2UR4YshDfI2BUHw5QUks0QBNocu+jfuCxNjMeNDzOk0a/ZER3ne8qP3wokNIjSKREwHnyiXZQ1K4gl90XkIKDm01NlT9vSc01Zk7dsMfDJIplEsIREkxY7JlCji8BaOGorXtveh+/8moUPA2KlwI7zMU987ZdFUGnxsnL51m1yJTBFiq8a2aINke1Zq/lQ6kGDq5VuBrM8NXrRSMPwvsGy97ZD6Zs1DHkEz+c8ALXx0yHXiXXGM15hX/P/WTzdA6WpNAYMp+onQJ/zgHvBUQ/73lul4SP+94V9kWjwkqpfw9UXK6MX44GmUMxCAIAON0fCsI/Q4azniKxqQ2LHe4jdXvxAAZ88Wt1v7sfpzBbhawep3OjLmQ86ziAOP/r8LYWw/FU/ideDjhbuSmySyvzX5alHrU+2YG2+mUPOLf6RROC1qs8z1CKGs5f3SNeieYFOFcf4OLhp+L88XhvLGgUnDEnizstIoT6dtov2RXBVVjSOYC1gXiRIiGmA/geEd3jFmxCN9gcC7CKEF7/4SX3qQ1YzcsgdlsAxGqxuXtOngwUwdrI+3+V1ZHoV8dL8D3H12J0G9zsNZjZsrd3x55Zv29ILIYBZLdg7gz2RVh0rVIJGoI/0J5SDo8A0C03S6DvLShgJt0SJyIQfxpwc9Nv/TnVir+cpOQuTkymXklBu2cCH5+aFTvqg92WzyV7mcOzWZJEqXs8E+mSOPWdCIQ6fWqEe6zQ+v/MvpVqyrIOqDQFvTJzdiJp8n/xwPHORgrY6nxhA8vAzSkfUqMkAuZ1RCW/OGXI1aoDWuQBoavZ7T5PaiP4P74hvvFscy7hXkC4btV8L/XlNW9O9EoNbSaJDx6c+MuNNNrLHZ0H+FULugcR6TQDU7/4ghGn81bo7MXxzQjv1TMDqRg3BmLpCSMQKRfh+3GyLCUc0qEASueLd2Pr/7yubOpU4+C4E+IExZRCr3XIL6Y6gvlBmpQ9+JFFSAyCRTwbJG/XQ88Va6iMp/ps3AgW3EyeuX0qPV3SfKzFh+usHgrXVa9xoMu+4u/cDvNNBuvz0czEv2WdeH6JQv37xz5Td2Ez6ZI49Z0IhDp9aoR7rND6/W/iWUCt4CpsJBgXN82HkVlLUfZ1aHOaXsdPUeEJeFitPGca4naQuMZo570DEigh5YxfQfIMxRhVezWptMkPtXvGNJ85ctTzZEcHVanMA3QNWUf/hqVFb3YP2/+RujDloqioZclJBJ3mOij0i/Q4r6oazl/dI16J5gU4Vx/g4uGmgAEPwNzpIdNSymRPqtwEUBBsfdiy6OBAPiK9dv8dv/8/uXl9RKrfUePqZ3kHvjMO14sdXSY6NeT1qBecaAeOuVVrRC0HqDIiZthvIGJg0bbTe5yst86LR1+EsJLy4EcPyeXmMw6zjA+dw1zI5mVua8O3IovWzbnAwS6+q5Sh/kG+7Ndnjv4VCp5Fx4JegvwvM/F7CmsDmgezt6oE/kSUj9Fqau9QB+NTeLHXYuRsCgVnlFEb68Tmeeonjr0hLkkaQFDo4VHzoxyqVejFJhJYZcTv43Kl0PLj8prMT+YB1o++bSkpP1JHFGOV8mVzWCPaZA2WB7jvWpl7tQOsbzX7utxh5W6GDrlsRJ2D9mtFTAWfOFu2Ntsdd+lRpDSA4b3+9a7sOlv8rmI2SKxRln6d1svWeiDow3698BkXWKtgfqlN7BT2+akmZ+TS9ZI1uuo2G6cYTJAD5ATn4xv2pL7oTMvRABb0bsp6E4P1mSln/b0iODj2CVKWZLv+BJQu8vU2o2avEIqiSTqKQqObgZFZH2pEJN0uNOoOY4tmAChfMkrnrhFaFUIUXtPARwyGbYpKn8tYUIGRpIJ9sHxqVQbQIDRUHMuRF9Z9yOStphQ7qcnebDsyTme4Dmevu73B5eSBtTX0eNwc0UrZp9bQDXGGOaZMDyuYEZVbpcaz2u8Hmc4FGQ595Q8noc/xHfqdyjMVRZBbrFeJ4LGVUb/sOj5XVJxNwud2Rx1jQxsQ3ht9GVnEfJYJnleXFiJqFs30dMRo9/nlujJ9+7vutq0ogoi/tSY6KDIDzSVKDC/oxDqcJQa0gP2V6Xpzf9xebkdDT/YwKNQ0znmO1yWlzM+65DHAj9Jqfqev7yqFKFhJUHD4fA1dWMWmfunF3YXsnWwwOdg5PFokt/CuEZDCBpWCwDEmirizvNmM/ToZTQ+mofrwklGi8kd4BIwWWlUwVV6BetevBXLefshjCAx59KhF3zh5J5ZK5W/58kidEes04pSwbW6H1BInMRXp15rqcTJ/hw+Va0vVuDrbQjpO6Vg8HDzQO81Cwx5B/7oLyw1RWqokNn7HW+hrUjh0orRgeVSUrI2urG16Z0DUL8I8XG+7phhfst6kuGJ9VaGqdtMjXY3XlkhpTBucstUiWjxoUEECCn6aUIyUi3zTJheYOURWnbG62VG4rcvIxaje9GU3/TCkTO0eKdAfBg2PmVES1CXUbaaGG6QbIfy1kF2lH4OouWrr7J2nNhEAT2ytz+xG/x0cUz0m8y4xWg6VpjNgqBlqw0WrB+AHtMYxZbv5D+Ch5FQuTOhgvj5RI2plX+ZdwoYmXgNSOmD/0niJV8CU3JVZXqeN3MWWE15gFU/vWnpvQMMBR0LpRL5qfDzkACu1Cn1f2+VmKHLVGO1vV66YxQrr4seUSodBSIoxVgbwyztQuY9tlmnCvUcJd6BkvC1FVr4o6ZHEeOFDn7Q4z/0lntfGP9YqlBJf81KGGikcn1s5fp87GBapBZMC4nAuhyalZv5Ptcs8U3BzN9sQGSdaMFExvW5tozWuNHJJxood8XZci5GwXzPxewprA5oHs7eqBP5ElIW7ScP9q3VFIEcL5ky7fkfJJCYm4cY6YugS+P2N7BYPpkkeao4+0nZXOAxGkeGLPifof75OkOa0dE13m+LuT8AsVQ+YRi4oDuqfqLJvCkdtCgQz1C5SlvbxwAaaVQGkeauSsTmDJ1l9ix6JwuEeOrzVJwJWtsP4m7Q+PgKYsn8MrbE4gHPXIW1OdcgjDSx07n4LQzlZq/f5WIDo/jEC6vvvNEWoKMKmVadTq/yRF+hQXNjx2HK3qKtVCjO5POqexjiPdqO+/dvvCgE8i9WLbqc9dth/uC5Z717JPxCv6nPxpBfJQhbEO1808jj//A6ee48O+lRUBGQmUVsnkrSLX9xG6wLKEc7td4L95TgdKwN/ydI9Ynd/otyoYlmPnVWgoXSbW9CtGbw6EJMfswcj2pF+M8h2rVHAf2V7LuNDLVJxDcs3EMeEyaT1IGTD8Q3phcZFV0dk9+nWjzIObKn0cgP4bLfuRn9N2wUEaTQCkWGzkZ+0GptnWJ4mhFTmMQaykE7cknE4J+rL4G/JL+feGaGv7LqaGd4yGVOrBk4QaRg1/AtyavpRZAR/wfd2cWh596VLqWX93xjhRA6TzqrNSkP55qSWygTEFNMN7Tv1Qqp3YWiK6lGvRvKAFohL5/k6nySbW9CtGbw6EJMfswcj2pFwJDrUv5GQGKO3YG1UG7syzTH1mF1TWamaK52aldy7ErqeIvLGoDJQmoV0hMvfCxNb/GBc7G6pN8ZFH3XtCxjo1S+h/ONnunMTV2TkdbDZHvYxAU6BLS8ojfor4i0bnBFp5de5GKi99evxyt/FX0J5z9LdUTx4AbiKFB1NS8PR6DXFzFWM8t6C7BoAEhPu51NpdmRPUxp/I+7IQNU5SbyjiHG33JLpTYjbkFs95CmC5DO62CJk8ip4kW/qekRwdu/f4AF4kje1FDZTUUs341ac7JF2DFIyqgNajwovdO3XPogtvhQGO3ce6AEmsv3eNCmbyVh+VsIFkJbqCLsviLIrp4/fRNOW7sggEOb+/6okOw2qJRqGNMW0qqRLNeAA1t1em6xUyvC5LTrGsd+mjXOdOW6n3wyWP3TQUGOAJRldadSg0gNfKERPwH/Oj5S1P5VDYfe5m7YLszltYoU1FTy7Rcd13XmCuvvShbjrhUyUOoGo+YnfAREv4nskWOdeoIryUs8na0HQkYCJno2X1LeGb0ax2LiLQ8Ur/sZ0qMuf/RRf9R/lRdzvYG2KkTt/4vpwd+eCJEM7QEjQsk1qqDqumnRoYWUoUfuG6vyVzd7nOvp1bViiRNzrV1EH/e1OX9RU9Sn4x1+BXSK4cOKyMlauoUQjZOvYMaBuOiZjkEn5f6o7HBbltHc7qWwR407Er8xCcaXAyLcG8G2oUc5HymS+K011lW29Vd/xpfei8ITsNM8ypVfjYxRCAC543lQygfFAWg8PRcUIP0I+I38RcamYGHWAjxMpmyfFi+W0BeNoTKCd6CDhhEBqkzpKvaiIezhvHd84kdc4z9QORwjcZW+hKDR3qGbWDmgC2F38TnXmhv9mWbkbKIzVOPbM4rVjvKJ4HgKWoW7Lmsuil9JxNv4BSHdLhpcO6zIj7+f7wGy1e9MDqxLPQXU3EuTBxWrUSWq/bi0hmXQsUUFi2EuYpnBnR6WrQV4yddWnGJ7Da+TRkq"
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 926,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "<js>\nheaders={\n    \"User-Agent\": java.getWebViewUA(),\n    \"Origin\": Get('url'),\n    \"Referer\": Get('url'),\n    \"Cookie\": cache.get(Get('url') + 'ck') || ''\n}\ncache.put(java.md5Encode16(Get('url') + \"headers\"),JSON.stringify(headers));\nJSON.stringify(headers);\n</js>",
    "jsLib": "{\"Hanime1\":\"https://qyyuapi.com/dy/js/Hanime1/jsLib.js\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "var res = result;\nurl = java.ruleUrl;\nif(res.body().includes('cf_chl')){\n    cookie.removeCookie(Get('url'));\n    result = java.startBrowserAwait(url,\"验证\");\n    ck = cookie.getCookie(Get('url'));\n    cache.put(Get('url') + 'ck',ck);\n}\nresult;",
    "loginUi": "[\n  {\n    name: \"💡　　 源　　 站　　 更　　 新　　 💡\",\n    type: \"button\",\n    action: \"update()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n  { name: \"查看当前\", type: \"button\", action: \"look(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"查看历史\", type: \"button\", action: \"look(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"恢复默认\", type: \"button\", action: \"test(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"搜索：\", type: \"text\" },\n  { name: \"༺ˇ»`ʚ  点击切换源站  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"①Hanime1①\", type: \"button\", action: \"$(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"②Hanime1②\", type: \"button\", action: \"$(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"③Hanime1③\", type: \"button\", action: \"$(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"④Hanime1④\", type: \"button\", action: \"$(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"⑤Hanime1⑤\", type: \"button\", action: \"$(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"⑥Hanime1⑥\", type: \"button\", action: \"$(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"⑦Hanime1⑦\", type: \"button\", action: \"$(7)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"⑧Hanime1⑧\", type: \"button\", action: \"$(8)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"⑨Hanime1⑨\", type: \"button\", action: \"$(9)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"⑩Hanime1⑩\", type: \"button\", action: \"$(10)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  { name: \"༺ˇ»`ʚ  点击切换排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"默认排序\", type: \"button\", action: \"o(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"最新上市\", type: \"button\", action: \"o(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"最新上傳\", type: \"button\", action: \"o(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"本日排行\", type: \"button\", action: \"o(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"本週排行\", type: \"button\", action: \"o(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"本月排行\", type: \"button\", action: \"o(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"觀看次數\", type: \"button\", action: \"o(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"他們在看\", type: \"button\", action: \"o(7)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  筛选发布日期  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"年份：\", type: \"text\" },\n  { name: \"月份：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻\", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号“,”隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"收藏：\", type: \"text\" },\n\n  { name: \"长按倍速：\", type: \"text\" },\n  { name: \"跳过片头：\", type: \"text\" },\n  { name: \"跳过片尾：\", type: \"text\" },\n  { name: \"背景图片：\", type: \"text\" },\n  { name: \"图片透明度：\", type: \"text\" },\n  { name: \"按钮透明度：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  主题模式切换  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"日间模式\", type: \"button\", action: \"a(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"夜间模式\", type: \"button\", action: \"a(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  {\n    name: \"清除网站Cookie缓存\",\n    type: \"button\",\n    action: \"deleteCookie()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n\n  { name: \"清除远程代码标识\", type: \"button\", action: \"DeleteJskey()\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n\n  {\n    name: \"💡　　 源　　 站　　 打　　 印　　 💡\",\n    type: \"button\",\n    action: \"test()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  }\n]",
    "loginUrl": "eval(String(Reload('https://qyyuapi.com/dy/js/Hanime1/loginUrl.js')));",
    "preload": false,
    "ruleArticles": "@js:\neval(String(source.loginUrl));\neval(String(Reload('https://qyyuapi.com/dy/file/history.js')));\nvar list = java.getElements('.home-rows-videos-wrapper a || .col-xs-12');\nif (/watch\\?v=/.test(list[0])) {\n    list;\n} else {\n    java.getElements('.home-rows-videos-wrapper a!0 || .col-xs-12!0');\n}",
    "ruleContent": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/Hanime1/ruleContent.js')));\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title>{{java.getElements('title').text()}}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<meta name=\"referrer\" content=\"no-referrer\">\n<link rel=\"stylesheet\" href=\"https://qyyuapi.com/css/plyr.css\">\n<style>\n{{String(Reload('https://qyyuapi.com/dy/file/player' + Get('a') + '.css'))}}\n</style>\n</head>\n<body>\n<p></p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<details>\n  <summary>\n    <h3></h3>\n  </summary>\n  <img>\n</details>\n<div class=\"all-info\">\n{{JSON.parse(result).jishu}}\n<div>\n  <p></p>\n  <p></p>\n  <p></p>\n  <p></p>\n  <p></p>\n  <p></p>\n</div>\n</div>\n\n<script src=\"https://gcore.jsdelivr.net/npm/hls.js@canary\"></script>\n<script src=\"https://qyyuapi.com/js/plyr.js\"></script>\n\n<script>\n{{String(Reload('https://qyyuapi.com/dy/file/player.js'))}}\n\nconst JKkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\}([^\\}\\`]+)\\`/,'$1'))}}\";\nconst JDkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\}([^\\}\\`]+)\\`/,'$1') + 'time')}}\";\nconst PTtime = {{/^\\d+$/.test(Map('跳过片头：')) ? Map('跳过片头：') : 0}};\nconst PWtime = {{/^\\d+$/.test(Map('跳过片尾：')) ? Map('跳过片尾：') : 0}};\nconst BSspeed = {{/^\\d+$/.test(Map('长按倍速：')) ? Map('长按倍速：') : 2}};\nconst ImageUrl = \"{{/^http/.test(Map('背景图片：')) ? Map('背景图片：') : ''}}\";\nconst Opacity1 = \"{{/0|1|^0\\.\\d+$/.test(Map('图片透明度：')) ? Map('图片透明度：') : ''}}\";\nconst Opacity2 = \"{{/0|1|^0\\.\\d+$/.test(Map('按钮透明度：')) ? Map('按钮透明度：') : ''}}\";\nconst Next = $(\".jishu\")[0].style.display === 'none' ? null : 1;\n\n// 获取视频URL并更新视频源\nasync function geturl() {\n    try {\n        let src = $(\".jishu button.active\")[0].dataset.src;\n        let result = await fetchRequest(src, {{String(cache.get(java.md5Encode16(Get('url') + \"headers\")))}});\n\n        if (result) {\n            const parser = new DOMParser();\n            const doc = parser.parseFromString(result, 'text/html');\n\n            // 获取页面信息\n            let img = doc.querySelector('video') ? doc.querySelector('video').getAttribute('poster') : '';\n            let bt = doc.querySelector('#shareBtn-title').innerText;\n            let rq = '📆 日期：' + (doc.querySelector('.video-description-panel div') ? doc.querySelector('.video-description-panel div').innerText : '').replace(/[\\s\\S]*?(\\d{4}-\\d.*)/,'$1');\n            let bf = '🎥 播放：' + (doc.querySelector('.video-description-panel div') ? doc.querySelector('.video-description-panel div').innerText : '').replace(/[\\s\\S]*?：(.*?)\\s[\\s\\S]*$/,'$1');\n            let dz = '🧡 点赞：' + (doc.querySelector('#video-like-btn') ? doc.querySelector('#video-like-btn').innerText : '').replace(/[\\s\\S]*?(\\d+)[\\s\\S]*/,'$1');\n            let sc = '👤 上传：' + (doc.querySelector('.card-mobile-user') ? doc.querySelector('.card-mobile-user').innerText : '');\n            let bq = '🔖 标签：' + (doc.querySelector('.video-tags-wrapper') ? doc.querySelector('.video-tags-wrapper').innerText : '').replace(/^\\n|\\n\\s*\\n[\\s\\S]*/g,'').replace(/\\n/g,'，').replace(/\\s+/g,'');\n            let jj = '📋 简介：' + (doc.querySelector('.video-caption-text') ? doc.querySelector('.video-caption-text').innerText : '');\n            let fm = doc.querySelector('video') ? doc.querySelector('video').getAttribute('poster') : '';\n\n            // 获取视频源\n            let zyurl = [];\n            let list1 = doc.querySelectorAll('video source') ? doc.querySelectorAll('video source') : [];\n\n            if (!list1[0]) {\n                let res = doc.querySelector('script[type=\"application/ld+json\"]');\n                let content = res.textContent || res.innerText;\n                content = content.replace(/[\\u0000-\\u001F\\u007F]/g, '');\n                let jsonData = JSON.parse(content);\n                let url1 = jsonData.contentUrl;\n                zyurl.push({ src: url1, size: '0' });\n            } else {\n                list1.forEach(function(source) {\n                    let src = source.getAttribute('src');\n                    let size = source.getAttribute('size');\n                    zyurl.push({ src: src, size: size });\n                });\n            }\n\n            zyurl.sort((a, b) => parseInt(b.size) - parseInt(a.size));\n\n            // 更新页面信息\n            $(\"details>summary>h3\")[0].innerText = bt;\n            $(\".all-info>div>p\")[2].innerText = rq;\n            $(\".all-info>div>p\")[3].innerText = bf;\n            $(\".all-info>div>p\")[4].innerText = dz;\n            $(\".all-info>div>p\")[5].innerText = sc;\n            $(\".all-info>div>p\")[6].innerText = bq;\n            $(\".all-info>div>p\")[7].innerText = jj;\n            $(\".all-info>div>p\")[2].style = /：\\s*$/.test(rq) ? \"display:none;\" : \"\";\n            $(\".all-info>div>p\")[3].style = /：\\s*$/.test(bf) ? \"display:none;\" : \"\";\n            $(\".all-info>div>p\")[4].style = /：\\s*$/.test(dz) ? \"display:none;\" : \"\";\n            $(\".all-info>div>p\")[5].style = /：\\s*$/.test(sc) ? \"display:none;\" : \"\";\n            $(\".all-info>div>p\")[6].style = /：\\s*$/.test(bq) ? \"display:none;\" : \"\";\n            $(\".all-info>div>p\")[7].style = /：\\s*$/.test(jj) ? \"display:none;\" : \"\";\n\n            // 更新详情封面\n            $(\"img\")[0].src = fm;\n\n            // 更新视频封面\n            $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n\n            // 返回视频源\n            let sources = zyurl;\n            return { sources: sources };\n        } else {\n            throw new Error(\"请求失败\");\n        }\n    } catch (error) {\n        console.error(\"错误:\", error);\n        throw error;\n    }\n}\n\n// 点击集数按钮时调用的函数\nasync function jishu(item) {\n    var video = $('video')[0];\n    var wasPlaying = (video && !video.paused) || localStorage.getItem('fromEnded') === 'true';\n    if (localStorage.getItem('fromEnded') === 'true') {\n        localStorage.removeItem('fromEnded');\n    }\n    omit($('.jishu button.active'));\n    item.className = \"active\";\n    const { sources } = await geturl();\n    setTimeout(updatePadding, 100);\n    var index2 = Array.from(item.parentNode.children).indexOf(item);\n    var Progress = {\n        index2: index2\n    };\n    localStorage.setItem(JKkey, JSON.stringify(Progress));\n    localStorage.removeItem(JDkey);\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed, Next);\n    if (wasPlaying && video) {\n        const tryAutoPlay = () => {\n            if (video.readyState >= 3) {\n                video.play().catch(e => {\n                    console.log(\"自动播放被阻止:\", e);\n                    $('.plyr__control--overlaid').show();\n                });\n                video.removeEventListener('canplay', tryAutoPlay);\n            }\n        };\n        if (video.readyState >= 3) {\n            video.play().catch(e => console.log(\"立即播放失败:\", e));\n        } else {\n            video.addEventListener('canplay', tryAutoPlay);\n        }\n    }\n}\n\n// 页面加载时初始化播放器\n(async () => {\n    var n = $(\".jishu\")[0].dataset.n;\n    var Progress = localStorage.getItem(JKkey);\n    if (Progress) {\n        var history = JSON.parse(Progress);\n        n = history.index2;\n    }\n    active($('.jishu button'), n);\n    const { sources } = await geturl();\n    setTimeout(updatePadding, 100);\n    localStorage.setItem('HistoryTAG', 1);\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed, Next);\n})();\n</script>\n</body>\n</html>",
    "ruleImage": "img.1@src||img@src",
    "ruleLink": ".overlay@href||href##^.*\\/\\/[^\\/]+\n@js:`https://hanime1.me/@js:\\`\\{\\{Get('url')\\}\\}${result}\\``",
    "ruleNextPage": "page",
    "rulePubDate": "⌚️ {{@@.card-mobile-duration.0@text}}    🎥 {{@@.card-mobile-duration.-1@text}}    👤 {{@@.card-mobile-genre-wrapper@text}}##⌚️     🎥     👤",
    "ruleTitle": ".card-mobile-title@text||.home-rows-videos-title@text",
    "shouldOverrideUrlLoading": "if (url.startsWith('legadovideo://')) {\n    java.openUrl(\n        decodeURIComponent(url.replace('legadovideo://', '')),\n        'video/*'\n    );\n    true;\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/Hanime1/sortUrl.js')));\n</js>",
    "sourceComment": "修改：1、增加顶部搜索(仅适配lyc版)；by：xiaohan231-2025/10/28\n\n修改：1、修复播放器切换集数时，动态刷新画质菜单；2、增加自定义背景和透明度；by：xiaohan231-2025/10/26\n\n修改：1、修复结尾切换下集自动播放；2、优化播放器函数，增加播放器左边上下滑动调节亮度，右边上下滑动调节音量；by：xiaohan231-2025/10/23\n\n修改：1、增加切换全屏时根据视频比例自动锁定竖屏或左右横屏(仅适配lyc版)；by：xiaohan231-2025/10/22\n\n修改：1、修复源变量与localStorage双向备份功能失效问题；2、增加智能自适应缓冲区；by：xiaohan231-2025/10/21\n\n修改：1、增加源站更新；by：xiaohan231-2025/10/20\n\n修改：1、优化验证代码，加快验证速度；by：xiaohan231-2025/10/08\n\n修改：1、增加源站；by：xiaohan231-2025/07/24\n\n修改：1、增加直连源站；by：xiaohan231-2025/06/24\n\n修改：1、播放器增加切换上下集按钮；2、增加点击顶部视频链接调用播放器应用播放；by：xiaohan231-2025/04/30\n\n修改：1、增加清除远程代码标识按钮；by：xiaohan231-2025/04/26\n\n修改：1、新增源变量与localStorage双向备份功能，确保清理缓存和清除WebView数据时，播放历史记录和设置信息不会丢失；by：xiaohan231-2025/04/22\n\n修改：1、播放状态点击切换集数，自动开始播放；by：xiaohan231-2025/04/21\n\n修改：1、播放器增加标记片头片尾功能；2、jsLib代码适配新版阅读；by：xiaohan231-2025/04/20\n\n修改：1、增加清除网站Cookie缓存按钮；2、优化详情信息高度调整；3、优化视频集数切换，结尾切换下一集时不再销毁重建播放器实例；4、增加切换下集自动播放功能；5、增加跳过片尾功能；by：xiaohan231-2025/04/17\n\n修改：1、优化播放器函数，不再直接粘贴参数，改为调用函数时引进；2、UA改为系统webView UA；by：xiaohan231-2025/04/15\n\n修改：1、优化手势控制，增加滑动进度；by：xiaohan231-2025/04/14\n\n修改：1、部分源代码改为远程获取；by：xiaohan231-2025/04/06\n\n修改：1、快进改为60s,可以在播放完成后快进到结尾，自动切换下集；2、修复列表规则；by：xiaohan231-2025/01/20\n\n修改：1、增加自动切换下集；by：xiaohan231-2025/01/13\n\n修改：1、优化播放器样式；2、增加跳过片头功能；3、增加缓存播放进度功能；by：xiaohan231-2025/01/11\n\n修改：1、增加夜间主题模式切换；by：xiaohan231-2025/01/09\n\n修改：1、搜索关键词改为在登录页填写；2、设置参数改为在源变量保存；3、优化分类链接by：xiaohan231-2025/01/06\n\n修改：1、增加缓存历史播放记录；by：xiaohan231-2025/01/03\n\n修改：1、增加登录页按钮自适应宽度；by：xiaohan231-2024/12/29\n\n修改：1、优化播放器样式，固定播放器高度；2、视频链接改为异步获取；by：xiaohan231-2024/12/07\n\n修改：1、重写内容规则，剧集获取改为异步加载；2、登录页增加自定义长按播放倍速(默认2倍速)；3、优化播放页面样式；by：xiaohan231-2024/12/05\n\n修改：1、增加验证激活过期时间；by：xiaohan231-2024/10/20\n\n修改：1、优化人机验证检查；2、增加验证XH发布页订阅激活；by：xiaohan231-2024/10/18\n\n修改：1、添加人机验证检查；by：xiaohan231-2024/10/11\n\n修改：1、优化页面样式；by：xiaohan231-2024/08/25\n\n修改：1、优化长按倍速播放功能；2、增加分辨率切换功能；by：xiaohan231-2024/08/24\n\n修改：1、优化播放器样式；2、选择播放倍速后，点击屏幕不再恢复成正常；3、添加长按2倍速播放功能，想要设置成其他的可以在内容规则根据注释修改；by：xiaohan231-2024/08/21\n\n修改：1、调用Plyr插件搭建网页播放器；2、设置播放器默认比例为16/9，以防止加载时播放器高度变动；3、优化播放器样式；by：xiaohan231-2024/08/20\n\n修改：1、增加收藏关键词；2、视频不再采用第三方解析，改为调用原生播放器；3、添加视频封面；by：xiaohan231-2024/08/18\n\n修改：1、优化内容规则；by：xiaohan231-2024/08/17\n\n修改：1、修复cosplay视频链接获取bug；2、修复部分视频无法解析bug；3、优化视频链接获取，自动选择最高分辨率；4、增加排序方式切换和发布日期筛选；by：xiaohan231-2024/08/14\n\n修改：1、修复列表bug；2、修改分类地址获取；3、优化内容规则；by：xiaohan231-2024/08/11\n\nby：xiaohan231-2024/08/10",
    "sourceGroup": "h",
    "sourceIcon": "https://qyyuapi.com/img/Hanime1.png",
    "sourceName": "Hanime1",
    "sourceUrl": "Hanime1@js:`{{Get('url')}}`",
    "type": 0,
    "variableComment": "JspHXCgzmq549cSvxZRk3e3Vg5Ih87piQRYDyRa4zt/mB4iKPcwRvTVF+nSsYaYkyHFh6tU0uM6gAcU2LO/ZQnF45pl+sO+D+/WIYPhUQyHGEp6lyVJ7JKp9yWihRr9Al3sqXhKPltzub2PZi96Ke4YxqVZPjPSmL3O6xY025Sa7Vm1r1ZLIrgpD4Ksa99Q488bytyVS2P8fSjkQvADOECPkrKGclkhYWKWj0hAAvyDNKDxrCyqqqUjrKooVXTcQ3DDxjpsx5Wd29wdbu4YgaMwdlq7eM7Wgq20PNHRYMQv6mzqElmMn9R4S7YEaJiDpXXStroRJTJtLEB2i6pMCY4F02mndjqQW0PbM+tfwlL8BPYfaSJDdVkvSCRNfUL1rVOJY3HHHX1kAyOG/METDaU0ord6qUbQQMGQVmCgqResqjExJ6AI33IXMtAF1485MjO1nSz2Mi9jw/NoCjXBhnxv0A/3lmQZoYsdfz3LCCOOZKjZQKAZj20BFKz9CBUrmpIrzwdkA/+4vJYyZpjkvYKJAAPDIKbn/ptiK77BjLhWzc4xAW5+YsEiLS/Vl9iTyCrhnnDx4gT+dZ4gysUqfVbIb8BRFwb+B6EwyP7u8ZmtYQlzIFkk2UhZ23Kjqj82AwMsqdbKqw9FL36EVYcm2j/djgb/0W5Vs5VlKOG+hISERjLwLqzgRlOxnwG7YZZNLUE6FWafVPrlyzjhAvM62NXpWmL0GPDowm0iGtni5Tn0IJGyzWVZh5hnvTh/PwOlcJj+q5hVSaFxFK58GLc48+Fc006jvm6iDY5gNbK5xA+ZkRfniCNt49bJaAANoCEro3QFhJkn2ECoOmwN4aYdfdn3SloTv48koLVJu+0NT+AISrmVytYeRuVnqNW5GuwElvCL/i8TWro2qktUUurqvp5e4i5scrNF7gSUG053kPtbrtmCrJ28rZpXWhXIsOv46IMrTpuxpCRHooX+Hs5b+XejfLsuNnBbHE13MQn/M0ebGd9Gh+r6/lt//lgTkWigqsmTrtxhrWAZWzaW/yA+sTSedS2lJCbgNokw7qnbmxwD/P4D6808B5ilzMwLtm9SyNWTwxVkJg028edSaskigcsZ30aH6vr+W3/+WBORaKCo4UnC/XzCimn5Jr+ebXNLnJ51LaUkJuA2iTDuqdubHAJsuJSsWINcAtTK6RzhZCNSIdDbzJz55hCg3jwqPboZqC+e1/3J2yhbnCdDJw3/1qjgTOfZMAHf4HKt/RuYW81hQLJ5E0EGQvvbsJ3D+Y5Ztyka4dEMQZahWDR5hSepleBzikh2TmReB3v0T5xYid8QcPk5CBAU0mi1bSh9nnltSWr0jzsWH1Iyc3vP5hdMbiKkMzVjx7Zqcbf6rbicc76D9V4WyQxK0cSe7d9/9FB3SxZBjAiCO+KOut8Un8msxSnVVwgvKx21dER1iPoNp6UqAmZbr8z45Sy+pruQ5nsfBOQr4l7WVhNegga6nXNzj2tpHudPrDm9Wn2UR4YshDfI2BUHw5QUks0QBNocu+jfuCxNjMeNDzOk0a/ZER3ne8qP3wokNIjSKREwHnyiXZQ1K4gl90XkIKDm01NlT9vSc01Zk7dsMfDJIplEsIREkxY7JlCji8BaOGorXtveh+/8moUPA2KlwI7zMU987ZdFUGnxsnL51m1yJTBFiq8a2aINke1Zq/lQ6kGDq5VuBrM8NXrRSMPwvsGy97ZD6Zs1DHkEz+c8ALXx0yHXiXXGM15hX/P/WTzdA6WpNAYMp+onQJ/zgHvBUQ/73lul4SP+94V9kWjwkqpfw9UXK6MX44GmUMxCAIAON0fCsI/Q4azniKxqQ2LHe4jdXvxAAZ88Wt1v7sfpzBbhawep3OjLmQ86ziAOP/r8LYWw/FU/ideDjhbuSmySyvzX5alHrU+2YG2+mUPOLf6RROC1qs8z1CKGs5f3SNeieYFOFcf4OLhp+L88XhvLGgUnDEnizstIoT6dtov2RXBVVjSOYC1gXiRIiGmA/geEd3jFmxCN9gcC7CKEF7/4SX3qQ1YzcsgdlsAxGqxuXtOngwUwdrI+3+V1ZHoV8dL8D3H12J0G9zsNZjZsrd3x55Zv29ILIYBZLdg7gz2RVh0rVIJGoI/0J5SDo8A0C03S6DvLShgJt0SJyIQfxpwc9Nv/TnVir+cpOQuTkymXklBu2cCH5+aFTvqg92WzyV7mcOzWZJEqXs8E+mSOPWdCIQ6fWqEe6zQ+v/MvpVqyrIOqDQFvTJzdiJp8n/xwPHORgrY6nxhA8vAzSkfUqMkAuZ1RCW/OGXI1aoDWuQBoavZ7T5PaiP4P74hvvFscy7hXkC4btV8L/XlNW9O9EoNbSaJDx6c+MuNNNrLHZ0H+FULugcR6TQDU7/4ghGn81bo7MXxzQjv1TMDqRg3BmLpCSMQKRfh+3GyLCUc0qEASueLd2Pr/7yubOpU4+C4E+IExZRCr3XIL6Y6gvlBmpQ9+JFFSAyCRTwbJG/XQ88Va6iMp/ps3AgW3EyeuX0qPV3SfKzFh+usHgrXVa9xoMu+4u/cDvNNBuvz0czEv2WdeH6JQv37xz5Td2Ez6ZI49Z0IhDp9aoR7rND6/W/iWUCt4CpsJBgXN82HkVlLUfZ1aHOaXsdPUeEJeFitPGca4naQuMZo570DEigh5YxfQfIMxRhVezWptMkPtXvGNJ85ctTzZEcHVanMA3QNWUf/hqVFb3YP2/+RujDloqioZclJBJ3mOij0i/Q4r6oazl/dI16J5gU4Vx/g4uGmgAEPwNzpIdNSymRPqtwEUBBsfdiy6OBAPiK9dv8dv/8/uXl9RKrfUePqZ3kHvjMO14sdXSY6NeT1qBecaAeOuVVrRC0HqDIiZthvIGJg0bbTe5yst86LR1+EsJLy4EcPyeXmMw6zjA+dw1zI5mVua8O3IovWzbnAwS6+q5Sh/kG+7Ndnjv4VCp5Fx4JegvwvM/F7CmsDmgezt6oE/kSUj9Fqau9QB+NTeLHXYuRsCgVnlFEb68Tmeeonjr0hLkkaQFDo4VHzoxyqVejFJhJYZcTv43Kl0PLj8prMT+YB1o++bSkpP1JHFGOV8mVzWCPaZA2WB7jvWpl7tQOsbzX7utxh5W6GDrlsRJ2D9mtFTAWfOFu2Ntsdd+lRpDSA4b3+9a7sOlv8rmI2SKxRln6d1svWeiDow3698BkXWKtgfqlN7BT2+akmZ+TS9ZI1uuo2G6cYTJAD5ATn4xv2pL7oTMvRABb0bsp6E4P1mSln/b0iODj2CVKWZLv+BJQu8vU2o2avEIqiSTqKQqObgZFZH2pEJN0uNOoOY4tmAChfMkrnrhFaFUIUXtPARwyGbYpKn8tYUIGRpIJ9sHxqVQbQIDRUHMuRF9Z9yOStphQ7qcnebDsyTme4Dmevu73B5eSBtTX0eNwc0UrZp9bQDXGGOaZMDyuYEZVbpcaz2u8Hmc4FGQ595Q8noc/xHfqdyjMVRZBbrFeJ4LGVUb/sOj5XVJxNwud2Rx1jQxsQ3ht9GVnEfJYJnleXFiJqFs30dMRo9/nlujJ9+7vutq0ogoi/tSY6KDIDzSVKDC/oxDqcJQa0gP2V6Xpzf9xebkdDT/YwKNQ0znmO1yWlzM+65DHAj9Jqfqev7yqFKFhJUHD4fA1dWMWmfunF3YXsnWwwOdg5PFokt/CuEZDCBpWCwDEmirizvNmM/ToZTQ+mofrwklGi8kd4BIwWWlUwVV6BetevBXLefshjCAx59KhF3zh5J5ZK5W/58kidEes04pSwbW6H1BInMRXp15rqcTJ/hw+Va0vVuDrbQjpO6Vg8HDzQO81Cwx5B/7oLyw1RWqokNn7HW+hrUjh0orRgeVSUrI2urG16Z0DUL8I8XG+7phhfst6kuGJ9VaGqdtMjXY3XlkhpTBucstUiWjxoUEECCn6aUIyUi3zTJheYOURWnbG62VG4rcvIxaje9GU3/TCkTO0eKdAfBg2PmVES1CXUbaaGG6QbIfy1kF2lH4OouWrr7J2nNhEAT2ytz+xG/x0cUz0m8y4xWg6VpjNgqBlqw0WrB+AHtMYxZbv5D+Ch5FQuTOhgvj5RI2plX+ZdwoYmXgNSOmD/0niJV8CU3JVZXqeN3MWWE15gFU/vWnpvQMMBR0LpRL5qfDzkACu1Cn1f2+VmKHLVGO1vV66YxQrr4seUSodBSIoxVgbwyztQuY9tlmnCvUcJd6BkvC1FVr4o6ZHEeOFDn7Q4z/0lntfGP9YqlBJf81KGGikcn1s5fp87GBapBZMC4nAuhyalZv5Ptcs8U3BzN9sQGSdaMFExvW5tozWuNHJJxood8XZci5GwXzPxewprA5oHs7eqBP5ElIW7ScP9q3VFIEcL5ky7fkfJJCYm4cY6YugS+P2N7BYPpkkeao4+0nZXOAxGkeGLPifof75OkOa0dE13m+LuT8AsVQ+YRi4oDuqfqLJvCkdtCgQz1C5SlvbxwAaaVQGkeauSsTmDJ1l9ix6JwuEeOrzVJwJWtsP4m7Q+PgKYsn8MrbE4gHPXIW1OdcgjDSx07n4LQzlZq/f5WIDo/jEC6vvvNEWoKMKmVadTq/yRF+hQXNjx2HK3qKtVCjO5POqexjiPdqO+/dvvCgE8i9WLbqc9dth/uC5Z717JPxCv6nPxpBfJQhbEO1808jj//A6ee48O+lRUBGQmUVsnkrSLX9xG6wLKEc7td4L95TgdKwN/ydI9Ynd/otyoYlmPnVWgoXSbW9CtGbw6EJMfswcj2pF+M8h2rVHAf2V7LuNDLVJxDcs3EMeEyaT1IGTD8Q3phcZFV0dk9+nWjzIObKn0cgP4bLfuRn9N2wUEaTQCkWGzkZ+0GptnWJ4mhFTmMQaykE7cknE4J+rL4G/JL+feGaGv7LqaGd4yGVOrBk4QaRg1/AtyavpRZAR/wfd2cWh596VLqWX93xjhRA6TzqrNSkP55qSWygTEFNMN7Tv1Qqp3YWiK6lGvRvKAFohL5/k6nySbW9CtGbw6EJMfswcj2pFwJDrUv5GQGKO3YG1UG7syzTH1mF1TWamaK52aldy7ErqeIvLGoDJQmoV0hMvfCxNb/GBc7G6pN8ZFH3XtCxjo1S+h/ONnunMTV2TkdbDZHvYxAU6BLS8ojfor4i0bnBFp5de5GKi99evxyt/FX0J5z9LdUTx4AbiKFB1NS8PR6DXFzFWM8t6C7BoAEhPu51NpdmRPUxp/I+7IQNU5SbyjiHG33JLpTYjbkFs95CmC5DO62CJk8ip4kW/qekRwdu/f4AF4kje1FDZTUUs341ac7JF2DFIyqgNajwovdO3XPogtvhQGO3ce6AEmsv3eNCmbyVh+VsIFkJbqCLsviLIrp4/fRNOW7sggEOb+/6okOw2qJRqGNMW0qqRLNeAA1t1em6xUyvC5LTrGsd+mjXOdOW6n3wyWP3TQUGOAJRldadSg0gNfKERPwH/Oj5S1P5VDYfe5m7YLszltYoU1FTy7Rcd13XmCuvvShbjrhUyUOoGo+YnfAREv4nskWOdeoIryUs8na0HQkYCJno2X1LeGb0ax2LiLQ8Ur/sZ0qMuf/RRf9R/lRdzvYG2KkTt/4vpwd+eCJEM7QEjQsk1qqDqumnRoYWUoUfuG6vyVzd7nOvp1bViiRNzrV1EH/e1OX9RU9Sn4x1+BXSK4cOKyMlauoUQjZOvYMaBuOiZjkEn5f6o7HBbltHc7qWwR407Er8xCcaXAyLcG8G2oUc5HymS+K011lW29Vd/xpfei8ITsNM8ypVfjYxRCAC543lQygfFAWg8PRcUIP0I+I38RcamYGHWAjxMpmyfFi+W0BeNoTKCd6CDhhEBqkzpKvaiIezhvHd84kdc4z9QORwjcZW+hKDR3qGbWDmgC2F38TnXmhv9mWbkbKIzVOPbM4rVjvKJ4HgKWoW7Lmsuil9JxNv4BSHdLhpcO6zIj7+f7wGy1e9MDqxLPQXU3EuTBxWrUSWq/bi0hmXQsUUFi2EuYpnBnR6WrQV4yddWnGJ7Da+TRkq"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 927,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 13; SM-G998B Build/TP1A.220624.014) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36 SearchCraft/3.9.2 okhttp/4.2.2\",\n    \"referer\": \"{{baseUrl}}\"\n}",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n\n  // 触摸事件处理\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    \n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px', top = '50%', fontSize = '16px') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = top;\n    button.style.transform = top === '50%' ? 'translateY(-50%)' : 'none';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.style.fontSize = fontSize; // 添加字体大小设置\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n\n  // 旋转按钮（右侧上方） \n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    \n    // 保留当前的缩放比例和反转状态\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    // 获取当前反转状态\n    const isFlipped = video.getAttribute('data-flipped') === 'true';\n    const flipValue = isFlipped ? -1 : 1;\n    \n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale}) scaleX(${flipValue})`;\n  }, { horizontal: 'right' }, '20px', 'calc(50% - 20px)');\n\n  // 播放/暂停按钮（右侧下方）\n  let isPlaying = !video.paused;\n  const playPauseBtn = createButton(\n    isPlaying ? '❚❚' : '▶',\n    () => {\n      if (video.paused) {\n        video.play();\n        playPauseBtn.textContent = '❚❚';\n      } else {\n        video.pause();\n        playPauseBtn.textContent = '▶';\n      }\n    },\n    { horizontal: 'right' },\n    '22px',\n    'calc(50% + 20px)',\n    '10px' // 单独设置字体大小\n  );\n\n  // 监听视频的播放状态变化\n  video.addEventListener('play', () => {\n    playPauseBtn.textContent = '❚❚';\n    isPlaying = true;\n  });\n\n  video.addEventListener('pause', () => {\n    playPauseBtn.textContent = '▶';\n    isPlaying = false;\n  });\n\n  // 缩放按钮（左侧上方）\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    \n    // 获取当前缩放比例和反转状态\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    // 获取当前反转状态\n    const isFlipped = video.getAttribute('data-flipped') === 'true';\n    const flipValue = isFlipped ? -1 : 1;\n    \n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale}) scaleX(${flipValue})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1) scaleX(${flipValue})`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' }, '20px', 'calc(50% - 20px)');\n\n  // 反转按钮（左侧下方）\n  const flipBtn = createButton('⇄', () => {\n    const isFlipped = video.getAttribute('data-flipped') === 'true';\n    const newFlipState = !isFlipped;\n    video.setAttribute('data-flipped', newFlipState);\n    \n    // 保留当前的旋转和缩放比例\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    const flipValue = newFlipState ? -1 : 1;\n    video.style.transform = `rotate(${currentRotation}deg) scale(${currentScale}) scaleX(${flipValue})`;\n  }, { horizontal: 'left' }, '20px', 'calc(50% + 20px)', '10px'); // 单独设置字体大小\n\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n  ];\n\n  seekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    // 快速跳转按钮使用默认字体大小\n    button.addEventListener('click', () => {\n      video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n    });\n    buttonContainer.appendChild(button);\n  });\n\n  video.parentNode.appendChild(buttonContainer);\n\n// 跳过片头功能\n  video.addEventListener('timeupdate', () => {\n    if (video.currentTime < 13) {\n      video.currentTime = 13;\n    }\n  });\n}\n\n// 修改初始化逻辑，增加重试机制\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\n    const video = document.getElementById('video');\n    if (video) {\n      setupCustomPlayer(video);\n    } else if (retries < maxRetries) {\n      retries++;\n      setTimeout(tryInit, retryInterval);\n    }\n  };\n  tryInit();\n}\n// 使用重试机制初始化播放器\ninitPlayerWithRetry();",
    "lastUpdateTime": 1766131208408,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.resultList",
    "ruleContent": "@js:\n// 发送POST请求获取数据\nlet response = java.ajax(\n  `${source.sourceUrl}/getDataInit,` + JSON.stringify({\n    method: \"POST\",\n    headers: {\"Content-Type\": \"application/json\"},\n    body: JSON.stringify({\n      name: 'John',\n      age: 31,\n      city: 'New York'\n    })\n  })\n);\n\n// 解析响应并获取域名配置\nconst responseData = JSON.parse(response);\nconst domains = responseData.data.macVodLinkMap;\n\n// 新增日志输出macVodLinkMap内容\njava.log(\"macVodLinkMap内容: \" + JSON.stringify(domains, null, 2));\n\nconst serverId = \"{{$.data.result.vod_server_id}}\";\nconst posterUrl = \"{{java.get('pic')}}\";\n\n// 从海报URL提取主域名\nconst extractDomain = (url) => url.match(/^(https?:\\/\\/[^/?#]+)/)?.[1] || \"\";\n\n// 选择域名：优先使用LINK_2配置域名，否则使用海报主域名\nconst domain = domains?.[serverId]?.LINK_2 || extractDomain(posterUrl);\n\n// 构建播放器HTML\nresult = `\n<html>\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\">\n  <meta name=\"referrer\" content=\"never\"/>\n  <style>\n    html, body { text-align:center; margin:0; padding:0; width:100%; overflow:hidden; }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <div class=\"title\">${serverId}*{{$.data.result.vod_name##yy8.*om}}</div>\n    <video \n      id=\"video\" \n      src=\"${domain}{{$.data.result.vod_url}}\" \n      width=\"100%\" \n      height=\"91%\"\n      poster=\"${posterUrl}\"\n      controls autoplay muted loop>\n    </video>\n  </div>\n</body>\n</html>\n`;",
    "ruleImage": "$.vod_pic\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\", \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO_DETAIL\\\",\\\"type_Mid\\\":\\\"1\\\",\\\"id\\\":\\\"{{$.id}}\\\",\\\"languageType\\\":\\\"CN\\\"}\" }",
    "ruleNextPage": "page",
    "rulePubDate": "📆{{$.vod_pic##m3u8/(.*)\\/.*\\/1.jpg##$1##}}",
    "ruleTitle": "$.vod_name##yy8.*om|.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*伪男.*|.*人妖.*|.*男同.*|.*狼狗.*|.*奶狗.*|.*鲜肉.*|.*帅.*|.*正装.*|.*猛1.*|.*ZKtop1.*|.*体育生.*|.*大屌.*|.*双性.*|.*同性.*|.*男男.*|.*直男.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*女性向.*|.*骚0.*|.*poop.*|.*娘娘腔.*|.*变性.*|.*TGirls.*|.*鸡巴.*|.*鸡吧.*|.*阴茎.*|.*男奴.*|.*奴男.*|.*同志.*|.*苏木.*|.*西装.*|.*骚受.*|.*QS.*|.*Peter.*|.*摔跤社.*|.*基情.*|.*天菜.*|.*大鸡.*|.*肌肉.*|.*薄肌.*|.*G片.*|.*术0.*|.*宏翔.*|.*男蜜.*|.*自制口.*|.*威廉.*|.*骚男.*|.*基友.*|.*美男子.*|.*鸡儿.*|.*口活王子.*|.*融化的冰.*|.*自己射.*|.*運動生.*|.*苏婧薇.*|.*武警.*|.*海螺.*|.*刘夏.*|.*肉壮.*|.*弟弟.*|.*社畜.*|.*纪练深.*|.*性别.*|.*淋尿.*|.*控射.*|.*熟女.*|.*CD.*|.*肥女.*|.*黄金.*|.*厕.*|.*老阿姨.*|.*排泄.*|.*臭脚.*|.*大便.*|.*马眼.*|.*聖水.*|.*尸.*|.*廁.*|.*圣水.*|.*豊満.*|.*黑妹.*|.*坦克.*|.*黑屁股.*|.*黑人妹子.*|.*黑逼.*|.*孕妇.*|.*消遣.*|.*伦勃朗.*|.*拉丁裔.*|.*asmr.*|.*GOOD.*|.*奶奶.*|.*老妈.*|.*妈妈.*|.*儿子.*|.*爸爸.*|.*女儿.*|.*母子.*|.*父女.*|.*兄妹.*|.*亲姐.*|.*亲妹.*|.*VR.*|.*都丸富美.*|.*山本かを.*|.*守谷多香子.*|.*波多.*|.*飯岡.*|.*希島.*|.*希岛.*|.*深田.*|.*君島.*|.*君岛.*|.*田中瞳.*|.*向美奈.*|.*美原咲.*|.*华行香.*|.*藤泽丽.*|.*Hitomi.*|.*美乃雀.*|.*若菜奈.*|.*水野朝.*|.*後藤.*|.*明日花.*|.*卯水.*|.*由爱.*|.*JULIA.*|.*风间.*|.*濑圆.*|.*平冈.*|.*藤樱.*|.*藤泽.*|.*蓮実.*|.*藤沢麗央.*|.*木村玲.*|.*SILK.*|.*afchina.*|.*fway.*|.*rebd.*|.*mbdd.*|.*眼射.*|.*水果派.*|.*解说.*|.*第.*期.*|.*π.*|.*寻花.*|.*尋花.*|.*探花.*|.*偷拍.*|.*偸拍.*|.*抄底.*|.*攝像頭.*|.*摄像头.*|.*第.*话.*|.*番系列.*|.*经典番.*|.*里番.*|.*老番.*|.*国漫.*|.*王者.*|.*斗罗.*|.*穿越.*|.*斗破.*|.*仙剑.*|.*小舞.*|.*MMD.*|.*碧蓝.*|.*断雪.*|.*jvid.*|.*情侣网黄.*|.*田中.*|.*M男.*|.*梦梦.*|.*刘玥.*|.*骚菊.*|.*麻生希.*",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "随机::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{Math.ceil(Math.random()*1800)}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"0\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\",\\\"type\\\":\\\"1\\\"}\"}\n\n最新::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"0\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\",\\\"type\\\":\\\"1\\\"}\"}\n\n🔎搜索::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",   \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"0\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"{{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}\\\",\\\"type\\\":\\\"1\\\"}\"}\n\n电影::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"3\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n\n视频::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"2\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n\n传媒::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"1\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n\n偷拍自拍::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"14\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n网红主播::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"19\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n\n\n日韩视频::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"15\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n中文字幕::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"22\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n经典素人::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"23\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n高清无码::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"24\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n美颜巨乳::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"25\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n丝袜制服::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"26\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\nSM系列::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"27\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n欧美系列::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"28\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n欧美性爱::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"16\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\n经典三级::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"18\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}\nH動畫::/forward,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"command\\\":\\\"WEB_GET_INFO\\\",\\\"pageNumber\\\":{{page}},\\\"RecordsPage\\\":20,\\\"typeId\\\":\\\"29\\\",\\\"typeMid\\\":\\\"1\\\",\\\"languageType\\\":\\\"CN\\\",\\\"content\\\":\\\"\\\"}\"}",
    "sourceComment": "https://www.qq99pp.com/\nhttps://www.qq88pp.com/\nhttps://www.4khg.com/\nhttps://www.gghh77.com/\nhttps://www.aa4499.com/\nhttps://rr4488.com/\n备用地址\nhttps://spiderscloudcn2.51111666.com/\nhttps://data.7wzx9.com/\nhttps://xmhk.7wzx9.com/\nhttps://ccdata.7wzx9.com/\nhttps://xiongmao.connectr.cn/\n\n\n\n播放地址:/getDataInit,{ \"method\": \"POST\", \"Content-Type\": \"application/json\",  \"body\": \"{\\\"name\\\":\\\"John\\\",\\\"age\\\":31,\\\"city\\\":\\\"New York\\\"}\"}",
    "sourceGroup": "h",
    "sourceIcon": "https://pic.baike.soso.com/ugc/baikepic2/0/20230415000129-1684402945_gif_152_152_410992.gif/0",
    "sourceName": "✿熊猫视频S",
    "sourceUrl": "https://data.7wzx9.com/",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: +20px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(93% + 0px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \nvideo::-webkit-media-controls-overlay-play-button {\n    display: none !important;\n}\nvideo::-webkit-media-controls-fullscreen-button {\n    display: none !important;\n}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "concurrentRate": "20/10000",
    "customOrder": 928,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "<js>\nheaders={\n    \"User-Agent\": java.getWebViewUA(),\n    \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n    \"Accept-Encoding\": \"identity;q=1, *;q=0\",\n    \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n    \"Cookie\": cache.get(Get('url') + 'ck') || \"\"\n}\ncache.put(java.md5Encode16(Get('url') + \"headers\"),JSON.stringify(headers));\nJSON.stringify(headers);\n</js>",
    "jsLib": "{\"Jable.tv\":\"https://qyyuapi.com/dy/js/Jable.tv/jsLib.js\"}",
    "lastUpdateTime": 1765541740037,
    "loadWithBaseUrl": true,
    "loginCheckJs": "var res = result;\nurl = java.ruleUrl;\nif(res.body().includes('cf_chl')){\n    cookie.removeCookie(Get('url'));\n    result = java.startBrowserAwait(url,\"验证\");\n    ck = cookie.getCookie(Get('url'));\n    cache.put(Get('url') + 'ck',ck);\n}\nresult;",
    "loginUi": "[\n  {\n    name: \"💡　　 源　　 站　　 更　　 新　　 💡\",\n    type: \"button\",\n    action: \"update()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n  { name: \"查看当前\", type: \"button\", action: \"look(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"查看历史\", type: \"button\", action: \"look(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"恢复默认\", type: \"button\", action: \"test(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"搜索：\", type: \"text\" },\n  { name: \"༺ˇ»`ʚ  点击切换源站  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"①Jable①\", type: \"button\", action: \"$(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"②Jable②\", type: \"button\", action: \"$(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"③Jable③\", type: \"button\", action: \"$(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"④Jable④\", type: \"button\", action: \"$(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑤Jable⑤\", type: \"button\", action: \"$(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑥Jable⑥\", type: \"button\", action: \"$(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑦Jable⑦\", type: \"button\", action: \"$(7)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑧Jable⑧\", type: \"button\", action: \"$(8)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑨Jable⑨\", type: \"button\", action: \"$(9)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑩Jable⑩\", type: \"button\", action: \"$(10)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑪Jable⑪\", type: \"button\", action: \"$(11)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑫Jable⑫\", type: \"button\", action: \"$(12)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换分类  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"主题标签\", type: \"button\", action: \"o(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"女优一览\", type: \"button\", action: \"o(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  { name: \"༺ˇ»`ʚ  点击切换排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"默认\", type: \"button\", action: \"q(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"推荐\", type: \"button\", action: \"q(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"更新\", type: \"button\", action: \"q(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"观看\", type: \"button\", action: \"q(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"收藏\", type: \"button\", action: \"q(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  分类女优排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"热度\", type: \"button\", action: \"p(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"名字\", type: \"button\", action: \"p(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"更新\", type: \"button\", action: \"p(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"数量\", type: \"button\", action: \"p(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n\n  { name: \"༺ˇ»`ʚ  女优加载页数  ɞ´«ˇ༻\", type: \"button\", action: \"login('【加载页数】' + n(2) + '填写数字或范围，如：15或10-20')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"页数：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻\", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号“,”隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"收藏：\", type: \"text\" },\n\n  { name: \"长按倍速：\", type: \"text\" },\n  { name: \"跳过片头：\", type: \"text\" },\n  { name: \"跳过片尾：\", type: \"text\" },\n  { name: \"背景图片：\", type: \"text\" },\n  { name: \"图片透明度：\", type: \"text\" },\n  { name: \"按钮透明度：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  主题模式切换  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"日间模式\", type: \"button\", action: \"a(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"夜间模式\", type: \"button\", action: \"a(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  {\n    name: \"清除网站Cookie缓存\",\n    type: \"button\",\n    action: \"deleteCookie()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n\n  { name: \"清除远程代码标识\", type: \"button\", action: \"DeleteJskey()\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n\n  {\n    name: \"💡　　 源　　 站　　 打　　 印　　 💡\",\n    type: \"button\",\n    action: \"test()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  }\n]",
    "loginUrl": "eval(String(Reload('https://qyyuapi.com/dy/js/Jable.tv/loginUrl.js')));",
    "preload": false,
    "preloadJs": "window.run=run;\nwindow.java=java;",
    "ruleArticles": "<js>\neval(String(source.loginUrl));\neval(String(Reload('https://qyyuapi.com/dy/file/history.js')));\nresult;\n</js>\n.mb-e-20",
    "ruleContent": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/Jable.tv/ruleContent.js')));\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title>{{@@h4.0@text}}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https://qyyuapi.com/css/plyr.css\">\n<style>\n{{String(Reload('https://qyyuapi.com/dy/file/player' + Get('a') + '.css'))}}\n</style>\n</head>\n<body>\n<p>{{src.match(/hlsUrl\\s*=\\s*'(.*?)'/)[1]}}</p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<details>\n  <summary>\n    <h3>{{@@h4.0@text}}</h3>\n  </summary>\n  <img>\n</details>\n<div class=\"all-info\">\n{{JSON.parse(result).jishu}}\n<div>\n    <p>📆 更新：{{@@.mr-3.0@text}}</p>\n    <p>🎥 播放：{{@@.mr-3.1@text##\\s}}</p>\n    <p>🧡 收藏：{{@@.count@text}}</p>\n    <p>👩‍🎤 女优：{{@@.rounded-circle@title}}</p>\n    <p>📦 主题：{{@@.tags.h6-md@text##•.*$}}</p>\n    <p>🔖 标签：{{@@.tags.h6-md@text##^.*•}}</p>\n</div>\n</div>\n\n<script src=\"https://gcore.jsdelivr.net/npm/hls.js@canary\"></script>\n<script src=\"https://qyyuapi.com/js/plyr.js\"></script>\n\n<script>\n{{String(Reload('https://qyyuapi.com/dy/file/player.js'))}}\n\nconst JKkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\/\\/[^\\/]+\\//, ''))}}\";\nconst JDkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\/\\/[^\\/]+\\//, '') + 'time')}}\";\nconst PTtime = {{/^\\d+$/.test(Map('跳过片头：')) ? Map('跳过片头：') : 0}};\nconst PWtime = {{/^\\d+$/.test(Map('跳过片尾：')) ? Map('跳过片尾：') : 0}};\nconst BSspeed = {{/^\\d+$/.test(Map('长按倍速：')) ? Map('长按倍速：') : 2}};\nconst ImageUrl = \"{{/^http/.test(Map('背景图片：')) ? Map('背景图片：') : ''}}\";\nconst Opacity1 = \"{{/0|1|^0\\.\\d+$/.test(Map('图片透明度：')) ? Map('图片透明度：') : ''}}\";\nconst Opacity2 = \"{{/0|1|^0\\.\\d+$/.test(Map('按钮透明度：')) ? Map('按钮透明度：') : ''}}\";\nupdateBackground(ImageUrl, Opacity1, Opacity2);\n\n// 获取视频URL并更新视频源\nfunction geturl() {\n    let zyurl = JSON.parse($(\".jishu button.active\")[0].value);\n    let img = $('img')[0];\n    let fm = $(\".jishu button.active\")[0].dataset.fm;\n\n    // 更新详情封面\n    $(\"img\")[0].src = fm;\n\n    // 更新视频封面\n    $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n    let sources = zyurl;\n    return { sources: sources };\n}\n\n// 页面加载时初始化播放器\n(() => {\n    let n = $(\".jishu\")[0].dataset.n;\n    active($('.jishu button'), n);\n    setTimeout(updatePadding, 100);\n    const { sources } = geturl();\n    localStorage.setItem('HistoryTIME', Date.now());\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed);\n})();\n</script>\n</body>\n</html>\n<js>\nresult\n.replace(/：\\s*/g,'：')\n.replace(/<p>(?!.*集数)(.*：)<\\/p>/gm, '<p style=\"display:none;\">$1</p>');\n</js>",
    "ruleImage": "img@data-src\n@js:/epg.deno.dev/.test(Get('url')) ? jxapi + 'https://assets-cdn.jable.tv' + result.replace(/.*\\/\\/[^\\/]+/,'') : result",
    "ruleLink": "a.0@href##^.*\\/\\/[^\\/]+\n@js:`{{Get('url')}}${result}`",
    "ruleNextPage": "page",
    "rulePubDate": "⌚️ {{@@.label@text}}    🎥 {{@@.sub-title@html}}\n@js:\nresult.replace(/<p[\\s\\S]*?<\\/svg>|<\\/p>|\\n/gm,'').replace(/<svg[\\s\\S]*?<\\/svg>/m,'  ❤ ').replace(/(\\d)\\s+(\\d)/g,'$1$2')",
    "ruleTitle": ".title@text",
    "searchUrl": "<js>\n`{{Get('url')}}/search/{{key}}/?mode=async&function=get_block&block_id=list_videos_videos_list_search_result&q={{key}}&sort_by=${Get_sort}&from={{page}}&_={{new Date().getTime()}}`\n</js>",
    "shouldOverrideUrlLoading": "if (url.startsWith('legadovideo://')) {\n    java.openUrl(\n        decodeURIComponent(url.replace('legadovideo://', '')),\n        'video/*'\n    );\n    true;\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/Jable.tv/sortUrl.js')));\n</js>",
    "sourceComment": "修改：1、修复视频加载；by：xiaohan231-2025/12/13\n\n修改：1、优化fetch请求函数；by：xiaohan231-2025/11/16\n\n修改：1、增加顶部搜索(仅适配lyc版)；2、优化恢复默认设置；by：xiaohan231-2025/10/28\n\n修改：1、修复播放器切换集数时，动态刷新画质菜单；2、增加自定义背景和透明度；by：xiaohan231-2025/10/26\n\n修改：1、优化播放器函数，增加播放器左边上下滑动调节亮度，右边上下滑动调节音量；by：xiaohan231-2025/10/23\n\n修改：1、增加切换全屏时根据视频比例自动锁定竖屏或左右横屏(仅适配lyc版)；by：xiaohan231-2025/10/22\n\n修改：1、增加智能自适应缓冲区；by：xiaohan231-2025/10/21\n\n修改：1、增加源站更新；by：xiaohan231-2025/10/20\n\n修改：1、优化验证代码，加快验证速度；by：xiaohan231-2025/10/08\n\n修改：1、增加源站；by：xiaohan231-2025/07/24\n\n修改：1、增加直连源站；by：xiaohan231-2025/06/24\n\n修改：1、增加点击顶部视频链接调用播放器应用播放；by：xiaohan231-2025/04/30\n\n修改：1、增加清除远程代码标识按钮；by：xiaohan231-2025/04/26\n\n修改：1、新增源变量与localStorage双向备份功能，确保清理缓存和清除WebView数据时，播放历史记录和设置信息不会丢失；by：xiaohan231-2025/04/22\n\n修改：1、播放器增加标记片头片尾功能；2、jsLib代码适配新版阅读；by：xiaohan231-2025/04/20\n\n修改：1、增加清除网站Cookie缓存按钮；2、优化详情信息高度调整；3、优化视频集数切换，结尾切换下一集时不再销毁重建播放器实例；4、增加切换下集自动播放功能；5、增加跳过片尾功能；by：xiaohan231-2025/04/17\n\n修改：1、优化播放器函数，不再直接粘贴参数，改为调用函数时引进；2、UA改为系统webView UA；by：xiaohan231-2025/04/15\n\n修改：1、优化手势控制，增加滑动进度；by：xiaohan231-2025/04/14\n\n修改：1、部分源代码改为远程获取；by：xiaohan231-2025/04/06\n\n修改：1、简化合并列表排序切换参数；2、修复搜索；by：xiaohan231-2025/02/20\n\n修改：1、优化播放器样式；2、增加跳过片头功能；3、增加缓存播放进度功能；by：xiaohan231-2025/01/11\n\n修改：1、增加夜间主题模式切换；by：xiaohan231-2025/01/09\n\n修改：1、搜索关键词改为在登录页填写；2、设置参数改为在源变量保存；3、优化分类链接by：xiaohan231-2025/01/06\n\n修改：1、增加登录页按钮自适应宽度；by：xiaohan231-2024/12/29\n\n修改：1、优化播放器样式，固定播放器高度；by：xiaohan231-2024/12/07\n\n修改：1、登录页增加自定义长按播放倍速(默认2倍速)；2、优化播放页面样式；by：xiaohan231-2024/12/05\n\n修改：1、增加验证激活过期时间；by：xiaohan231-2024/10/20\n\n修改：1、优化人机验证检查；2、增加验证XH发布页订阅激活；by：xiaohan231-2024/10/18\n\n修改：1、优化页面样式；by：xiaohan231-2024/08/25\n\n修改：1、优化长按倍速播放功能；by：xiaohan231-2024/08/24\n\n修改：1、优化播放器样式；2、选择播放倍速后，点击屏幕不再恢复成正常；3、添加长按2倍速播放功能，想要设置成其他的可以在内容规则根据注释修改；by：xiaohan231-2024/08/21\n\n修改：1、调用Plyr插件搭建网页播放器；2、设置播放器默认比例为16/9，以防止加载时播放器高度变动；3、优化播放器样式；by：xiaohan231-2024/08/20\n\n修改：1、增加收藏关键词；2、视频不再采用第三方解析，改为调用原生播放器；3、添加视频封面；by：xiaohan231-2024/08/18\n\n修改：1、优化女优信息获取；2、优化内容规则；by：xiaohan231-2024/08/17\n\n修改：1、增加源站更新切换；2、优化分类获取；3、更换视频解析接口；by：xiaohan231-2024/08/16\n\nby：xiaohan231-2024/08/15",
    "sourceGroup": "h",
    "sourceIcon": "https://qyyuapi.com/img/Jable.tv.png",
    "sourceName": "Jable.tv",
    "sourceUrl": "Jable.tv@js:`{{Get('url')}}`",
    "type": 0,
    "variableComment": "JspHXCgzmq549cSvxZRk3cZwMPbFTNUqF8izYT/lL7zmB4iKPcwRvTVF+nSsYaYkyHFh6tU0uM6gAcU2LO/ZQnF45pl+sO+D+/WIYPhUQyHGEp6lyVJ7JKp9yWihRr9Al3sqXhKPltzub2PZi96Ke4YxqVZPjPSmL3O6xY025Sa7Vm1r1ZLIrgpD4Ksa99Q488bytyVS2P8fSjkQvADOECPkrKGclkhYWKWj0hAAvyDNKDxrCyqqqUjrKooVXTcQ3DDxjpsx5Wd29wdbu4YgaMwdlq7eM7Wgq20PNHRYMQv6mzqElmMn9R4S7YEaJiDpXXStroRJTJtLEB2i6pMCY4F02mndjqQW0PbM+tfwlL8BPYfaSJDdVkvSCRNfUL1rVOJY3HHHX1kAyOG/METDaU0ord6qUbQQMGQVmCgqResqjExJ6AI33IXMtAF1485MjO1nSz2Mi9jw/NoCjXBhnxv0A/3lmQZoYsdfz3LCCOOZKjZQKAZj20BFKz9CBUrmpIrzwdkA/+4vJYyZpjkvYKJAAPDIKbn/ptiK77BjLhWzc4xAW5+YsEiLS/Vl9iTyCrhnnDx4gT+dZ4gysUqfVbIb8BRFwb+B6EwyP7u8ZmtYQlzIFkk2UhZ23Kjqj82AwMsqdbKqw9FL36EVYcm2j/djgb/0W5Vs5VlKOG+hISERjLwLqzgRlOxnwG7YZZNLUE6FWafVPrlyzjhAvM62NXpWmL0GPDowm0iGtni5Tn0IJGyzWVZh5hnvTh/PwOlcJj+q5hVSaFxFK58GLc48+Fc006jvm6iDY5gNbK5xA+ZkRfniCNt49bJaAANoCEro3QFhJkn2ECoOmwN4aYdfdn3SloTv48koLVJu+0NT+AISrmVytYeRuVnqNW5GuwElvCL/i8TWro2qktUUurqvp5e4i5scrNF7gSUG053kPtbrtmCrJ28rZpXWhXIsOv46IMrTpuxpCRHooX+Hs5b+XejfLsuNnBbHE13MQn/M0ebGd9Gh+r6/lt//lgTkWigqsmTrtxhrWAZWzaW/yA+sTSedS2lJCbgNokw7qnbmxwD/P4D6808B5ilzMwLtm9SyNWTwxVkJg028edSaskigcsZ30aH6vr+W3/+WBORaKCo4UnC/XzCimn5Jr+ebXNLnJ51LaUkJuA2iTDuqdubHAJsuJSsWINcAtTK6RzhZCNSIdDbzJz55hCg3jwqPboZqC+e1/3J2yhbnCdDJw3/1qjgTOfZMAHf4HKt/RuYW81hQLJ5E0EGQvvbsJ3D+Y5Ztyka4dEMQZahWDR5hSepleBzikh2TmReB3v0T5xYid8QcPk5CBAU0mi1bSh9nnltSWr0jzsWH1Iyc3vP5hdMbiKkMzVjx7Zqcbf6rbicc76D9V4WyQxK0cSe7d9/9FB3SxZBjAiCO+KOut8Un8msxSnVVwgvKx21dER1iPoNp6UqAmZbr8z45Sy+pruQ5nsfBOQr4l7WVhNegga6nXNzj2tpHudPrDm9Wn2UR4YshDfI2BUHw5QUks0QBNocu+jfuCxNjMeNDzOk0a/ZER3ne8qP3wokNIjSKREwHnyiXZQ1K4gl90XkIKDm01NlT9vSc01Zk7dsMfDJIplEsIREkxY7JlCji8BaOGorXtveh+/8moUPA2KlwI7zMU987ZdFUGnxsnL51m1yJTBFiq8a2aINke1Zq/lQ6kGDq5VuBrM8NXrRSMPwvsGy97ZD6Zs1DHkEz+c8ALXx0yHXiXXGM15hX/P/WTzdA6WpNAYMp+onQJ/zgHvBUQ/73lul4SP+94V9kWjwkqpfw9UXK6MX44GmUMxCAIAON0fCsI/Q4azniKxqQ2LHe4jdXvxAAZ88Wt1v7sfpzBbhawep3OjLmQ86ziAOP/r8LYWw/FU/ideDjhbuSmySyvzX5alHrU+2YG2+mUPOLf6RROC1qs8z1CKGs5f3SNeieYFOFcf4OLhp+L88XhvLGgUnDEnizstIoT6dtov2RXBVVjSOYC1gXiRIiGmA/geEd3jFmxCN9gcC7CKEF7/4SX3qQ1YzcsgdlsAxGqxuXtOngwUwdrI+3+V1ZHoV8dL8D3H12J0G9zsNZjZsrd3x55Zv29ILIYBZLdg7gz2RVh0rVIJGoI/0J5SDo8A0C03S6DvLShgJt0SJyIQfxpwc9Nv/TnVir+cpOQuTkymXklBu2cCH5+aFTvqg92WzyV7mcOzWZJEqXs8E+mSOPWdCIQ6fWqEe6zQ+v/MvpVqyrIOqDQFvTJzdiJp8n/xwPHORgrY6nxhA8vAzSkfUqMkAuZ1RCW/OGXI1aoDWuQBoavZ7T5PaiP4P74hvvFscy7hXkC4btV8L/XlNW9O9EoNbSaJDx6c+MuNNNrLHZ0H+FULugcR6TQDU7/4ghGn81bo7MXxzQjv1TMDqRg3BmLpCSMQKRfh+3GyLCUc0qEASueLd2Pr/7yubOpU4+C4E+IExZRCr3XIL6Y6gvlBmpQ9+JFFSAyCRTwbJG/XQ88Va6iMp/ps3AgW3EyeuX0qPV3SfKzFh+usHgrXVa9xoMu+4u/cDvNNBuvz0czEv2WdeH6JQv37xz5Td2Ez6ZI49Z0IhDp9aoR7rND6/W/iWUCt4CpsJBgXN82HkVlLUfZ1aHOaXsdPUeEJeFitPGca4naQuMZo570DEigh5YxfQfIMxRhVezWptMkPtXvGNJ85ctTzZEcHVanMA3QNWUf/hqVFb3YP2/+RujDloqioZclJBJ3mOij0i/Q4r6oazl/dI16J5gU4Vx/g4uGmgAEPwNzpIdNSymRPqtwEUBBsfdiy6OBAPiK9dv8dv/8/uXl9RKrfUePqZ3kHvjMO14sdXSY6NeT1qBecaAeOuVVrRC0HqDIiZthvIGJg0bbTe5yst86LR1+EsJLy4EcPyeXmMw6zjA+dw1zI5mVua8O3IovWzbnAwS6+q5Sh/kG+7Ndnjv4VCp5Fx4JegvwvM/F7CmsDmgezt6oE/kSUj9Fqau9QB+NTeLHXYuRsCgVnlFEb68Tmeeonjr0hLkkaQFDo4VHzoxyqVejFJhJYZcTv43Kl0PLj8prMT+YB1o++bSkpP1JHFGOV8mVzWCPaZA2WB7jvWpl7tQOsbzX7utxh5W6GDrlsRJ2D9mtFTAWfOFu2Ntsdd+lRpDSA4b3+9a7sOlv8rmI2SKxRln6d1svWeiDow3698BkXWKtgfqlN7BT2+akmZ+TS9ZI1uuo2G6cYTJAD5ATn4xv2pL7oTMvRABb0bsp6E4P1mSln/b0iODj2CVKWZLv+BJQu8vU2o2avEIqiSTqKQqObgZFZH2pEJN0uNOoOY4tmAChfMkrnrhFaFUIUXtPARwyGbYpKn8tYUIGRpIJ9sHxqVQbQIDRUHMuRF9Z9yOStphQ7qcnebDsyTme4Dmevu73B5eSBtTX0eNwc0UrZp9bQDXGGOaZMDyuYEZVbpcaz2u8Hmc4FGQ595Q8noc/xHfqdyjMVRZBbrFeJ4LGVUb/sOj5XVJxNwud2Rx1jQxsQ3ht9GVnEfJYJnleXFiJqFs30dMRo9/nlujJ9+7vutq0ogoi/tSY6KDIDzSVKDC/oxDqcJQa0gP2V6Xpzf9xebkdDT/YwKNQ0znmO1yWlzM+65DHAj9Jqfqev7yqFKFhJUHD4fA1dWMWmfunF3YXsnWwwOdg5PFokt/CuEZDCBpWCwDEmirizvNmM/ToZTQ+mofrwklGi8kd4BIwWWlUwVV6BetevBXLefshjCAx59KhF3zh5J5ZK5W/58kidEes04pSwbW6H1BInMRXp15rqcTJ/hw+Va0vVuDrbQjpO6Vg8HDzQO81Cwx5B/7oLyw1RWqokNn7HW+hrUjh0orRgeVSUrI2urG16Z0DUL8I8XG+7phhfst6kuGJ9VaGqdtMjXY3XlkhpTBucstUiWjxoUEECCn6aUIyUi3zTJheYOURWnbG62VG4rcvIxaje9GU3/TCkTO0eKdAfBg2PmVES1CXUbaaGG6QbIfy1kF2lH4OouWrr7J2nNhEAT2ytz+xG/x0cUz0m8y4xWg6VpjNgqBlqw0WrB+AHtMYxZbv5D+Ch5FQuTOhgvj5RI2plX+ZdwoYmXgNSOmD/0niJV8CU3JVZXqeN3MWWE15gFU/vWnpvQMMBR0LpRL5qfDzkACu1Cn1f2+VmKHLVGO1vV66YxQrr4seUSodBSIoxVgbwyztQuY9tlmnCvUcJd6BkvC1FVr4o6ZHEeOFDn7Q4z/0lntfGP9YqlBJf81KGGikcn1s5fp87GBapBZMC4nAuhyalZv5Ptcs8U3BzN9sQGSdaMFExvW5tozWuNHJJxood8XZci5GwXzPxewprA5oHs7eqBP5ElIW7ScP9q3VFIEcL5ky7fkfJJCYm4cY6YugS+P2N7BYPpkkeao4+0nZXOAxGkeGLPifof75OkOa0dE13m+LuT8AsVQ+YRi4oDuqfqLJvCkdtCgQz1C5SlvbxwAaaVQGkeauSsTmDJ1l9ix6JwuEeOrzVJwJWtsP4m7Q+PgKYsn8MrbE4gHPXIW1OdcgjDSx07n4LQzlZq/f5WIDo/jEC6vvvNEWoKMKmVadTq/yRF+hQXNjx2HK3qKtVCjO5POqexjiPdqO+/dvvCgE8i9WLbqc9dth/uC5Z717JPxCv6nPxpBfJQhbEO1808jj//A6ee48O+lRUBGQmUVsnkrSLX9xG6wLKEc7td4L95TgdKwN/ydI9Ynd/otyoYlmPnVWgoXSbW9CtGbw6EJMfswcj2pF+M8h2rVHAf2V7LuNDLVJxDcs3EMeEyaT1IGTD8Q3phcZFV0dk9+nWjzIObKn0cgP4bLfuRn9N2wUEaTQCkWGzkZ+0GptnWJ4mhFTmMQaykE7cknE4J+rL4G/JL+feGaGv7LqaGd4yGVOrBk4QaRg1/AtyavpRZAR/wfd2cWh596VLqWX93xjhRA6TzqrNSkP55qSWygTEFNMN7Tv1Qqp3YWiK6lGvRvKAFohL5/k6nySbW9CtGbw6EJMfswcj2pFwJDrUv5GQGKO3YG1UG7syzTH1mF1TWamaK52aldy7ErqeIvLGoDJQmoV0hMvfCxNb/GBc7G6pN8ZFH3XtCxjo1S+h/ONnunMTV2TkdbDZHvYxAU6BLS8ojfor4i0bnBFp5de5GKi99evxyt/FX0J5z9LdUTx4AbiKFB1NS8PR6DXFzFWM8t6C7BoAEhPu51NpdmRPUxp/I+7IQNU5SbyjiHG33JLpTYjbkFs95CmC5DO62CJk8ip4kW/qekRwdu/f4AF4kje1FDZTUUs341ac7JF2DFIyqgNajwovdO3XPogtvhQGO3ce6AEmsv3eNCmbyVh+VsIFkJbqCLsviLIrp4/fRNOW7sggEOb+/6okOw2qJRqGNMW0qqRLNeAA1t1em6xUyvC5LTrGsd+mjXOdOW6n3wyWP3TQUGOAJRldadSg0gNfKERPwH/Oj5S1P5VDYfe5m7YLszltYoU1FTy7Rcd13XmCuvvShbjrhUyUOoGo+YnfAREv4nskWOdeoIryUs8na0HQkYCJno2X1LeGb0ax2LiLQ8Ur/sZ0qMuf/RRf9R/lRdzvYG2KkTt/4vpwd+eCJEM7QEjQsk1qqDqumnRoYWUoUfuG6vyVzd7nOvp1bViiRNzrV1EH/e1OX9RU9Sn4x1+BXSK4cOKyMlauoUQjZOvYMaBuOiZjkEn5f6o7HBbltHc7qWwR407Er8xCcaXAyLcG8G2oUc5HymS+K011lW29Vd/xpfei8ITsNM8ypVfjYxRCAC543lQygfFAWg8PRcUIP0I+I38RcamYGHWAjxMpmyfFi+W0BeNoTKCd6CDhhEBqkzpKvaiIezhvHd84kdc4z9QORwjcZW+hKDR3qGbWDmgC2F38TnXmhv9mWbkbKIzVOPbM4rVjvKJ4HgKWoW7Lmsuil9JxNv4BSHdLhpcO6zIj7+f7wGy1e9MDqxLPQXU3EuTBxWrUSWq/bi0hmXQsUUFi2EuYpnBnR6WrQV4yddWnGJ7Da+TRkq"
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "concurrentRate": "20/10000",
    "customOrder": 933,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "<js>\nheaders={\n    \"User-Agent\": java.getWebViewUA(),\n    \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n    \"Accept-Encoding\": \"identity;q=1, *;q=0\",\n    \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n    \"Cookie\": cache.get(Get('url') + 'ck') || \"\"\n}\ncache.put(\"Missavheaders\", JSON.stringify(headers));\nJSON.stringify(headers);\n</js>",
    "jsLib": "{\"MISSAV\":\"https://qyyuapi.com/dy/js/MISSAV/jsLib.js\"}",
    "lastUpdateTime": 1765612872130,
    "loadWithBaseUrl": true,
    "loginCheckJs": "var res = result;\nurl = java.ruleUrl;\nif(res.body().includes('cf_chl')){\n    cookie.removeCookie(Get('url'));\n    result = java.startBrowserAwait(url,\"验证\");\n    ck = cookie.getCookie(Get('url'));\n    cache.put(Get('url') + 'ck',ck);\n}\nresult;",
    "loginUi": "[\n  {\n    name: \"💡　　 源　　 站　　 更　　 新　　 💡\",\n    type: \"button\",\n    action: \"update()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n  { name: \"查看当前\", type: \"button\", action: \"look(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"查看历史\", type: \"button\", action: \"look(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"恢复默认\", type: \"button\", action: \"test(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"搜索：\", type: \"text\" },\n  { name: \"༺ˇ»`ʚ  点击切换源站  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"①MISSAV①\", type: \"button\", action: \"$(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"②MISSAV②\", type: \"button\", action: \"$(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"③MISSAV③\", type: \"button\", action: \"$(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"④MISSAV④\", type: \"button\", action: \"$(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑤MISSAV⑤\", type: \"button\", action: \"$(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑥MISSAV⑥\", type: \"button\", action: \"$(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑦MISSAV⑦\", type: \"button\", action: \"$(7)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑧MISSAV⑧\", type: \"button\", action: \"$(8)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑨MISSAV⑨\", type: \"button\", action: \"$(9)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑩MISSAV⑩\", type: \"button\", action: \"$(10)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑪MISSAV⑪\", type: \"button\", action: \"$(11)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑫MISSAV⑫\", type: \"button\", action: \"$(12)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑬MISSAV⑬\", type: \"button\", action: \"$(13)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑭MISSAV⑭\", type: \"button\", action: \"$(14)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"⑮MISSAV⑮\", type: \"button\", action: \"$(15)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换分类  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"类型标签\", type: \"button\", action: \"o(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"女优一览\", type: \"button\", action: \"o(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  { name: \"༺ˇ»`ʚ  影片浏览排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"今日\", type: \"button\", action: \"q(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"本周\", type: \"button\", action: \"q(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"本月\", type: \"button\", action: \"q(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"全部\", type: \"button\", action: \"q(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n\n  { name: \"༺ˇ»`ʚ  影片其他排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"发行日期\", type: \"button\", action: \"q(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"最近更新\", type: \"button\", action: \"q(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"收藏数量\", type: \"button\", action: \"q(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  分类影片过滤  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"所有\", type: \"button\", action: \"r(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"单人\", type: \"button\", action: \"r(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"多人\", type: \"button\", action: \"r(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"中文\", type: \"button\", action: \"r(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n\n  { name: \"༺ˇ»`ʚ  搜索影片过滤  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"所有影片\", type: \"button\", action: \"s(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"单人作品\", type: \"button\", action: \"s(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"日本AV\", type: \"button\", action: \"s(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"无码流出\", type: \"button\", action: \"s(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"无码影片\", type: \"button\", action: \"s(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"中文字幕\", type: \"button\", action: \"s(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  分类女优排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"影片数量\", type: \"button\", action: \"p(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"出道时间\", type: \"button\", action: \"p(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  { name: \"༺ˇ»`ʚ  女优加载过滤  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"身高\", type: \"button\", action: \"login('【身高参数】' + n(2) + '[0]131-135 [1]136-140 [2]141-145 [3]146-150 [4]151-155 [5]156-160 [6]161-165 [7]166-170 [8]171-175 [9]176-180 [10]181-185 [11]186-190\\\\n\\\\n填写对应身高序号')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"年龄\", type: \"button\", action: \"login('【年龄参数】' + n(2) + '[0]0-20 [1]20-30 [2]30-40\\\\n[3]40-50 [4]50-60 [5]60-99\\\\n\\\\n填写对应年龄序号')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"罩杯\", type: \"button\", action: \"login('【罩杯参数】' + n(2) + '可选罩杯范围：A~Q\\\\n只能填写一个大写字母')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"出道\", type: \"button\", action: \"login('【出道年份】' + n(2) + '填写年份，如：2024\\\\n只能填写一个')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"身高：\", type: \"text\" },\n  { name: \"年龄：\", type: \"text\" },\n  { name: \"罩杯：\", type: \"text\" },\n  { name: \"出道：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  女优加载页数  ɞ´«ˇ༻\", type: \"button\", action: \"login('【加载页数】' + n(2) + '填写数字或范围，如：15或10-20')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"页数：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻\", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号“,”隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"收藏：\", type: \"text\" },\n\n  { name: \"长按倍速：\", type: \"text\" },\n  { name: \"跳过片头：\", type: \"text\" },\n  { name: \"跳过片尾：\", type: \"text\" },\n  { name: \"背景图片：\", type: \"text\" },\n  { name: \"图片透明度：\", type: \"text\" },\n  { name: \"按钮透明度：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  主题模式切换  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"日间模式\", type: \"button\", action: \"a(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"夜间模式\", type: \"button\", action: \"a(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  {\n    name: \"清除网站Cookie缓存\",\n    type: \"button\",\n    action: \"deleteCookie()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n\n  { name: \"清除远程代码标识\", type: \"button\", action: \"DeleteJskey()\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n\n  {\n    name: \"💡　　 源　　 站　　 打　　 印　　 💡\",\n    type: \"button\",\n    action: \"test()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  }\n]",
    "loginUrl": "eval(String(Reload('https://qyyuapi.com/dy/js/MISSAV/loginUrl.js')));",
    "preload": false,
    "preloadJs": "window.run=run;\nwindow.java=java;",
    "ruleArticles": "<js>\neval(String(source.loginUrl));\neval(String(Reload('https://qyyuapi.com/dy/file/history.js')));\nresult;\n</js>\n.thumbnail.group",
    "ruleContent": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/MISSAV/ruleContent.js')));\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title></title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https://qyyuapi.com/css/plyr.css\">\n<style>\n{{String(Reload('https://qyyuapi.com/dy/file/player' + Get('a') + '.css'))}}\n</style>\n</head>\n<body>\n<p></p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<details>\n  <summary>\n    <h3></h3>\n  </summary>\n  <img>\n</details>\n<div class=\"all-info\">\n{{JSON.parse(result).jishu}}\n<div>\n    <p>📆 发行：{{@css:.text-secondary:contains(发行日期:)@text##发行日期:|}}</p>\n    <p></p>\n    <p>👩‍🎤 女优：{{@css:.text-secondary:contains(女优:)@text##女优:}}</p>\n    <p>👨‍🎤 男优：{{@css:.text-secondary:contains(男优:)@text##男优:}}</p>\n    <p>🎦 片商：{{@css:.text-secondary:contains(发行商:)@text##发行商:}}</p>\n    <p>🕵️‍♀️ 导演：{{@css:.text-secondary:contains(导演:)@text##导演:}}</p>\n    <p>🔖 标签：{{@css:.text-secondary:contains(标籤:)@text##标籤:}}</p>\n    <p>🏷 系列：{{@css:.text-secondary:contains(系列:)@text##系列:}}</p>\n    <p></p>\n    <p>✏️ 标题：{{@css:.text-secondary:contains(标题:)@text##标题:}}</p>\n    <p>📋 简介：{{@@[property=\"og:description\"]@content##.*免费加入会员.*}}</p>\n</div>\n</div>\n\n<script src=\"https://gcore.jsdelivr.net/npm/hls.js@canary\"></script>\n<script src=\"https://qyyuapi.com/js/plyr.js\"></script>\n\n<script>\n{{String(Reload('https://qyyuapi.com/dy/file/player.js'))}}\n\nconst JKkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\`([^\\`]+)\\`/,'$1').replace(/.*\\/\\/[^\\/]+\\//, ''))}}\";\nconst JDkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\`([^\\`]+)\\`/,'$1').replace(/.*\\/\\/[^\\/]+\\//, '') + 'time')}}\";\nconst PTtime = {{/^\\d+$/.test(Map('跳过片头：')) ? Map('跳过片头：') : 0}};\nconst PWtime = {{/^\\d+$/.test(Map('跳过片尾：')) ? Map('跳过片尾：') : 0}};\nconst BSspeed = {{/^\\d+$/.test(Map('长按倍速：')) ? Map('长按倍速：') : 2}};\nconst ImageUrl = \"{{/^http/.test(Map('背景图片：')) ? Map('背景图片：') : ''}}\";\nconst Opacity1 = \"{{/0|1|^0\\.\\d+$/.test(Map('图片透明度：')) ? Map('图片透明度：') : ''}}\";\nconst Opacity2 = \"{{/0|1|^0\\.\\d+$/.test(Map('按钮透明度：')) ? Map('按钮透明度：') : ''}}\";\nupdateBackground(ImageUrl, Opacity1, Opacity2);\n\n// 获取视频URL并更新视频源\nfunction geturl() {\n    let zyurl = JSON.parse($(\".jishu button.active\")[0].value);\n    let img = $('img')[0];\n    let bt = $(\".jishu button.active\")[0].dataset.bt;\n    let fh = $(\".jishu button.active\")[0].dataset.fh;\n    let lx = $(\".jishu button.active\")[0].dataset.lx;\n    let fm = $(\".jishu button.active\")[0].dataset.fm;\n\n    // 更新页面信息\n    $(\"title\")[0].innerText = bt;\n    $(\"details>summary>h3\")[0].innerText = bt;\n    $(\".all-info>div>p\")[3].innerText = fh;\n    $(\".all-info>div>p\")[10].innerText = lx;\n    $(\".all-info>div>p\")[3].style = /：\\s*$/.test(fh) ? \"display:none;\" : \"\";\n    $(\".all-info>div>p\")[10].style = /：\\s*$/.test(lx) ? \"display:none;\" : \"\";\n\n    // 更新详情封面\n    img.src = fm;\n\n    // 更新视频封面\n    $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n    let sources = zyurl;\n    return { sources: sources };\n}\n\n// 点击集数按钮时调用的函数\nfunction jishu(item) {\n    var video = $('video')[0];\n    var wasPlaying = video && !video.paused;\n    omit($('.jishu button.active'));\n    item.className = \"active\";\n    const { sources } = geturl();\n    setTimeout(updatePadding, 100);\n    var index2 = Array.from(item.parentNode.children).indexOf(item);\n    var Progress = {\n        index2: index2\n    };\n    localStorage.setItem(JKkey, JSON.stringify(Progress));\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed);\n    if (wasPlaying && video) {\n        const tryAutoPlay = () => {\n            if (video.readyState >= 3) {\n                video.play().catch(e => {\n                    console.log(\"自动播放被阻止:\", e);\n                    $('.plyr__control--overlaid').show();\n                });\n                video.removeEventListener('canplay', tryAutoPlay);\n            }\n        };\n        if (video.readyState >= 3) {\n            video.play().catch(e => console.log(\"立即播放失败:\", e));\n        } else {\n            video.addEventListener('canplay', tryAutoPlay);\n        }\n    }\n}\n\n// 页面加载时初始化播放器\n(() => {\n    var n = $(\".jishu\")[0].dataset.n;\n    var Progress = localStorage.getItem(JKkey);\n    if (Progress) {\n        var history = JSON.parse(Progress);\n        n = history.index2;\n    }\n    active($('.jishu button'), n);\n    setTimeout(updatePadding, 100);\n    const { sources } = geturl();\n    localStorage.setItem('HistoryTIME', Date.now());\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed);\n})();\n</script>\n</body>\n</html>\n<js>\nresult\n.replace(/：\\s*/g,'：')\n.replace(/<p>(?!.*集数)(.*：)<\\/p>/gm, '<p style=\"display:none;\">$1</p>');\n</js>",
    "ruleImage": "img@data-src",
    "ruleLink": "a.0@href##^.*\\/\\/[^\\/]+\n@js:`{{Get('hurl')}}/@js:\\`\\{\\{Get('url')\\}\\}${result}\\``",
    "ruleNextPage": "page",
    "rulePubDate": "⌚️ {{@@.right-1@text}}    📦 {{@@.left-1@text}}\n@js:result.replace(/📦\\s*$/,'')",
    "ruleTitle": ".text-secondary@text",
    "searchUrl": "<js>\n`{{Get('url')}}/cn/search/{{key}}?filters=${Get_filters1}&sort=${Get_sort}&page={{page}}`\n</js>",
    "shouldOverrideUrlLoading": "if (url.startsWith('legadovideo://')) {\n    java.openUrl(\n        decodeURIComponent(url.replace('legadovideo://', '')),\n        'video/*'\n    );\n    true;\n}",
    "showWebLog": true,
    "singleUrl": false,
    "sortUrl": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/MISSAV/sortUrl.js')));\n</js>",
    "sourceComment": "修改：1、修复视频加载；by：xiaohan231-2025/12/13\n\n修改：1、优化fetch请求函数；by：xiaohan231-2025/11/16\n\n修改：1、增加顶部搜索(仅适配lyc版)；2、优化恢复默认设置；by：xiaohan231-2025/10/28\n\n修改：1、修复播放器切换集数时，动态刷新画质菜单；2、增加自定义背景和透明度；by：xiaohan231-2025/10/26\n\n修改：1、优化播放器函数，增加播放器左边上下滑动调节亮度，右边上下滑动调节音量；by：xiaohan231-2025/10/23\n\n修改：1、增加切换全屏时根据视频比例自动锁定竖屏或左右横屏(仅适配lyc版)；by：xiaohan231-2025/10/22\n\n修改：1、修复源变量与localStorage双向备份功能失效问题；2、增加智能自适应缓冲区；by：xiaohan231-2025/10/21\n\n修改：1、增加源站更新；by：xiaohan231-2025/10/20\n\n修改：1、优化验证代码，加快验证速度；by：xiaohan231-2025/10/08\n\n修改：1、增加源站；by：xiaohan231-2025/07/24\n\n修改：1、增加点击顶部视频链接调用播放器应用播放；by：xiaohan231-2025/04/30\n\n修改：1、增加清除远程代码标识按钮；by：xiaohan231-2025/04/26\n\n修改：1、新增源变量与localStorage双向备份功能，确保清理缓存和清除WebView数据时，播放历史记录和设置信息不会丢失；by：xiaohan231-2025/04/22\n\n修改：1、播放状态点击切换集数，自动开始播放；by：xiaohan231-2025/04/21\n\n修改：1、播放器增加标记片头片尾功能；2、jsLib代码适配新版阅读；by：xiaohan231-2025/04/20\n\n修改：1、增加清除网站Cookie缓存按钮；2、优化详情信息高度调整；3、优化视频集数切换，结尾切换下一集时不再销毁重建播放器实例；4、增加切换下集自动播放功能；5、增加跳过片尾功能；by：xiaohan231-2025/04/17\n\n修改：1、优化播放器函数，不再直接粘贴参数，改为调用函数时引进；2、UA改为系统webView UA；by：xiaohan231-2025/04/15\n\n修改：1、优化手势控制，增加滑动进度；by：xiaohan231-2025/04/14\n\n修改：1、部分源代码改为远程获取；by：xiaohan231-2025/04/06\n\n修改：1、修复源站；by：xiaohan231-2025/01/16\n\n修改：1、优化播放器样式；2、增加跳过片头功能；3、增加缓存播放进度功能；by：xiaohan231-2025/01/11\n\n修改：1、增加夜间主题模式切换；by：xiaohan231-2025/01/09\n\n修改：1、搜索关键词改为在登录页填写；2、设置参数改为在源变量保存；3、优化分类链接；by：xiaohan231-2025/01/06\n\n修改：1、增加登录页按钮自适应宽度；by：xiaohan231-2024/12/29\n\n修改：1、优化播放器样式，固定播放器高度；2、修复搜索页面加载；by：xiaohan231-2024/12/07\n\n修改：1、登录页增加自定义长按播放倍速(默认2倍速)；2、优化播放页面样式；by：xiaohan231-2024/12/05\n\n修改：1、增加验证激活过期时间；by：xiaohan231-2024/10/20\n\n修改：1、优化人机验证检查；2、增加验证XH发布页订阅激活；by：xiaohan231-2024/10/18\n\n修改：1、优化页面样式；by：xiaohan231-2024/08/25\n\n修改：1、优化长按倍速播放功能；2、增加分辨率切换功能；by：xiaohan231-2024/08/24\n\n修改：1、优化播放器样式；2、选择播放倍速后，点击屏幕不再恢复成正常；3、添加长按2倍速播放功能，想要设置成其他的可以在内容规则根据注释修改；by：xiaohan231-2024/08/21\n\n修改：1、调用Plyr插件搭建网页播放器；2、设置播放器默认比例为16/9，以防止加载时播放器高度变动；3、优化播放器样式；by：xiaohan231-2024/08/20\n\n修改：1、修复部分视频无法播放的bug；2、增加收藏关键词；3、视频不再采用第三方解析，改为调用原生播放器；4、添加视频封面；by：xiaohan231-2024/08/18\n\nby：xiaohan231-2024/08/17",
    "sourceGroup": "h",
    "sourceIcon": "https://qyyuapi.com/img/MISSAV.png",
    "sourceName": "MISSAV",
    "sourceUrl": "MISSAV@js:`{{Get('url')}}/dm10/cn`",
    "type": 0,
    "variableComment": "JspHXCgzmq549cSvxZRk3cZwMPbFTNUqF8izYT/lL7zmB4iKPcwRvTVF+nSsYaYkyHFh6tU0uM6gAcU2LO/ZQnF45pl+sO+D+/WIYPhUQyHGEp6lyVJ7JKp9yWihRr9Al3sqXhKPltzub2PZi96Ke4YxqVZPjPSmL3O6xY025Sa7Vm1r1ZLIrgpD4Ksa99Q488bytyVS2P8fSjkQvADOECPkrKGclkhYWKWj0hAAvyDNKDxrCyqqqUjrKooVXTcQ3DDxjpsx5Wd29wdbu4YgaMwdlq7eM7Wgq20PNHRYMQv6mzqElmMn9R4S7YEaJiDpXXStroRJTJtLEB2i6pMCY4F02mndjqQW0PbM+tfwlL8BPYfaSJDdVkvSCRNfUL1rVOJY3HHHX1kAyOG/METDaU0ord6qUbQQMGQVmCgqResqjExJ6AI33IXMtAF1485MjO1nSz2Mi9jw/NoCjXBhnxv0A/3lmQZoYsdfz3LCCOOZKjZQKAZj20BFKz9CBUrmpIrzwdkA/+4vJYyZpjkvYKJAAPDIKbn/ptiK77BjLhWzc4xAW5+YsEiLS/Vl9iTyCrhnnDx4gT+dZ4gysUqfVbIb8BRFwb+B6EwyP7u8ZmtYQlzIFkk2UhZ23Kjqj82AwMsqdbKqw9FL36EVYcm2j/djgb/0W5Vs5VlKOG+hISERjLwLqzgRlOxnwG7YZZNLUE6FWafVPrlyzjhAvM62NXpWmL0GPDowm0iGtni5Tn0IJGyzWVZh5hnvTh/PwOlcJj+q5hVSaFxFK58GLc48+Fc006jvm6iDY5gNbK5xA+ZkRfniCNt49bJaAANoCEro3QFhJkn2ECoOmwN4aYdfdn3SloTv48koLVJu+0NT+AISrmVytYeRuVnqNW5GuwElvCL/i8TWro2qktUUurqvp5e4i5scrNF7gSUG053kPtbrtmCrJ28rZpXWhXIsOv46IMrTpuxpCRHooX+Hs5b+XejfLsuNnBbHE13MQn/M0ebGd9Gh+r6/lt//lgTkWigqsmTrtxhrWAZWzaW/yA+sTSedS2lJCbgNokw7qnbmxwD/P4D6808B5ilzMwLtm9SyNWTwxVkJg028edSaskigcsZ30aH6vr+W3/+WBORaKCo4UnC/XzCimn5Jr+ebXNLnJ51LaUkJuA2iTDuqdubHAJsuJSsWINcAtTK6RzhZCNSIdDbzJz55hCg3jwqPboZqC+e1/3J2yhbnCdDJw3/1qjgTOfZMAHf4HKt/RuYW81hQLJ5E0EGQvvbsJ3D+Y5Ztyka4dEMQZahWDR5hSepleBzikh2TmReB3v0T5xYid8QcPk5CBAU0mi1bSh9nnltSWr0jzsWH1Iyc3vP5hdMbiKkMzVjx7Zqcbf6rbicc76D9V4WyQxK0cSe7d9/9FB3SxZBjAiCO+KOut8Un8msxSnVVwgvKx21dER1iPoNp6UqAmZbr8z45Sy+pruQ5nsfBOQr4l7WVhNegga6nXNzj2tpHudPrDm9Wn2UR4YshDfI2BUHw5QUks0QBNocu+jfuCxNjMeNDzOk0a/ZER3ne8qP3wokNIjSKREwHnyiXZQ1K4gl90XkIKDm01NlT9vSc01Zk7dsMfDJIplEsIREkxY7JlCji8BaOGorXtveh+/8moUPA2KlwI7zMU987ZdFUGnxsnL51m1yJTBFiq8a2aINke1Zq/lQ6kGDq5VuBrM8NXrRSMPwvsGy97ZD6Zs1DHkEz+c8ALXx0yHXiXXGM15hX/P/WTzdA6WpNAYMp+onQJ/zgHvBUQ/73lul4SP+94V9kWjwkqpfw9UXK6MX44GmUMxCAIAON0fCsI/Q4azniKxqQ2LHe4jdXvxAAZ88Wt1v7sfpzBbhawep3OjLmQ86ziAOP/r8LYWw/FU/ideDjhbuSmySyvzX5alHrU+2YG2+mUPOLf6RROC1qs8z1CKGs5f3SNeieYFOFcf4OLhp+L88XhvLGgUnDEnizstIoT6dtov2RXBVVjSOYC1gXiRIiGmA/geEd3jFmxCN9gcC7CKEF7/4SX3qQ1YzcsgdlsAxGqxuXtOngwUwdrI+3+V1ZHoV8dL8D3H12J0G9zsNZjZsrd3x55Zv29ILIYBZLdg7gz2RVh0rVIJGoI/0J5SDo8A0C03S6DvLShgJt0SJyIQfxpwc9Nv/TnVir+cpOQuTkymXklBu2cCH5+aFTvqg92WzyV7mcOzWZJEqXs8E+mSOPWdCIQ6fWqEe6zQ+v/MvpVqyrIOqDQFvTJzdiJp8n/xwPHORgrY6nxhA8vAzSkfUqMkAuZ1RCW/OGXI1aoDWuQBoavZ7T5PaiP4P74hvvFscy7hXkC4btV8L/XlNW9O9EoNbSaJDx6c+MuNNNrLHZ0H+FULugcR6TQDU7/4ghGn81bo7MXxzQjv1TMDqRg3BmLpCSMQKRfh+3GyLCUc0qEASueLd2Pr/7yubOpU4+C4E+IExZRCr3XIL6Y6gvlBmpQ9+JFFSAyCRTwbJG/XQ88Va6iMp/ps3AgW3EyeuX0qPV3SfKzFh+usHgrXVa9xoMu+4u/cDvNNBuvz0czEv2WdeH6JQv37xz5Td2Ez6ZI49Z0IhDp9aoR7rND6/W/iWUCt4CpsJBgXN82HkVlLUfZ1aHOaXsdPUeEJeFitPGca4naQuMZo570DEigh5YxfQfIMxRhVezWptMkPtXvGNJ85ctTzZEcHVanMA3QNWUf/hqVFb3YP2/+RujDloqioZclJBJ3mOij0i/Q4r6oazl/dI16J5gU4Vx/g4uGmgAEPwNzpIdNSymRPqtwEUBBsfdiy6OBAPiK9dv8dv/8/uXl9RKrfUePqZ3kHvjMO14sdXSY6NeT1qBecaAeOuVVrRC0HqDIiZthvIGJg0bbTe5yst86LR1+EsJLy4EcPyeXmMw6zjA+dw1zI5mVua8O3IovWzbnAwS6+q5Sh/kG+7Ndnjv4VCp5Fx4JegvwvM/F7CmsDmgezt6oE/kSUj9Fqau9QB+NTeLHXYuRsCgVnlFEb68Tmeeonjr0hLkkaQFDo4VHzoxyqVejFJhJYZcTv43Kl0PLj8prMT+YB1o++bSkpP1JHFGOV8mVzWCPaZA2WB7jvWpl7tQOsbzX7utxh5W6GDrlsRJ2D9mtFTAWfOFu2Ntsdd+lRpDSA4b3+9a7sOlv8rmI2SKxRln6d1svWeiDow3698BkXWKtgfqlN7BT2+akmZ+TS9ZI1uuo2G6cYTJAD5ATn4xv2pL7oTMvRABb0bsp6E4P1mSln/b0iODj2CVKWZLv+BJQu8vU2o2avEIqiSTqKQqObgZFZH2pEJN0uNOoOY4tmAChfMkrnrhFaFUIUXtPARwyGbYpKn8tYUIGRpIJ9sHxqVQbQIDRUHMuRF9Z9yOStphQ7qcnebDsyTme4Dmevu73B5eSBtTX0eNwc0UrZp9bQDXGGOaZMDyuYEZVbpcaz2u8Hmc4FGQ595Q8noc/xHfqdyjMVRZBbrFeJ4LGVUb/sOj5XVJxNwud2Rx1jQxsQ3ht9GVnEfJYJnleXFiJqFs30dMRo9/nlujJ9+7vutq0ogoi/tSY6KDIDzSVKDC/oxDqcJQa0gP2V6Xpzf9xebkdDT/YwKNQ0znmO1yWlzM+65DHAj9Jqfqev7yqFKFhJUHD4fA1dWMWmfunF3YXsnWwwOdg5PFokt/CuEZDCBpWCwDEmirizvNmM/ToZTQ+mofrwklGi8kd4BIwWWlUwVV6BetevBXLefshjCAx59KhF3zh5J5ZK5W/58kidEes04pSwbW6H1BInMRXp15rqcTJ/hw+Va0vVuDrbQjpO6Vg8HDzQO81Cwx5B/7oLyw1RWqokNn7HW+hrUjh0orRgeVSUrI2urG16Z0DUL8I8XG+7phhfst6kuGJ9VaGqdtMjXY3XlkhpTBucstUiWjxoUEECCn6aUIyUi3zTJheYOURWnbG62VG4rcvIxaje9GU3/TCkTO0eKdAfBg2PmVES1CXUbaaGG6QbIfy1kF2lH4OouWrr7J2nNhEAT2ytz+xG/x0cUz0m8y4xWg6VpjNgqBlqw0WrB+AHtMYxZbv5D+Ch5FQuTOhgvj5RI2plX+ZdwoYmXgNSOmD/0niJV8CU3JVZXqeN3MWWE15gFU/vWnpvQMMBR0LpRL5qfDzkACu1Cn1f2+VmKHLVGO1vV66YxQrr4seUSodBSIoxVgbwyztQuY9tlmnCvUcJd6BkvC1FVr4o6ZHEeOFDn7Q4z/0lntfGP9YqlBJf81KGGikcn1s5fp87GBapBZMC4nAuhyalZv5Ptcs8U3BzN9sQGSdaMFExvW5tozWuNHJJxood8XZci5GwXzPxewprA5oHs7eqBP5ElIW7ScP9q3VFIEcL5ky7fkfJJCYm4cY6YugS+P2N7BYPpkkeao4+0nZXOAxGkeGLPifof75OkOa0dE13m+LuT8AsVQ+YRi4oDuqfqLJvCkdtCgQz1C5SlvbxwAaaVQGkeauSsTmDJ1l9ix6JwuEeOrzVJwJWtsP4m7Q+PgKYsn8MrbE4gHPXIW1OdcgjDSx07n4LQzlZq/f5WIDo/jEC6vvvNEWoKMKmVadTq/yRF+hQXNjx2HK3qKtVCjO5POqexjiPdqO+/dvvCgE8i9WLbqc9dth/uC5Z717JPxCv6nPxpBfJQhbEO1808jj//A6ee48O+lRUBGQmUVsnkrSLX9xG6wLKEc7td4L95TgdKwN/ydI9Ynd/otyoYlmPnVWgoXSbW9CtGbw6EJMfswcj2pF+M8h2rVHAf2V7LuNDLVJxDcs3EMeEyaT1IGTD8Q3phcZFV0dk9+nWjzIObKn0cgP4bLfuRn9N2wUEaTQCkWGzkZ+0GptnWJ4mhFTmMQaykE7cknE4J+rL4G/JL+feGaGv7LqaGd4yGVOrBk4QaRg1/AtyavpRZAR/wfd2cWh596VLqWX93xjhRA6TzqrNSkP55qSWygTEFNMN7Tv1Qqp3YWiK6lGvRvKAFohL5/k6nySbW9CtGbw6EJMfswcj2pFwJDrUv5GQGKO3YG1UG7syzTH1mF1TWamaK52aldy7ErqeIvLGoDJQmoV0hMvfCxNb/GBc7G6pN8ZFH3XtCxjo1S+h/ONnunMTV2TkdbDZHvYxAU6BLS8ojfor4i0bnBFp5de5GKi99evxyt/FX0J5z9LdUTx4AbiKFB1NS8PR6DXFzFWM8t6C7BoAEhPu51NpdmRPUxp/I+7IQNU5SbyjiHG33JLpTYjbkFs95CmC5DO62CJk8ip4kW/qekRwdu/f4AF4kje1FDZTUUs341ac7JF2DFIyqgNajwovdO3XPogtvhQGO3ce6AEmsv3eNCmbyVh+VsIFkJbqCLsviLIrp4/fRNOW7sggEOb+/6okOw2qJRqGNMW0qqRLNeAA1t1em6xUyvC5LTrGsd+mjXOdOW6n3wyWP3TQUGOAJRldadSg0gNfKERPwH/Oj5S1P5VDYfe5m7YLszltYoU1FTy7Rcd13XmCuvvShbjrhUyUOoGo+YnfAREv4nskWOdeoIryUs8na0HQkYCJno2X1LeGb0ax2LiLQ8Ur/sZ0qMuf/RRf9R/lRdzvYG2KkTt/4vpwd+eCJEM7QEjQsk1qqDqumnRoYWUoUfuG6vyVzd7nOvp1bViiRNzrV1EH/e1OX9RU9Sn4x1+BXSK4cOKyMlauoUQjZOvYMaBuOiZjkEn5f6o7HBbltHc7qWwR407Er8xCcaXAyLcG8G2oUc5HymS+K011lW29Vd/xpfei8ITsNM8ypVfjYxRCAC543lQygfFAWg8PRcUIP0I+I38RcamYGHWAjxMpmyfFi+W0BeNoTKCd6CDhhEBqkzpKvaiIezhvHd84kdc4z9QORwjcZW+hKDR3qGbWDmgC2F38TnXmhv9mWbkbKIzVOPbM4rVjvKJ4HgKWoW7Lmsuil9JxNv4BSHdLhpcO6zIj7+f7wGy1e9MDqxLPQXU3EuTBxWrUSWq/bi0hmXQsUUFi2EuYpnBnR6WrQV4yddWnGJ7Da+TRkq"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 935,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 10.0.0;  XXX Pro Build/GAMER) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.wqindex_list_ul@li&&class.wqfooter@tag.li.1&&class.wqplate_warp@tag.li.5",
    "ruleContent": "",
    "ruleImage": "",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "text.下一页@tag.a@href",
    "rulePubDate": "<js>\nif(baseUrl.match(/forum/)){\nvar doc = org.jsoup.Jsoup.parse(result);\nvar info = doc.select(\"p.list_info\").select(\"span\").textNodes();\nvar author = info.get(0);\nvar views = info.get(2);\nvar reply = info.get(1);\nresult = '作者: '+author+'  浏览: '+views+'  回复: '+reply\n}\n</js>",
    "ruleTitle": "class.wqtitle_list.0@text&&tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "快捷::https://abooky.com\n发书审核::https://www.abooky.com/forum-37-1.html\n二次元小说::https://www.abooky.com/forum-38-1.html\n全本小说::https://abooky.com/forum-39-1.html\n常规小说::https://www.abooky.com/forum-40-1.html\n女频小说::https://abooky.com/forum-42-1.html",
    "sourceGroup": "noh",
    "sourceIcon": "https://www.abooky.com/template/wq_app/static/images/gz_logo.png",
    "sourceName": "阅次元",
    "sourceUrl": "https://abooky.com",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "concurrentRate": "20/10000",
    "customOrder": 937,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "<js>\nheaders={\n    \"User-Agent\": java.getWebViewUA(),\n    \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n    \"Accept-Encoding\": \"identity;q=1, *;q=0\",\n    \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n    \"Cookie\": cache.get(Get('url') + 'ck') || \"\"\n}\ncache.put(java.md5Encode16(Get('url') + \"headers\"),JSON.stringify(headers));\nJSON.stringify(headers);\n</js>",
    "jsLib": "{\"RULE34Ⓥ\":\"https://qyyuapi.com/dy/js/RULE34Ⓥ/jsLib.js\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "var res = result;\nurl = java.ruleUrl;\nif(res.body().includes('cf_chl')){\n    cookie.removeCookie(Get('url'));\n    result = java.startBrowserAwait(url,\"验证\");\n    ck = cookie.getCookie(Get('url'));\n    cache.put(Get('url') + 'ck',ck);\n}\nresult;",
    "loginUi": "[\n  { name: \"查看当前\", type: \"button\", action: \"look(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"查看历史\", type: \"button\", action: \"look(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"恢复默认\", type: \"button\", action: \"test(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"搜索：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  点击切换源站  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"①RULE34Ⓥ\", type: \"button\", action: \"$(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"②RULE34Ⓥ\", type: \"button\", action: \"$(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  { name: \"༺ˇ»`ʚ  点击切换分类  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"主题标签\", type: \"button\", action: \"o(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"作者标签\", type: \"button\", action: \"o(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  { name: \"༺ˇ»`ʚ  主题标签排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"标题\", type: \"button\", action: \"p(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"浏览\", type: \"button\", action: \"p(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"评价\", type: \"button\", action: \"p(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"数量\", type: \"button\", action: \"p(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n\n  { name: \"༺ˇ»`ʚ  切换列表排序  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"默认\", type: \"button\", action: \"q(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"最新\", type: \"button\", action: \"q(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"观看\", type: \"button\", action: \"q(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"好评\", type: \"button\", action: \"q(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"时长\", type: \"button\", action: \"q(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  筛选上传时间  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"s(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"一天\", type: \"button\", action: \"s(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"两天\", type: \"button\", action: \"s(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"一周\", type: \"button\", action: \"s(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"一月\", type: \"button\", action: \"s(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"三月\", type: \"button\", action: \"s(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"一年\", type: \"button\", action: \"s(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n  { name: \"\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n\n  { name: \"༺ˇ»`ʚ  筛选视频时长  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"t(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">1m\", type: \"button\", action: \"t(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">5m\", type: \"button\", action: \"t(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">10m\", type: \"button\", action: \"t(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">20m\", type: \"button\", action: \"t(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">30m\", type: \"button\", action: \"t(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \">60m\", type: \"button\", action: \"t(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"0-10m\", type: \"button\", action: \"t(7)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"0-20m\", type: \"button\", action: \"t(8)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换取向  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"r(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"Straight\", type: \"button\", action: \"r(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"Gay\", type: \"button\", action: \"r(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"Futa\", type: \"button\", action: \"r(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"Music\", type: \"button\", action: \"r(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"Iwara\", type: \"button\", action: \"r(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  分类加载页数  ɞ´«ˇ༻\", type: \"button\", action: \"login('【加载页数】' + n(2) + '填写数字或范围，如：15或10-20')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"页数：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  作者字母筛选  ɞ´«ˇ༻\", type: \"button\", action: \"login('【字母筛选】' + n(2) + '填写字母筛选作者')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"字母：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻\", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号“,”隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"收藏：\", type: \"text\" },\n\n  { name: \"长按倍速：\", type: \"text\" },\n  { name: \"跳过片头：\", type: \"text\" },\n  { name: \"跳过片尾：\", type: \"text\" },\n  { name: \"背景图片：\", type: \"text\" },\n  { name: \"图片透明度：\", type: \"text\" },\n  { name: \"按钮透明度：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  主题模式切换  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"日间模式\", type: \"button\", action: \"a(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"夜间模式\", type: \"button\", action: \"a(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  {\n    name: \"清除网站Cookie缓存\",\n    type: \"button\",\n    action: \"deleteCookie()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n\n  { name: \"清除远程代码标识\", type: \"button\", action: \"DeleteJskey()\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n\n  {\n    name: \"💡　　 源　　 站　　 打　　 印　　 💡\",\n    type: \"button\",\n    action: \"test()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  }\n]",
    "loginUrl": "eval(String(Reload('https://qyyuapi.com/dy/js/RULE34Ⓥ/loginUrl.js')));",
    "preload": false,
    "preloadJs": "window.run=run;\nwindow.java=java;",
    "ruleArticles": "<js>\neval(String(source.loginUrl));\neval(String(Reload('https://qyyuapi.com/dy/file/history.js')));\nresult;\n</js>\n.th",
    "ruleContent": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/RULE34Ⓥ/ruleContent.js')));\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title>{{@@h1@text}}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https://qyyuapi.com/css/plyr.css\">\n<style>\n{{String(Reload('https://qyyuapi.com/dy/file/player' + Get('a') + '.css'))}}\n</style>\n</head>\n<body>\n<p></p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<details>\n  <summary>\n    <h3>{{@@h1@text}}</h3>\n  </summary>\n  <img>\n</details>\n<div class=\"all-info\">\n{{JSON.parse(result).jishu}}\n<div>\n    <p>📆 更新：{{@@.item_info.0@text}}</p>\n    <p>🎥 播放：{{@@.item_info.1@text##\\s}}</p>\n    <p>👍 点赞：{{@@.voters.count@text}}</p>\n    <p>👤 上传：#{{@@.col:contains(Uploaded)@img@alt}}</p>\n    <p>🕵️‍♀️ 作者：#{{@@.col:contains(Artist)@span@text##\\n## \\#}}</p>\n    <p>📦 主题：#{{@@.col:contains(Categories)@span@text##\\n## \\#}}</p>\n    <p>🔖 标签：#{{@@.wrap:contains(Tags)@a!-1@text##\\n## \\#}}</p>\n    <p>📋 简介：{{@@#tab_video_info@.label.0@em@html}}</p>\n</div>\n</div>\n\n<script src=\"https://gcore.jsdelivr.net/npm/hls.js@canary\"></script>\n<script src=\"https://qyyuapi.com/js/plyr.js\"></script>\n\n<script>\n{{String(Reload('https://qyyuapi.com/dy/file/player.js'))}}\n\nconst JKkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\/\\/[^\\/]+\\//, ''))}}\";\nconst JDkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\/\\/[^\\/]+\\//, '') + 'time')}}\";\nconst PTtime = {{/^\\d+$/.test(Map('跳过片头：')) ? Map('跳过片头：') : 0}};\nconst PWtime = {{/^\\d+$/.test(Map('跳过片尾：')) ? Map('跳过片尾：') : 0}};\nconst BSspeed = {{/^\\d+$/.test(Map('长按倍速：')) ? Map('长按倍速：') : 2}};\nconst ImageUrl = \"{{/^http/.test(Map('背景图片：')) ? Map('背景图片：') : ''}}\";\nconst Opacity1 = \"{{/0|1|^0\\.\\d+$/.test(Map('图片透明度：')) ? Map('图片透明度：') : ''}}\";\nconst Opacity2 = \"{{/0|1|^0\\.\\d+$/.test(Map('按钮透明度：')) ? Map('按钮透明度：') : ''}}\";\nupdateBackground(ImageUrl, Opacity1, Opacity2);\n\n// 获取视频URL并更新视频源\nfunction geturl() {\n    let zyurl = JSON.parse($(\".jishu button.active\")[0].value);\n    let img = $('img')[0];\n    let fm = $(\".jishu button.active\")[0].dataset.fm;\n\n    // 更新详情封面\n    img.src = fm;\n\n    // 更新视频封面\n    $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n    let sources = zyurl;\n    return { sources: sources };\n}\n\n// 页面加载时初始化播放器\n(() => {\n    let n = $(\".jishu\")[0].dataset.n;\n    active($('.jishu button'), n);\n    setTimeout(updatePadding, 100);\n    const { sources } = geturl();\n    localStorage.setItem('HistoryTIME', Date.now());\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed);\n})();\n</script>\n</body>\n</html>\n<js>\nresult\n.replace(/：\\s*/g,'：')\n.replace(/<p>(?!.*集数)(.*：)<\\/p>/gm, '<p style=\"display:none;\">$1</p>');\n</js>",
    "ruleImage": "img@data-original##\\d+x\\d+\\/\\d+##preview",
    "ruleLink": "href##^.*\\/\\/[^\\/]+\n@js:`{{Get('hurl')}}${result}`",
    "ruleNextPage": "page",
    "rulePubDate": "⌚️ {{@@.time@text}}    🎥 {{@@.views@text}}    👍 {{@@.rating@text}}    📅 {{@@.added@text}}",
    "ruleTitle": ".thumb_title@text",
    "searchUrl": "<js>\n`{{Get('url')}}/search/{{key}}/?mode=async&function=get_block&block_id=custom_list_videos_videos_list_search&q={{key}}&sort_by=${Get_sort}${Get_duration}&from_videos={{page}}&from_albums={{page}}&_={{new Date().getTime()}}`\n</js>",
    "shouldOverrideUrlLoading": "if (url.startsWith('legadovideo://')) {\n    java.openUrl(\n        decodeURIComponent(url.replace('legadovideo://', '')),\n        'video/*'\n    );\n    true;\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/RULE34Ⓥ/sortUrl.js')));\n</js>",
    "sourceComment": "修改：1、优化fetch请求函数；by：xiaohan231-2025/11/16\n\n修改：1、增加顶部搜索(仅适配lyc版)；2、优化恢复默认设置；by：xiaohan231-2025/10/28\n\n修改：1、修复播放器切换集数时，动态刷新画质菜单；2、增加自定义背景和透明度；by：xiaohan231-2025/10/26\n\n修改：1、优化播放器函数，增加播放器左边上下滑动调节亮度，右边上下滑动调节音量；by：xiaohan231-2025/10/23\n\n修改：1、增加切换全屏时根据视频比例自动锁定竖屏或左右横屏(仅适配lyc版)；by：xiaohan231-2025/10/22\n\n修改：1、增加智能自适应缓冲区；by：xiaohan231-2025/10/21\n\n修改：1、优化验证代码，加快验证速度；by：xiaohan231-2025/10/08\n\n修改：1、增加源站；by：xiaohan231-2025/07/24\n\n修改：1、增加点击顶部视频链接调用播放器应用播放；by：xiaohan231-2025/04/30\n\n修改：1、增加清除远程代码标识按钮；by：xiaohan231-2025/04/26\n\n修改：1、新增源变量与localStorage双向备份功能，确保清理缓存和清除WebView数据时，播放历史记录和设置信息不会丢失；by：xiaohan231-2025/04/22\n\n修改：1、播放器增加标记片头片尾功能；2、jsLib代码适配新版阅读；by：xiaohan231-2025/04/20\n\n修改：1、增加清除网站Cookie缓存按钮；2、优化详情信息高度调整；3、优化视频集数切换，结尾切换下一集时不再销毁重建播放器实例；4、增加切换下集自动播放功能；5、增加跳过片尾功能；by：xiaohan231-2025/04/17\n\n修改：1、优化播放器函数，不再直接粘贴参数，改为调用函数时引进；2、UA改为系统webView UA；by：xiaohan231-2025/04/15\n\n修改：1、优化手势控制，增加滑动进度；by：xiaohan231-2025/04/14\n\n修改：1、部分源代码改为远程获取；by：xiaohan231-2025/04/06\n\n修改：1、修复搜索；by：xiaohan231-2025/02/20\n\n新增：1、增加源站：RULE34Ⓥ；by：xiaohan231-2024/08/16\n\nby：xiaohan231-2025/02/19",
    "sourceGroup": "h",
    "sourceIcon": "https://qyyuapi.com/img/RULE34v.png",
    "sourceName": "RULE34Ⓥ",
    "sourceUrl": "RULE34Ⓥ@js:`{{Get('url')}}`",
    "type": 0,
    "variableComment": "JspHXCgzmq549cSvxZRk3cZwMPbFTNUqF8izYT/lL7zmB4iKPcwRvTVF+nSsYaYkyHFh6tU0uM6gAcU2LO/ZQnF45pl+sO+D+/WIYPhUQyHGEp6lyVJ7JKp9yWihRr9Al3sqXhKPltzub2PZi96Ke4YxqVZPjPSmL3O6xY025Sa7Vm1r1ZLIrgpD4Ksa99Q488bytyVS2P8fSjkQvADOECPkrKGclkhYWKWj0hAAvyDNKDxrCyqqqUjrKooVXTcQ3DDxjpsx5Wd29wdbu4YgaMwdlq7eM7Wgq20PNHRYMQv6mzqElmMn9R4S7YEaJiDpXXStroRJTJtLEB2i6pMCY4F02mndjqQW0PbM+tfwlL8BPYfaSJDdVkvSCRNfUL1rVOJY3HHHX1kAyOG/METDaU0ord6qUbQQMGQVmCgqResqjExJ6AI33IXMtAF1485MjO1nSz2Mi9jw/NoCjXBhnxv0A/3lmQZoYsdfz3LCCOOZKjZQKAZj20BFKz9CBUrmpIrzwdkA/+4vJYyZpjkvYKJAAPDIKbn/ptiK77BjLhWzc4xAW5+YsEiLS/Vl9iTyCrhnnDx4gT+dZ4gysUqfVbIb8BRFwb+B6EwyP7u8ZmtYQlzIFkk2UhZ23Kjqj82AwMsqdbKqw9FL36EVYcm2j/djgb/0W5Vs5VlKOG+hISERjLwLqzgRlOxnwG7YZZNLUE6FWafVPrlyzjhAvM62NXpWmL0GPDowm0iGtni5Tn0IJGyzWVZh5hnvTh/PwOlcJj+q5hVSaFxFK58GLc48+Fc006jvm6iDY5gNbK5xA+ZkRfniCNt49bJaAANoCEro3QFhJkn2ECoOmwN4aYdfdn3SloTv48koLVJu+0NT+AISrmVytYeRuVnqNW5GuwElvCL/i8TWro2qktUUurqvp5e4i5scrNF7gSUG053kPtbrtmCrJ28rZpXWhXIsOv46IMrTpuxpCRHooX+Hs5b+XejfLsuNnBbHE13MQn/M0ebGd9Gh+r6/lt//lgTkWigqsmTrtxhrWAZWzaW/yA+sTSedS2lJCbgNokw7qnbmxwD/P4D6808B5ilzMwLtm9SyNWTwxVkJg028edSaskigcsZ30aH6vr+W3/+WBORaKCo4UnC/XzCimn5Jr+ebXNLnJ51LaUkJuA2iTDuqdubHAJsuJSsWINcAtTK6RzhZCNSIdDbzJz55hCg3jwqPboZqC+e1/3J2yhbnCdDJw3/1qjgTOfZMAHf4HKt/RuYW81hQLJ5E0EGQvvbsJ3D+Y5Ztyka4dEMQZahWDR5hSepleBzikh2TmReB3v0T5xYid8QcPk5CBAU0mi1bSh9nnltSWr0jzsWH1Iyc3vP5hdMbiKkMzVjx7Zqcbf6rbicc76D9V4WyQxK0cSe7d9/9FB3SxZBjAiCO+KOut8Un8msxSnVVwgvKx21dER1iPoNp6UqAmZbr8z45Sy+pruQ5nsfBOQr4l7WVhNegga6nXNzj2tpHudPrDm9Wn2UR4YshDfI2BUHw5QUks0QBNocu+jfuCxNjMeNDzOk0a/ZER3ne8qP3wokNIjSKREwHnyiXZQ1K4gl90XkIKDm01NlT9vSc01Zk7dsMfDJIplEsIREkxY7JlCji8BaOGorXtveh+/8moUPA2KlwI7zMU987ZdFUGnxsnL51m1yJTBFiq8a2aINke1Zq/lQ6kGDq5VuBrM8NXrRSMPwvsGy97ZD6Zs1DHkEz+c8ALXx0yHXiXXGM15hX/P/WTzdA6WpNAYMp+onQJ/zgHvBUQ/73lul4SP+94V9kWjwkqpfw9UXK6MX44GmUMxCAIAON0fCsI/Q4azniKxqQ2LHe4jdXvxAAZ88Wt1v7sfpzBbhawep3OjLmQ86ziAOP/r8LYWw/FU/ideDjhbuSmySyvzX5alHrU+2YG2+mUPOLf6RROC1qs8z1CKGs5f3SNeieYFOFcf4OLhp+L88XhvLGgUnDEnizstIoT6dtov2RXBVVjSOYC1gXiRIiGmA/geEd3jFmxCN9gcC7CKEF7/4SX3qQ1YzcsgdlsAxGqxuXtOngwUwdrI+3+V1ZHoV8dL8D3H12J0G9zsNZjZsrd3x55Zv29ILIYBZLdg7gz2RVh0rVIJGoI/0J5SDo8A0C03S6DvLShgJt0SJyIQfxpwc9Nv/TnVir+cpOQuTkymXklBu2cCH5+aFTvqg92WzyV7mcOzWZJEqXs8E+mSOPWdCIQ6fWqEe6zQ+v/MvpVqyrIOqDQFvTJzdiJp8n/xwPHORgrY6nxhA8vAzSkfUqMkAuZ1RCW/OGXI1aoDWuQBoavZ7T5PaiP4P74hvvFscy7hXkC4btV8L/XlNW9O9EoNbSaJDx6c+MuNNNrLHZ0H+FULugcR6TQDU7/4ghGn81bo7MXxzQjv1TMDqRg3BmLpCSMQKRfh+3GyLCUc0qEASueLd2Pr/7yubOpU4+C4E+IExZRCr3XIL6Y6gvlBmpQ9+JFFSAyCRTwbJG/XQ88Va6iMp/ps3AgW3EyeuX0qPV3SfKzFh+usHgrXVa9xoMu+4u/cDvNNBuvz0czEv2WdeH6JQv37xz5Td2Ez6ZI49Z0IhDp9aoR7rND6/W/iWUCt4CpsJBgXN82HkVlLUfZ1aHOaXsdPUeEJeFitPGca4naQuMZo570DEigh5YxfQfIMxRhVezWptMkPtXvGNJ85ctTzZEcHVanMA3QNWUf/hqVFb3YP2/+RujDloqioZclJBJ3mOij0i/Q4r6oazl/dI16J5gU4Vx/g4uGmgAEPwNzpIdNSymRPqtwEUBBsfdiy6OBAPiK9dv8dv/8/uXl9RKrfUePqZ3kHvjMO14sdXSY6NeT1qBecaAeOuVVrRC0HqDIiZthvIGJg0bbTe5yst86LR1+EsJLy4EcPyeXmMw6zjA+dw1zI5mVua8O3IovWzbnAwS6+q5Sh/kG+7Ndnjv4VCp5Fx4JegvwvM/F7CmsDmgezt6oE/kSUj9Fqau9QB+NTeLHXYuRsCgVnlFEb68Tmeeonjr0hLkkaQFDo4VHzoxyqVejFJhJYZcTv43Kl0PLj8prMT+YB1o++bSkpP1JHFGOV8mVzWCPaZA2WB7jvWpl7tQOsbzX7utxh5W6GDrlsRJ2D9mtFTAWfOFu2Ntsdd+lRpDSA4b3+9a7sOlv8rmI2SKxRln6d1svWeiDow3698BkXWKtgfqlN7BT2+akmZ+TS9ZI1uuo2G6cYTJAD5ATn4xv2pL7oTMvRABb0bsp6E4P1mSln/b0iODj2CVKWZLv+BJQu8vU2o2avEIqiSTqKQqObgZFZH2pEJN0uNOoOY4tmAChfMkrnrhFaFUIUXtPARwyGbYpKn8tYUIGRpIJ9sHxqVQbQIDRUHMuRF9Z9yOStphQ7qcnebDsyTme4Dmevu73B5eSBtTX0eNwc0UrZp9bQDXGGOaZMDyuYEZVbpcaz2u8Hmc4FGQ595Q8noc/xHfqdyjMVRZBbrFeJ4LGVUb/sOj5XVJxNwud2Rx1jQxsQ3ht9GVnEfJYJnleXFiJqFs30dMRo9/nlujJ9+7vutq0ogoi/tSY6KDIDzSVKDC/oxDqcJQa0gP2V6Xpzf9xebkdDT/YwKNQ0znmO1yWlzM+65DHAj9Jqfqev7yqFKFhJUHD4fA1dWMWmfunF3YXsnWwwOdg5PFokt/CuEZDCBpWCwDEmirizvNmM/ToZTQ+mofrwklGi8kd4BIwWWlUwVV6BetevBXLefshjCAx59KhF3zh5J5ZK5W/58kidEes04pSwbW6H1BInMRXp15rqcTJ/hw+Va0vVuDrbQjpO6Vg8HDzQO81Cwx5B/7oLyw1RWqokNn7HW+hrUjh0orRgeVSUrI2urG16Z0DUL8I8XG+7phhfst6kuGJ9VaGqdtMjXY3XlkhpTBucstUiWjxoUEECCn6aUIyUi3zTJheYOURWnbG62VG4rcvIxaje9GU3/TCkTO0eKdAfBg2PmVES1CXUbaaGG6QbIfy1kF2lH4OouWrr7J2nNhEAT2ytz+xG/x0cUz0m8y4xWg6VpjNgqBlqw0WrB+AHtMYxZbv5D+Ch5FQuTOhgvj5RI2plX+ZdwoYmXgNSOmD/0niJV8CU3JVZXqeN3MWWE15gFU/vWnpvQMMBR0LpRL5qfDzkACu1Cn1f2+VmKHLVGO1vV66YxQrr4seUSodBSIoxVgbwyztQuY9tlmnCvUcJd6BkvC1FVr4o6ZHEeOFDn7Q4z/0lntfGP9YqlBJf81KGGikcn1s5fp87GBapBZMC4nAuhyalZv5Ptcs8U3BzN9sQGSdaMFExvW5tozWuNHJJxood8XZci5GwXzPxewprA5oHs7eqBP5ElIW7ScP9q3VFIEcL5ky7fkfJJCYm4cY6YugS+P2N7BYPpkkeao4+0nZXOAxGkeGLPifof75OkOa0dE13m+LuT8AsVQ+YRi4oDuqfqLJvCkdtCgQz1C5SlvbxwAaaVQGkeauSsTmDJ1l9ix6JwuEeOrzVJwJWtsP4m7Q+PgKYsn8MrbE4gHPXIW1OdcgjDSx07n4LQzlZq/f5WIDo/jEC6vvvNEWoKMKmVadTq/yRF+hQXNjx2HK3qKtVCjO5POqexjiPdqO+/dvvCgE8i9WLbqc9dth/uC5Z717JPxCv6nPxpBfJQhbEO1808jj//A6ee48O+lRUBGQmUVsnkrSLX9xG6wLKEc7td4L95TgdKwN/ydI9Ynd/otyoYlmPnVWgoXSbW9CtGbw6EJMfswcj2pF+M8h2rVHAf2V7LuNDLVJxDcs3EMeEyaT1IGTD8Q3phcZFV0dk9+nWjzIObKn0cgP4bLfuRn9N2wUEaTQCkWGzkZ+0GptnWJ4mhFTmMQaykE7cknE4J+rL4G/JL+feGaGv7LqaGd4yGVOrBk4QaRg1/AtyavpRZAR/wfd2cWh596VLqWX93xjhRA6TzqrNSkP55qSWygTEFNMN7Tv1Qqp3YWiK6lGvRvKAFohL5/k6nySbW9CtGbw6EJMfswcj2pFwJDrUv5GQGKO3YG1UG7syzTH1mF1TWamaK52aldy7ErqeIvLGoDJQmoV0hMvfCxNb/GBc7G6pN8ZFH3XtCxjo1S+h/ONnunMTV2TkdbDZHvYxAU6BLS8ojfor4i0bnBFp5de5GKi99evxyt/FX0J5z9LdUTx4AbiKFB1NS8PR6DXFzFWM8t6C7BoAEhPu51NpdmRPUxp/I+7IQNU5SbyjiHG33JLpTYjbkFs95CmC5DO62CJk8ip4kW/qekRwdu/f4AF4kje1FDZTUUs341ac7JF2DFIyqgNajwovdO3XPogtvhQGO3ce6AEmsv3eNCmbyVh+VsIFkJbqCLsviLIrp4/fRNOW7sggEOb+/6okOw2qJRqGNMW0qqRLNeAA1t1em6xUyvC5LTrGsd+mjXOdOW6n3wyWP3TQUGOAJRldadSg0gNfKERPwH/Oj5S1P5VDYfe5m7YLszltYoU1FTy7Rcd13XmCuvvShbjrhUyUOoGo+YnfAREv4nskWOdeoIryUs8na0HQkYCJno2X1LeGb0ax2LiLQ8Ur/sZ0qMuf/RRf9R/lRdzvYG2KkTt/4vpwd+eCJEM7QEjQsk1qqDqumnRoYWUoUfuG6vyVzd7nOvp1bViiRNzrV1EH/e1OX9RU9Sn4x1+BXSK4cOKyMlauoUQjZOvYMaBuOiZjkEn5f6o7HBbltHc7qWwR407Er8xCcaXAyLcG8G2oUc5HymS+K011lW29Vd/xpfei8ITsNM8ypVfjYxRCAC543lQygfFAWg8PRcUIP0I+I38RcamYGHWAjxMpmyfFi+W0BeNoTKCd6CDhhEBqkzpKvaiIezhvHd84kdc4z9QORwjcZW+hKDR3qGbWDmgC2F38TnXmhv9mWbkbKIzVOPbM4rVjvKJ4HgKWoW7Lmsuil9JxNv4BSHdLhpcO6zIj7+f7wGy1e9MDqxLPQXU3EuTBxWrUSWq/bi0hmXQsUUFi2EuYpnBnR6WrQV4yddWnGJ7Da+TRkq"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 939,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "tbody[id^=normal]",
    "ruleContent": "@js:\nvar body = java.getElements(\"class.postmessage.0\")\nvar reply = java.getElements(\"class.postact.0\")\nvar href =\"http://www.galgamezs.com/bbs/\"+String(body).match(/mis.*pid=\\d{0,10}/)[0]\n\nvar pay = body.select(\"div.locked a\").get(0)\nvar e =String(pay).replace(/j.*\\)/,href)\nbody.select(\"div.locked\").remove()\nvar all = body+'<div style=\"text-align: center\">' +e +reply+'</div>'\n\nresult = all",
    "ruleImage": "",
    "ruleLink": "class.folder@tag.a@href@js:\n\"http://www.galgamezs.com/bbs/\"+result",
    "ruleNextPage": "page",
    "rulePubDate": "作者：{{@@class.author@cite@text}}  时间：{{@@class.author@em@text}}  『{{@@class.nums@strong@text}}/{{@@class.nums@em@text}}』 最近：{{@@class.lastpost@em@text}}",
    "ruleTitle": "tag.span.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "资源::http://www.galgamezs.com/bbs/forumdisplay.php?fid=8&page={{page}}",
    "sourceGroup": "h",
    "sourceIcon": "http://www.galgamezs.com/index1.gif",
    "sourceName": "galgamezs",
    "sourceUrl": "http://www.galgamezs.com",
    "style": "img {\nwidth:100%;\n}\n\n* {\nfont-size:13;\nword-break:break-all;\n}",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 947,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1770433625151,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article",
    "ruleContent": "class.dplayer@all<js>\nresult=result.match(/http.*0/)[0]##\\</js>{{@@title@text##正在播放:|永久.*}}\n<video src=\"{{result}}\" width=\"100%\" height=\"auto\" controls></video>",
    "ruleImage": "@js:\"https://mgtv-bbqn.oss-cn-beijing.aliyuncs.com/1/2310310103284A29582395A850D3A0F5C26862354MzFE/SrRlbr0.gif\"",
    "ruleLink": "a.0@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "span.1@text",
    "ruleTitle": "class.post-card-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::/search/{{source.getVariable()}}/{{page}}/\n今日事件::/category/mrxl/\n吃瓜热搜::/category/mldjh/\n学生校园::/category/xyml/\n看片娱乐::/category/ldcz/\n海角乱伦::/category/llsj/\n猎奇事件::/category/qwys/\n动漫大全::\t/category/dmdq/\n精选探花::/category/jxth/\n反差美女::/category/rmbg/\n网红黑料::/category/whmx/\n欧美系列::/category/omxl/\n日韩系列::/category/rhxl/\n户外野外::/category/hwyw/\n调教受虐::/category/tjsn/",
    "sourceComment": "https://mlgc01.co/",
    "sourceGroup": "h",
    "sourceIcon": "http://p6.itc.cn/images01/20201202/8d012ed623d647a78635557e7d235ab6.jpeg",
    "sourceName": "91大事件🥝",
    "sourceUrl": "https://jbr7z1.xwgjwrua.cc/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 952,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n \"User-Agent\":\"Mozilla/5.0 (Linux; Android 12; HarmonyOS; OCE-AN50; HMSCore 6.15.0.302) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 HuaweiBrowser/16.0.3.302 Mobile Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>java.t2s(result)</js>\nclass.thumbnail group",
    "ruleContent": "<js>\nfunction $(rule){\n\treturn java.getElements(rule);\n}\nvar tab_name,url_list,all_list;\n//获取线路❗️\ninfo=$('.plyr__video-wrapper@script.0')\nv=JSON.parse(String(info).match(/\\{.*\\}/)[0])\nurl_list+=`<li><a link=\"${v.url}\">默认</a></li>\\n`\nurl_list=`<ul class=\"play_list\">${url_list}</ul>`\nall_list+=url_list;\ntab_name+=`<li>画质<span>1</span></li>\\n`\nall_list=String(all_list).replace(/undefined/g,'')\ntab_name=String(tab_name).replace(/undefined/g,'')\n//获取简介❗️\ndesc=$('.cat').text();\nyear=$('.space-y-2 span.4').text();\nsort=`•${year}`;\n\n//最后结果，拼接完整网页\nresult=`\n<html>\n<title>播放</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<!--引入jquery-->\n<script src=\"https://code.jquery.com/jquery-3.0.0.min.js\"></script>\n\n<!--播放器-->\n<div id=\"Player\">\n  <p class=\"url_text\"></p>\n  <iframe src=\"\" border=\"0\" marginwidth=\"0\" framespacing=\"0\" marginheight=\"0\" frameborder=\"0\" scrolling=\"no\" vspale=\"0\" allowfullscreen=\"ture\" noresize=\"\"></iframe>\n</div>\n<div style=\"width:100%;height:29%\"></div>\n\n<!--简介卡片 -->\n<div class=\"card v_info mb20\">\n    <!--标题 -->\n    <h2 class=\"v_title\"></h2>\n    <!--状态、日期、分类 -->\n    <p class=\"v_desc\">\n       <span class=\"desc\">${desc}</span>\n       <span>${sort}</span>\n       <!--简介按钮 -->\n       <span class=\"open_content\" id=\"open_content\">简介</span>\n    </p>\n    <div class=\"v_content\" id=\"v_content\" style=\"display:none;\">\n      <!--封面图片 -->\n      <div class=\"cover\" style=\"\">\n         <img src=\"${java.get('pic')}\"></img>\n      </div>\n      <!--剧情信息 -->\n      <div class=\"content\" id=\"intro_content\">\n        <div id=\"intro\">\n       <p style=\"text-indent:2em;\">${java.get('title')}</p>\n       <!--简介展开 -->\n      <div class=\"show_more\" id=\"show_more\" style=\"display: block;\"></div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"card mb20\">\n    <!--线路切换-->\n    <ul class=\"tab_control play_from\">\n        ${tab_name}\n    </ul>\n    <div style=\"height:34px;\"></div>\n    <!--所有播放列表与排序-->\n    <div class=\"tab_content\" id=\"play_list\">\n        ${all_list}\n    </div>\n</div>\n</html>\n\n<script>\n\t//tab按钮线路切换\n var $li = $('.tab_control li');\n var $ul = $('.tab_content ul');\n $li.click(function(){\n    var $this = $(this);\n    var $t = $this.index();\n    $li.removeClass('current');\n    $this.addClass('current');\n    $ul.removeClass('current');\n    $ul.eq($t).addClass('current');\n });\n //选择集数\n var $play_li= $('.play_list li');\n var play= $('#Player');\n var iframe= $('#Player iframe');\n $play_li.click(function(){\n    var $this = $(this);\n    var $t=$this.index();\n    //获取之前的播放链接\n    var bf=$('.play_list li.current');\n    bf=bf.children('a').attr('link');\n    //改变li标签的CSS样式\n    $play_li.removeClass('current');\n    $this.addClass('current');\n    //获取播放链接和标题\n    url=$this.children('a').attr('link');\n    text=$this.children('a').text();\n    //判断链接是否相同，不同就替换\n    if(url!=bf){\n    \trep();\n    }\n });\n //替换\n function rep(){\n      //给iframe的src赋值\n      iframe.attr('src',url);\n      $('.url_text').text(url);\n  }\n \t\n \t//-------------详情页相关-------------- \n \tvar open_content = $('#open_content');\n \tvar intro_content = $('#intro_content'); \n \tvar show_more = $('#show_more'); \n \tvar cover = $('#v_content .cover'); \n \t//展开简历块 \n \topen_content.click(function(){ \n \t\t$('#v_content').toggle(); \n \t\tvar intro_height = $('#intro').get(0).offsetHeight; \n \t\tif(intro_height > 114){ \n \t\t\tshow_more.show(); \n \t\t}; \n \t}); \n \t//内容超出显示更多按钮 \n \tif($(\"#intro\").length>0){\n \t\t var intro_height = $('#intro').get(0).offsetHeight; \n \t\t if(intro_height > 114){\n \t\t \t show_more.show(); \n \t\t \t}; \n \t} \n \t//展开更多内容 \n \tintro_content.click(function(){\n \t\t intro_content.toggleClass('auto'); \n \t\t show_more.toggle(); \n \t\t cover.toggle(); \n \t});\n \t\n \t//初始化\n   (()=>{\n   \t $('.play_list').eq(0).addClass('current');\n\t    $('.play_list li').eq(0).addClass('current');\n\t    $('.tab_control li').eq(0).addClass('current');\n\t    url=$('.play_list li.current a').attr('link');\n\t    rep();\n\t  })();\n</script>\n`\n</js>",
    "ruleImage": "img@data-src\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".text-nord5@text##^##🕒",
    "ruleTitle": ".truncate@text\n<js>\njava.put('title',result)\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜🔎::/vod/search/page/{{page}}/wd/{{java.t2s(source.getVariable())}}.html\n最近更新::/label/rank/by/time/page/{{page}}.html\n最新上市::/label/new/by/time/page/{{page}}.html\n无码破解::/thisavtype/Mosaic_Removed-{{page}}.html\n日本有码::/thisavtype/Censored-{{page}}.html\n日本无码::https://thisav.biz/thisavtype/Uncensored-{{page}}.html\n中文字幕::/thisavtype/CHN_SUB-{{page}}.html\nMGS动画::/thisavtype/MGS-{{page}}.html\n巨乳::/vod/search/page/{{page}}/tag/%E5%B7%A8%E4%B9%B3.html\n美少女::/vod/search/page/{{page}}/tag/%E7%BE%8E%E5%B0%91%E5%A5%B3.html\n制服::/vod/search/id/2/page/{{page}}/tag/%E5%88%B6%E6%9C%8D.html\nFC2影片::/thisavtype/FC2-PPV-{{page}}.html\n本日::/vod/search/by/hits_day/page/{{page}}.html\n本周::/vod/search/by/hits_week/page/{{page}}.html\n本月::/vod/search/by/hits_month/page/{{page}}.html\n评分最高::/label/rank/by/score/page/{{page}}.html\n点赞最多::/label/rank/by/score/page/{{page}}.html",
    "sourceGroup": "h",
    "sourceIcon": "https://img2.baidu.com/it/u=2257099708,1005063348&fm=253&fmt=auto?w=775&h=500",
    "sourceName": "JAVSB",
    "sourceUrl": "https://thisav.biz",
    "style": "*{\n\tmargin:0;padding:0;\n}\nhtml{\n\tbackground-color:#222;\n}\na{\n\ttext-decoration:none;\n\tcolor:#222;\n}\nul{\n\tlist-style:none;\n}\niframe{\n\twidth:100%;height:100%;\n}\nh1,h2,h3,h4,h5,h6{\n\tfont-size:100%;font-weight:normal;\n}\nimg,video{\n\theight:auto;max-width:100%;\n}\n#Player{\n\tposition:fixed;\n\ttop:0;left:0;\n\twidth:100%;height:28%;\n\tz-index:99999;\n\tbackground-color:black;\n}\n.url_text{\n\toverflow-x:hidden;\n\twidth:100%;height:auto;\n\tcolor:#fff;background-color:black;\n\tfont-size:10px;white-space: nowrap;\n}\n\n/*块通用*/ \n.card{padding:15px 15px 0 15px;}\n.card .c_header{display: flex;flex-direction: row;justify-content: space-between;padding-bottom:20px;} \n.card .c_title{font-size:18px;color:#fff;font-weight:700;} \n.card .c_title a{color:#fff;} \n.card .c_right a{color:#666;} \n.card .clear_history{color:#FDD835;display:none;}\n\n/*详情页资料卡*/ \n.v_info .v_title,.v_info .v_title{font-size:22px;color:#eee;line-height:26px;} .v_info .v_desc{position:relative;font-size:12px;color:#999;padding-top:4px;} .v_info .v_desc a{color:#999;} .v_info .v_desc .desc{color:#FF3D00;font-weight:700;} .v_info .hr{color:#666;padding:0 4px;} .v_info .open_content{position:absolute;bottom:0;right:20px;color:#FFB026;text-decoration: underline;padding-left:10px;} .v_info .v_content{display:flex;padding-top:20px;} .v_info .cover,.v_info img{width:auto;height:100px;background:#333;} .v_info .cover{margin-right:10px;} .v_info .content{height:101px;overflow:hidden;font-size:12px;flex:1;color:#999;line-height:19px;position: relative;} .v_info .show_more{position: absolute;bottom:0;right:0;width:100%;padding:38px 0 19px 0;height:19px;background: linear-gradient(to bottom, rgba(34,34,34,0) 0%,rgba(34,34,34,1) 100%);color:#eee;text-align:center;display:none;} .v_info .auto{height:auto;}\n\n/*tab */ \n.tab_control{position:absolute;display: flex;flex-direction: row;overflow-x:scroll;width:92.3%} \n.tab_control li{flex:1;position:relative;height:30px;line-height:34px;top:4px;text-align:center;color:#666;cursor:pointer;overflow: hidden;} \n.tab_control li span{display: inline-block;min-width: 10px;padding: 2px 2px;font-size: 9px;font-weight: 700;line-height: 1;color: #fff;text-align: center;white-space: nowrap;vertical-align: middle;background-color:#FFB026;border-radius: 2px;}\n.tab_control li.current{z-index:99;height:37px;font-weight:700;color:#eee;background-image:linear-gradient(180deg, #BF360C 0%, #444 90%);border-radius: 4px 4px 0 0;} \n.tab_content{padding:12px;background: #444;box-shadow: 0 2px 8px 0 rgba(0,0,0,0.50);border-radius: 5px;} \n.tab_content ul.current{display:block;} \n\n/*播放来源、地址、排序*/\n#play_list ul.current{display:flex;} .play_from li{flex:none;padding:0 10px;} .play_list{display:none;flex-flow: wrap;margin-right:-10px;} .play_list li{width:20%;margin-bottom:10px;} .play_list li a{overflow:hidden;height:40px;line-height:40px;border-radius: 5px;display:block;background:#222;color:#999;text-align:center;margin-right:10px;} .play_list li a:visited{color:#444;} .play_list li.current a{border: 1px solid #BF360C;color:#BF360C;} \n\n/*处理电影的集数宽度*/ \n.large li{width:25%;} .play_list_sort{padding-bottom:20px;color:#999;} \n\n/*遮罩*/ \n.mask{width:100%;height:100%;background:rgba(0, 0, 0, 0.5);position: fixed;left:0;top:0;display: none;} \n\n/*白天主题配色*/\n@media(prefers-color-scheme:light){\nhtml{background:#FEFEFE;}\n.v_title{color:black !important;}\n.v_desc,.v_desc a,#intro{color:#444 !important;}\n.open_content{color:#4898E0 !important;}\n#show_more{background: linear-gradient(to bottom,transparent,#FEFEFE 100%);}\n.tab_content{background:#FEFEFE;}\n.tab_control li span{background:#4898E0;}\n.tab_control li.current{color:#eee;background: linear-gradient(to bottom,black 10%,white 90%);}\n.play_list li a{color:#444;background:#eee;}\n.play_list li.current a{color:black;border:2px solid black;}\n} \n",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 953,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1770434347057,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article",
    "ruleContent": "class.dplayer@all<js>\nresult=result.match(/http.*0/)[0]##\\</js>{{@@title@text##成人黑料.*}}\n<video src=\"{{result}}\" width=\"100%\" height=\"auto\" controls></video>",
    "ruleImage": "@js:\nvar text = java.getString('script@html');\nvar match = text.match(/loadBannerDirect\\('([^']+)'/);\nvar img = match ? match[1] : '';\nimg;",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "span.1@text",
    "ruleTitle": "class.post-card-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::/search/{{source.getVariable()}}/{{page}}/\n今日吃瓜::/category/wpcz/{{page}}/\n热门大瓜::/category/rdsj/{{page}}/\n学生校园::/category/xsxy/{{page}}/\n网红黑料::/category/whhl/{{page}}/\n看片娱乐::/category/ysyl/{{page}}/\n乱伦道德::/category/lldd/{{page}}/\n人人吃瓜::/category/rrcg/{{page}}/\n海外吃瓜::/category/hwcg/{{page}}/\n骚男骚女::/category/snsn/{{page}}/",
    "sourceComment": "https://www.doxyoxc.xyz/",
    "sourceGroup": "h",
    "sourceIcon": "http://p6.itc.cn/images01/20201202/8d012ed623d647a78635557e7d235ab6.jpeg",
    "sourceName": "51吃瓜🥝",
    "sourceUrl": "https://behind.qjaeyfzu.xyz/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 979,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "<js>\nheaders={\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36 EdgA/127.0.0.0\",\n    \"Referer\": String(source.getKey()).replace(/(.*\\/\\/[a-z0-9.-]+).*/, '$1')\n}\nJSON.stringify(headers);\n</js>",
    "injectJs": "",
    "jsLib": "function get(tag,num) {\n    sort = ['','最新上市','最新上傳','本日排行','本週排行','本月排行','觀看次數','他們在看'];\n    var e = eval(tag + '[' + num + ']');\n    return e;\n}\nfunction Get(e) {\n    const { java, source, cookie, cache } = this;\n    var get = JSON.parse(source.getLoginHeader());\n    return get[e];\n}\nfunction Map(e) {\n    const { java, source, cookie, cache } = this;\n    var infomap = source.getLoginInfoMap();\n    var map = (infomap !== null && infomap.get(e)) ? infomap.get(e) : '';\n    return String(map);\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "java.initUrl()",
    "loginUi": "[\n  { name: \"                      ༺ˇ»`ʚ  点击切换排序  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \"  默认排序  \", type: \"button\", action: \"o(0)\" },\n  { name: \"   最新上市   \", type: \"button\", action: \"o(1)\" },\n  { name: \"  最新上傳  \", type: \"button\", action: \"o(2)\" },\n  { name: \"  本日排行  \", type: \"button\", action: \"o(3)\" },\n  { name: \"   本週排行   \", type: \"button\", action: \"o(4)\" },\n  { name: \"  本月排行  \", type: \"button\", action: \"o(5)\" },\n  { name: \"  觀看次數  \", type: \"button\", action: \"o(6)\" },\n  { name: \"   他們在看   \", type: \"button\", action: \"o(7)\" },\n  { name: \"                   \", type: \"button\" },\n\n  { name: \"                      ༺ˇ»`ʚ  筛选发布日期  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \"年份：\", type: \"text\" },\n  { name: \"月份：\", type: \"text\" },\n\n  { name: \"                      ༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻                    \", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号”,“隔开')\" },\n  { name: \"收藏：\", type: \"text\" }\n]",
    "loginUrl": "original = {\n    'o': 0\n};\ntry {\n    $$$ = JSON.parse(source.getLoginHeader());\n    if ($$$ == null) {\n        error;\n    } else {\n        '';\n    };\n} catch (e) {\n    $$$ = original;\n    put($$$);\n}\nfunction put(data) {\n    return source.putLoginHeader(JSON.stringify(data, null, '\\t'));\n}\nfunction login(e) {\n    if (e == undefined) {\n        return;\n    }\n    java.longToast(e);\n}\nfunction n(e) {\n    n = '\\n';\n    for (m = 1; m < e; m++) {\n        n = n + '\\n';\n    }\n    return n;\n}\nfunction k(e) {\n    k = ' ';\n    for (q = 1; q < e; q++) {\n        k = k + ' ';\n    }\n    return k;\n}\nO = ['默认排序','最新上市','最新上傳','本日排行','本週排行','本月排行','觀看次數','他們在看'];\nfunction typeO(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return O[e];\n}\nfunction o(e) {\n    if (o == undefined) {\n        o = result.o;\n    }\n    if (e == $$$.o) {\n        return login('【排序切换提示】' + n(2) + '已经选择此排序，无需更换');\n    }\n    login('【排序切换提示】' + n(2) + '已经切换到[' + typeO(e) + ']排序');\n    $$$.o = e;\n    return put($$$);\n}",
    "preload": false,
    "ruleArticles": ".col-xs-12||.home-rows-videos-wrapper a",
    "ruleContent": "<js>\n//获取集数\nvar list = java.getElements('#playlist-scroll.0@.multiple-link-wrapper');\nvar type = java.getElements('#video-artist-name').attr('href');\nlist = Array.from(list).reverse();\nvar n = '';\njishu = list.map(($, i)=>{\n    var value = '',name = '',bt = '',rq = '',bf = '',dz = '',sc = '',bq = '',jj = '',fm = '';\n    if (/videos-scroll/.test($)) {\n        n = i;\n    }\n    if (/裏番|泡麵番/.test(type) || /videos-scroll/.test($)) {\n        list0 = Array.from(java.getElements('.card-mobile-title')).reverse();\n        url = $.select('.overlay').attr('href');\n        name = /預告/.test(list0[i].text()) ? `第${i + 1}集⏳` : `第${i + 1}集`;\n        J = org.jsoup.Jsoup.parse(java.ajax(url));\n        bt = $.select('.card-mobile-title').text();\n        rq = '📆 日期：' + String(J.select('.video-description-panel div')[0].text()).replace(/.*\\s(.*?)$/,'$1');\n        bf = '🎥 播放：' + $.select('.card-mobile-duration')[1].text();\n        dz = '❤ 点赞：' + String(J.select('#video-like-btn').text()).replace(/thumb_up/,'');\n        sc = '👤 上传：' + $.select('.card-mobile-user').text();\n        bq = '🔖 标签：' + String(J.select('.single-video-tag').text()).replace(/ add| remove/g,'');\n        jj = '📋 简介：' + String(J.select('.video-description-panel div')[2].text()).replace(/add|remove|\\s$/g,'');\n        fm = $.select('img')[1].attr('src');\n        var Value = [];\n        var size = '';\n        var list1 = J.select('video source')[0] ? J.select('video source') : java.getElements('video source');\n        if (!list1[0]) {\n            res = String(java.getElements('script[type=\"application/ld+json\"]'));\n            url1 = res.match(/contentUrl\":\\s*\"(.*?)\"/)[1];\n            Value.push({src:url1,size:'0'});\n        } else {\n            for (j in list1) {\n                Value.push({src:list1[j].attr('src'),size:list1[j].attr('size')});\n            }\n        }\n        Value.sort((a, b) => parseInt(b.size) - parseInt(a.size));\n        value = JSON.stringify(Value);\n    }\n    return `<button onclick=\"jishu(this)\" value=${value} data-bt=\"${bt}\" data-rq=\"${rq}\" data-bf=\"${bf}\" data-dz=\"${dz}\" data-sc=\"${sc}\" data-bq=\"${bq}\" data-jj=\"${jj}\" data-fm=\"${fm}\"><b>${name}</b></button>`;\n}).join('\\n');\nstyle = /裏番|泡麵番/.test(type) ? '' : ' style=\"display:none;\"';\njishu = `<div class=\"jishu\" data-n=\"${n}\"${style}>\\n<p>🎬 集数：</p>\\n<p>${jishu}</p>\\n</div>\\n`;\n\n//返回json\nJSON.stringify({\n    jishu: jishu\n})\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title></title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https://cdn.plyr.io/3.6.12/plyr.css\">\n<style>\n* {\n    z-index: 0;\n    margin: 0;\n    padding: 0;\n}\n\nbody {\n    margin: auto;\n    background: #ccc;\n    width: 100%;\n}\n\nbody>p:first-of-type {\n    width: 100%;\n    position: sticky;\n    top: 0px;\n    text-indent: 0px;\n    height: 16px;\n    font-size: 0.7rem;\n    border-radius: 0px 0px 0px 0px;\n    background: #000;\n    color: #fff;\n    white-space: nowrap;\n    overflow: auto;\n    z-index: 4;\n}\n\nvideo {\n    visibility: hidden;\n}\n\n.video-container {\n    position: relative;\n    min-height: 56.25vw;\n    z-index: 3;\n}\n\n#player {\n    position: relative;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n}\n\n:root {\n    --plyr-color-main: #00aaff;/* 播放器主要颜色 */\n    --plyr-control-color: #fff;/* 播放器控件图标颜色 */\n    --plyr-control-background: transparent;/* 播放器控件背景颜色 */\n    --plyr-video-background: transparent;/* 视频背景颜色 */\n    --plyr-range-fill-background: #0099ee;/* 进度条已填充部分的颜色 */\n    --plyr-range-thumb-background: #fff;/* 进度条滑块的颜色 */\n}\n\n.plyr__control--overlaid {\n    background: transparent;\n    border: 0;\n    border-radius: 100%;\n    color: #fff;\n    left: calc(50% - 30px);\n    top: calc(50% - 45px);\n    transform: none;\n    width: 60px;\n    height: 60px;\n    padding: 0;\n    z-index: 2;\n}\n\n.plyr__control--overlaid svg {\n    width: 50px;\n    height: 50px;\n    left: calc(50% - 25px);\n    top: calc(50% - 25px);\n    transform: none;\n    fill: #fff;/* 大播放器控件图标颜色 */\n}\n\n.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true] {\n    background: transparent;/* 播放器控件悬停/点击背景颜色 */\n    color: #00aaff;/* 播放器控件悬停/点击图标颜色 */\n}\n\n.plyr__controls .plyr__controls__item {\n    margin-left: auto;\n    margin: calc(var(--plyr-control-spacing,10px)/4);\n}\n\n.plyr__time--duration {\n    display: inline-block!important;\n}\n\n.plyr__time+.plyr__time:before {\n    margin-right: 8px!important\n}\n\n@media (max-width: 640px) {\n    .plyr__captions {\n        margin-bottom:-8px\n    }\n\n    .plyr__progress__container {\n        margin-right: 5px\n    }\n\n    .plyr__time {\n        position: absolute;\n        bottom: 29px;\n    }\n\n    .plyr__time--current {\n        left: 108px\n    }\n\n    .plyr__time+.plyr__time:before {\n        content: \"\"!important\n    }\n\n    .plyr__time--duration {\n        right: 110px;\n    }\n\n    .plyr__volume {\n        width: auto;\n        max-width: 32px!important;\n        min-width: 32px!important\n    }\n\n    input[id^=plyr-volume-] {\n        display: none!important;\n    }\n\n    .plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--pip-supported [data-plyr=pip] {\n        display: none!important;\n    }\n}\n\n.all-info {\n    position: absolute;\n    background: #ccc;/* 详情信息背景颜色 */\n    margin: auto;\n    width: 100%;\n    height: auto;\n}\n\n.all-info>div {\n    width: 100%;\n    margin: auto;\n}\n\n.all-info>p {\n    text-indent: 0px;\n}\n\n.all-info>div>p {\n    width: 90%;\n    margin: 5px 5%;\n    outline: none;\n    text-align: left;\n    word-wrap: break-word;\n}\n\ndetails {\n    width: 100%;\n    height: auto;\n    margin: auto;\n    padding: 0;\n    border-bottom: 0.5px solid #333;\n}\n\ndetails>img {\n    width: 100%;\n}\n\ndetails[open] {\n    border-bottom: none;\n}\n\nsummary {\n    width: 90%;\n    margin: 5px 3%;\n    outline: none;\n    line-height: 1.5;\n    text-align: left;\n    word-wrap: break-word;\n}\n\nsummary::-webkit-details-marker {\n    display: none;\n}\n\nbutton {\n    width: 29.5%;\n    margin: 1.25%;\n    padding: 5px;\n    outline: none;\n    border-radius: 8px;\n    font-size: 0.7rem;\n    text-overflow: ellipsis;\n    overflow: hidden;\n}\n\nbutton.active {\n    color: #166188;\n    position: sticky;\n    left: 0;\n    right: 0;\n}\n</style>\n</head>\n<body>\n<p></p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<div class=\"all-info\">\n<details>\n  <summary>\n    <h3></h3>\n  </summary>\n  <img>\n</details>\n{{JSON.parse(result).jishu}}\n<div>\n  <p></p>\n  <p></p>\n  <p></p>\n  <p></p>\n  <p></p>\n  <p></p>\n</div>\n</div>\n\n\n<script src=\"https://cdn.plyr.io/3.6.12/plyr.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/hls.js@latest\"></script>\n\n<script>\n// 选中标签\nfunction $(rule) {\n    return document.querySelectorAll(rule);\n}\n\n// 删除选中标签的class\nfunction omit(items) {\n    return Array.from(items, (item) => {\n        item.className = \"\";\n    });\n}\n\n// 选中标签的class增加active\nfunction active(items, index) {\n    items[index].className = \"active\";\n}\n\n// 播放器实例\nlet player = null;\n\n// 获取视频URL并更新视频源\nfunction geturl() {\n    let zyurl = $(\".jishu button.active\")[0].value;\n    let img = $('img')[0];\n    let bt = $(\".jishu button.active\")[0].dataset.bt;\n    let rq = $(\".jishu button.active\")[0].dataset.rq;\n    let bf = $(\".jishu button.active\")[0].dataset.bf;\n    let dz = $(\".jishu button.active\")[0].dataset.dz;\n    let sc = $(\".jishu button.active\")[0].dataset.sc;\n    let bq = $(\".jishu button.active\")[0].dataset.bq;\n    let jj = $(\".jishu button.active\")[0].dataset.jj;\n    let fm = $(\".jishu button.active\")[0].dataset.fm;\n\n    // 更新页面信息\n    $(\"title\")[0].innerText = bt;\n    $(\".all-info>details>summary>h3\")[0].innerText = bt;\n    $(\".all-info>div>p\")[2].innerText = rq;\n    $(\".all-info>div>p\")[3].innerText = bf;\n    $(\".all-info>div>p\")[4].innerText = dz;\n    $(\".all-info>div>p\")[5].innerText = sc;\n    $(\".all-info>div>p\")[6].innerText = bq;\n    $(\".all-info>div>p\")[7].innerText = jj;\n    $(\".all-info>div>p\")[2].style = /：\\s*$/.test(rq) ? \"display:none;\" : \"\";\n    $(\".all-info>div>p\")[3].style = /：\\s*$/.test(bf) ? \"display:none;\" : \"\";\n    $(\".all-info>div>p\")[4].style = /：\\s*$/.test(dz) ? \"display:none;\" : \"\";\n    $(\".all-info>div>p\")[5].style = /：\\s*$/.test(sc) ? \"display:none;\" : \"\";\n    $(\".all-info>div>p\")[6].style = /：\\s*$/.test(bq) ? \"display:none;\" : \"\";\n    $(\".all-info>div>p\")[7].style = /：\\s*$/.test(jj) ? \"display:none;\" : \"\";\n\n    // 更新详情封面\n    img.src = fm;\n\n    // 更新视频封面\n    $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n\n    // 设置不同分辨率的视频源\n    let sources = JSON.parse(zyurl);\n\n    return { sources: sources };\n}\n\n// 初始化播放器\nfunction initializePlayer(sources) {\n    const video = $('video')[0];\n    const qualityOptions = sources.map(source => parseInt(source.size));\n\n    // 立即重新初始化 Plyr 实例\n    player = new Plyr(video, {\n        controls: [\n            'play-large',   // 大播放按钮\n            'rewind',       // 倒退\n            'play',         // 播放\n            'fast-forward', // 快进\n            'progress',     // 进度条\n            'current-time', // 当前时间\n            'duration',     // 总时长\n            'mute',         // 静音\n            'volume',       // 音量\n            'captions',     // 字幕\n            'settings',     // 设置\n            'pip',          // 画中画\n            'airplay',      // Airplay\n            'fullscreen'    // 全屏\n        ],\n        settings: ['quality', 'speed'],\n        quality: {\n            default: qualityOptions[0],\n            options: qualityOptions,\n            forced: true,\n            onChange: (newQuality) => {\n                changeVideoQuality(newQuality, sources);\n            }\n        },\n        fullscreen: {\n            enabled: true,\n            fallback: true,\n            iosNative: true,\n            container: null,\n        },\n        speed: {\n            selected: 1, // 设置默认播放倍数\n            options: [0.25, 0.5, 1, 1.5, 2],\n        },\n        i18n: {\n            restart: '重新开始',\n            rewind: '倒退 {seektime} 秒',\n            play: '播放',\n            pause: '暂停',\n            fastForward: '快进 {seektime} 秒',\n            seek: '进度',\n            seekLabel: '{currentTime} / {duration}',\n            played: '播放',\n            buffered: '缓冲',\n            currentTime: '当前时间',\n            duration: '持续时间',\n            volume: '音量',\n            mute: '静音',\n            unmute: '取消静音',\n            enableCaptions: '启用字幕',\n            disableCaptions: '禁用字幕',\n            enterFullscreen: '进入全屏',\n            exitFullscreen: '退出全屏',\n            frameTitle: '播放器',\n            captions: '字幕',\n            settings: '设置',\n            speed: '速度',\n            normal: '正常',\n            quality: '画质',\n            qualityLabel: {\n                0: '自动',\n            },\n            pip: '画中画',\n            loop: '循环',\n            start: '开始',\n            end: '结束',\n            all: '全部',\n            reset: '重置',\n            disabled: '禁用',\n            advertisement: '广告'\n        },\n        keyboard: {\n            focused: true,\n            global: true,\n        },\n        tooltips: {\n            controls: true,\n            seek: true\n        },\n        captions: {\n            active: true,\n            update: true,\n            language: 'auto',\n        },\n    });\n\n    player.on('ready', () => {\n        video.style.visibility = 'visible';\n\n        // 添加长按倍速播放功能\n        let longPressTimeout = null;\n        let initialSpeed = 1;\n        let isLongPress = false;\n        const controls = document.querySelector('.plyr__controls');\n        const overlaid = document.querySelector('.plyr__control--overlaid');\n\n        const startLongPress = (e) => {\n            e.stopPropagation();\n            initialSpeed = player.speed;\n            longPressTimeout = setTimeout(() => {\n                setTimeout(() => {\n                    controls.style.display = 'none';\n                    overlaid.style.display = 'none';\n                }, 1000);\n                isLongPress = true;\n                player.speed = 2; // 长按时设置2倍速播放\n            }, 500);\n        };\n\n        const endLongPress = (e) => {\n            e.stopPropagation();\n            clearTimeout(longPressTimeout);\n            if (isLongPress) {\n                player.speed = initialSpeed;\n                isLongPress = false;\n                setTimeout(() => {\n                    controls.style.display = 'flex';\n                    overlaid.style.display = 'flex';\n                }, 2000);\n            }\n        };\n\n        // 监听播放器区域的pointerdown和pointerup事件\n        const playerContainer = document.querySelector('.plyr__video-wrapper');\n\n        playerContainer.addEventListener('pointerdown', startLongPress, true);\n        playerContainer.addEventListener('pointerup', endLongPress, true);\n        playerContainer.addEventListener('pointerleave', endLongPress, true);\n\n        // 处理全屏模式下的特殊情况\n        document.addEventListener('fullscreenchange', () => {\n            if (!document.fullscreenElement) {\n                endLongPress();\n            }\n        });\n    });\n}\n\n// 切换视频质量的函数\nfunction changeVideoQuality(quality, sources) {\n    const video = $('video')[0];\n    const selectedSource = sources.find(source => source.size === quality.toString());\n    const currentTime = video.currentTime;\n    const wasPlaying = !video.paused;\n\n    if (wasPlaying) {\n        $(\".video-container\")[0].style.background = '#000';\n    }\n    $(\"body>p\")[0].innerText = selectedSource.src;\n\n    if (selectedSource) {\n        if (Hls.isSupported() && selectedSource.src.endsWith('.m3u8')) {\n            const hls = new Hls();\n            hls.loadSource(selectedSource.src);\n            hls.attachMedia(video);\n            hls.on(Hls.Events.MANIFEST_PARSED, () => {\n                video.currentTime = currentTime;\n                if (wasPlaying) {\n                    video.play();\n                }\n            });\n        } else {\n            video.pause();\n            video.src = selectedSource.src;\n            video.load();\n            video.currentTime = currentTime;\n            if (wasPlaying) {\n                video.play();\n            }\n        }\n    }\n}\n\n// 点击集数按钮时调用的函数\nfunction jishu(item) {\n    if (player && typeof player.destroy === 'function') {\n        player.destroy();\n        player = null;\n    }\n    omit($('.jishu button.active'));\n    item.className = \"active\";\n    const { sources } = geturl();\n    initializePlayer(sources);\n}\n\n// 页面加载时初始化播放器\n(() => {\n    let n = $(\".jishu\")[0].dataset.n;\n    active($('.jishu button'), n);\n    const { sources } = geturl();\n    initializePlayer(sources);\n})();\n</script>\n</body>\n</html>",
    "ruleDescription": "",
    "ruleImage": "img.1@src||img@src",
    "ruleLink": ".overlay@href||href",
    "ruleNextPage": "page",
    "rulePubDate": "⌚️ {{@@.card-mobile-duration.0@text}}    🎥 {{@@.card-mobile-duration.1@text}}    👤 {{@@.card-mobile-genre-wrapper@text}}##⌚️     🎥     👤",
    "ruleTitle": ".card-mobile-title@text||.home-rows-videos-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\neval(String(source.loginUrl));\nvar exploreUrl = [];\nvar Sort = `{{get('sort',Get('o'))}}`;\nvar Year = `{{Map('年份：')}}`;\nvar Month = `{{Map('月份：')}}`;\nfunction explore(e, f) {\n    if (f=='收藏') {\n        style = `${e}::/search?query=${e}&type=&genre=全部&sort=${Sort}&year=${Year}&month=${Month}&page={{page}}\\n`;\n    } else if (f=='排序') {\n        style = `${e}::/search?query=&type=&genre=全部&sort=${e}&year=${Year}&month=${Month}&page={{page}}\\n`;\n    } else if (f=='分类') {\n        style = `${e}::/search?genre=${e}&sort=${Sort}&year=${Year}&month=${Month}&page={{page}}\\n`;\n    } else {//标签\n        style = `${e}::/search?query=&type=&genre=&sort=${Sort}&tags%5B%5D=${e}&year=${Year}&month=${Month}&page={{page}}\\n`;\n    }\n    return style;\n}\n\nsc = Map('收藏：');\nscs = sc !== '' ? sc.split(\",\") : [];\nif (scs.length > 0) {\n    scs.forEach((sc) => {\n        exploreUrl.push(explore(sc, '收藏'));\n    });\n}\n\nsorts = ['最新上市','最新上傳','本日排行','本週排行','本月排行','觀看次數','他們在看'];\nfor (i in sorts) {\n    exploreUrl.push(explore(sorts[i], '排序'));\n}\n\ngenres = ['裏番','泡麵番','Motion+Anime','3D動畫','同人作品','Cosplay'];\nfor (i in genres) {\n    exploreUrl.push(explore(genres[i], '分类'));\n}\n\nJ = org.jsoup.Jsoup.parse(java.ajax(String(source.getKey()).replace(/(.*\\/\\/[a-z0-9.-]+).*/, '$1')+'/search'));\ntags = J.select('.checkmark');\nfor (i in tags) {\n    exploreUrl.push(explore(tags[i].text(), '标签'));\n}\n\n`变量搜索::/search?query={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('秘密');source.getVariable()}}&type=&genre=全部&sort=${Sort}&year=${Year}&month=${Month}&page={{page}}\\n\n${exploreUrl.join('\\n')}`",
    "sourceComment": "修改：1、优化页面样式；by：xiaohan231-2024/08/25\n\n修改：1、优化长按倍速播放功能；2、增加分辨率切换功能；by：xiaohan231-2024/08/24\n\n修改：1、优化播放器样式；2、选择播放倍速后，点击屏幕不再恢复成正常；3、添加长按2倍速播放功能，想要设置成其他的可以在内容规则根据注释修改；by：xiaohan231-2024/08/21\n\n修改：1、调用Plyr插件搭建网页播放器；2、设置播放器默认比例为16/9，以防止加载时播放器高度变动；3、优化播放器样式；by：xiaohan231-2024/08/20\n\n修改：1、增加收藏关键词；2、视频不再采用第三方解析，改为调用原生播放器；3、添加视频封面；by：xiaohan231-2024/08/18\n\n修改：1、优化内容规则；by：xiaohan231-2024/08/17\n\n修改：1、修复cosplay视频链接获取bug；2、修复部分视频无法解析bug；3、优化视频链接获取，自动选择最高分辨率；4、增加排序方式切换和发布日期筛选；by：xiaohan231-2024/08/14\n\n修改：1、修复列表bug；2、修改分类地址获取；3、优化内容规则；by：xiaohan231-2024/08/11\n\nby：xiaohan231-2024/08/10",
    "sourceGroup": "h",
    "sourceIcon": "https://krseoul.imgtbl.com/i/2024/08/17/66bfb62154cb3.png",
    "sourceName": "Hanime1",
    "sourceUrl": "https://hanime1.me#xh",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 982,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{ \"User-Agent\": \"Mozilla/5.0 (Linux; Android 9) Mobile Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.post-item",
    "ruleContent": "<js>page={{@.pagination-post@a.-1@span@text}}\n\nurl=baseUrl.replace('.html','.html/')\n\nnurl=[]\nfor(i=1;i<page;i++){\n\t\tnurl.push(url+i)\n\t}\n\nhtml=src\n\njava.ajaxAll(nurl).map(item=>{\n\t\thtml += '\\n'+item.body()\n\t})\njava.toast('加载成功\\n　正在获取图片')\nhtml\n</js>\n\nclass.post-content@tag.img@src\n<js>\nli='\\n'\nlist=result.split('\\n')\nfor(i in list){\n\t\tli += '<li><img src=\"http://bpic.wotucdn.com/20/32/52/20325281-1190f9105412b42f759882ce262c2dcb-3.jpg\" data-src=\"'+list[i]+'\"></li>\\n'\n\t}\nli\n</js>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n\r\n\n\n<ul id=\"box\">\n{{result}}\n</ul>\n\n\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\n<script>\n\troot = document.getElementById('box')\n\tlazy = new IntersectionObserver(entires => {\n\t\tentires.forEach(item => {\n\t\t\tif(item.isIntersecting){\n\t\t\t\titem=item.target\n\t\t\t\titem.src=item.getAttribute('data-src')\n\t\t\t\tlazy.unobserve(item)\n\t\t\t}\n\t\t})\n\t}, {\n\t\troot: root,\n\t\tthreshold: [0],\n\t\trootMargin:\"0px 0px 500px 0px\"\n\t})\n\nimgs = document.getElementsByTagName('img')\nArray.from(imgs).forEach(item => {\n\t\tlazy.observe(item)\n\t})\n\n//查看大图插件\nnew Viewer(root,{title:false,interval:3000})\n</script>",
    "ruleImage": "img@src",
    "ruleLink": "@class.post-title@a@href",
    "ruleNextPage": "page",
    "rulePubDate": "📆{{@class.author@text}}〖{{@class.post-date@text}}〗",
    "ruleTitle": "h3@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "NEW::https://www.coszip.com/\n搜索::https://www.coszip.com/search/{{source.getVariable()}}/page/{{page}}\nCosplay::https://www.coszip.com/category/cosplay/page/{{page}}\nPhotoBook::https://www.coszip.com/category/photobook/page/{{page}}\nErotica/Nude::https://www.coszip.com/category/erotica-nude/page/{{page}}",
    "sourceComment": "需挂梯子",
    "sourceGroup": "h",
    "sourceIcon": "https://www.coszip.com/media/2022/09/logo-designer.png",
    "sourceName": "COSPLAY ZIP",
    "sourceUrl": "https://www.coszip.com/",
    "style": "/*标题相关*/\nh3{text-align:center}\nh5{margin-bottom:0;padding-left:5;}\n* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "concurrentRate": "20/10000",
    "contentBlacklist": "",
    "customOrder": 983,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "<js>\nheaders={\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36 EdgA/127.0.0.0\",\n    \"Referer\": String(source.getKey()).replace(/(.*\\/\\/[a-z0-9.-]+).*/, '$1')\n}\nJSON.stringify(headers);\n</js>",
    "injectJs": "",
    "jsLib": "function get(tag,num) {\n    sort = ['post_date_and_popularity','post_date','video_viewed','most_favourited'];\n    sort1 = ['','post_date_and_popularity','post_date','video_viewed','most_favourited'];\n    var e = eval(tag + '[' + num + ']');\n    return e;\n}\nfunction Get(e) {\n    const { java, source, cookie, cache } = this;\n    var get = JSON.parse(source.getLoginHeader());\n    return get[e];\n}\nfunction Map(e) {\n    const { java, source, cookie, cache } = this;\n    var infomap = source.getLoginInfoMap();\n    var map = (infomap !== null && infomap.get(e)) ? infomap.get(e) : '';\n    return String(map);\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "[\n  { name: \"  查看当前  \", type: \"button\", action: \"look(0)\" },\n  { name: \"   查看历史   \", type: \"button\", action: \"look(1)\" },\n  { name: \"  恢复默认  \", type: \"button\", action: \"test(0)\" },\n\n  {\n    name: \"            💡　　 源　　 站　　 更　　 新　　 💡            \",\n    type: \"button\",\n    action: \"update()\"\n  },\n\n  { name: \"                      ༺ˇ»`ʚ  点击切换源站  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \"       ①国际网址✈️       \", type: \"button\", action: \"$(1)\"},\n  { name: \"       ②国内网址🐰       \", type: \"button\", action: \"$(2)\"},\n\n  { name: \"                      ༺ˇ»`ʚ  点击切换分类  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \"           主题标签           \", type: \"button\", action: \"o(0)\" },\n  { name: \"           女优一览           \", type: \"button\", action: \"o(1)\" },\n\n  { name: \"                      ༺ˇ»`ʚ  列表影片排序  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \" 近 期   \", type: \"button\", action: \"q(0)\" },\n  { name: \" 更 新   \", type: \"button\", action: \"q(1)\" },\n  { name: \" 观 看   \", type: \"button\", action: \"q(2)\" },\n  { name: \" 收 藏 \", type: \"button\", action: \"q(3)\" },\n\n  { name: \"                      ༺ˇ»`ʚ  搜索影片排序  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \"  最高相关  \", type: \"button\", action: \"r(0)\" },\n  { name: \"   近期最佳   \", type: \"button\", action: \"r(1)\" },\n  { name: \"  最近更新  \", type: \"button\", action: \"r(2)\" },\n  { name: \"  最多观看  \", type: \"button\", action: \"r(3)\" },\n  { name: \"   最高收藏   \", type: \"button\", action: \"r(4)\" },\n  { name: \"                    \", type: \"button\" },\n\n  { name: \"                      ༺ˇ»`ʚ  分类女优排序  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \" 热 度   \", type: \"button\", action: \"p(0)\" },\n  { name: \" 名 字   \", type: \"button\", action: \"p(1)\" },\n  { name: \" 更 新   \", type: \"button\", action: \"p(2)\" },\n  { name: \" 数 量 \", type: \"button\", action: \"p(3)\" },\n\n  { name: \"                      ༺ˇ»`ʚ  女优加载页数  ɞ´«ˇ༻                    \", type: \"button\", action: \"login('【加载页数】' + n(2) + '填写数字或范围，如：15或10-20')\" },\n  { name: \"页数：\", type: \"text\" },\n\n  { name: \"                      ༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻                    \", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号”,“隔开')\" },\n  { name: \"收藏：\", type: \"text\" },\n\n  {\n    name: \"            💡　　 源　　 站　　 打　　 印　　 💡            \",\n    type: \"button\",\n    action: \"test()\"\n  }\n]",
    "loginUrl": "var fburl = 'https://alldayj.com';\noriginal = {\n    'o': 0,\n    'p': 0,\n    'q': 0,\n    'r': 0,\n    'url': 'https://jable.tv',\n    'urls': [\n        'https://jable.tv',\n        'https://jable.tv'\n    ]\n};\ntry {\n    $$$ = JSON.parse(source.getLoginHeader());\n    if ($$$ == null) {\n        error;\n    } else {\n        '';\n    };\n} catch (e) {\n    $$$ = original;\n    put($$$);\n}\nx = '⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚';\nvar Headers = String(cache.get(java.md5Encode16(Get('url') + \"headers\")));\nvar Option = {\n    \"method\": \"GET\",\n    \"headers\": Headers\n};\nfunction test(e) {\n    if (e == undefined) {\n        return java.log('\\n' + JSON.stringify($$$['urls'], null, '\\t')) + login('【源站输出提示】' + n(2) + '源站已打印完毕，请到日志查看');\n    }\n    if (e == 0) {\n        login('【初始化提示】' + n(2) + '已恢复默认设置');\n        return put(original);\n    }\n    date1 = new Date().getTime();\n    html = java.ajax($$$.urls[e]);\n    if(html.includes('no-js')){\n        cookie.removeCookie(Get('url'));\n        java.startBrowserAwait($$$.urls[e],\"验证\").body();\n        date1 = new Date().getTime();\n        html = java.ajax($$$.urls[e]);\n    }\n    date2 = new Date().getTime();\n    t = date2 - date1;\n    time = t / 1000 + 's';\n    c = String(html).indexOf('新作');\n    logTime = '【' + name(e) + '】\\n┋┋\\n' + '解析时间：' + time;\n    if (c == -1 || t > 5000) {\n        return login('【访问失败提示】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♣️源站已失效(可能被墙)♣️\\n┋┋\\n请更新网址/切换源站/切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else if (t < 1000) {\n        return login('【网络环境优良】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n❤️延迟低，推荐使用此站❤️\\n┋┋\\n网络环境优良，请继续保持状态\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else if (t >= 1000 && t < 2000) {\n        return login('【网络环境一般】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♦️延迟一般，勉强可使用♦️\\n┋┋\\n请切换其他源站或切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else if (t >= 2000 && t < 5000) {\n        return login('【网络环境堪忧】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♠延迟过高，不建议使用♠\\n┋┋\\n请切换其他源站或切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    }\n}\nfunction put(data) {\n    return source.putLoginHeader(JSON.stringify(data, null, '\\t'));\n}\nfunction update() {\n    $$$['urls'].splice(original['urls'].length);\n    time = new Date().getTime();\n    html = java.webViewGetOverrideUrl(null, fburl + '?t=' + time, null, '');\n    J = org.jsoup.Jsoup.parse(html);\n    u = J.select('.col-md-8 a');\n    for (i in u) {\n        host = String(u[i].attr('href'));\n        if (String($$$['urls']).indexOf(host) === -1) {\n            java.log('\\n✅已添加源站：\\n' + host);\n            $$$['urls'].push(host);\n            put($$$);\n        }\n    }\n    return login('【源站更新提示】' + n(2) + '源站更新完毕，请到日志查看');\n}\nfunction name(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return x[e] + $$$.urls[e];\n}\nfunction login(e) {\n    if (e == undefined) {\n        return;\n    }\n    java.longToast(e);\n}\nfunction n(e) {\n    n = '\\n';\n    for (m = 1; m < e; m++) {\n        n = n + '\\n';\n    }\n    return n;\n}\nfunction k(e) {\n    k = ' ';\n    for (q = 1; q < e; q++) {\n        k = k + ' ';\n    }\n    return k;\n}\nfunction l(e) {\n    l = '';\n    for (o = 1; o < e; o++) {\n        l = l + '';\n    }\n    return l;\n}\nfunction look(e) {\n    if (e == 0) {\n        return login('【查看当前源站】\\n\\n┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋' + ('\\n ' + '📌' + name($$$.ci0)) + '\\n┋┋' + ('\\n' + '🗳订阅分类：' + typeO($$$.o)) + '\\n┋┋' + ('\\n' + '👩‍🎤女优排序：' + typeP($$$.p)) + '\\n┋┋' + ('\\n' + '📚分类排序：' + typeQ($$$.q)) + '\\n┋┋' + ('\\n' + '📚搜索排序：' + typeR($$$.r)) + '\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else {\n        return login('【查看历史接口】\\n\\n┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋' + ('\\n ci1：' + name($$$.ci1)) + '\\n┋┋' + ('\\n ci2：' + name($$$.ci2)) + '\\n┋┋' + ('\\n ci3：' + name($$$.ci3)) + '\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    }\n}\nfunction $(e) {\n    if (e == undefined) {\n        e = result['序号：'];\n        e = e > 0 ? e : '0';\n    }\n    if (/^ci[123]$/.test(e)) {\n        eval('i=$$$.' + e);\n    }\n    if (/\\D|^$/.test(e) || e < 0 || e >= $$$['urls'].length) {\n        return login('【源站错误提示】' + n(2) + '已选择的源站无效，请重新选择');\n    }\n    $$$['url'] = $$$['urls'][e];\n    $$$['ci3'] = $$$['ci2'];\n    $$$['ci2'] = $$$['ci1'];\n    $$$['ci1'] = $$$['ci0'];\n    $$$['ci0'] = e;\n    put($$$);\n    test(e);\n}\nO = ['主题标签','全部女优'];\nfunction typeO(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return O[e];\n}\nfunction o(e) {\n    if (o == undefined) {\n        o = result.o;\n    }\n    if (e == $$$.o) {\n        return login('【分类切换提示】' + n(2) + '已经选择此分类，无需更换');\n    }\n    login('【分类切换提示】' + n(2) + '已经切换到[' + typeO(e) + ']分类，请刷新分类');\n    $$$.o = e;\n    return put($$$);\n}\nP = ['热度优先','名字排序','最近更新','影片数量'];\nfunction typeP(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return P[e];\n}\nfunction p(e) {\n    if (p == undefined) {\n        p = result.p;\n    }\n    if (e == $$$.p) {\n        return login('【女优排序提示】' + n(2) + '已经选择此排序，无需更换');\n    }\n    login('【女优排序提示】' + n(2) + '已经切换到[' + typeP(e) + ']排序，请刷新分类');\n    $$$.p = e;\n    return put($$$);\n}\nQ = ['近期最佳','最近更新','最多观看','最高收藏'];\nfunction typeQ(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return Q[e];\n}\nfunction q(e) {\n    if (q == undefined) {\n        q = result.q;\n    }\n    if (e == $$$.q) {\n        return login('【分类影片排序】' + n(2) + '已经选择此排序，无需更换');\n    }\n    login('【分类影片排序】' + n(2) + '已经切换到[' + typeQ(e) + ']排序');\n    $$$.q = e;\n    return put($$$);\n}\nR = ['最高相关','近期最佳','最近更新','最多观看','最高收藏'];\nfunction typeR(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return R[e];\n}\nfunction r(e) {\n    if (r == undefined) {\n        r = result.r;\n    }\n    if (e == $$$.r) {\n        return login('【搜索影片排序】' + n(2) + '已经选择此排序，无需更换');\n    }\n    login('【搜索影片排序】' + n(2) + '已经切换到[' + typeR(e) + ']排序');\n    $$$.r = e;\n    return put($$$);\n}",
    "preload": false,
    "ruleArticles": ".mb-e-20",
    "ruleContent": "<js>\n//获取集数\nvar n = 0;\nvar names = ['原版视频'];\nvar list = [];\nURL = baseUrl;\nlist.push(URL);\njishu = list.map(($, i)=>{\n    var value = '',name = '',bt = '',fm = '';\n    html = $ == baseUrl ? result : java.ajax($);\n    J = org.jsoup.Jsoup.parse(html);\n    name = names[i];\n    var Value = [];\n    url = html.match(/hlsUrl\\s*=\\s*'(.*?)'/)[1];\n    Value.push({src:url,size:'0'});\n    value = JSON.stringify(Value);\n    bt = J.select('h4')[0].text();\n    fm = J.select('video')[0].attr('poster');\n    return `<button onclick=\"jishu(this)\" value=${value} data-bt=\"${bt}\"  data-fm=\"${fm}\"><b>${name}</b></button>`;\n}).join('\\n');\n\nstyle = ' style=\"display:none;\"';\njishu = `<div class=\"jishu\" data-n=\"${n}\"${style}>\\n<p>🎥 视频版本：&lrm;</p>\\n<p>${jishu}</p>\\n</div>\\n`;\n\n//返回json\nJSON.stringify({\n    jishu: jishu\n})\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title></title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https://cdn.plyr.io/3.6.12/plyr.css\">\n<style>\n* {\n    z-index: 0;\n    margin: 0;\n    padding: 0;\n}\n\nbody {\n    margin: auto;\n    background: #ccc;\n    width: 100%;\n}\n\nbody>p:first-of-type {\n    width: 100%;\n    position: sticky;\n    top: 0px;\n    text-indent: 0px;\n    height: 16px;\n    font-size: 0.7rem;\n    border-radius: 0px 0px 0px 0px;\n    background: #000;\n    color: #fff;\n    white-space: nowrap;\n    overflow: auto;\n    z-index: 4;\n}\n\nvideo {\n    visibility: hidden;\n}\n\n.video-container {\n    position: relative;\n    min-height: 56.25vw;\n    z-index: 3;\n}\n\n#player {\n    position: relative;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n}\n\n:root {\n    --plyr-color-main: #00aaff;/* 播放器主要颜色 */\n    --plyr-control-color: #fff;/* 播放器控件图标颜色 */\n    --plyr-control-background: transparent;/* 播放器控件背景颜色 */\n    --plyr-video-background: transparent;/* 视频背景颜色 */\n    --plyr-range-fill-background: #0099ee;/* 进度条已填充部分的颜色 */\n    --plyr-range-thumb-background: #fff;/* 进度条滑块的颜色 */\n}\n\n.plyr__control--overlaid {\n    background: transparent;\n    border: 0;\n    border-radius: 100%;\n    color: #fff;\n    left: calc(50% - 30px);\n    top: calc(50% - 45px);\n    transform: none;\n    width: 60px;\n    height: 60px;\n    padding: 0;\n    z-index: 2;\n}\n\n.plyr__control--overlaid svg {\n    width: 50px;\n    height: 50px;\n    left: calc(50% - 25px);\n    top: calc(50% - 25px);\n    transform: none;\n    fill: #fff;/* 大播放器控件图标颜色 */\n}\n\n.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true] {\n    background: transparent;/* 播放器控件悬停/点击背景颜色 */\n    color: #00aaff;/* 播放器控件悬停/点击图标颜色 */\n}\n\n.plyr__controls .plyr__controls__item {\n    margin-left: auto;\n    margin: calc(var(--plyr-control-spacing,10px)/4);\n}\n\n.plyr__time--duration {\n    display: inline-block!important;\n}\n\n.plyr__time+.plyr__time:before {\n    margin-right: 8px!important\n}\n\n@media (max-width: 640px) {\n    .plyr__captions {\n        margin-bottom:-8px\n    }\n\n    .plyr__progress__container {\n        margin-right: 5px\n    }\n\n    .plyr__time {\n        position: absolute;\n        bottom: 29px;\n    }\n\n    .plyr__time--current {\n        left: 108px\n    }\n\n    .plyr__time+.plyr__time:before {\n        content: \"\"!important\n    }\n\n    .plyr__time--duration {\n        right: 110px;\n    }\n\n    .plyr__volume {\n        width: auto;\n        max-width: 32px!important;\n        min-width: 32px!important\n    }\n\n    input[id^=plyr-volume-] {\n        display: none!important;\n    }\n\n    .plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--pip-supported [data-plyr=pip] {\n        display: none!important;\n    }\n}\n\n.all-info {\n    position: absolute;\n    background: #ccc;/* 详情信息背景颜色 */\n    margin: auto;\n    width: 100%;\n    height: auto;\n}\n\n.all-info>div {\n    width: 100%;\n    margin: auto;\n}\n\n.all-info>p {\n    text-indent: 0px;\n}\n\n.all-info>div>p {\n    width: 90%;\n    margin: 5px 5%;\n    outline: none;\n    text-align: left;\n    word-wrap: break-word;\n}\n\ndetails {\n    width: 100%;\n    height: auto;\n    margin: auto;\n    padding: 0;\n    border-bottom: 0.5px solid #333;\n}\n\ndetails>img {\n    width: 100%;\n}\n\ndetails[open] {\n    border-bottom: none;\n}\n\nsummary {\n    width: 90%;\n    margin: 5px 3%;\n    outline: none;\n    line-height: 1.5;\n    text-align: left;\n    word-wrap: break-word;\n}\n\nsummary::-webkit-details-marker {\n    display: none;\n}\n\nbutton {\n    width: 29.5%;\n    margin: 1.25%;\n    padding: 5px;\n    outline: none;\n    border-radius: 8px;\n    font-size: 0.7rem;\n    text-overflow: ellipsis;\n    overflow: hidden;\n}\n\nbutton.active {\n    color: #166188;\n    position: sticky;\n    left: 0;\n    right: 0;\n}\n</style>\n</head>\n<body>\n<p>{{src.match(/hlsUrl\\s*=\\s*'(.*?)'/)[1]}}</p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<div class=\"all-info\">\n<details>\n  <summary>\n    <h3>{{@@h4.0@text}}</h3>\n  </summary>\n  <img src={{@@video@poster}}>\n</details>\n{{JSON.parse(result).jishu}}\n<div>\n    <p>📆 更新：{{@@.mr-3.0@text}}</p>\n    <p>🎥 播放：{{@@.mr-3.1@text##\\s}}</p>\n    <p>❤ 收藏：{{@@.count@text}}</p>\n    <p>👩‍🎤 女优：{{@@.rounded-circle@title}}</p>\n    <p>📦 主题：{{@@.tags.h6-md@text##•.*$}}</p>\n    <p>🔖 标签：{{@@.tags.h6-md@text##^.*•}}</p>\n</div>\n</div>\n\n<script src=\"https://cdn.plyr.io/3.6.12/plyr.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/hls.js@latest\"></script>\n\n<script>\n// 选中标签\nfunction $(rule) {\n    return document.querySelectorAll(rule);\n}\n\n// 删除选中标签的class\nfunction omit(items) {\n    return Array.from(items, (item) => {\n        item.className = \"\";\n    });\n}\n\n// 选中标签的class增加active\nfunction active(items, index) {\n    items[index].className = \"active\";\n}\n\n// 播放器实例\nlet player = null;\n\n// 获取视频URL并更新视频源\nfunction geturl() {\n    let zyurl = $(\".jishu button.active\")[0].value;\n    let img = $('img')[0];\n    let fm = $(\".jishu button.active\")[0].dataset.fm;\n\n    // 更新视频封面\n    $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n\n    // 设置不同分辨率的视频源\n    let sources = JSON.parse(zyurl);\n\n    return { sources: sources };\n}\n\n// 初始化播放器\nfunction initializePlayer(sources) {\n    const video = $('video')[0];\n    const qualityOptions = sources.map(source => parseInt(source.size));\n\n    // 立即重新初始化 Plyr 实例\n    player = new Plyr(video, {\n        controls: [\n            'play-large',   // 大播放按钮\n            'rewind',       // 倒退\n            'play',         // 播放\n            'fast-forward', // 快进\n            'progress',     // 进度条\n            'current-time', // 当前时间\n            'duration',     // 总时长\n            'mute',         // 静音\n            'volume',       // 音量\n            'captions',     // 字幕\n            'settings',     // 设置\n            'pip',          // 画中画\n            'airplay',      // Airplay\n            'fullscreen'    // 全屏\n        ],\n        settings: ['quality', 'speed'],\n        quality: {\n            default: qualityOptions[0],\n            options: qualityOptions,\n            forced: true,\n            onChange: (newQuality) => {\n                changeVideoQuality(newQuality, sources);\n            }\n        },\n        fullscreen: {\n            enabled: true,\n            fallback: true,\n            iosNative: true,\n            container: null,\n        },\n        speed: {\n            selected: 1, // 设置默认播放倍数\n            options: [0.25, 0.5, 1, 1.5, 2],\n        },\n        i18n: {\n            restart: '重新开始',\n            rewind: '倒退 {seektime} 秒',\n            play: '播放',\n            pause: '暂停',\n            fastForward: '快进 {seektime} 秒',\n            seek: '进度',\n            seekLabel: '{currentTime} / {duration}',\n            played: '播放',\n            buffered: '缓冲',\n            currentTime: '当前时间',\n            duration: '持续时间',\n            volume: '音量',\n            mute: '静音',\n            unmute: '取消静音',\n            enableCaptions: '启用字幕',\n            disableCaptions: '禁用字幕',\n            enterFullscreen: '进入全屏',\n            exitFullscreen: '退出全屏',\n            frameTitle: '播放器',\n            captions: '字幕',\n            settings: '设置',\n            speed: '速度',\n            normal: '正常',\n            quality: '画质',\n            qualityLabel: {\n                0: '自动',\n            },\n            pip: '画中画',\n            loop: '循环',\n            start: '开始',\n            end: '结束',\n            all: '全部',\n            reset: '重置',\n            disabled: '禁用',\n            advertisement: '广告'\n        },\n        keyboard: {\n            focused: true,\n            global: true,\n        },\n        tooltips: {\n            controls: true,\n            seek: true\n        },\n        captions: {\n            active: true,\n            update: true,\n            language: 'auto',\n        },\n    });\n\n    player.on('ready', () => {\n        video.style.visibility = 'visible';\n\n        // 添加长按倍速播放功能\n        let longPressTimeout = null;\n        let initialSpeed = 1;\n        let isLongPress = false;\n        const controls = document.querySelector('.plyr__controls');\n        const overlaid = document.querySelector('.plyr__control--overlaid');\n\n        const startLongPress = (e) => {\n            e.stopPropagation();\n            initialSpeed = player.speed;\n            longPressTimeout = setTimeout(() => {\n                setTimeout(() => {\n                    controls.style.display = 'none';\n                    overlaid.style.display = 'none';\n                }, 1000);\n                isLongPress = true;\n                player.speed = 2; // 长按时设置2倍速播放\n            }, 500);\n        };\n\n        const endLongPress = (e) => {\n            e.stopPropagation();\n            clearTimeout(longPressTimeout);\n            if (isLongPress) {\n                player.speed = initialSpeed;\n                isLongPress = false;\n                setTimeout(() => {\n                    controls.style.display = 'flex';\n                    overlaid.style.display = 'flex';\n                }, 2000);\n            }\n        };\n\n        // 监听播放器区域的pointerdown和pointerup事件\n        const playerContainer = document.querySelector('.plyr__video-wrapper');\n\n        playerContainer.addEventListener('pointerdown', startLongPress, true);\n        playerContainer.addEventListener('pointerup', endLongPress, true);\n        playerContainer.addEventListener('pointerleave', endLongPress, true);\n\n        // 处理全屏模式下的特殊情况\n        document.addEventListener('fullscreenchange', () => {\n            if (!document.fullscreenElement) {\n                endLongPress();\n            }\n        });\n    });\n}\n\n// 切换视频质量的函数\nfunction changeVideoQuality(quality, sources) {\n    const video = $('video')[0];\n    const selectedSource = sources.find(source => source.size === quality.toString());\n    const currentTime = video.currentTime;\n    const wasPlaying = !video.paused;\n\n    if (wasPlaying) {\n        $(\".video-container\")[0].style.background = '#000';\n    }\n    $(\"body>p\")[0].innerText = selectedSource.src;\n\n    if (selectedSource) {\n        if (Hls.isSupported() && selectedSource.src.endsWith('.m3u8')) {\n            const hls = new Hls();\n            hls.loadSource(selectedSource.src);\n            hls.attachMedia(video);\n            hls.on(Hls.Events.MANIFEST_PARSED, () => {\n                video.currentTime = currentTime;\n                if (wasPlaying) {\n                    video.play();\n                }\n            });\n        } else {\n            video.pause();\n            video.src = selectedSource.src;\n            video.load();\n            video.currentTime = currentTime;\n            if (wasPlaying) {\n                video.play();\n            }\n        }\n    }\n}\n\n// 点击集数按钮时调用的函数\nfunction jishu(item) {\n    if (player && typeof player.destroy === 'function') {\n        player.destroy();\n        player = null;\n    }\n    omit($('.jishu button.active'));\n    item.className = \"active\";\n    const { sources } = geturl();\n    initializePlayer(sources);\n}\n\n// 页面加载时初始化播放器\n(() => {\n    let n = $(\".jishu\")[0].dataset.n;\n    active($('.jishu button'), n);\n    const { sources } = geturl();\n    initializePlayer(sources);\n})();\n</script>\n</body>\n</html>",
    "ruleDescription": "",
    "ruleImage": "img@data-src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "⌚️ {{@@.label@text}}    🎥 {{@@.sub-title@html}}\n@js:\nresult.replace(/<p[\\s\\S]*?<\\/svg>|<\\/p>|\\n/gm,'').replace(/<svg[\\s\\S]*?<\\/svg>/m,'  ❤ ').replace(/(\\d)\\s+(\\d)/g,'$1$2')",
    "ruleTitle": ".title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\neval(String(source.loginUrl));\nvar exploreUrl = [];\nvar Sort = `{{get('sort',Get('q'))}}`;\nvar Sort1 = `{{get('sort1',Get('r'))}}`;\nfunction explore(e, f, g) {\n    if (g=='收藏') {\n        style = `${e}::@js:\\`${f}\\`\\n`;\n    } else if (g=='主题') {\n        style = `${e}::@js:\\`${f}?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=${Sort}&from={{page}}&_={{new Date().getTime()}}\\`\\n`;\n    } else if (g=='标签') {\n        style = `${e}::@js:\\`${f}?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=${Sort}&from={{page}}&_={{new Date().getTime()}}\\`\\n`;\n    } else {//女优\n        style = `${e}::@js:\\`${f}?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=${Sort}&from={{page}}&_={{new Date().getTime()}}\\`\\n`;\n    }\n    return style;\n}\n\nsc = Map('收藏：');\nscs = sc !== '' ? sc.split(\",\") : [];\nif (scs.length > 0) {\n    scs.forEach((sc) => {\n        let scHref = `{{Get('url')}}/search/${sc}/?mode=async&function=get_block&block_id=list_videos_videos_list_search_result&q=${sc}&sort_by=${Sort1}&from={{page}}&_={{new Date().getTime()}}`;\n        exploreUrl.push(explore(sc, scHref, '收藏'));\n    });\n}\n\nhtml = java.ajax(Get('url')+'/categories/');\nif(String(html).includes('no-js')){\n    cookie.removeCookie(Get('url'));\n    java.startBrowserAwait(Get('url'),'验证');\n}\n\nJ = org.jsoup.Jsoup.parse(html);\n\nif (Get('o') == 0) {\n    java.toast(\"正在获取主题标签数据，请稍后！\")\n    categories = J.select('.pb-e-lg-40 a');\n    for (i in categories) {\n        exploreUrl.push(explore(categories[i].select('h4').text()+'('+String(categories[i].select('span').text()).replace(/(\\d+).*$/, '$1')+')', `{{Get('url')}}${String(categories[i].attr('href')).replace(/.*\\/\\/[a-z0-9.-]+/, '')}`, '主题'));\n    }\n    tags = J.select('.gutter-20.pb-3 a');\n    for (i in tags) {\n        exploreUrl.push(explore(tags[i].text(), `{{Get('url')}}${String(tags[i].attr('href')).replace(/.*\\/\\/[a-z0-9.-]+/, '')}`, '标签'));\n    }\n}\n\nnsort = ['avg_videos_popularity','title','last_content_date','total_videos'];\nif (Get('o') == 1) {\n    java.toast(\"正在获取女优数据，请耐心等待！\");\n    Fpage = /-/.test(Map('页数：')) ? Map('页数：').match(/(\\d+)/g)[0] : '1';\n    Lpage = /-/.test(Map('页数：')) ? Map('页数：').match(/(\\d+)/g)[1] : (/\\d+/.test(Map('页数：')) ? Map('页数：') : '5');\n    var murl = [];\n    for (let i = Fpage; i <= Lpage; i++) {\n        murl.push(Get('url')+'/models/?mode=async&function=get_block&block_id=list_models_models_list&sort_by='+nsort[Get('p')]+'&from='+i+'&_='+(new Date().getTime())); \n    }\n    htmls = java.ajaxAll(murl);\n    for (let i = 0; i < htmls.length; i++) {\n        let models = org.jsoup.Jsoup.parse(htmls[i].body()).select('.horizontal-img-box');\n        models.forEach((model) => {\n            let modelName = model.select('.title').text();\n            let modelSpanText = model.select('span').text();\n            let modelVideosCount = String(modelSpanText).replace(/(\\d+).*$/, '$1');\n            let modelHref = `{{Get('url')}}${String(model.select('a').attr('href')).replace(/.*\\/\\/[a-z0-9.-]+/, '')}`;\n            exploreUrl.push(explore(`${modelName}(${modelVideosCount})`, modelHref, '女优'));\n        });\n    }\n}\n\n`变量搜索::@js:\\`{{Get('url')}}/search/{{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('秘密');source.getVariable()}}/?mode=async&function=get_block&block_id=list_videos_videos_list_search_result&q=${source.getVariable()}&sort_by=${Sort1}&from={{page}}&_={{new Date().getTime()}}\\`\\n\n${exploreUrl.join('\\n')}`",
    "sourceComment": "修改：1、优化页面样式；by：xiaohan231-2024/08/25\n\n修改：1、优化长按倍速播放功能；by：xiaohan231-2024/08/24\n\n修改：1、优化播放器样式；2、选择播放倍速后，点击屏幕不再恢复成正常；3、添加长按2倍速播放功能，想要设置成其他的可以在内容规则根据注释修改；by：xiaohan231-2024/08/21\n\n修改：1、调用Plyr插件搭建网页播放器；2、设置播放器默认比例为16/9，以防止加载时播放器高度变动；3、优化播放器样式；by：xiaohan231-2024/08/20\n\n修改：1、增加收藏关键词；2、视频不再采用第三方解析，改为调用原生播放器；3、添加视频封面；by：xiaohan231-2024/08/18\n\n修改：1、优化女优信息获取；2、优化内容规则；by：xiaohan231-2024/08/17\n\n修改：1、增加源站更新切换；2、优化分类获取；3、更换视频解析接口；by：xiaohan231-2024/08/16\n\nby：xiaohan231-2024/08/15",
    "sourceGroup": "h",
    "sourceIcon": "https://krseoul.imgtbl.com/i/2024/08/17/66bfb45e25be1.png",
    "sourceName": "Jable.tv",
    "sourceUrl": "https://jable.tv/#xh",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 984,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.list",
    "ruleContent": ".pic_center@html",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "ruleTitle": "@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "网友自拍::/category.php?cid=1&page={{page}}\n\n影视作品::/category.php?cid=2&page={{page}}\n\n搜索::/public/api.php?app=search&q={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('少妇'):source.getVariable()}}&page={{page}}",
    "sourceComment": "源社区：@Mengteen\n不要传的太泛滥，请不要二次上传，如要二次分享请@Mengteen",
    "sourceGroup": "h",
    "sourceIcon": "https://www.qpic.ws/images/2025/01/01/blzvXu.jpg",
    "sourceName": "👙网友自拍",
    "sourceUrl": "https://3zx4.023vcc.com/#@Mengteen",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "concurrentRate": "20/10000",
    "contentBlacklist": "",
    "customOrder": 992,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "<js>\nheaders={\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36 EdgA/127.0.0.0\",\n    \"Referer\": String(source.getKey()).replace(/(.*\\/\\/[a-z0-9.-]+).*/, '$1')\n}\nJSON.stringify(headers);\n</js>",
    "injectJs": "",
    "jsLib": "function get(tag,num) {\n    sort = ['today_views','weekly_views','monthly_views','views','released_at','published_at','saved'];\n    filters = ['','individual','multiple','chinese-subtitle'];\n    filters1 = ['','individual','jav','uncensored-leak','uncensored','chinese-subtitle'];\n    var e = eval(tag + '[' + num + ']');\n    return e;\n}\nfunction Get(e) {\n    const { java, source, cookie, cache } = this;\n    var get = JSON.parse(source.getLoginHeader());\n    return get[e];\n}\nfunction Map(e) {\n    const { java, source, cookie, cache } = this;\n    var infomap = source.getLoginInfoMap();\n    var map = (infomap !== null && infomap.get(e)) ? infomap.get(e) : '';\n    return String(map);\n}\nfunction formatSeconds(seconds) {\n    var hours = Math.floor(seconds / 3600);\n    var minutes = Math.floor((seconds % 3600) / 60);\n    var secs = Math.floor(seconds % 60);\n\n    var formattedHours = hours.toString().padStart(2, '0');\n    var formattedMinutes = minutes.toString().padStart(2, '0');\n    var formattedSeconds = secs.toString().padStart(2, '0');\n\n    return `${formattedHours}:${formattedMinutes}:${formattedSeconds}`;\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "[\n  { name: \"  查看当前  \", type: \"button\", action: \"look(0)\" },\n  { name: \"   查看历史   \", type: \"button\", action: \"look(1)\" },\n  { name: \"  恢复默认  \", type: \"button\", action: \"test(0)\" },\n\n  {\n    name: \"            💡　　 源　　 站　　 更　　 新　　 💡            \",\n    type: \"button\",\n    action: \"update()\"\n  },\n\n  { name: \"                      ༺ˇ»`ʚ  点击切换源站  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \"       ①国际网址✈️       \", type: \"button\", action: \"$(1)\"},\n  { name: \"       ②国内网址🐰       \", type: \"button\", action: \"$(2)\"},\n\n  { name: \"                      ༺ˇ»`ʚ  点击切换分类  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \"           类型标签           \", type: \"button\", action: \"o(0)\" },\n  { name: \"           女优一览           \", type: \"button\", action: \"o(1)\" },\n\n  { name: \"                      ༺ˇ»`ʚ  影片浏览排序  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \" 今 日   \", type: \"button\", action: \"q(0)\" },\n  { name: \" 本 周   \", type: \"button\", action: \"q(1)\" },\n  { name: \" 本 月   \", type: \"button\", action: \"q(2)\" },\n  { name: \" 全 部 \", type: \"button\", action: \"q(3)\" },\n  { name: \"                      ༺ˇ»`ʚ  影片其他排序  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \"  发行日期  \", type: \"button\", action: \"q(4)\" },\n  { name: \"   最近更新   \", type: \"button\", action: \"q(5)\" },\n  { name: \"  收藏数量  \", type: \"button\", action: \"q(6)\" },\n\n  { name: \"                      ༺ˇ»`ʚ  分类影片过滤  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \" 所 有   \", type: \"button\", action: \"r(0)\" },\n  { name: \" 单 人   \", type: \"button\", action: \"r(1)\" },\n  { name: \" 多 人   \", type: \"button\", action: \"r(2)\" },\n  { name: \" 中 文 \", type: \"button\", action: \"r(3)\" },\n\n  { name: \"                      ༺ˇ»`ʚ  搜索影片过滤  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \"  所有影片  \", type: \"button\", action: \"s(0)\" },\n  { name: \"   单人作品   \", type: \"button\", action: \"s(1)\" },\n  { name: \"   日本AV    \", type: \"button\", action: \"s(2)\" },\n  { name: \"  无码流出  \", type: \"button\", action: \"s(3)\" },\n  { name: \"   无码影片   \", type: \"button\", action: \"s(4)\" },\n  { name: \"  中文字幕  \", type: \"button\", action: \"s(5)\" },\n\n  { name: \"                      ༺ˇ»`ʚ  分类女优排序  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \"           影片数量           \", type: \"button\", action: \"p(0)\" },\n  { name: \"           出道时间           \", type: \"button\", action: \"p(1)\" },\n\n  { name: \"                      ༺ˇ»`ʚ  女优加载过滤  ɞ´«ˇ༻                    \", type: \"button\" },\n  { name: \" 身 高   \", type: \"button\", action: \"login('【身高参数】' + n(2) + '[0]131-135 [1]136-140 [2]141-145 [3]146-150 [4]151-155 [5]156-160 [6]161-165 [7]166-170 [8]171-175 [9]176-180 [10]181-185 [11]186-190\\\\n\\\\n填写对应身高序号')\" },\n  { name: \" 年 龄   \", type: \"button\", action: \"login('【年龄参数】' + n(2) + '[0]0-20 [1]20-30 [2]30-40\\\\n[3]40-50 [4]50-60 [5]60-99\\\\n\\\\n填写对应年龄序号')\" },\n  { name: \" 罩 杯   \", type: \"button\", action: \"login('【罩杯参数】' + n(2) + '可选罩杯范围：A~Q\\\\n只能填写一个大写字母')\" },\n  { name: \" 出 道 \", type: \"button\", action: \"login('【出道年份】' + n(2) + '填写年份，如：2024\\\\n只能填写一个')\" },\n  { name: \"身高：\", type: \"text\" },\n  { name: \"年龄：\", type: \"text\" },\n  { name: \"罩杯：\", type: \"text\" },\n  { name: \"出道：\", type: \"text\" },\n\n  { name: \"                      ༺ˇ»`ʚ  女优加载页数  ɞ´«ˇ༻                    \", type: \"button\", action: \"login('【加载页数】' + n(2) + '填写数字或范围，如：15或10-20')\" },\n  { name: \"页数：\", type: \"text\" },\n\n  { name: \"                      ༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻                    \", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号”,“隔开')\" },\n  { name: \"收藏：\", type: \"text\" },\n\n  {\n    name: \"            💡　　 源　　 站　　 打　　 印　　 💡            \",\n    type: \"button\",\n    action: \"test()\"\n  }\n]",
    "loginUrl": "var fburl = 'https://missav.live';\noriginal = {\n    'o': 0,\n    'p': 0,\n    'q': 0,\n    'r': 0,\n    's': 0,\n    'url': 'https://missav.com',\n    'urls': [\n        'https://missav.com',\n        'https://missav.com'\n    ]\n};\ntry {\n    $$$ = JSON.parse(source.getLoginHeader());\n    if ($$$ == null) {\n        error;\n    } else {\n        '';\n    };\n} catch (e) {\n    $$$ = original;\n    put($$$);\n}\nx = '⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚';\nvar Headers = String(cache.get(java.md5Encode16(Get('url') + \"headers\")));\nvar Option = {\n    \"method\": \"GET\",\n    \"headers\": Headers\n};\nfunction test(e) {\n    if (e == undefined) {\n        return java.log('\\n' + JSON.stringify($$$['urls'], null, '\\t')) + login('【源站输出提示】' + n(2) + '源站已打印完毕，请到日志查看');\n    }\n    if (e == 0) {\n        login('【初始化提示】' + n(2) + '已恢复默认设置');\n        return put(original);\n    }\n    date1 = new Date().getTime();\n    html = java.ajax($$$.urls[e]+'/dm10/cn');\n    if(html.includes('no-js')){\n        cookie.removeCookie(Get('url'));\n        java.startBrowserAwait($$$.urls[e],\"验证\").body();\n        date1 = new Date().getTime();\n        html = java.ajax($$$.urls[e]+'/dm10/cn');\n    }\n    date2 = new Date().getTime();\n    t = date2 - date1;\n    time = t / 1000 + 's';\n    c = String(html).indexOf('日本');\n    logTime = '【' + name(e) + '】\\n┋┋\\n' + '解析时间：' + time;\n    if (c == -1 || t > 5000) {\n        return login('【访问失败提示】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♣️源站已失效(可能被墙)♣️\\n┋┋\\n请更新网址/切换源站/切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else if (t < 1000) {\n        return login('【网络环境优良】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n❤️延迟低，推荐使用此站❤️\\n┋┋\\n网络环境优良，请继续保持状态\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else if (t >= 1000 && t < 2000) {\n        return login('【网络环境一般】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♦️延迟一般，勉强可使用♦️\\n┋┋\\n请切换其他源站或切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else if (t >= 2000 && t < 5000) {\n        return login('【网络环境堪忧】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♠延迟过高，不建议使用♠\\n┋┋\\n请切换其他源站或切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    }\n}\nfunction put(data) {\n    return source.putLoginHeader(JSON.stringify(data, null, '\\t'));\n}\nfunction update() {\n    $$$['urls'].splice(original['urls'].length);\n    time = new Date().getTime();\n    html = java.webViewGetOverrideUrl(null, fburl + '?t=' + time, null, '');\n    J = org.jsoup.Jsoup.parse(html);\n    u = J.select('button');\n    for (i in u) {\n        host = eval(String(String(u[i].attr('onclick')).replace(/^.*=\\s*/,''))).replace(/(.*\\/\\/[a-z0-9.-]+).*/, '$1');\n        if (String($$$['urls']).indexOf(host) === -1) {\n            java.log('\\n✅已添加源站：\\n' + host);\n            $$$['urls'].push(host);\n            put($$$);\n        }\n    }\n    return login('【源站更新提示】' + n(2) + '源站更新完毕，请到日志查看');\n}\nfunction name(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return x[e] + $$$.urls[e];\n}\nfunction login(e) {\n    if (e == undefined) {\n        return;\n    }\n    java.longToast(e);\n}\nfunction n(e) {\n    n = '\\n';\n    for (m = 1; m < e; m++) {\n        n = n + '\\n';\n    }\n    return n;\n}\nfunction k(e) {\n    k = ' ';\n    for (q = 1; q < e; q++) {\n        k = k + ' ';\n    }\n    return k;\n}\nfunction l(e) {\n    l = '';\n    for (o = 1; o < e; o++) {\n        l = l + '';\n    }\n    return l;\n}\nfunction look(e) {\n    if (e == 0) {\n        return login('【查看当前源站】\\n\\n┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋' + ('\\n ' + '📌' + name($$$.ci0)) + '\\n┋┋' + ('\\n' + '🗳订阅分类：' + typeO($$$.o)) + '\\n┋┋' + ('\\n' + '👩‍🎤女优排序：' + typeP($$$.p)) + '\\n┋┋' + ('\\n' + '📚影片排序：' + typeQ($$$.q)) + '\\n┋┋' + ('\\n' + '🔎分类过滤：' + typeR($$$.r)) + '\\n┋┋' + ('\\n' + '🔍搜索过滤：' + typeS($$$.s)) + '\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    } else {\n        return login('【查看历史接口】\\n\\n┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋' + ('\\n ci1：' + name($$$.ci1)) + '\\n┋┋' + ('\\n ci2：' + name($$$.ci2)) + '\\n┋┋' + ('\\n ci3：' + name($$$.ci3)) + '\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n    }\n}\nfunction $(e) {\n    if (e == undefined) {\n        e = result['序号：'];\n        e = e > 0 ? e : '0';\n    }\n    if (/^ci[123]$/.test(e)) {\n        eval('i=$$$.' + e);\n    }\n    if (/\\D|^$/.test(e) || e < 0 || e >= $$$['urls'].length) {\n        return login('【源站错误提示】' + n(2) + '已选择的源站无效，请重新选择');\n    }\n    $$$['url'] = $$$['urls'][e];\n    $$$['ci3'] = $$$['ci2'];\n    $$$['ci2'] = $$$['ci1'];\n    $$$['ci1'] = $$$['ci0'];\n    $$$['ci0'] = e;\n    put($$$);\n    test(e);\n}\nO = ['主题标签','全部女优'];\nfunction typeO(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return O[e];\n}\nfunction o(e) {\n    if (o == undefined) {\n        o = result.o;\n    }\n    if (e == $$$.o) {\n        return login('【分类切换提示】' + n(2) + '已经选择此分类，无需更换');\n    }\n    login('【分类切换提示】' + n(2) + '已经切换到[' + typeO(e) + ']分类，请刷新分类');\n    $$$.o = e;\n    return put($$$);\n}\nP = ['影片数量','出道时间'];\nfunction typeP(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return P[e];\n}\nfunction p(e) {\n    if (p == undefined) {\n        p = result.p;\n    }\n    if (e == $$$.p) {\n        return login('【女优排序提示】' + n(2) + '已经选择此排序，无需更换');\n    }\n    login('【女优排序提示】' + n(2) + '已经切换到[' + typeP(e) + ']排序，请刷新分类');\n    $$$.p = e;\n    return put($$$);\n}\nQ = ['今日浏览','本周浏览','本月浏览','全部浏览','发行日期','最近更新','收藏数量'];\nfunction typeQ(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return Q[e];\n}\nfunction q(e) {\n    if (q == undefined) {\n        q = result.q;\n    }\n    if (e == $$$.q) {\n        return login('【切换影片排序】' + n(2) + '已经选择此排序，无需更换');\n    }\n    login('【切换影片排序】' + n(2) + '已经切换到[' + typeQ(e) + ']排序');\n    $$$.q = e;\n    return put($$$);\n}\nR = ['所有影片','单人作品','多人作品','中文字幕'];\nfunction typeR(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return R[e];\n}\nfunction r(e) {\n    if (r == undefined) {\n        r = result.r;\n    }\n    if (e == $$$.r) {\n        return login('【列表影片过滤】' + n(2) + '已经选择此过滤，无需更换');\n    }\n    login('【列表影片过滤】' + n(2) + '已经切换到[' + typeR(e) + ']过滤');\n    $$$.r = e;\n    return put($$$);\n}\nS = ['所有影片','单人作品','日本AV','无码流出','无码影片','中文字幕'];\nfunction typeS(e) {\n    if (e == undefined) {\n        e = 0;\n    }\n    return S[e];\n}\nfunction s(e) {\n    if (r == undefined) {\n        r = result.s;\n    }\n    if (e == $$$.s) {\n        return login('【搜索影片过滤】' + n(2) + '已经选择此过滤，无需更换');\n    }\n    login('【搜索影片过滤】' + n(2) + '已经切换到[' + typeS(e) + ']过滤');\n    $$$.s = e;\n    return put($$$);\n}",
    "preload": false,
    "ruleArticles": ".thumbnail.group",
    "ruleContent": "<js>\n//获取集数\nvar n = /-chinese-subtitle/.test(baseUrl) ? 2 : (/-uncensored-leak/.test(baseUrl) ? 1 : 0);\nvar names = ['原版视频', '无码流出', '中文字幕'];\nvar fhs = ['', '-uncensored-leak', '-chinese-subtitle'];\nvar list = [];\nURL = baseUrl.replace(/-uncensored-leak|-chinese-subtitle/,'');\nFH = String(java.getElements('[property=\"og:title\"]').attr('content')).replace(/^(.*?)\\s.*/, '$1');\nlist.push(URL);\nlist.push(URL+'-uncensored-leak');\nlist.push(URL+'-chinese-subtitle');\nvar url = '';\njishu = list.map(($, i)=>{\n    var value = '',name = '',bt = '',fm = '',fh = '',lx = '';\n    var style = ' style=\"display:none;\"';\n    html = $ == baseUrl ? result : java.ajax($);\n    J = org.jsoup.Jsoup.parse(html);\n    if (i < 1 || String(J.select('[hreflang=\"zh-Hans\"]').attr('href')) !== list[0] || i < 1) {\n        name = names[i];\n        var Value = [];\n        url = /找不到页面/.test(html) ? '' : eval(html.match(/(eval.*video.*\\)\\))/m)[1]);\n        if (url !== '') {\n            url1 = String(url).replace(/\\/[^\\/]+\\/[^\\/]+$/, '/');\n            res = String(java.ajax(String(url).replace(/\\/[^\\/]+\\/[^\\/]+$/, '/playlist.m3u8')));\n            sizes = res.match(/RESOLUTION=\\d+x\\d+/g).map(e => e.split('x')[1]);\n            srcs = res.match(/(.*\\/video\\.m3u8)/g);\n            for (j in srcs) {\n                Value.push({src:url1+srcs[j],size:sizes[j]});\n            }\n            Value.sort((a, b) => parseInt(b.size) - parseInt(a.size));\n            value = JSON.stringify(Value);\n        }\n        bt = J.select('[property=\"og:title\"]').attr('content');\n        fh = '🎬 番号：' + FH + fhs[i];\n        lx = '📦 类型：' + String(/找不到页面/.test(html) ? '' : J.select('.text-secondary:contains(类型:)').text()).replace(/类型:/,'');\n        fm = J.select('video').attr('data-poster');\n        style = /找不到页面/.test(html) ? ' style=\"display:none;\"' : '';\n    }\n    return `<button onclick=\"jishu(this)\" value=${value} data-bt=\"${bt}\" data-fh=\"${fh}\" data-lx=\"${lx}\"  data-fm=\"${fm}\"${style}><b>${name}</b></button>`;\n}).join('\\n');\n\nstyle = /none.*none/s.test(jishu) ? ' style=\"display:none;\"' : '';\njishu = `<div class=\"jishu\" data-n=\"${n}\"${style}>\\n<p>🎥 视频版本：&lrm;</p>\\n<p>${jishu}</p>\\n</div>\\n`;\n\n//返回json\nJSON.stringify({\n    jishu: jishu\n})\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title></title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https://cdn.plyr.io/3.6.12/plyr.css\">\n<style>\n* {\n    z-index: 0;\n    margin: 0;\n    padding: 0;\n}\n\nbody {\n    margin: auto;\n    background: #ccc;\n    width: 100%;\n}\n\nbody>p:first-of-type {\n    width: 100%;\n    position: sticky;\n    top: 0px;\n    text-indent: 0px;\n    height: 16px;\n    font-size: 0.7rem;\n    border-radius: 0px 0px 0px 0px;\n    background: #000;\n    color: #fff;\n    white-space: nowrap;\n    overflow: auto;\n    z-index: 4;\n}\n\nvideo {\n    visibility: hidden;\n}\n\n.video-container {\n    position: relative;\n    min-height: 56.25vw;\n    z-index: 3;\n}\n\n#player {\n    position: relative;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n}\n\n:root {\n    --plyr-color-main: #00aaff;/* 播放器主要颜色 */\n    --plyr-control-color: #fff;/* 播放器控件图标颜色 */\n    --plyr-control-background: transparent;/* 播放器控件背景颜色 */\n    --plyr-video-background: transparent;/* 视频背景颜色 */\n    --plyr-range-fill-background: #0099ee;/* 进度条已填充部分的颜色 */\n    --plyr-range-thumb-background: #fff;/* 进度条滑块的颜色 */\n}\n\n.plyr__control--overlaid {\n    background: transparent;\n    border: 0;\n    border-radius: 100%;\n    color: #fff;\n    left: calc(50% - 30px);\n    top: calc(50% - 45px);\n    transform: none;\n    width: 60px;\n    height: 60px;\n    padding: 0;\n    z-index: 2;\n}\n\n.plyr__control--overlaid svg {\n    width: 50px;\n    height: 50px;\n    left: calc(50% - 25px);\n    top: calc(50% - 25px);\n    transform: none;\n    fill: #fff;/* 大播放器控件图标颜色 */\n}\n\n.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true] {\n    background: transparent;/* 播放器控件悬停/点击背景颜色 */\n    color: #00aaff;/* 播放器控件悬停/点击图标颜色 */\n}\n\n.plyr__controls .plyr__controls__item {\n    margin-left: auto;\n    margin: calc(var(--plyr-control-spacing,10px)/4);\n}\n\n.plyr__time--duration {\n    display: inline-block!important;\n}\n\n.plyr__time+.plyr__time:before {\n    margin-right: 8px!important\n}\n\n@media (max-width: 640px) {\n    .plyr__captions {\n        margin-bottom:-8px\n    }\n\n    .plyr__progress__container {\n        margin-right: 5px\n    }\n\n    .plyr__time {\n        position: absolute;\n        bottom: 29px;\n    }\n\n    .plyr__time--current {\n        left: 108px\n    }\n\n    .plyr__time+.plyr__time:before {\n        content: \"\"!important\n    }\n\n    .plyr__time--duration {\n        right: 110px;\n    }\n\n    .plyr__volume {\n        width: auto;\n        max-width: 32px!important;\n        min-width: 32px!important\n    }\n\n    input[id^=plyr-volume-] {\n        display: none!important;\n    }\n\n    .plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--pip-supported [data-plyr=pip] {\n        display: none!important;\n    }\n}\n\n.all-info {\n    position: absolute;\n    background: #ccc;/* 详情信息背景颜色 */\n    margin: auto;\n    width: 100%;\n    height: auto;\n}\n\n.all-info>div {\n    width: 100%;\n    margin: auto;\n}\n\n.all-info>p {\n    text-indent: 0px;\n}\n\n.all-info>div>p {\n    width: 90%;\n    margin: 5px 5%;\n    outline: none;\n    text-align: left;\n    word-wrap: break-word;\n}\n\ndetails {\n    width: 100%;\n    height: auto;\n    margin: auto;\n    padding: 0;\n    border-bottom: 0.5px solid #333;\n}\n\ndetails>img {\n    width: 100%;\n}\n\ndetails[open] {\n    border-bottom: none;\n}\n\nsummary {\n    width: 90%;\n    margin: 5px 3%;\n    outline: none;\n    line-height: 1.5;\n    text-align: left;\n    word-wrap: break-word;\n}\n\nsummary::-webkit-details-marker {\n    display: none;\n}\n\nbutton {\n    width: 29.5%;\n    margin: 1.25%;\n    padding: 5px;\n    outline: none;\n    border-radius: 8px;\n    font-size: 0.7rem;\n    text-overflow: ellipsis;\n    overflow: hidden;\n}\n\nbutton.active {\n    color: #166188;\n    position: sticky;\n    left: 0;\n    right: 0;\n}\n</style>\n</head>\n<body>\n<p></p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<div class=\"all-info\">\n<details>\n  <summary>\n    <h3></h3>\n  </summary>\n  <img>\n</details>\n{{JSON.parse(result).jishu}}\n<div>\n    <p>📆 发行：{{@css:.text-secondary:contains(发行日期:)@text##发行日期:|}}</p>\n    <p></p>\n    <p>👩‍🎤 女优：{{@css:.text-secondary:contains(女优:)@text##女优:}}</p>\n    <p>👨‍🎤 男优：{{@css:.text-secondary:contains(男优:)@text##男优:}}</p>\n    <p>🎦 片商：{{@css:.text-secondary:contains(发行商:)@text##发行商:}}</p>\n    <p>🕵️‍♀️ 导演：{{@css:.text-secondary:contains(导演:)@text##导演:}}</p>\n    <p>🔖 标签：{{@css:.text-secondary:contains(标籤:)@text##标籤:}}</p>\n    <p>🏷 系列：{{@css:.text-secondary:contains(系列:)@text##系列:}}</p>\n    <p></p>\n    <p>✏️ 标题：{{@css:.text-secondary:contains(标题:)@text##标题:}}</p>\n    <p>📋 简介：{{@@[property=\"og:description\"]@content##.*免费加入会员.*}}</p>\n</div>\n</div>\n\n<script src=\"https://cdn.plyr.io/3.6.12/plyr.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/hls.js@latest\"></script>\n\n<script>\n// 选中标签\nfunction $(rule) {\n    return document.querySelectorAll(rule);\n}\n\n// 删除选中标签的class\nfunction omit(items) {\n    return Array.from(items, (item) => {\n        item.className = \"\";\n    });\n}\n\n// 选中标签的class增加active\nfunction active(items, index) {\n    items[index].className = \"active\";\n}\n\n// 播放器实例\nlet player = null;\n\n// 获取视频URL并更新视频源\nfunction geturl() {\n    let zyurl = $(\".jishu button.active\")[0].value;\n    let img = $('img')[0];\n    let bt = $(\".jishu button.active\")[0].dataset.bt;\n    let fh = $(\".jishu button.active\")[0].dataset.fh;\n    let lx = $(\".jishu button.active\")[0].dataset.lx;\n    let fm = $(\".jishu button.active\")[0].dataset.fm;\n\n    // 更新页面信息\n    $(\"title\")[0].innerText = bt;\n    $(\".all-info>details>summary>h3\")[0].innerText = bt;\n    $(\".all-info>div>p\")[3].innerText = fh;\n    $(\".all-info>div>p\")[10].innerText = lx;\n    $(\".all-info>div>p\")[3].style = /：\\s*$/.test(fh) ? \"display:none;\" : \"\";\n    $(\".all-info>div>p\")[10].style = /：\\s*$/.test(lx) ? \"display:none;\" : \"\";\n\n    // 更新详情封面\n    img.src = fm;\n\n    // 更新视频封面\n    $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n\n    // 设置不同分辨率的视频源\n    let sources = JSON.parse(zyurl);\n\n    return { sources: sources };\n}\n\n// 初始化播放器\nfunction initializePlayer(sources) {\n    const video = $('video')[0];\n    const qualityOptions = sources.map(source => parseInt(source.size));\n\n    // 立即重新初始化 Plyr 实例\n    player = new Plyr(video, {\n        controls: [\n            'play-large',   // 大播放按钮\n            'rewind',       // 倒退\n            'play',         // 播放\n            'fast-forward', // 快进\n            'progress',     // 进度条\n            'current-time', // 当前时间\n            'duration',     // 总时长\n            'mute',         // 静音\n            'volume',       // 音量\n            'captions',     // 字幕\n            'settings',     // 设置\n            'pip',          // 画中画\n            'airplay',      // Airplay\n            'fullscreen'    // 全屏\n        ],\n        settings: ['quality', 'speed'],\n        quality: {\n            default: qualityOptions[0],\n            options: qualityOptions,\n            forced: true,\n            onChange: (newQuality) => {\n                changeVideoQuality(newQuality, sources);\n            }\n        },\n        fullscreen: {\n            enabled: true,\n            fallback: true,\n            iosNative: true,\n            container: null,\n        },\n        speed: {\n            selected: 1, // 设置默认播放倍数\n            options: [0.25, 0.5, 1, 1.5, 2],\n        },\n        i18n: {\n            restart: '重新开始',\n            rewind: '倒退 {seektime} 秒',\n            play: '播放',\n            pause: '暂停',\n            fastForward: '快进 {seektime} 秒',\n            seek: '进度',\n            seekLabel: '{currentTime} / {duration}',\n            played: '播放',\n            buffered: '缓冲',\n            currentTime: '当前时间',\n            duration: '持续时间',\n            volume: '音量',\n            mute: '静音',\n            unmute: '取消静音',\n            enableCaptions: '启用字幕',\n            disableCaptions: '禁用字幕',\n            enterFullscreen: '进入全屏',\n            exitFullscreen: '退出全屏',\n            frameTitle: '播放器',\n            captions: '字幕',\n            settings: '设置',\n            speed: '速度',\n            normal: '正常',\n            quality: '画质',\n            qualityLabel: {\n                0: '自动',\n            },\n            pip: '画中画',\n            loop: '循环',\n            start: '开始',\n            end: '结束',\n            all: '全部',\n            reset: '重置',\n            disabled: '禁用',\n            advertisement: '广告'\n        },\n        keyboard: {\n            focused: true,\n            global: true,\n        },\n        tooltips: {\n            controls: true,\n            seek: true\n        },\n        captions: {\n            active: true,\n            update: true,\n            language: 'auto',\n        },\n    });\n\n    player.on('ready', () => {\n        video.style.visibility = 'visible';\n\n        // 添加长按倍速播放功能\n        let longPressTimeout = null;\n        let initialSpeed = 1;\n        let isLongPress = false;\n        const controls = document.querySelector('.plyr__controls');\n        const overlaid = document.querySelector('.plyr__control--overlaid');\n\n        const startLongPress = (e) => {\n            e.stopPropagation();\n            initialSpeed = player.speed;\n            longPressTimeout = setTimeout(() => {\n                setTimeout(() => {\n                    controls.style.display = 'none';\n                    overlaid.style.display = 'none';\n                }, 1000);\n                isLongPress = true;\n                player.speed = 2; // 长按时设置2倍速播放\n            }, 500);\n        };\n\n        const endLongPress = (e) => {\n            e.stopPropagation();\n            clearTimeout(longPressTimeout);\n            if (isLongPress) {\n                player.speed = initialSpeed;\n                isLongPress = false;\n                setTimeout(() => {\n                    controls.style.display = 'flex';\n                    overlaid.style.display = 'flex';\n                }, 2000);\n            }\n        };\n\n        // 监听播放器区域的pointerdown和pointerup事件\n        const playerContainer = document.querySelector('.plyr__video-wrapper');\n\n        playerContainer.addEventListener('pointerdown', startLongPress, true);\n        playerContainer.addEventListener('pointerup', endLongPress, true);\n        playerContainer.addEventListener('pointerleave', endLongPress, true);\n\n        // 处理全屏模式下的特殊情况\n        document.addEventListener('fullscreenchange', () => {\n            if (!document.fullscreenElement) {\n                endLongPress();\n            }\n        });\n    });\n}\n\n// 切换视频质量的函数\nfunction changeVideoQuality(quality, sources) {\n    const video = $('video')[0];\n    const selectedSource = sources.find(source => source.size === quality.toString());\n    const currentTime = video.currentTime;\n    const wasPlaying = !video.paused;\n\n    if (wasPlaying) {\n        $(\".video-container\")[0].style.background = '#000';\n    }\n    $(\"body>p\")[0].innerText = selectedSource.src;\n\n    if (selectedSource) {\n        if (Hls.isSupported() && selectedSource.src.endsWith('.m3u8')) {\n            const hls = new Hls();\n            hls.loadSource(selectedSource.src);\n            hls.attachMedia(video);\n            hls.on(Hls.Events.MANIFEST_PARSED, () => {\n                video.currentTime = currentTime;\n                if (wasPlaying) {\n                    video.play();\n                }\n            });\n        } else {\n            video.pause();\n            video.src = selectedSource.src;\n            video.load();\n            video.currentTime = currentTime;\n            if (wasPlaying) {\n                video.play();\n            }\n        }\n    }\n}\n\n// 点击集数按钮时调用的函数\nfunction jishu(item) {\n    if (player && typeof player.destroy === 'function') {\n        player.destroy();\n        player = null;\n    }\n    omit($('.jishu button.active'));\n    item.className = \"active\";\n    const { sources } = geturl();\n    initializePlayer(sources);\n}\n\n// 页面加载时初始化播放器\n(() => {\n    let n = $(\".jishu\")[0].dataset.n;\n    active($('.jishu button'), n);\n    const { sources } = geturl();\n    initializePlayer(sources);\n})();\n</script>\n</body>\n</html>\n@js:result\n.replace(/：\\s*/g,'：')\n.replace(/<p>(.+)：<\\/p>/gm, '<p style=\"display:none;\">$1：</p>')",
    "ruleDescription": "",
    "ruleImage": "img@data-src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "⌚️ {{@@.right-1@text}}    📦 {{@@.left-1@text}}\n@js:result.replace(/📦\\s*$/,'')",
    "ruleTitle": ".text-secondary@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\neval(String(source.loginUrl));\nvar exploreUrl = [];\nvar Sort = `{{get('sort',Get('q'))}}`;\nvar Filters = `{{get('filters',Get('r'))}}`;\nvar Filters1 = `{{get('filters1',Get('s'))}}`;\nfunction explore(e, f, g) {\n    if (g=='类别') {\n        style = `${e}::${f}\\n`;\n    } else if (g=='收藏') {\n        style = `${e}::@js:\\`${f}\\`\\n`;\n    } else if (g=='分类') {\n        style = `${e}::@js:\\`${f}?page={{page}}&filters=${Filters}&sort=${Sort}\\`\\n`;\n    } else if (g=='日本') {\n        style = `${e}::@js:\\`${f}?page={{page}}&filters=${Filters}\\`\\n`;\n    } else {//女优\n        style = `${e}::@js:\\`${f}?page={{page}}&filters=${Filters}&sort=${Sort}\\`\\n`;\n    }\n    return style;\n}\n\nsc = Map('收藏：');\nscs = sc !== '' ? sc.split(\",\") : [];\nif (scs.length > 0) {\n    scs.forEach((sc) => {\n        let scHref = `{{Get('url')}}/cn/search/${sc}?page={{page}}&filters=${Filters1}&sort=${Sort}`;\n        exploreUrl.push(explore(sc, scHref, '收藏'));\n    });\n}\n\nhtml = java.ajax(Get('url')+'/dm10/cn');\nif(String(html).includes('no-js')){\n    cookie.removeCookie(Get('url'));\n    java.startBrowserAwait(Get('url'),'验证');\n}\n\nJ = org.jsoup.Jsoup.parse(html);\n\nif (Get('o') == 0) {\n    java.toast(\"正在获取分类标签数据，请耐心等待！\")\n    gcs = J.select('.right-0.mt-2.w-56 span')[7].select('a');\n    exploreUrl.push(explore('中文字幕', `{{Get('url')}}/dm265/cn/chinese-subtitle?page={{page}}&filters=${Filters}&sort=${Sort}`, '分类'));\n    exploreUrl.push(explore('国产▶', null, '类别'));\n    for (i in gcs) {\n        exploreUrl.push(explore(gcs[i].text(), `{{Get('url')}}${String(gcs[i].attr('href')).replace(/.*\\/\\/[a-z0-9.-]+/, '')}`, '分类'));\n    }\n    rbs = J.select('.right-0.mt-2.w-56 span')[1].select('a');\n    exploreUrl.push(explore('日本▶', null, '类别'));\n    for (i in rbs) {\n        if (i < 3 || i > 6) {\n            exploreUrl.push(explore(rbs[i].text(), `{{Get('url')}}${String(rbs[i].attr('href')).replace(/.*\\/\\/[a-z0-9.-]+/, '')}`, '日本'));\n        }\n    }\n    srs = J.select('.right-0.mt-2.w-56 span')[3].select('a');\n    exploreUrl.push(explore('素人▶', null, '类别'));\n    for (i in srs) {\n        exploreUrl.push(explore(srs[i].text(), `{{Get('url')}}${String(srs[i].attr('href')).replace(/.*\\/\\/[a-z0-9.-]+/, '')}`, '分类'));\n    }\n    wms = J.select('.right-0.mt-2.w-56 span')[5].select('a');\n    exploreUrl.push(explore('无码▶', null, '类别'));\n    for (i in wms) {\n        exploreUrl.push(explore(wms[i].text(), `{{Get('url')}}${String(wms[i].attr('href')).replace(/.*\\/\\/[a-z0-9.-]+/, '')}`, '分类'));\n    }\n}\n\nif (Get('o') == 0) {\n    exploreUrl.push(explore('标签▶', null, '类别'));\n    J0 = org.jsoup.Jsoup.parse(java.ajax(Get('url')+'/cn/genres'));\n    Page = String(J0.select('#price-currency')[0].text()).match(/(\\d+)/)[1];\n    var murl = [];\n    for (i = 1; i <= Page; i++) {\n        murl.push(Get('url')+'/cn/genres?page='+i); \n    }\n    htmls = java.ajaxAll(murl);\n    for (let i = 0; i < htmls.length; i++) {\n        let models = org.jsoup.Jsoup.parse(htmls[i].body()).select('.gap-4 div');\n        models.forEach((model) => {\n            let modelName = model.select('.text-nord13').text();\n            let modelSpanText = model.select('.text-nord10').text();\n            let modelVideosCount = String(modelSpanText).replace(/(\\d+).*$/, '$1');\n            let modelHref = `{{Get('url')}}${String(model.select('a').attr('href')).replace(/.*\\/\\/[a-z0-9.-]+/, '')}`;\n            exploreUrl.push(explore(`${modelName}(${modelVideosCount})`, modelHref, '分类'));\n        });\n    }\n}\n\nnsort = ['videos','debut'];\nNsort = /\\d+/.test(Map('出道：')) ? 'debut' : nsort[Get('p')]\nheight = ['131-135', '136-140', '141-145', '146-150', '151-155', '156-160', '161-165', '166-170', '171-175', '176-180', '181-185', '186-190'];\nage = ['0-20','20-30','30-40','40-50','50-60','60-99'];\nHeight= /\\d+/.test(Map('身高：')) ? height[Map('身高：')] : '';\nAge= /\\d+/.test(Map('年龄：')) ? age[Map('年龄：')] : '';\nif (Get('o') == 1) {\n    java.toast(\"正在获取女优数据，请耐心等待！\");\n    Fpage = /-/.test(Map('页数：')) ? Map('页数：').match(/(\\d+)/g)[0] : '1';\n    Lpage = /-/.test(Map('页数：')) ? Map('页数：').match(/(\\d+)/g)[1] : (/\\d+/.test(Map('页数：')) ? Map('页数：') : '5');\n    var murl = [];\n    for (let i = Fpage; i <= Lpage; i++) {\n        murl.push(Get('url')+'/cn/actresses?sort='+Nsort+'&height='+Height+'&cup='+Map('罩杯：')+'&age='+Age+'&debut='+Map('出道：')+'&page='+i);\n    }\n    htmls = java.ajaxAll(murl);\n    for (let i = 0; i < htmls.length; i++) {\n        let models = org.jsoup.Jsoup.parse(htmls[i].body()).select('.max-w-full .space-y-4');\n        models.forEach((model) => {\n            let modelName = model.select('h4').text();\n            let modelP0Text = model.select('p')[0].text();\n            let modelVideosCount = String(modelP0Text).replace(/(\\d+).*$/, '$1');\n            let modelP1Text = model.select('p')[1].text();\n            let modelDebutYear = String(modelP1Text).replace(/(\\d+).*$/, '$1');\n            let modelHref = `{{Get('url')}}${String(model.select('a').attr('href')).replace(/.*\\/\\/[a-z0-9.-]+/, '')}`;\n            exploreUrl.push(explore(`${modelName}(${modelVideosCount} • ${modelDebutYear})`, modelHref, '女优'));\n        });\n    }\n}\n\n`变量搜索::@js:\\`{{Get('url')}}/cn/search/{{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('秘密');source.getVariable()}}?page={{page}}&filters=${Filters1}&sort=${Sort}\\`\\n\n${exploreUrl.join('\\n')}`",
    "sourceComment": "修改：1、优化页面样式；by：xiaohan231-2024/08/25\n\n修改：1、优化长按倍速播放功能；2、增加分辨率切换功能；by：xiaohan231-2024/08/24\n\n修改：1、优化播放器样式；2、选择播放倍速后，点击屏幕不再恢复成正常；3、添加长按2倍速播放功能，想要设置成其他的可以在内容规则根据注释修改；by：xiaohan231-2024/08/21\n\n修改：1、调用Plyr插件搭建网页播放器；2、设置播放器默认比例为16/9，以防止加载时播放器高度变动；3、优化播放器样式；by：xiaohan231-2024/08/20\n\n修改：1、修复部分视频无法播放的bug；2、增加收藏关键词；3、视频不再采用第三方解析，改为调用原生播放器；4、添加视频封面；by：xiaohan231-2024/08/18\n\nby：xiaohan231-2024/08/17",
    "sourceGroup": "h",
    "sourceIcon": "https://krseoul.imgtbl.com/i/2024/08/17/66bfb74a9b088.png",
    "sourceName": "MISSAV",
    "sourceUrl": "https://missav.com/#xh",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 993,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 13; 2211133C Build/TKQ1.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Mobile Safari/537.36\"}",
    "lastUpdateTime": 1768532090341,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".img@li@a||ul@li",
    "ruleContent": "<js>\n(() => {\n    urlt = baseUrl.match(/(.+)\\.html/)[1];\n    aTags = org.jsoup.Jsoup.parse(result).select('[class=\"pagelist\"] a');\n    if (aTags.length >= 3) {\n        text = aTags.get(aTags.length - 2).text();\n    } else {\n        text = \"1\";\n    }\n    maxpage = Number(text);\n    textI = \"\";\n    var loadedCount = 0;\n    var htmlContent = `<!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://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js\"></script>\n    <title>🏄Mengteen</title>\n    <!-- 阅图UI ©2025-->\n    \n        <style>\n            #backToTopBtn {\n                display: none;\n                position: fixed;\n                bottom: 36px;\n                right: 18px;\n                z-index: 999;\n                border: none;\n                outline: none;\n                background: rgba(0, 0, 0, 0.5);\n                color: white;\n                cursor: pointer;\n                padding: 9px;\n                border-radius: 10%;\n                font-size: 9px;\n                box-shadow: 0 8px 32px rgba(0, 0, 0, 0.8);\n                transition: all 0.3s ease;\n                backdrop-filter: blur(4px);\n                border: 1px solid rgba(255, 255, 255, 0.2);\n            }\n            #backToTopBtn:hover {\n                background: rgba(0, 0, 0, 0.5);\n                transform: scale(1.08);\n                box-shadow: 0 8px 25px rgba(0, 0, 0, 0.7);}\n            #backToTopBtn:active {\n                transform: scale(0.95);}\n            #image-loaded-toast {\n                position: fixed;\n                bottom: 33px;\n                left: 50%;\n                transform: translateX(-50%);\n                background: rgba(0, 0, 0, 0.5);\n                color: white;\n                padding: 10px 20px;\n                border-radius: 20px;\n                font-size: 14px;\n                z-index: 998;\n                backdrop-filter: blur(4px);\n                box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n                opacity: 0;\n                transition: opacity 0.3s;\n                pointer-events: none;\n                white-space: nowrap;\n            }\n            #image-loaded-toast.show {\n                opacity: 1;\n            }\n            .header-container {\n                text-align:center;\n                padding:50px 20px 20px;\n                margin:0 0 0px;\n                position:relative;\n                background:linear-gradient(135deg, #f0f7ff, #e6f0ff);\n            }\n            .header-card {\n                position:relative;\n                z-index:10;\n                display:inline-block;\n                transform:translateY(-20px);\n                filter: drop-shadow(0 15px 25px rgba(70,130,180,0.25));\n            }\n            .header-content {\n                background:rgba(255,255,255,0.75);\n                backdrop-filter:blur(12px);\n                padding:16px 48px;\n                border-radius:18px;\n                border:1px solid rgba(255,255,255,0.5);\n                box-shadow:0 8px 32px rgba(70,130,180,0.2), inset 0 0 12px rgba(255,255,255,0.6);\n                position:relative;\n                overflow:hidden;\n            }\n            .header-highlight {\n                position:absolute;\n                top:0; left:0; right:0;\n                height:40%;\n                background:linear-gradient(to bottom, rgba(255,255,255,0.4), transparent);\n                pointer-events:none;\n            }\n            .header-title {\n                background:linear-gradient(135deg, #4a7bd0, #00a2b8);\n                -webkit-background-clip:text;\n                background-clip:text;\n                color:transparent;\n                font-size:1.3rem;\n                font-weight:700;\n                margin:0;\n                letter-spacing:-0.5px;\n                position:relative;\n                z-index:2;\n            }\n            \n            * {margin: 0; padding: 0}\n            img {width: 100%;height: auto}\n            ul {font-size: 0; padding: 0}\n            li {list-style: none;\n                text-align: center;\n                margin-bottom: 0px;\n                border-radius: 0px;}\n            .loading-indicator {\n                text-align: center;\n                width: 100%;\n                padding: 0px 0;\n                font-size: 0.9rem;\n                color: #4682B4;\n                font-weight: 500;\n                letter-spacing: 2px;\n                background: linear-gradient(135deg, #f0f7ff, #e6f0ff);\n                backdrop-filter: blur(4px);\n                border-radius: 0px;\n                margin: 0px 0;}\n        </style>\n    </head>\n    <body>\n        <div class=\"header-container\">\n            <div class=\"header-card\">\n                <div class=\"header-content\">\n                    <div class=\"header-highlight\"></div>\n                    <h3 class=\"header-title\">{{@h1@text##P.1}}</h3>\n                </div>\n            </div>\n            \n            <div style=\"margin-top:0px; padding:0px 20px;\">\n                <h5 style=\"color:#6c757d; font-weight:400; font-size:1rem; margin:0; line-height:1.6; letter-spacing:0.3px; position:relative; display:inline-block; max-width:700px;\">✨永远相信美好的事情即将发生!\n                    <div style=\"position:absolute; bottom:-5px; left:0; width:100%; height:1px; background:linear-gradient(90deg, transparent, rgba(70,130,180,0.3), transparent);\"></div>\n                </h5>\n            </div>\n        </div>\n        \n        <ul>`;\n    \n    for (var i = 1; i <= maxpage; i++) {\n        urli = urlt + \"_\" + i + \".html\";\n        htmli = java.ajax(urli);\n        var imgs = org.jsoup.Jsoup.parse(htmli).select('[class=\"slide\"] img');\n        var pageImgCount = imgs.size();  \n        \n        htmlContent += `<li class=\"loading-indicator\">第${i}页图片</li>`;\n        \n        for (var j = 0; j < pageImgCount; j++) {\n            var imgTag = imgs.get(j).toString();\n            htmlContent += '<li>' + imgTag + '</li>';\n        }\n        \n        loadedCount += pageImgCount;  \n        \n        var progressBar = \"\";\n        var progress = Math.round((i / maxpage) * 10);\n        for (var k = 0; k < 10; k++) {\n            progressBar += (k < progress) ? \"♥️\" : \"♡\";\n        }\n        \n        var toastMsg = \"\\n载入第\" + i + \"页\";\n        toastMsg += \"/\" + loadedCount + \"张图片中\\n\";\n        toastMsg += progressBar + \" \" + Math.round((i / maxpage) * 100) + \"%\";\n        java.toast(toastMsg);\n    }\n    \n    java.toast(\"\\n载入图片已完成\\n共有\" + maxpage + \"页/\" + loadedCount + \"张图片\");\n    \n    htmlContent += `</ul>\n        \n        <div id=\"image-loaded-toast\">加载提示</div>\n        \n        <button id=\"backToTopBtn\" title=\"回到顶部\">△</button>\n        \n        <script>\n            (function() {\n                const backToTopBtn = document.getElementById(\"backToTopBtn\");\n                const toast = document.getElementById(\"image-loaded-toast\");\n                const images = document.querySelectorAll(\"img\");\n                \n                let loadedCount = 0;\n                const totalImages = images.length;\n                \n                function updateToast() {\n                    toast.innerHTML = \"⏳ 图片加载中(\" + loadedCount + \"/\" + totalImages + \")\";\n                    toast.classList.add(\"show\");\n                }\n                \n                if(totalImages === 0) {\n                    toast.style.display = \"none\";\n                } else {\n                    updateToast();\n                }\n                \n                function checkAllLoaded() {\n                    loadedCount++;\n                    updateToast();\n                    \n                    if(loadedCount >= totalImages) {\n                        toast.innerHTML =\"✅ 全部图片载入完成(共\" + totalImages + \"张)\";\n                        setTimeout(() => {\n                            toast.classList.remove(\"show\");\n                        }, 3000);                    \n                        initImageViewer();\n                    }\n                }\n                \n                window.addEventListener(\"scroll\", () => {\n                    const scrollPosition = window.scrollY || document.documentElement.scrollTop;\n                    if (scrollPosition > 288) {\n                        backToTopBtn.style.display = \"block\";\n                        backToTopBtn.style.opacity = \"1\";\n                    } else {\n                        backToTopBtn.style.display = \"none\";\n                    }\n                });\n                \n                backToTopBtn.addEventListener(\"click\", () => {\n                    window.scrollTo({\n                        top: 0,\n                        behavior: \"smooth\"\n                    });\n                });\n                \n                function initImageViewer() {\n                    const container = document.querySelector('ul');\n                    if (container && typeof Viewer !== 'undefined') {\n                        const viewer = new Viewer(container, {\n                            title: false, \n                            navbar: true, \n                            toolbar: {\n                                zoomIn: true,\n                                zoomOut: true,\n                                oneToOne: true,\n                                reset: true,\n                                rotateLeft: true,\n                                rotateRight: true,\n                                flipHorizontal: true,\n                                flipVertical: true,\n                            },\n                            viewed() {\n                                backToTopBtn.style.display = 'none';\n                            },\n                            hidden() {\n                                if (window.scrollY > 288) {\n                                    backToTopBtn.style.display = 'block';\n                                }\n                            }\n                        });\n                        \n                        container.querySelectorAll('img').forEach(img => {\n                            img.addEventListener('click', function() {\n                                viewer.show();\n                            });\n                        });\n                    }\n                }\n                \n                images.forEach(img => {\n                    if(img.complete) {\n                        checkAllLoaded();\n                    } else {\n                        img.addEventListener(\"load\", checkAllLoaded);\n                        img.addEventListener(\"error\", checkAllLoaded);\n                    }\n                });\n                \n                if (typeof Viewer !== 'undefined') {\n                    \n                } else {\n                    const viewerScript = document.createElement('script');\n                    viewerScript.src = 'https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js';\n                    viewerScript.onload = function() {\n                       };\n                    document.head.appendChild(viewerScript);\n                }\n            })();\n        </script>\n    </body>\n    </html>`;\n    \n    return htmlContent;\n})()\n</js>",
    "ruleImage": "@js:\"https://cdn.sshs.rip/d1/e2/d14c0de2dbc537f09349f78ede233ce2.webp\"",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "@js:\"🏄Mengteen ©2025\"",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/\n无圣光::/sif/fangtukum/25_{{page}}.html\n性感美女::/sif/fangtukum/1_{{page}}.html\n日韩套图::/sif/fangtukum/2_{{page}}.html\n内衣丝袜::/sif/fangtukum/9_{{page}}.html\n萌妹萝莉::/sif/fangtukum/11_{{page}}.html\n精品套图::/sif/fangtukum/18_{{page}}.html\n高清套图::/sif/fangtukum/24_{{page}}.html\n搜索::/chis/{{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('meinv'):source.getVariable()}}/{{page}}.html",
    "sourceComment": "源社区@Mengteen 2025.8.2原创\n二传二创或者是其它问题请联系我。\n我邮箱:[xxxmgqxxx@vip.qq.com]\n我QQ:99737563(备注来意)\n1.不需要挂🪜子,不排除个别地方网络加载可能有点慢或者是需要挂🪜子才能访问，别急！\n2.使用了我自己的看图UI：卡片式标题,自适应全屏,查看大图浏览,返回顶上按钮,图片加载完成提示等。\n3.分类是按我自己个人喜欢的,你也可以放一些你自己喜欢的。\n4.只能用拼音搜索，例如:美女要用meinv来搜，用中文不生效！",
    "sourceGroup": "h",
    "sourceIcon": "https://cdn.sshs.rip/d0/df/d01dca8fdf5ffdf82c96203b73aa4ddf.webp",
    "sourceName": "👙私房图库",
    "sourceUrl": "http://www.sftuku.com/##@Mengteen",
    "type": 0,
    "variableComment": "🏄Mengteen提示：在此输入拼音关搜索！\n⚠️只能用拼音搜索，例如:美女要用meinv来搜，用中文不生效！"
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1000,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "",
    "loginUrl": "/?login",
    "preload": false,
    "ruleArticles": "class.th",
    "ruleContent": "class.video_player&&class.container&&class.player_twocolumns&&class.column&&class.player&&class.player-holder@all\t\t\t\t\t\t\t\t\t\t\t\t\t",
    "ruleImage": "class.lazy-load@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.sticky_time",
    "ruleTitle": "class.lazy-load@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/\n搜索::/search/{{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('91'):source.getVariable()}}/#search\n最新::/new/\n热门视频::/most-popular/{{page}}/\n國產自拍::/categories/21c031e02ee6ad29acda82b9625b28ef/{{page}}/\n主播福利::/categories/21dc971a5d4361143877eb09b7cd08a5/{{page}}/\n网红黑料::/categories/df045d713ee359e3cd54398e9526b1be/{{page}}/\n女主播::/categories/f55f93328d328d9aa8d708c02ea5fb71/{{page}}/\n傳媒映畫::/categories/cc1dce3873efbfae9448ff8049d72b95/{{page}}/\n中文字幕::/categories/6eec9fd0dad785e04651354b8ddab749/{{page}}/\n高清無碼::/categories/cd80c93db2d41150d80f5668f6e20b7f/{{page}}/\n高清有碼::/categories/ddc1aab6fe0d5609e60d6941280b7660/{{page}}/\n歐美風情::/categories/a0b14da040498ca8c3882059087b722c/{{page}}/\n卡通動漫::/categories/b83d6021cfa5cc3a3feff746a6f72b12/{{page}}/\nfc2::/categories/fc2/{{page}}/\n东南亚::/categories/ea5151e1beaf53e829f4857313d7eb8c/{{page}}/\n三級電影::/categories/6c589f4e28d3bb2944ec613ac6a25456/{{page}}/",
    "sourceComment": "www.theavporn.com\nhttps://theavporn.github.io/theavporn/",
    "sourceGroup": "h",
    "sourceIcon": "https://tav110.xyz/favicon.ico",
    "sourceName": "TheAVPorn(登录)",
    "sourceUrl": "https://tav110.xyz/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1001,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 12; 22041211AC Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36\"}",
    "lastUpdateTime": 1758334511606,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".list-group@a",
    "ruleContent": "<title>🏄Mengteen</title>\n{{@@.panel-body@p@html}}",
    "ruleImage": "@js:\"https://iknow-pic.cdn.bcebos.com/8326cffc1e178a82ae0a94affb03738da977e88f?x-bce-process=image/resize,m_lfit,w_600,h_800,limit_1/quality,q_85/format,f_auto\"",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "@js:\"📖书中自有颜如玉;开启一天的阅读吧!\"",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::/artsearch/{{source.getVariable()}}------{{page}}-.html\n都市::/arttype/20-{{page}}.html\n校园::/arttype/21-{{page}}.html\n真实::/arttype/22-{{page}}.html\n武侠::/arttype/23-{{page}}.html\n乱伦::/arttype/24-{{page}}.html\n职场::/arttype/25-{{page}}.html\n经验::/arttype/26-{{page}}.html\n暴力::/arttype/27-{{page}}.html\n幻想::/arttype/28-{{page}}.html\n明星::/arttype/29-{{page}}.html\n人妻::/arttype/30-{{page}}.html",
    "sourceComment": "源社区：@Mengteen 2025.06.29原创\n二传二创或者是其它问题请联系我。\n我邮箱:[xxxmgqxxx@vip.qq.com]",
    "sourceGroup": "h",
    "sourceIcon": "https://cdn.sshs.rip/42/e4/42a57308ab5eb9698a51342e1b658be4.webp",
    "sourceName": "🌸樱花文学",
    "sourceUrl": "https://yinghuar.yingxx102.cc/label/index.html##@Mengteen",
    "type": 0,
    "variableComment": "🏄Mengteen提示：在此输入关键词搜索！"
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1013,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; U; Android 13; zh-Hans-CN; PFJM10 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/135.0.4896.58 Quark/6.13.6.581 Mobile Safari/537.36\",\"Accept-Language\":\"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7\"}",
    "jsLib": "function getData() {\nvar Data = this.source.getVariable();\nif (Data == \"\" || Data == undefined) {\nreturn {};\n}\ntry {\nreturn JSON.parse(String(Data));\n} catch (e) {\nreturn {};\n}\n}\nfunction getPage() {\nvar data = getData.call(this);\nvar startPage = (data.page == \"\" || data.page == undefined) ? '' : parseInt(data.page)-1;\nreturn startPage;\n}\n\nfunction getUrl1() {\nvar url1='';\nreturn url1;\n}\nfunction getUrl2() {\nvar url2=String(this.source.key).replace(/\\/$/,'');\nreturn url2;\n}",
    "lastUpdateTime": 1769233643598,
    "loadWithBaseUrl": true,
    "loginUi": "[{\"name\": \"起始页\",\"type\": \"text\"},\n{\"name\": \"🌐 打开网站\",\"type\": \"button\",\"action\": \"web()\",\"style\": {\"layout_flexGrow\": 1,\"layout_flexBasisPercent\": 0.4}},\n{\"name\": \"🎁 更新书源\",\"type\": \"button\",\"action\":\"https://ycoo.net/thread-74885-1-1.html\",\"style\": {\n\"layout_flexGrow\": 1,\"layout_flexBasisPercent\": 0.4}}]",
    "loginUrl": "function login() {\nvar loginInfo = source.getLoginInfoMap() || {};\nvar pageInput = loginInfo['起始页'];\nif (!pageInput || pageInput == \"\" || pageInput == undefined || pageInput == null) {\npageInput = \"1\";\nloginInfo['起始页'] = pageInput;       source.putLoginInfo(JSON.stringify(loginInfo));\n}\nvar pageData = {\"page\": pageInput};\nsource.setVariable(JSON.stringify(pageData));\n}\nfunction web() {\njava.startBrowser(`{{getUrl2()}}`, baseUrl);\njava.toast('\\n🌐 '+getUrl2());\n}\nfunction publish() {\njava.startBrowser(`{{getUrl1()}}`, baseUrl);\njava.toast('\\n🍭'+getUrl1());\n}",
    "preload": false,
    "ruleArticles": "@js:\nvar list=java.getElements('.generate-columns-container@article||.entry-content@ul@li');\nvar max=parseInt(String(java.getString('.nav-links@[class=\"page-numbers\"].-1@href')).replace(/.*page\\/(\\d+)/,'$1'));\n//java.log(max);\nvar base=parseInt(java.getString('.nav-links@[aria-current=\"page\"]@textNodes'));\n//java.log(base);\nif (max&&base) {\njava.toast('第'+base+'/'+max+'页');\nlist;\n} else {\nlist;\n}",
    "ruleContent": "<js>\nvar step1 = java.base64Decode('PGpzPgp2YXIgYT1zb3VyY2Uuc291cmNlQ29tbWVudDsKdmFyIGI9c291cmNlLmdldExvZ2luVWkoKTsKdmFyIGQ9amF2YS5iYXNlNjREZWNvZGUoJzVMMmM2SUNGNzd5YTVhU2M1cGlPNTZtNkNpOHY1cnFRNks2NjVaMmI3N3lhYUhSMGNITTZMeTk1WTI5dkxtNWxkQW92TCtTN2hlV2NxT2E2a09pdXV1V2RtK1dQa2VXNGcrUzVwdWE2a08rOGpPV0Z0dVM3bHVtQWxPVytoT1dkaCtTNHV1ZWJsK2VKaU8rOG13cmltcUR2dUkva3VLWG5wb0hsaUlia3VxdmpnSUhsZ0pMbGpaYmxqNHJrdTd2a3ZaWG92NTNtczVYb29Zemt1THJ2dklIa3ZiL25sS2pvZ0lYb2g2cm9vWXptaWIvbWk0WHBvNDdwbWFua3VJN290S1BrdTdzS1BDL2xvN0RtbUk0KycpOwp2YXIgZT1qYXZhLmJhc2U2NERlY29kZSgnVzNzaWJtRnRaU0k2SUNMb3RiZmxwNHZwb2JVaUxDSjBlWEJsSWpvZ0luUmxlSFFpZlN3S2V5SnVZVzFsSWpvZ0l2Q2ZqSkFnNW9tVDVieUE1NzJSNTZ1Wklpd2lkSGx3WlNJNklDSmlkWFIwYjI0aUxDSmhZM1JwYjI0aU9pQWlkMlZpS0NraUxDSnpkSGxzWlNJNklIc2liR0Y1YjNWMFgyWnNaWGhIY205M0lqb2dNU3dpYkdGNWIzVjBYMlpzWlhoQ1lYTnBjMUJsY21ObGJuUWlPaUF3TGpSOWZTd0tleUp1WVcxbElqb2dJdkNmam9FZzVwdTA1cGF3NUxtbTVycVFJaXdpZEhsd1pTSTZJQ0ppZFhSMGIyNGlMQ0poWTNScGIyNGlPaUpvZEhSd2N6b3ZMM2xqYjI4dWJtVjBMM1JvY21WaFpDMDNORGc0TlMweExURXVhSFJ0YkNJc0luTjBlV3hsSWpvZ2V3b2liR0Y1YjNWMFgyWnNaWGhIY205M0lqb2dNU3dpYkdGNWIzVjBYMlpzWlhoQ1lYTnBjMUJsY21ObGJuUWlPaUF3TGpSOWZWMD0nKTsKdmFyIGY9amF2YS5iYXNlNjREZWNvZGUoJzRwcWc3N2lQSU9TN2hlV2NxT2E2a09pdXV1V2RtK1dQa2VXNGcrUzVwdWE2a08rOG1taDBkSEJ6T2k4dmVXTnZieTV1WlhUdnZJemxoYmJrdTVicGdKVGx2b1Rsbllma3VMcm5tNWZuaVlnPScpOwppZihhLmluY2x1ZGVzKGQpJiZiLmluY2x1ZGVzKGUpKXsKdmFyIGNvbnQgPQpqYXZhLmJhc2U2NERlY29kZSgnUEdwelBncDJZWElnYUhSdGJDQTlJR3BoZG1FdVlXcGhlQ2hpWVhObFZYSnNLVHNLZG1GeUlHUnZZeUE5SUc5eVp5NXFjMjkxY0M1S2MyOTFjQzV3WVhKelpTaG9kRzFzS1RzS2RtRnlJSEJoWjJVZ1BTQmtiMk11YzJWc1pXTjBLQ2N1Y0dkdWRHNHRjR0ZuWlMxd1lXZHBibUYwYVc5dUxXSnNiMk5ySUdFdWNHOXpkQzF3WVdkbExXNTFiV0psY25NbktUc0tkbUZ5SUcxaGVIQmhaMlVnUFNCd1lXZGxMbk5wZW1Vb0tTQStQU0F5SUQ4Z2NHRnljMlZKYm5Rb2NHRm5aUzVuWlhRb2NHRm5aUzV6YVhwbEtDa2dMU0F5S1M1MFpYaDBLQ2twSUh4OElERWdPaUF4T3dwMllYSWdhVzFuSUQwZ0lpSTdDbVp2Y2lBb2RtRnlJR2tnUFNBeE95QnBJRHc5SUcxaGVIQmhaMlU3SUdrckt5a2dld3AyWVhJZ2FIUnRiR2tnUFNBb2FTQTlQVDBnTVNrZ1B5Qm9kRzFzSURvZ2FtRjJZUzVoYW1GNEtHSmhjMlZWY213Z0t5QWlMeUlnS3lCcEtUc0tkbUZ5SUdsdFozTWdQU0J2Y21jdWFuTnZkWEF1U25OdmRYQXVjR0Z5YzJVb2FIUnRiR2twTG5ObGJHVmpkQ2duYVcxblcyUmxZMjlrYVc1blBTSmhjM2x1WXlKZEp5azdDbVp2Y2lBb2RtRnlJR29nUFNBd095QnFJRHdnYVcxbmN5NXphWHBsS0NrN0lHb3JLeWtnZXdwMllYSWdjM0pqSUQwZ2FXMW5jeTVuWlhRb2Fpa3VZWFIwY2lnaWMzSmpJaWs3Q21sbUlDaHpjbU1wSUdsdFp5QXJQU0FpUEdsdFp5QnpjbU05SWlBcklITnlZeUFySUNJK1hHNGlPd3A5Q21sbUlDaHRZWGh3WVdkbElENGdNU2tnZXdwcVlYWmhMblJ2WVhOMEtDTGx0N0xsaXFEb3ZiMGlJQ3NnYVNBcklDSXZJaUFySUcxaGVIQmhaMlVnS3lBaTZhRzFJaWs3Q24wS2ZRcHBiV2M3Q2p3dmFuTSsnKTsKcmVzdWx0ID0gamF2YS5nZXRTdHJpbmcoY29udCk7Cn0gZWxzZSB7CmVycm9yPWphdmEuYmFzZTY0RGVjb2RlKCc0cHFnNzdpUElPYWpnT2ExaStXSXNPUzVwdWE2a09paXErYUJ0dWFFaitldm9lYVV1UXJpclpBZzZLKzM1WW1ONWI2QTVMMmM2SUNGNUxpNzZhRzE1cHUwNXBhdzVMbW01cnFRS09XRnMrbVhyZVdIZ09XTWx1YVl2dWVrdXVtVHZ1YU9wU252dkpvS2FIUjBjSE02THk5NVkyOXZMbTVsZEFyaXJaQWc1cENjNTdTaTU1U281b2kzNVpDTjc3eWE1YVNjNXBpTzU2bTYnKTsKcmVzdWx0PWphdmEubG9uZ1RvYXN0KCdcbicrZXJyb3IpOwpyZXN1bHQ9J1xuJmxybTtcbicrZXJyb3I7Cn0KcmVzdWx0CjwvanM+');\nvar step2 = java.getString(step1);\nresult = step2\n</js>",
    "ruleImage": "img@src\n@js:\nif (result=='') {\n'https://www.jrants.com/wp-content/uploads/2023/04/29/68840291851031.jpg'\n} else {\nresult;\n}",
    "ruleLink": "h2@a@href||a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.entry-meta@span@time@text}}  {{@@.cat-links@text}}",
    "ruleTitle": "h2@a@text||a.0@text",
    "searchUrl": "/page/{{page}}?s={{key}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/\ntop-100::/top-100\n清纯美女::/category/pure-beauty/page/<{{page+getPage()}}>?fbclid=IwY2xjawGS9IFleHRuA2FlbQIxMAABHZswpRLJTZedwae5QX1OnAnge6jABPnyL4YMnetyYayxIIUhH8Oq6oVDUw_aem_HdLEbnVPbOdHKSLhzjA-Ug\n攝影師作品::/category/photographer-works/page/<{{page+getPage()}}>?fbclid=IwY2xjawGZo1ZleHRuA2FlbQIxMAABHaG72CpZoGTKVo9_4iukOQmR5l3xOOw9mvD_llcbvgOhdoIrZiCyqKgSqQ_aem_Ovad8wHPET2m57s3ao60RA\n臀乳尤物::/category/sexy-body/page/<{{page+getPage()}}>?utm_medium=organic&utm_source=yandexsmartcamera\n網紅::/category/wanghong/page/<{{page+getPage()}}>?utm_medium=organic&utm_source=yasmartcamera\nTWITTER::/category/wanghong/twitter/page/<{{page+getPage()}}>?utm_medium=organic&utm_source=yasmartcamera\nCOSPLAY::/category/cosplay/page/<{{page+getPage()}}>\n微博::/category/wanghong/weibo/page/<{{page+getPage()}}>\n福利姬::/category/wanghong/fuliji/page/<{{page+getPage()}}>?utm_medium=organic&utm_source=yandexsmartcamera\n美腿丝恋::/category/beauty-photos/page/<{{page+getPage()}}>?fbclid=IwY2xjawHc0rJleHRuA2FlbQIxMAABHdsm3nh59hzfTfWgGHhK--kD7uUjRQP12pOsJn8oOcwKYkdkytpfxq3v6w_aem_cHzYPApOeoRm2nIj8GT0Iw\nAI藝術::/category/ai-art/page/<{{page+getPage()}}>?fbclid=IwZXh0bgNhZW0CMTEAAR3UvzdISVKqzMTMuA4ABz80wW1q_vFBChy3DmIfzi3_5a3XSEdJ4WTbPUg_aem_oAhfGeSlgXXSGO44kbMC4w\n激情動圖::/category/passion-gif/page/<{{page+getPage()}}>?utm_medium=organic&utm_source=yandexsmartcamera\n韓國::/category/korean/page/<{{page+getPage()}}>\nLoozy::/category/korean/loozy/page/<{{page+getPage()}}>\nJOApictures::/category/korean/joapictures/page/<{{page+getPage()}}>\nFantrie::/category/korean/fantrie/page/<{{page+getPage()}}>\nParanhosu::/category/korean/paranhosu/page/<{{page+getPage()}}>\nKimlemon::/category/korean/kimlemon/page/<{{page+getPage()}}>\nPatreon::/category/korean/patreon/page/<{{page+getPage()}}>\nFANDING::/category/korean/fanding/page/<{{page+getPage()}}>\nPhotoChips::/category/korean/photochips/page/<{{page+getPage()}}>\nPINK::/category/korean/pink/page/<{{page+getPage()}}>\nPUSSYLET::/category/korean/pussylet/page/<{{page+getPage()}}>\nROGLE::/category/korean/rogle/page/<{{page+getPage()}}>\nSaint PhotoLife:/category/korean/saintphotolife/page/<{{page+getPage()}}>\nYo-U::/category/korean/yo-u/page/<{{page+getPage()}}>\nArtGravia::/category/korean/artgravia/page/<{{page+getPage()}}>\nPureMedia::/category/korean/puremedia/page/<{{page+getPage()}}>\nLEEHEE EXPRESS::/category/korean/leehee-express/page/<{{page+getPage()}}>\nDJAWA::/category/korean/djawa/page/<{{page+getPage()}}>\nMoon Night Snap::/category/korean/moon-night-snap/page/<{{page+getPage()}}>\nMakeModel::/category/korean/makemodel/page/<{{page+getPage()}}>?utm_medium=organic&utm_source=yandexsmartcamera\nBimilstory::/category/korean/bimilstory/page/<{{page+getPage()}}>\nBLUECAKE::/category/korean/bluecake/page/<{{page+getPage()}}>\nEspacia Korea::/category/korean/espacia-korea/page/<{{page+getPage()}}>\nCreamSoda::/category/korean/creamsoda/page/<{{page+getPage()}}>\nLilynah::/category/korean/lilynah/page/<{{page+getPage()}}>\n欧美::/category/oumei/page/<{{page+getPage()}}>",
    "sourceComment": "<声明>\n//2025.12.29 作者：夜明空\n//源论坛：https://ycoo.net\n//仅在源论坛发布书源，其他途径均为盗版；\n⚠️严禁分享、倒卖及任何违法行为！使用者自行承担风险与责任\n</声明>\n\n//登录界面可以输入页码，下拉刷新/刷新分类；\n\n//需要开代理；\n\n//洛娅橙改版阅读才能搜索，其他的无影响\nhttps://gitee.com/lyc486/legado/releases",
    "sourceGroup": "h",
    "sourceIcon": "https://jrants.com/wp-content/uploads/2024/06/cropped-qing-logo-32x32.png",
    "sourceName": "✈️青年美图\n☆夜明空☆",
    "sourceUrl": "https://jrants.com/",
    "type": 0,
    "variableComment": "❗源变量内容勿改❗"
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1032,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.col-xs-12 col-sm-4 col-md-3 col-lg-3",
    "ruleContent": "<js>\nresult=decodeURIComponent(result.match(/strencode2\\(\"(.*?)\"\\)/)[1]).match(/src='(.*?)'/)[1];\n`<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" />\n</head>\n<body>\n<video src=\"${result}\" width=\"100%\" height=\"auto\" controls=\"controls\" ></video>\n</body>\n</html>`\n</js>",
    "ruleDescription": "",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.duration@text",
    "ruleTitle": "class.video-title title-truncate m-t-5@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "主页::/v.php?category=rf&viewtype=basic&page={{page}},{'webView': true}\n91原创::/v.php?category=ori&viewtype=basic&page={{page}},{'webView': true}\n当前最热::/v.php?category=hot&viewtype=basic&page={{page}},{'webView': true}\n本月最热::/v.php?category=top&viewtype=basic&page={{page}},{'webView': true}\n10分钟以上 ::/v.php?category=long&viewtype=basic&page={{page}},{'webView': true}\n20分钟以上 ::/v.php?category=longer&viewtype=basic&page={{page}},{'webView': true}\n本月收藏::/v.php?category=tf&viewtype=basic&page={{page}},{'webView': true}\n 收藏最多::/v.php?category=mf&viewtype=basic&page={{page}},{'webView': true}\n高清::/v.php?category=hd&viewtype=basic&page={{page}},{'webView': true}\n上月最热::/v.php?category=top&m=-1&viewtype=basic&page={{page}},{'webView': true}\n本月讨论::/v.php?category=md&viewtype=basic&page={{page}},{'webView': true}\n",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://z3.ax1x.com/2021/05/04/gnLfmD.png",
    "sourceName": "©91porn",
    "sourceUrl": "https://91porn.com/",
    "style": "body{background-color:black;margin:0;padding:0;width:100%;}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1033,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 10;Xiaomi 10pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$..data[*]",
    "ruleContent": "$..videopath##.*\\$\n\n@js:\nurl=result;\n\nloadding=java.get(\"pic\")\n\nhtml=\n`<link rel=\"stylesheet\" type=\"text/css\" href=\"https://muiplayer.js.org/css/mui-player.min.css\" />\n\n<script type=\"text/javascript\" src=\"https://cdn.jsdelivr.net/gh/ljun223/reader3@main/js/mui-player.min.js\"></script>\n\n<script type=\"text/javascript\" src=\"https://cdn.jsdelivr.net/gh/ljun223/reader3@main/js/mui-player-mobile-plugin.min.js\"></script>\n\n<div class=\"dz\">`+url+`</div>\n\n<div id=\"mui-player\" style=\"width:100%;height:300px\"></div>\n\n<script>\n   var mp = new MuiPlayer(\t{\n \t\t  \"container\": \"#mui-player\",\n \t\t  \"src\": \"`+url+`\",\n \t\t  \"poster\":\"`+loadding+`\",\n \t\t  \"autoFit\":false,\n \t\t  \"lang\": \"zh-cn\",\n \t  \t\"height\":\"300px\",\n \t\t  plugins: [\n \t\t    new MuiPlayerMobilePlugin({\n \t\t\t    \"key\":\n \t\t\t \"01I01I01H01J01L01K01J01I01K01J01H01D01J01G01E\",\n \t\t    \t\"showMenuButton\": true,\n \t\t\t    \"pageGesture\":true,\n \t\t\t   })\n    ]\n   }); \n </script>`",
    "ruleImage": "coverpath@put:{\"pic\":\"$.coverpath\"}",
    "ruleLink": "https://77gmk8o.com/api/videoplay/{{$.id}}?uuid=1",
    "ruleNextPage": "page",
    "rulePubDate": "authername",
    "ruleTitle": "title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\n\ndata=java.ajax(\"https://77gmk8o.com/api/videosort\");\n\njson=JSON.parse(data);\n\nvar list=[];\nvar num=json.rescont.length;\nfor(var i=1;i<num;i++){\nlist+=json.rescont[i].name+\"::\"+\"https://77gmk8o.com/api/videosort/\"+json.rescont[i].id+\"?orderby=&page={{page}}\"+\"\\n\"\n\t};\n\"搜索用::https://77gmk8o.com/api/videosort/0?page={{page}}&serach={{source.getVariable()}}\"+\"\\n\"+list",
    "sourceGroup": "h",
    "sourceIcon": "https://img0.baidu.com/it/u=2908908160,2785784129&fm=253&fmt=auto&app=138&f=PNG",
    "sourceName": "葫芦视频",
    "sourceUrl": "https://77gmk8o.com",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1037,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 12; 22041211AC Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "[class=\"embed-responsive embed-responsive-16by9-rotating position-relative\"]",
    "ruleContent": "<js>\np=String(result.match(/contentUrl\":\"(.*.m3u8)\",/)[1]).replace(/\\\\/g,\"\");\n pi=java.getString('ol@li.-1@text')||1;\n`<html>\n    <head>\n        <meta name=\"viewport\" content=\"width=device-width\">\n        <style>\n            body {\n                margin: 0;\n                font-family: Arial, sans-serif;\n                background: linear-gradient(135deg, #ece9e6, #ffffff);\n                display: flex;\n                flex-direction: column;\n                align-items: center;\n                justify-content: flex-start;\n                padding: 20px;\n            }\n            .container {\n                width: 100%;\n                max-width: 800px;\n                background: #fff;\n                border-radius: 10px;\n                box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n                overflow: hidden;\n                margin-bottom: 20px;\n            }\n            h3 {\n                margin: 0;\n                padding: 10px 20px;\n                font-size: 0.9em;\n                background: #333;\n                color: #fff;\n                border-radius: 10px 10px 0 0;\n            }\n            .video-container {\n                width: 100%;\n                background: #000;\n                position: relative;\n            }\n            video {\n                width: 100%;\n                height: auto;\n                display: block;\n            }\n            .info-container {\n                padding: 20px;\n            }\n            .info-container p {\n                margin: 10px 0;\n                color: #555;\n            }\n            .info-container p span {\n                font-weight: bold;\n                color: #000;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"container\">\n        <h3><title>👤Mengteen</title>🏷${pi}</h3>\n            <div class=\"video-container\">\n                <video controls autoplay name=\"media\" id=\"videoPlayer\">\n                    <source src=\"${p}\" type=\"video/mp4\">\n                </video>\n            </div>\n            <div class=\"info-container\">\n                \n            </div>\n        </div>\n\n        <script>\n            // 获取视频元素\n            const video = document.getElementById('videoPlayer');\n            let touchStartX = 0;\n            let touchStartY = 0;\n            let touchStartTime = 0;\n            let isLongPress = false;\n\n            // 滑动快进\n            video.addEventListener('touchstart', (e) => {\n                touchStartX = e.touches[0].clientX;\n                touchStartY = e.touches[0].clientY;\n                touchStartTime = Date.now();\n                isLongPress = false;\n            });\n\n            video.addEventListener('touchmove', (e) => {\n                const deltaX = e.touches[0].clientX - touchStartX;\n                const deltaY = e.touches[0].clientY - touchStartY;\n\n                // 如果是水平滑动，且未进入长按状态\n                if (Math.abs(deltaX) > Math.abs(deltaY) && !isLongPress) {\n                    const duration = video.duration;\n                    const seekTime = video.currentTime + (deltaX / 100); // 每滑动100px快进1秒\n                    video.currentTime = Math.min(Math.max(seekTime, 0), duration);\n                }\n            });\n\n            // 长按快进\n            video.addEventListener('touchend', (e) => {\n                const touchEndTime = Date.now();\n                const touchDuration = touchEndTime - touchStartTime;\n\n                // 如果长按时间超过500ms，进入长按快进状态\n                if (touchDuration > 500) {\n                    isLongPress = true;\n\n                    // 在长按状态下，根据滑动距离快进\n                    const deltaX = e.changedTouches[0].clientX - touchStartX;\n                    const duration = video.duration;\n                    const seekTime = video.currentTime + (deltaX / 100); // 每滑动100px快进1秒\n                    video.currentTime = Math.min(Math.max(seekTime, 0), duration);\n                } else {\n                    isLongPress = false;\n                }\n            });\n\n            // 防止默认行为（如页面滚动）\n            video.addEventListener('touchmove', (e) => {\n                e.preventDefault();\n            });\n        </script>\n    </body>\n</html>`;\n\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href##(\\d+)##/$1###",
    "ruleNextPage": "page",
    "rulePubDate": "🏷{{@@class.badge badge-success@text}}｜📆{{@@span@text}}",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/p/1/c/33?page={{page}}\n搜索::/q/{{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('年轻'):source.getVariable()}}?page={{page}}\n国内伦理::/p/1/c/33?area_id=2&page={{page}}\n香港伦理::/p/1/c/33?area_id=5&page={{page}}\n台湾伦理::/p/1/c/33?area_id=4&page={{page}}\n韩国伦理::/p/1/c/33?area_id=17&page={{page}}\n日本伦理::/p/1/c/33?area_id=18&page={{page}}\n欧美伦理::/p/1/c/33?area_id=6&page={{page}}\n其它伦理::/p/1/c/33?area_id=3&page={{page}}\n泰国伦理::/p/1/c/33?area_id=10&page={{page}}\n印度伦理::/p/1/c/33?area_id=14&page={{page}}",
    "sourceComment": "源社区：@Mengteen\n二传或者是其它问题请@我并告知我",
    "sourceGroup": "h",
    "sourceIcon": "https://cdn.sshs.rip/20/6e/20a43d023d77b2839892076750cb0f6e.webp",
    "sourceName": "🎞PTT伦理",
    "sourceUrl": "https://ptt.co/zh-cn/##@Mengteen",
    "style": "iframe{\n\theight:600px\n}\ntitle{\n\tdisplay:block\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1038,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "<js>\nheaders={\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36 EdgA/127.0.0.0\",\n\"Cache-Control\": \"no-cache\",\n    \"Referer\": String(source.getKey()).replace(/(.*\\/\\/[a-z0-9.-]+).*/, '$1')\n}\nJSON.stringify(headers);\n</js>",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n\n  // 触摸事件处理\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    \n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px', top = '50%', fontSize = '16px') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = top;\n    button.style.transform = top === '50%' ? 'translateY(-50%)' : 'none';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.style.fontSize = fontSize; // 添加字体大小设置\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n\n  // 旋转按钮（右侧上方） \n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    \n    // 保留当前的缩放比例和反转状态\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    // 获取当前反转状态\n    const isFlipped = video.getAttribute('data-flipped') === 'true';\n    const flipValue = isFlipped ? -1 : 1;\n    \n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale}) scaleX(${flipValue})`;\n  }, { horizontal: 'right' }, '20px', 'calc(50% - 20px)');\n\n  // 播放/暂停按钮（右侧下方）\n  let isPlaying = !video.paused;\n  const playPauseBtn = createButton(\n    isPlaying ? '❚❚' : '▶',\n    () => {\n      if (video.paused) {\n        video.play();\n        playPauseBtn.textContent = '❚❚';\n      } else {\n        video.pause();\n        playPauseBtn.textContent = '▶';\n      }\n    },\n    { horizontal: 'right' },\n    '22px',\n    'calc(50% + 20px)',\n    '10px' // 单独设置字体大小\n  );\n\n  // 监听视频的播放状态变化\n  video.addEventListener('play', () => {\n    playPauseBtn.textContent = '❚❚';\n    isPlaying = true;\n  });\n\n  video.addEventListener('pause', () => {\n    playPauseBtn.textContent = '▶';\n    isPlaying = false;\n  });\n\n  // 缩放按钮（左侧上方）\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    \n    // 获取当前缩放比例和反转状态\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    // 获取当前反转状态\n    const isFlipped = video.getAttribute('data-flipped') === 'true';\n    const flipValue = isFlipped ? -1 : 1;\n    \n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale}) scaleX(${flipValue})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1) scaleX(${flipValue})`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' }, '20px', 'calc(50% - 20px)');\n\n  // 反转按钮（左侧下方）\n  const flipBtn = createButton('⇄', () => {\n    const isFlipped = video.getAttribute('data-flipped') === 'true';\n    const newFlipState = !isFlipped;\n    video.setAttribute('data-flipped', newFlipState);\n    \n    // 保留当前的旋转和缩放比例\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    const flipValue = newFlipState ? -1 : 1;\n    video.style.transform = `rotate(${currentRotation}deg) scale(${currentScale}) scaleX(${flipValue})`;\n  }, { horizontal: 'left' }, '20px', 'calc(50% + 20px)', '10px'); // 单独设置字体大小\n\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n  ];\n\n  seekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    // 快速跳转按钮使用默认字体大小\n    button.addEventListener('click', () => {\n      video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n    });\n    buttonContainer.appendChild(button);\n  });\n video.parentNode.appendChild(buttonContainer);\n\n// 跳过片头功能\n  video.addEventListener('timeupdate', () => {\n    if (video.currentTime < 10) {\n      video.currentTime = 10;\n    }\n  });\n}\n\n// 修改初始化逻辑，增加重试机制\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\n    const video = document.getElementById('video');\n    if (video) {\n      setupCustomPlayer(video);\n    } else if (retries < maxRetries) {\n      retries++;\n      setTimeout(tryInit, retryInterval);\n    }\n  };\n  tryInit();\n}\n// 使用重试机制初始化播放器\ninitPlayerWithRetry();",
    "lastUpdateTime": 1770070818566,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.list",
    "ruleContent": "{{$.data.movie_m3u8_url..url}}\n@js:\nresult=decodeURIComponent(result);\nresult=result.replace(/\\\\/g,'');\nresult=`\n<html>  \n<head>  \n<meta charset=\"utf-8\">  \n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\">\n<meta name=\"referrer\" content=\"never\"/>\n<style>html,body{text-align:center;margin:0;padding:0;width:100%;overflow: hidden;}</style>\n</head>  \n<body>  \n<div class=\"container\"><div  class=\"title\">{{$.data.movie_name}}</div>\n<video id=\"video\" width=\"100%\" height=\"91%\" poster=\"{{$.data.movie_cover}}\"  controls autoplay muted loop>  \n    <source src=\"${result}\" type=\"application/x-mpegURL\">    \n</video></div>\n</body>  \n</html>\n`;",
    "ruleImage": "$.movie_cover",
    "ruleLink": "/api/Webapi_v1/Resource/movieInfo?movie_id={{$.movie_id}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{$.movie_cover##/(20.*)/.*/##$1##}} ⏱️{{$.movie_long}}",
    "ruleTitle": "@js:\nif (\"{{$.need_vip}}\"==\"0\"){result=\"{{$.movie_name##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*无法抑制的热情.*}}\"}else{result=\"\"}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n主播随机::/api/Webapi_v1/Resource/movieList?page={{ Math.ceil(Math.random()*380) }}&num=20&sort=1&label_ids[0]=5\n\n最新::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1\n\n🔎搜索::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&search={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}\n\n自拍::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&label_ids[0]=2\n主播::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&label_ids[0]=5\n中字::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&label_ids[0]=20\nAV::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&label_ids[0]=25\n国产::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&label_ids[0]=26\n网红::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&label_ids[0]=21\n麻豆::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&label_ids[0]=22\n偷拍::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&label_ids[0]=23\n探花::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&label_ids[0]=24\n欧美::/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&label_ids[0]=6\n动漫:/api/Webapi_v1/Resource/movieList?page={{page}}&num=20&sort=1&label_ids[0]=9\n",
    "sourceComment": "http://www.wus82.com/\n备用地址 \nhttps://www.x3o5z.com/\nhttps://www.e2d0m.com/\nhttps://www.m4e0p.com/\nhttps://www.b1b4j.com/\nhttps://www.s1b9k.com/\nhttps://www.w4x5j.com/\nhttps://www.8u0lz.com/\n",
    "sourceGroup": "h",
    "sourceIcon": "https://ali-ec.static.yximgs.com/bs2/upload-kwaishop-themis-bucket/cfd1eec1-f882-458c-a66e-89585596d6f0_1a379e34b53e7834b9853e6c4d9918c1.jpg",
    "sourceName": "✿吾色      S",
    "sourceUrl": "https://www.l1m9r.top/",
    "style": ".container {\n    position: relative; \n    height: 100%; \n    overflow: hidden; \n}\n.title {\n    position: absolute; \n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; \n    background: #000; \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; \n    top: -120px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(96% + 120px);  /* 调整高度以适应内容 */\n    object-fit: contain; \n    z-index: 0; \n    controls=\"controls\" autoplay muted; \n} \nvideo::-webkit-media-controls-overlay-play-button {\n    display: none !important;\n}\n",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1039,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "id.gallery-wrapper@tag.article",
    "ruleContent": "class.card.1@html",
    "ruleImage": "tag.a@tag.img@src",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "text.Next@tag.a@href",
    "ruleTitle": "tag.a@tag.p@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "激情男女::https://caomei123.space/1024/cat/jiqing\n亚洲模特::https://caomei123.space/asiangirl\n日本激图::https://caomei123.space/xiao77/cat/asian\n街拍偷拍::https://caomei123.space/xiao77/cat/jiepai\n网友自拍::https://caomei123.space/xiao77/cat/self\n女性演员::https://caomei123.space/xiao77/cat/meinv\n街拍美景::https://caomei123.space/1024/cat/toupai\n露脸自拍::https://caomei123.space/1024/cat/selfie\n欧美激情::https://caomei123.space/oumei\n流行欧美::https://caomei123.space/popular\n中文欧美::https://caomei123.space/xiao77/cat/euro",
    "sourceGroup": "h",
    "sourceIcon": "https://caomei123.space/brand.png",
    "sourceName": "草莓图库",
    "sourceUrl": "https://caomei123.space/part/picarea",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1044,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": " {\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.padding.0@class.slick slick-visible slick-arrow-center row@class.list-item slick-item",
    "ruleContent": "@js:\nif(!baseUrl.match(/art/)){\nvar doc = org.jsoup.Jsoup.parse(result);\nvar title = doc.select(\"div.card-header\").get(0).text();\nvar data = String(doc).match(/player_data=({.*})/)[1];\nvar url = JSON.parse(data).url\nvar bUrl = java.base64Decode(url);\nvar src = decodeURIComponent(bUrl,\"utf-8\").match(/http.*m3u8/);\n\nhtml='<head><link href=\"//cdn.staticfile.org/dplayer/1.25.0/DPlayer.min.css\" rel=\"stylesheet\"><script src=\"//cdn.staticfile.org/dplayer/1.25.0/DPlayer.min.js\"></script></head><div id=\"dplayer\" style=\"width:100%;height:280px\"></div><script>(function (){var dplayer = new DPlayer({element:document.getElementById(\"dplayer\"),autoplay: true,lang:\\'zh-cn\\',video: {url: \\\"'+src+'\\\"}});})()</script><div>播放地址:<div class=\"dz\">'+src+'</div></div>'\n\nresult = '<h5>'+title+'</h5>'+ html\n}else{\nresult = java.getElements(\"h1&&class.embed-responsive\")}",
    "ruleDescription": "",
    "ruleImage": "@js:\nvar str=\"{{@@tag.a@style}}\"\nif(str.indexOf('http')>-1){str.match(/http.*\\)/)[0].replace(/\\)/g,\"\")}else{\"https://thtmod.org/\"+str.match(/upload.*\\)/)[0].replace(/\\)/g,\"\")}",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.wr_pagenext@tag.a@href",
    "rulePubDate": "class.list-footer@text",
    "ruleTitle": "class.list-body@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://thtmod.org/index.php/vod/search.html?&wd=ipx\n\n美女图::https://thtmod.org/index.php/art/type/id/76<,/page/{{page}}>.html\n素人正妹::https://thtmod.org/index.php/art/type/id/79<,/page/{{page}}>.html\ncosplay::https://thtmod.org/index.php/art/type/id/80<,/page/{{page}}>.html\n狂欢夜店::https://thtmod.org/index.php/art/type/id/81<,/page/{{page}}>.html\n亚洲美女::https://thtmod.org/index.php/art/type/id/77<,/page/{{page}}>.html\n欧美美女::https://thtmod.org/index.php/art/type/id/78<,/page/{{page}}>.html\n清凉写真::https://thtmod.org/index.php/art/type/id/120<,/page/{{page}}>.html\n丝袜美腿::https://thtmod.org/index.php/art/type/id/121<,/page/{{page}}>.html\n\n中文字幕::https://thtmod.org/index.php/vod/type/id/102<,/page/{{page}}>.html\n日本无码::https://thtmod.org/index.php/vod/type/id/103<,/page/{{page}}>.html\n日本有码::https://thtmod.org/index.php/vod/type/id/104<,/page/{{page}}>.html\n国产视频::https://thtmod.org/index.php/vod/type/id/105<,/page/{{page}}>.html\n国产AV::https://thtmod.org/index.php/vod/type/id/106<,/page/{{page}}>.html\nSWAG::https://thtmod.org/index.php/vod/type/id/107<,/page/{{page}}>.html\nJVID::https://thtmod.org/index.php/vod/type/id/108<,/page/{{page}}>.html\n北京天使::https://thtmod.org/index.php/vod/type/id/128<,/page/{{page}}>.html\n深夜保健室::https://thtmod.org/index.php/vod/type/id/109<,/page/{{page}}>.html\n\n主播大秀::https://thtmod.org/index.php/vod/type/id/12<,/page/{{page}}>.html\n抖阴视频::https://thtmod.org/index.php/vod/type/id/13<,/page/{{page}}>.html\n国模私拍::https://thtmod.org/index.php/vod/type/id/14<,/page/{{page}}>.html\n门事件::https://thtmod.org/index.php/vod/type/id/25<,/page/{{page}}>.html\n国产名人::https://thtmod.org/index.php/vod/type/id/24<,/page/{{page}}>.html\n女神学生::https://thtmod.org/index.php/vod/type/id/16<,/page/{{page}}>.html\n美熟少妇::https://thtmod.org/index.php/vod/type/id/17<,/page/{{page}}>.html\n娇妻素人::https://thtmod.org/index.php/vod/type/id/18<,/page/{{page}}>.html\n国产乱伦::https://thtmod.org/index.php/vod/type/id/20<,/page/{{page}}>.html\n自慰群交::https://thtmod.org/index.php/vod/type/id/21<,/page/{{page}}>.html\n野合车震::https://thtmod.org/index.php/vod/type/id/22<,/page/{{page}}>.html\n职场同事::https://thtmod.org/index.php/vod/type/id/23<,/page/{{page}}>.html\n空姐模特::https://thtmod.org/index.php/vod/type/id/19<,/page/{{page}}>.html\n精品三级::https://thtmod.org/index.php/vod/type/id/11<,/page/{{page}}>.html\n\n\n韩国精品::https://thtmod.org/index.php/vod/type/id/42<,/page/{{page}}>.html\n韩国制服主播::https://thtmod.org/index.php/vod/type/id/43<,/page/{{page}}>.html\n韩国萝莉主播::https://thtmod.org/index.php/vod/type/id/44<,/page/{{page}}>.html\n韩国唯美三级::https://thtmod.org/index.php/vod/type/id/47<,/page/{{page}}>.html\n韩国明星学生::https://thtmod.org/index.php/vod/type/id/48<,/page/{{page}}>.html\n泰国主播::https://thtmod.org/index.php/vod/type/id/86<,/page/{{page}}>.html\n人妖伪娘::https://thtmod.org/index.php/vod/type/id/88<,/page/{{page}}>.html\n卡通动漫::https://thtmod.org/index.php/vod/type/id/49<,/page/{{page}}>.html\n",
    "sourceGroup": "h",
    "sourceIcon": "https://thtmod.org/template/thtmod/favicon.ico",
    "sourceName": "thtmod0918",
    "sourceUrl": "https://thtmod.org",
    "style": "img {\nwidth:100%;\nborder:solid;\n}\n\nh1 {\nfont-size:13\n}\n\n.dz {\nwidth:100%; \npadding:5px 0;\nborder:solid; \nborder-radius:5px;\noverflow:scroll;\nbackground-color:#dddddd\n}",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1045,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\t\"User-Agent\":\"Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.127 Mobile Safari/537.36\"\n\t}",
    "lastUpdateTime": 1770432887760,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.card h-100",
    "ruleContent": "<js>\nresult=java.getElements('class.video-source[0]').attr('src')\ntitle=java.getElements('title').text()\nif(result){\n\tjava.toast('🔞视频链接获取成功！\\n链接解密中，请耐心等待')\n}\nresult = \"<video  width=\\\"100%\\\" height=\\\"auto\\\" controls=\\\"\\\" autoplay=\\\"\\\" name=\\\"media\\\"><source src=\\\"\"+result+\"\\\" type=\\\"video/mp4\\\"></source></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result +\"<h4>\"+title+\"</h4>\"+ \"</body></html>\"\n result\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "演员：{{@@class.card-body@a[1]@text}}  系列：{{@@class.card-body@a[2]@text}}",
    "ruleTitle": "class.card-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://baihuse.top/search/{{java.encodeURI(source.getVariable())}}/page-{{page}}.html\n首页::https://baihuse.top/page-{{page}}.html\n推荐::https://baihuse.top/recommend/page-{{page}}.html\ncos::https://baihuse.top/search/%E3%82%B3%E3%82%B9%E3%83%97%E3%83%AC/page-{{page}}.html",
    "sourceComment": "https://baihushe.com/\n可自行添加分类",
    "sourceGroup": "h",
    "sourceIcon": "https://img2.baidu.com/it/u=3373472208,1844650538&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=301",
    "sourceName": "白虎色",
    "sourceUrl": "https://baihuse.top/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1053,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": " {\n\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36\",\"Cookie\":\"__cfduid=d150f32feeec7048d35993a8a642d2c0e1600348724; AVS=k29ctap8qhbuncoijpdkckr5v7\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.left@class.row@class.game-item&&class.left@class.row@class.video-item",
    "ruleContent": "@js:\nheader={\"Referer\":baseUrl};\nheaders={\"headers\":JSON.stringify(header)}\nif(baseUrl.match(/gif/)){\nvar doc = org.jsoup.Jsoup.parse(result);\nvar gif = String(doc).match(/gif.{5,10}.webm/);\nvar preview = 'https://www.hentaicloud.com/media/'+gif;\n\nif(String(doc).match(/From Video/)){\nvar url = doc.select(\"div.fromvideo\").select(\"a\").attr(\"href\");\nvar allUrl = 'https://www.hentaicloud.com'+url;\nvar doc = org.jsoup.Jsoup.connect(allUrl).get();\nvar spt = doc.select(\"source\").toString();\nvar src = spt.match(/https.{36}hd.{5,10}mp4/);\nresult = '<body><div><video controls=\"true\" width=\"100%\" autoplay=\"true\" src ='+preview+'></div><div><a href='+src+' >点击看全片</a></div></body>'\n}else{  \nresult = '<body><div><video controls=\"true\" width=\"100%\" autoplay=\"true\" src ='+preview+'></div><div><a>此片暂无出处</a></div></body>'\n}\n\n}else{\nvar doc = org.jsoup.Jsoup.parse(result);\nvar spt = doc.select(\"source\").toString();\nvar src = spt.match(/https.{36}hd.{5,10}mp4/);\nvar video='<iframe src='+src+' width=\"100%\" height=\"560\" frameborder=\"no\" allowfullscreen=\"true\">'  \nresult = video}",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "page",
    "rulePubDate": "@js:\nvar doc = org.jsoup.Jsoup.parse(result)\nvar text = doc.select(\"div.info\").select(\"span\").textNodes();\nif(text.size()==3){\nvar view = text.get(2).toString();\nif(view==\" \"){view =\"无\";}\nvar episode =text.get(0).toString();\nif(episode ==\" \"|| episode ==\"-\"){episode =\"无\";}\nresult = episode+\"   观看:\"+view}else if(text.size()==4){\nvar view = text.get(3).toString();\nif(view==\" \"){view =\"无\";}\nvar episode =text.get(0).toString();\nif(episode ==\" \"|| episode ==\"-\"){episode =\"无\";}\nresult = episode+\"   观看:\"+view\n}else{result = \"可通过动图预览查找动画\"}\n",
    "ruleTitle": "tag.div@id&&class.name@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "3D::https://www.hentaicloud.com/videos/3d-hentai?page={{page}}\n口交::https://www.hentaicloud.com/tags/Blowjob?page={{page}}\n无码::https://www.hentaicloud.com/tags/Uncensored?page={{page}}\n触手::https://www.hentaicloud.com/tags/Tentacle?page={{page}}\n扶她::https://www.hentaicloud.com/videos/futanari?page={{page}}\n恶魔::https://www.hentaicloud.com/tags/Demon?page={{page}}\n自慰::https://www.hentaicloud.com/tags/Masturbation?page={{page}}\n后宫::https://www.hentaicloud.com/tags/Harem?page={{page}}",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/wxQpYXF9/1660809059840.png",
    "sourceName": "hentai云",
    "sourceUrl": "https://www.hentaicloud.com",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1056,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "妹子图-热榜",
    "sourceUrl": "https://rsshub.app/jandan/top-ooxx",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1059,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "妹子图",
    "sourceUrl": "https://rsshub.app/jandan/ooxx",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "",
    "contentWhitelist": "",
    "customOrder": 1064,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\"User-Agent\": \"Mozilla/5.0 (Linux; U; Android 8.1.0; zh-CN; MI 8 Lite Build/OPM1.171019.019) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 UCBrowser/13.2.0.1100 Mobile Safari/537.36\"\n}",
    "injectJs": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.module-item",
    "ruleContent": "<div class=\"play_video\">\n{{@@title@text}}{{@@class.player-wrapper@all}}",
    "ruleImage": "img@data-cover",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.module-item-caption@text",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::https://cn1.91short.com/\n推荐::/short/recommend_home_list/\n美女正妹::/short/label_related_list/Ug_pu_kskqY%3D\n91大神::/short/label_related_list/otDa4t6lDDQ%3D\n门事件::/short/label_related_list/3QW8lOdBcls%3D\n大神::/search?wd=大神\n变量搜索::/search?wd={{java.encodeURI(source.getVariable())}}\n学生::/search?wd=学生\n91::/search?wd=91\n偷情::/search?wd=偷情\n推特::/search?wd=推特\n少女::/search?wd=少女\n贫乳::/search?wd=贫乳\n口交::/search?wd=口交\n妹妹::/search?wd=妹妹\n美女::/search?wd=美女\n\n美臀巨臀::/short/label_related_list/azG9-jZfzG0%3D?title=%E7%BE%8E%E8%87%80%E5%B7%A8%E8%87%80\n后入::/search?wd=后入\n国产高清::/short/home_category_list/hd\n排行::/short/ranking_list\n国产AV::/short/label_related_list/1Bd0Zzp8D_E%3D\n大象传媒::/short/label_related_list/F16wCJ3LmWY%3D\n情趣综艺::/short/label_related_list/-0S1LwkskU4%3D\n推荐2::/film/home_recommend_list\n专题::/film/home_subject_list\n女优::/film/home_actor_list\n无码::/film/home_category_list/coded\n中字::/film/home_category_list/chinese_subtitle\n动漫::/film/home_list/jOSxa-4E27U%3D\n经典三级::/film/home_list/uZg0vDL8P8A%3D\n欧美性爱::/film/home_list/LblejiEnM6s%3D\nAV解说::/film/home_list/vJq_GzRiesQ%3D",
    "sourceComment": "翻页和封面不会\n\n永久域名 https://cn1.91short.com",
    "sourceGroup": "h",
    "sourceIcon": "https://cn1.91short.com/public/statics/logo.png",
    "sourceName": "91视频",
    "sourceUrl": "https://cn1.91short.com/",
    "style": "iframe{\n\theight:auto\n}\ntitle{\n\tdisplay:block\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://pc.stgowan.com/,\nhttps://dmku.mhtjx.top/,\nhttps://dmku.m3u8.pw/,\nhttps://dm.bbj.icu/,\nhttps://www.superplayer.top/index.php/index/dm",
    "coverDecodeJs": "function toByteArray(input) {\n  var out = new Packages.java.io.ByteArrayOutputStream();\n  var buffer = java.strToBytes('\\0'.repeat(4096));\n  var bytesRead;\n  while ((bytesRead = input.read(buffer)) != -1) {\n    out.write(buffer, 0, bytesRead);\n  }\n  return out.toByteArray();\n}\n\n(function() {\n  // 1. 读取原始字节内容\n  var textBytes = toByteArray(result);\n  // 2. 如果是GIF文件，直接返回原始字节\n  if (src.endsWith('.gif')) {\n    return textBytes;\n  }\n  try {\n    // 3. 将字节转换为字符串（用于解析数据URI）\n    var dataUri = java.bytesToStr(textBytes, \"UTF-8\");\n    // 4. 判断是完整的数据URI还是纯Base64数据\n    var base64Prefix = \"base64,\";\n    var base64Index = dataUri.indexOf(base64Prefix);\n    if (base64Index === -1) {\n      // 如果没有找到base64前缀，检查是否需要截取第一个/及之后的内容\n      var firstSlashIndex = dataUri.indexOf('/');\n      if (firstSlashIndex !== -1) {\n        // 如果找到第一个/，截取/及之后的内容\n        dataUri = dataUri.substring(firstSlashIndex);\n      }\n      // 对整个内容进行Base64解码\n      return java.base64DecodeToByteArray(dataUri);\n    } else {\n      // 如果是标准data URI，提取base64编码部分解码\n      var base64Data = dataUri.substring(base64Index + base64Prefix.length);\n      return java.base64DecodeToByteArray(base64Data);\n    }\n  } catch (e) {\n    // 解码失败时返回原始字节\n    return textBytes;\n  }\n})();",
    "customOrder": 1071,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\t\"User-Agent\":\"Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI CC 11)  AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.127 Mobile Safari/537.36 XiaoMi/MiuiBrowser/18.1.8 swan-mibrowser\",\n\t\"referer\": \"{{baseUrl}}\"\n}",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n\n  // 触摸事件处理\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    \n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = '50%';\n    button.style.transform = 'translateY(-50%)';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n\n  // 旋转按钮（右侧）\n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    \n    // 保留当前的缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale})`;\n  }, { horizontal: 'right' });\n\n  // 缩放按钮（左侧）\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    \n    // 获取当前缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1)`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' });\n\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n  ];\n\n  seekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    button.addEventListener('click', () => {\n      video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n    });\n    buttonContainer.appendChild(button);\n  });\n\n  video.parentNode.appendChild(buttonContainer);\n}\n\n// 修改初始化逻辑，增加重试机制\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\n    const video = document.getElementById('video');\n    if (video) {\n      setupCustomPlayer(video);\n    } else if (retries < maxRetries) {\n      retries++;\n      setTimeout(tryInit, retryInterval);\n    }\n  };\n  tryInit();\n}\n// 使用重试机制初始化播放器\ninitPlayerWithRetry();",
    "lastUpdateTime": 1769953335046,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.rescont.data[*]",
    "ruleContent": "<html><head><meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" />\n<meta name=\"referrer\" content=\"never\"/>\n  <style>html, body {text-align: center;margin: 0; padding: 0;width: 100%;overflow: hidden;} </style>\n  <script src=\"https://unpkg.com/hls.js@1.4.3/dist/hls.min.js\"></script>\n</head><body>\n  <div class=\"container\">\n    <div class=\"title\">{{$.rescont.title}}</div>\n    <video id=\"video\" width=\"100%\" height=\"91%\" poster=\"\" controls autoplay muted loop></video>\n  </div>\n<script>\nconst v=document.getElementById('video'),s=[\n  \"{{$.rescont.videopath}}\",\n  \"\"];\nlet c=0;\nfunction setupCustomControls(e){/* 自定义功能实现 */}\nfunction playNext(){\n  c>=s.length&&(c=0); // 循环重置计数器\n  const u=s[c++];\n  // 检测Hls对象是否存在\n  if (typeof Hls !== 'undefined' && Hls.isSupported()) {\n    const h = new Hls({\n      enableSoftwareAES: true,          // 强制软件解密\n      forceKeyFrameOnDiscontinuity: true // 关键帧恢复\n    });\n    h.loadSource(u);\n    h.attachMedia(v);\n    h.on(Hls.Events.MANIFEST_PARSED,()=>v.play().then(()=>setupCustomControls(v)).catch(console.log));\n    h.on(Hls.Events.ERROR,(_,d)=>d.fatal&&playNext())\n  } else { // Hls加载失败或浏览器原生支持HLS\n    if (v.canPlayType('application/vnd.apple.mpegurl')) {\n      v.src = u;\n      v.onloadedmetadata = () => v.play().then(() => setupCustomControls(v));\n      v.onerror = playNext;\n    } else {\n      // 如果都不支持，尝试直接播放（可能支持MP4等格式）\n      v.src = u;\n      v.onerror = playNext;\n      v.play().then(() => setupCustomControls(v)).catch(playNext);\n    }\n  }\n}playNext();\n</script>\n</body></html>",
    "ruleImage": "{{$.coverbase64.url}}",
    "ruleLink": "/api/videoplay/{{$.id}}?uuid=1",
    "ruleNextPage": "$.rescont.next_page_url",
    "rulePubDate": "📆{{$.updated_at## .*}}  ⏱️{{$.playtimes}}",
    "ruleTitle": "$.title##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*人妖.*|.*男同.*|.*mbrba.*|.*水果派.*|.*解说.*|.*mmraa.*|.*ss-.*|.*fway.*|.*rebd.*|.*mbdd.*|.*双性.*|.*妈妈.*|.*儿子.*|.*爸爸.*|.*女儿.*|.*母子.*|.*父女.*|.*熟女.*|.*眼射.*|.*直男.*|.*CD.*|.*肥女.*|.*黄金.*|.*骚0.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*厕.*|.*老阿姨.*|.*乱伦.*",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/api/videosort/0?page={{ Math.ceil(Math.random()*1500) }}\n最新::/api/videosort/0?page={{page}}\n🔎搜索::/api/videosort/0?serach={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('强奸');source.getVariable()}}&page={{page}}\n国产自拍::/api/videosort/10?page={{page}}\nH动漫::/api/videosort/14?page={{page}}\n扶她姐妹::/api/videosort/58?page={{page}}\n国产AV::/api/videosort/60?page={{page}}\n网红主播::/api/videosort/17?page={{page}}\n嫩模专区::/api/videosort/37?page={{page}}\n偷拍盗摄::/api/videosort/53?page={{page}}\n萌妹酱篇::/api/videosort/54?page={{page}}\n精彩短片::/api/videosort/55?page={{page}}\n外流视频::/api/videosort/32?page={{page}}\n明星淫梦::/api/videosort/40?page={{page}}\n鹿少女集::/api/videosort/56?page={{page}}\n高清无码::/api/videosort/1?page={{page}}\n制服诱惑::/api/videosort/5?page={{page}}\n长腿丝袜::/api/videosort/11?page={{page}}\nAV剧情::/api/videosort/29?page={{page}}\nAV素人::/api/videosort/24?page={{page}}\n淫荡痴女::/api/videosort/51?page={{page}}\n巨乳咪咪::/api/videosort/20?page={{page}}\n人妻熟女::/api/videosort/6?page={{page}}\n近亲乱伦::/api/videosort/49?page={{page}}\n淫乱师生::/api/videosort/46?page={{page}}\n角色扮演::/api/videosort/4?page={{page}}\n青春萝莉::/api/videosort/22?page={{page}}\n魔镜系列::/api/videosort/39?page={{page}}\n中文无码::/api/videosort/57?page={{page}}\n当红女优::/api/videosort/9?page={{page}}\n中文字幕::/api/videosort/19?page={{page}}\n259LUXU::/api/videosort/36?page={{page}}\n重咸口味::/api/videosort/23?page={{page}}\n丝瓜推荐::/api/videosort/30?page={{page}}\n三级电影::/api/videosort/25?page={{page}}\n电车之狼::/api/videosort/52?page={{page}}\n中外合拍::/api/videosort/59?page={{page}}\n苍老师::/api/videosort/44?page={{page}}\n女同性爱::/api/videosort/38?page={{page}}\n欧美AV::/api/videosort/16?page={{page}}\n恐怖情色::/api/videosort/35?page={{page}}",
    "sourceGroup": "h",
    "sourceIcon": "https://kp-i25985.com/Uploads/vod/2023-06-21/1141.mp4.gif",
    "sourceName": "🌈丝瓜    S",
    "sourceUrl": "https://api.sgapiaba.xyz",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: -65px; /* 上移80px */\n    left: 0; \n    width: 100%; \n    height: calc(96% + 65px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \n",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1075,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 11; Pixel 3 XL Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.4988.0 Mobile Safari/537.36 SearchCraft/3.9.2 (Baidu; P1 11)\",\n\t\"referer\": \"{{baseUrl}}\"\n}",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n\n  // 触摸事件处理\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    \n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = '50%';\n    button.style.transform = 'translateY(-50%)';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n\n  // 旋转按钮（右侧）\n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    \n    // 保留当前的缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale})`;\n  }, { horizontal: 'right' });\n\n  // 缩放按钮（左侧）\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    \n    // 获取当前缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1)`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' });\n\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n  ];\n\n  seekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    button.addEventListener('click', () => {\n      video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n    });\n    buttonContainer.appendChild(button);\n  });\n\n  video.parentNode.appendChild(buttonContainer);\n}\n\n// 修改初始化逻辑，增加重试机制\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\n    const video = document.getElementById('video');\n    if (video) {\n      setupCustomPlayer(video);\n    } else if (retries < maxRetries) {\n      retries++;\n      setTimeout(tryInit, retryInterval);\n    }\n  };\n  tryInit();\n}\n// 使用重试机制初始化播放器\ninitPlayerWithRetry();",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".col-sm-6",
    "ruleContent": "{{@@script@all##\"url\":\"(.*)\",\"url##$1##}}\n\n@js:\nresult=java.base64Decode(result);\nresult=decodeURIComponent(result);\nresult=`\n<html><head><meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" />\n\n  <style>html, body {text-align: center;margin: 0; padding: 0;width: 100%;overflow: hidden;} </style>\n  <script src=\"https://unpkg.com/hls.js@1.4.3/dist/hls.min.js\"></script>\n</head><body>\n  <div class=\"container\">\n    <div class=\"title\">{{@@script@all##\"vod_name\":\"(.*)\",\"vod_actor##$1##}}</div>\n    <video id=\"video\" width=\"100%\" height=\"91%\" poster=\"${java.get('pic')}\" controls autoplay muted loop></video>\n  </div>\n<script>\nconst v=document.getElementById('video'),s=[\n  \"${result}\",\n  \"${result}\"];\nlet c=0;\nfunction setupCustomControls(e){/* 自定义功能实现 */}\nfunction playNext(){\n  c>=s.length&&(c=0); // 循环重置计数器\n  const u=s[c++];\n  \n  // 检测Hls对象是否存在\n  if (typeof Hls !== 'undefined' && Hls.isSupported()) {\n    const h=new Hls();\n    h.loadSource(u);\n    h.attachMedia(v);\n    h.on(Hls.Events.MANIFEST_PARSED,()=>v.play().then(()=>setupCustomControls(v)).catch(console.log));\n    h.on(Hls.Events.ERROR,(_,d)=>d.fatal&&playNext())\n  } else { // Hls加载失败或浏览器原生支持HLS\n    if (v.canPlayType('application/vnd.apple.mpegurl')) {\n      v.src = u;\n      v.onloadedmetadata = () => v.play().then(() => setupCustomControls(v));\n      v.onerror = playNext;\n    } else {\n      // 如果都不支持，尝试直接播放（可能支持MP4等格式）\n      v.src = u;\n      v.onerror = playNext;\n      v.play().then(() => setupCustomControls(v)).catch(playNext);\n    }\n  }\n}playNext();\n</script>\n</body></html>\n`",
    "ruleImage": "img@src\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "{{@@a@href}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.entry-title@ownText}}   ⏱️{{@@.model-view@text}}\n@js:\nresult = result !== \"\" ? result : \"点击播放\";",
    "ruleTitle": "@js:\nif (/\\b0分钟/.test(`{{@@.model-view@text}}`)) {\n  result = \"\";\n} else {\n  result = \"{{@@.entry-title@a@text##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*伪男.*|.*人妖.*|.*男同.*|.*狼狗.*|.*奶狗.*|.*鲜肉.*|.*帅哥.*|.*正装.*|.*猛1.*|.*ZKtop1.*|.*体育生.*|.*大屌.*|.*双性.*|.*男男.*|.*直男.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*女性向.*|.*骚0.*|.*poop.*|.*娘娘腔.*|.*变性.*|.*TGirls.*|.*鸡巴.*|.*阴茎.*|.*男奴.*|.*奴男.*|.*同志.*|.*苏木.*|.*西装.*|.*骚受.*|.*QS.*|.*Peter.*|.*摔跤社.*|.*基情.*|.*天菜.*|.*大鸡.*|.*肌肉.*|.*薄肌.*|.*G片.*|.*术0.*|.*宏翔.*|.*男蜜.*|.*自制口.*|.*威廉.*|.*骚男.*|.*基友.*|.*美男子.*|.*鸡儿.*|.*口活王子.*|.*融化的冰.*|.*自己射.*|.*運動生.*|.*苏婧薇.*|.*社畜.*|.*纪练深.*|.*性别.*|.*淋尿.*|.*控射.*|.*熟女.*|.*CD.*|.*肥女.*|.*黄金.*|.*厕.*|.*老阿姨.*|.*排泄.*|.*臭脚.*|.*大便.*|.*马眼.*|.*聖水.*|.*尸.*|.*廁.*|.*圣水.*|.*豊満.*|.*黑妹.*|.*坦克.*|.*黑屁股.*|.*黑人妹子.*|.*黑逼.*|.*孕妇.*|.*消遣.*|.*伦勃朗.*|.*拉丁裔.*|.*asmr.*|.*GOOD.*|.*奶奶.*|.*老妈.*|.*乱伦.*|.*妈妈.*|.*儿子.*|.*爸爸.*|.*女儿.*|.*母子.*|.*父女.*|.*兄妹.*|.*亲姐.*|.*亲妹.*|.*VR.*|.*都丸富美.*|.*山本かを.*|.*守谷多香子.*|.*波多.*|.*飯岡.*|.*希島.*|.*希岛.*|.*深田.*|.*君島.*|.*君岛.*|.*田中瞳.*|.*向美奈.*|.*美原咲.*|.*华行香.*|.*藤泽丽.*|.*Hitomi.*|.*美乃雀.*|.*若菜奈.*|.*水野朝.*|.*後藤.*|.*明日花.*|.*卯水.*|.*由爱.*|.*JULIA.*|.*风间.*|.*濑圆.*|.*平冈.*|.*藤樱.*|.*藤泽.*|.*蓮実.*|.*藤沢麗央.*|.*木村玲.*|.*SILK.*|.*afchina.*|.*fway.*|.*rebd.*|.*mbdd.*|.*眼射.*|.*水果派.*|.*解说.*|.*第.*期.*|.*π.*|.*寻花.*|.*尋花.*|.*探花.*|.*偷拍.*|.*偸拍.*|.*抄底.*|.*攝像頭.*|.*摄像头.*|.*第.*话.*|.*番系列.*|.*经典番.*|.*里番.*|.*老番.*|.*国漫.*|.*王者.*|.*斗罗.*|.*穿越.*|.*斗破.*|.*仙剑.*|.*小舞.*|.*MMD.*|.*碧蓝.*|.*断雪.*|.*梦梦.*|.*刘玥.*|.*筋肉.*}}\";\n}\njava.put('title',result)",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/index.php/vod/type/id/{{ [1,2,4][Math.floor(Math.random()*3)] }}/page/{{ Math.ceil(Math.random()*600) }}.html\n\n随机:/index.php/vod/type/id/2/page/{{ Math.ceil(Math.random()*550) }}.html\n\n🔎搜索::/index.php/vod/search/page/{{page}}/wd/{{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}.html\n中字::/index.php/vod/type/id/1/page/{{page}}.html\n有码::/index.php/vod/type/id/2/page/{{page}}.html\n国产::/index.php/vod/type/id/4/page/{{page}}.html\n\n无码::/index.php/vod/type/id/3/page/{{page}}.html\n自拍::/index.php/vod/type/id/22/page/{{page}}.html\n主播::/index.php/vod/type/id/32/page/{{page}}.html\n泄密::/index.php/vod/type/id/30/page/{{page}}.html\n3D::/index.php/vod/type/id/28/page/{{page}}.html\n",
    "sourceComment": "https://m1.kanav.fun/\n备用地址\nhttps://kanav.ad\nhttps://v1.kanav.fit/\n",
    "sourceGroup": "h",
    "sourceIcon": "https://ali-ec.static.yximgs.com/bs2/upload-kwaishop-themis-bucket/c6362dc6-ce95-4b43-bf45-6dc241d897c6_bd86096eb90bc35a2a7a7d7d4156dcd8.jpg",
    "sourceName": "❀KanAv  S",
    "sourceUrl": "https://kanav.ad",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: +20px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(93% + 0px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \nvideo::-webkit-media-controls-overlay-play-button {\n    display: none !important;\n}\nvideo::-webkit-media-controls-fullscreen-button {\n    display: none !important;\n}",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1076,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1770433323182,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "ul@li",
    "ruleContent": "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<title>内容提取</title>\n<!-- v2025.05.10 -->\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<script src=\"https://code.jquery.com/jquery-3.6.0.min.js\"></script>\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.css\" />\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.js\"></script>\n<style>\n    body { font-family: Arial, sans-serif; font-size: 16px; }\n    #title, #page, #loading-status { margin: 0 auto; font-size: 20px; text-align: center; }\n    #description, #urls, #video-url, #video-sources, #messages { width: 100%; max-width: 800px; margin: 1.5px auto; font-size: 14px; text-align: left; word-wrap: break-word; white-space: pre-wrap; }\n    #text, #text :not(img), #text img + * { text-indent: 2em; width: 100%; font-size: 16px; line-height: 1.5em; margin-top: 0; margin-bottom: 0; word-wrap: break-word; white-space: pre-wrap; }\n    img, #text img { width: 100%; height: auto; display: block; margin-bottom: 1.5px; }\n    .flex-container { display: flex; justify-content: center; align-items: center; gap: 10px; margin: 1.5px 0; font-size: 14px; }\n    button, select { flex: 1 1 31%; padding: 3px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; cursor: pointer; background-color: #f9f9f9; transition: background-color 0.3s ease; margin: 1.5px; min-width: 0; font-size: 14px; }\n    #url-select, #video-source-select { flex: 1 1 100%; margin-left: 0; margin-right: 0; text-align: center; }\n    #video-element { width: 100%; height: auto; }\n    textarea { width: 100%; height: auto; min-height: 100px; box-sizing: border-box; resize: vertical; }\n    .error, .warn { color: red; }\n</style>\n</head>\n<body>\n    <h3 id=\"title\">{{@@title@text||h1.0@text||h2.0@text||.title.0@text}}</h3>\n    <p id=\"description\">{{@@.info.0@html||.jianjie@html}}</p>\n    <p id=\"page\" style=\"display:none;\">共<span id=\"total-pages\">1</span>页</p>\n    <p id=\"loading-status\" style=\"display:none;\"></p>\n\n    <div class=\"flex-container\" id=\"loading-buttons\" style=\"display:none;\">\n        <button id=\"prev-page-btn\">上一页</button>\n        <button id=\"next-page-btn\">下一页</button>\n        <button id=\"auto-load-btn\">自&nbsp;&nbsp;动</button>\n    </div>\n    \n    <div class=\"flex-container\">\n        <select id=\"url-select\" style=\"display:none;\"></select>\n    </div>\n    \n    <div class=\"flex-container\">\n        <button id=\"toggle-urls-btn\">显/隐网址</button>\n        <button id=\"toggle-messages-btn\">显/隐信息</button>\n        <button id=\"toggle-debug-btn\">显/隐调试</button>\n    </div>\n    <div id=\"urls\"></div>\n    <div id=\"messages\"></div>\n    <div id=\"debug-info\"></div>\n    <div id=\"video-url\"></div>\n    <div id=\"video-container\" style=\"display: none;\">\n        <video id=\"video-element\" controls preload=\"auto\" width=\"640\" height=\"264\">\n            <source id=\"video-source\" src=\"\" type=\"\">您的浏览器不支持 video 标签。\n        </video>\n    </div>\n    <div class=\"flex-container\" id=\"video-source-container\" style=\"display: none;\">\n        <select id=\"video-source-select\" onchange=\"updateVideoSource()\"></select>\n    </div>\n    <div id=\"images\"></div>\n    <div id=\"text\"></div>\n\n    <script>\n        // 配置对象，包含各种选择器、延迟时间等配置项\n        const config = {    \n            videoSelector: 'body', // 视频选择器\n            imgSelector: '.gridlane-box-inside img,.photos figure img,.content p img', // 图片选择器\n            textSelector: '#content', // 文本选择器\n            debugSelector: '#content, .page, .pager, .content, script', // 调试信息选择器\n            swapImageAttributes: false, // 是否交换图片属性\n            delayTime: 1500, // 延迟提取时间\n            retryDelayTime: 1500, // 重试加载延迟时间\n            maxLoadAttempts: 3, // 最大加载次数\n            autoLoading: false, // true自动模式，false单页模式\n            debugOnce: 0, // 只在特定索引输出一次调试信息\n            totalPagesText: '{{@@.page.0@a.-2@textNodes}}', // 总页码\n            urlSuffixToRemove: /\\.html$/, // 移除url后缀\n            pageUrlText: '{urlPrefix}_{i}.html', // 拼接URL模板        \n            ListMode: true, // true网址列表模式，false网址拼接模式    \n            initialUrls: `{{@@#sort-item-5.0@a@href}}`, // 网址\n            initialUrlsName: `{{@@#sort-item-5.0@a@span@text}}`, // 网址名称\n            sourceurl: '', // 来源URL前缀\n        };\n\n        let videoSources = []; // 存储视频源数组\n        let loadAttempts = {}; // 记录每个URL的加载尝试次数\n        let urls = []; // 存储所有页面的URL\n        let imageBox;\n        let textBox;\n        let currentPageIndex = 0; // 当前页面索引\n        let canLoadNextPage = true; // 控制是否可以加载下一页\n        let autoLoadInProgress = false; // 自动加载状态\n\n        // 构建URL列表\n        function buildUrls(totalPages, baseUrl) {\n            let initialUrlsArray = config.initialUrls.trim().split('\\n').filter(url => url.trim() !== '');\n            let initialUrlsNameArray = config.initialUrlsName.trim().split('\\n').filter(name => name.trim() !== '');\n\n            if (config.ListMode && initialUrlsArray.length > 0) {\n                if (initialUrlsArray.length !== initialUrlsNameArray.length) {\n                    $('#messages').append(`<span class=\"warn\">警告：initialUrls 和 initialUrlsName 的长度不匹配。</span><br>`);\n                }\n\n                urls = initialUrlsArray.map(url => {\n                    if (config.sourceurl && url.startsWith('/') && !/^https?:\\/\\//i.test(url)) {\n                        return config.sourceurl.replace(/\\/$/, '') + url;\n                    } else {\n                        return url;\n                    }\n                });\n\n                urls.forEach((url, index) => {\n                    const name = initialUrlsNameArray[index] || `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            } else {\n                if (totalPages === 1) {\n                    urls.push(baseUrl);\n                } else {\n                    urls.push(baseUrl);\n                    for (let i = 2; i <= totalPages; i++) {\n                        urls.push(config.pageUrlText.replace('{urlPrefix}', baseUrl.replace(config.urlSuffixToRemove, '').replace(/\\/$/, '')).replace('{i}', i));\n                    }\n                }\n\n                urls.forEach((url, index) => {\n                    const name = `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            }\n\n            $('#total-pages').text(urls.length);\n            toggleNavigationButtons();\n            toggleTotalPagesDisplay();\n        }\n\n        // 规范化URL\n        function normalizeUrl(url) {\n            if (typeof url !== 'string' || !url.trim()) {\n                return '';\n            }\n            const match = url.match(/['\"](.*?)['\"]/);\n            if (match && match[1]) {\n                url = match[1];\n            }\n\n            function processUrl(str) {\n                str = str.trim();\n                str = str.replace(/\\\\u[\\dA-F]{4}/gi, match => String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16)));\n                str = decodeURIComponent(str);\n                str = str.replace(/^http:\\/([^/])/, 'http://$1');\n                str = str.replace(/^https:\\/([^/])/, 'https://$1');\n                return str;\n            }\n            return processUrl(url);\n        }\n\n        // 清空容器内容\n        function clearContainers() {\n            $('#messages').empty();\n            $('#images').empty();\n            $('#text').empty();\n        }\n\n        // 更新图像源\n        function updateImageSrc(elements, shouldSwap) {\n            elements.each(function () {\n                const $this = $(this);\n                const attrsToUpdate = {};\n                if (shouldSwap) {\n                    ['data-original', 'data-src', 'data-url'].forEach(attr => {\n                        if ($this.attr(attr)) {\n                            attrsToUpdate['src'] = $this.attr(attr);\n                        }\n                    });\n                }\n                $this.attr(attrsToUpdate);\n            });\n            return elements;\n        }\n\n        // 切换导航按钮显示状态\n        function toggleNavigationButtons() {\n            if ($('#url-select option').length > 1 && !config.autoLoading) {\n                $('#loading-buttons').show();\n                $('#url-select').show();\n            } else {\n                $('#loading-buttons').hide();\n                $('#url-select').hide();\n            }\n        }\n\n        // 显示加载状态\n        function showLoadingStatus(pageNumber) {\n            const selectedOption = $('#url-select option:selected').text();\n            $('#loading-status').text(`正在加载：${selectedOption}`).show();\n        }\n\n        // 隐藏加载状态\n        function hideLoadingStatus() {\n            $('#loading-status').hide();\n        }\n\n        // 加载指定索引的内容\n        function loadContent(index) {\n            if (index < 0 || index >= urls.length || !canLoadNextPage) return;\n            canLoadNextPage = false;\n            currentPageIndex = index;\n            $('#url-select').val(index);\n            $('#messages').append(`<div>当前地址: <span class=\"warn\">${urls[index]}</span></div>`);\n            if (autoLoadInProgress) {\n                showLoadingStatus(index + 1);\n            }\n            $.ajax({\n                url: urls[index],\n                type: 'GET',\n                success: function (data) {\n                    try {\n                    const $data = $(data);\n                    let updatedHtmlContent = data.replace(/(['\"])(\\/\\/)(?!\\/)/g, '$1https://')\n                        .replace(/src=\"upload/gi, 'src=\"/upload')\n                        .replace(/style=[\"'][^'\"]+[\"']/gi, '')\n                        .replace(/\\\\\\//g, '/');\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(updatedHtmlContent, \"text/html\");\n\n                    if (config.debugOnce === index) {\n                        const debugElements = $(doc).find(config.debugSelector);\n                        if (debugElements.length > 0) {\n                            const debugContents = $('<pre>').html(debugElements.clone().wrapAll('<div/>').parent().html()).html();\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">${debugContents}</textarea></span>`);\n                        } else {\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">调试信息未提取到内容，请检查选择器！</textarea></span>`);\n                        }\n                    }\n                    // 方法1：提取视频\n                    const videoSources1 = [];\n                    const videoContents = $(doc).find(config.videoSelector);\n                    const videoTags = $(videoContents).find('video, source');\n                    videoTags.each(function() {\n                        const videosrc = $(this).attr('src') || \n                                     $(this).attr('data-src') || \n                                     $(this).attr('data-original') || '';\n                        \n                        if (videosrc) {\n                            videoSources1.push(videosrc);\n                        }\n                    });\n                    //反馈\n                    if (videoSources1.length > 0) {\n                        $('#messages').append(`<span>方法1，找到 ${videoSources1.length} 个视频。</span><br>`);\n                    }\n\n                    // 方法2：正则提取视频\n                    const regex = /['\"]https?[^'<>\"]+(m3u8|mp4|webm|ogg|flv|mp3|m4a|wav|ape|flac)([^'<>\"]+)?['\"]/gi;\n                    const matches = data.match(regex);\n                    const videoSources2 = [];\n\n                    if (matches) {\n                        const uniqueMatches = [...new Set(matches)];\n                    \n                        uniqueMatches.forEach(match => {\n                            const normalizedSrc = normalizeUrl(match.replace(/['\"]/g, ''));\n                            videoSources2.push(normalizedSrc);\n                        });\n                    }\n                    //反馈\n                    if (videoSources2.length > 0) {\n                        $('#messages').append(`<span>方法2，找到 ${videoSources2.length} 个视频。</span><br>`);\n                    }\n\n                    // 合并两种方法的结果\n                    videoSources = [...videoSources1, ...videoSources2];\n\n                    // 去重并标准化 URL\n                    const imageExtensions = /\\.(jpg|jpeg|png|gif|bmp|svg)$/i;\n\n                    videoSources = videoSources\n                                  .map(src => normalizeUrl(src.replace(/\\\\+/g, '')))\n                                  .filter(src => src) // 过滤空值\n                                  .filter(src => !imageExtensions.test(src)); // 移除图片地址\n                        \n                    videoSources = [...new Set(videoSources)];// 去重\n\n                    // 显示最终结果\n                    $('#messages').append(`<span>总共找到 ${videoSources.length} 个视频。</span><br>`);\n\n                    if (videoSources.length > 0) {\n                        $('#messages').append(`<span>成功提取到视频，找到 ${videoSources.length} 个视频。</span><br>`);\n                        videoSources.forEach((src, idx) => {\n                            $('#messages').append(`<div>视频地址:<span class=\"warn\"> ${src}</span><br></div>`);\n                            $('#video-source-select').append(`<option value=\"${idx}\">视频源 ${idx + 1}</option>`);\n                        });\n                    \n                        if (videoSources.length == 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').hide();\n                            updateVideoSource();\n                        } else if (videoSources.length > 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').show();\n                            updateVideoSource();\n                        } else {\n                            $('#video-container').hide();\n                            $('#video-url').hide();\n                            $('#video-source-container').hide();\n                        }\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未找到视频源。</span><br>`);\n                        $('#video-container').hide();\n                        $('#video-url').hide();\n                        $('#video-source-container').hide();\n                    }\n\n                    //提取图片\n                    const $imgContents = $(doc).find(config.imgSelector);\n                    const shouldSwap = config.swapImageAttributes;\n                    const newContents = updateImageSrc($imgContents.clone(), shouldSwap);\n                    $('#images').append(newContents).show();\n                    if (newContents.length > 0) {\n                        $('#messages').append(`<span>成功提取图片，共 ${newContents.length} 张。</span><br>`);\n                        newContents.each(function () {\n                            const imgSrc = $(this).attr('src') || $(this).attr('data-original') || $(this).attr('data-src') || $(this).attr('data-url');\n                            $('#messages').append(`<div>地址:<span class=\"warn\"> ${imgSrc}</span><br></div>`);\n                        });\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图片。</span><br>`);\n                    }\n\n                    //提取图片和文本\n                    const textContents = $(doc).find(config.textSelector).map(function () {\n                        const $currentContents = $(this);\n                        $currentContents.find('img + br, script, video, source, iframe').remove();\n                        $currentContents.html($currentContents.html().replace(/>\\s+/gi, '>').replace(/<\\/?br\\s*([^>]*)\\s*\\/?>/gi, '\\n').replace(/\\n+/g, '\\n'));\n                        return $currentContents.html();\n                    }).get().join('');\n                    if (textContents.trim()) {\n                        $('#text').append(`<span>${textContents}</span><br>`).show();\n                        $('#messages').append(`<span>成功提取图文。</span><br>`);\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图文。</span><br>`);\n                    }\n\n                    if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                        setTimeout(() => { \n                            canLoadNextPage = true;\n                            loadContent(currentPageIndex + 1); \n                        }, config.delayTime);\n                    } else {\n                        canLoadNextPage = true;\n                        if (autoLoadInProgress) {\n                            hideLoadingStatus();\n                        }\n                    }\n                } catch (parseError) {\n                    $('#messages').append(`<span class=\"error\">解析页面内容时发生错误: ${parseError.message}</span><br>`);\n                    handleLoadFailure(urls, index);\n                } finally {\n                    if (imageBox) imageBox.viewer.update();\n                    if (textBox) textBox.viewer.update();\n                }\n            },\n            error: function (jqXHR, textStatus, errorThrown) {\n                let errorMessage = `内容加载失败: ${urls[index]}`;\n                switch (textStatus) {\n                    case 'timeout':\n                        errorMessage += ', 请求超时';\n                        break;\n                    case 'abort':\n                        errorMessage += ', 请求被取消';\n                        break;\n                    case 'parsererror':\n                        errorMessage += ', 解析响应出错';\n                        break;\n                    default:\n                        errorMessage += `, 状态码: ${jqXHR.status}, 错误信息: ${errorThrown}`;\n                        break;\n                }\n                $('#messages').append(`<span class=\"error\">${errorMessage}</span><br>`);\n                handleLoadFailure(urls, index);\n                }\n            });\n        }\n\n        // 处理加载失败的情况\n        function handleLoadFailure(urls, index) {\n            if (!loadAttempts[urls[index]]) {\n                loadAttempts[urls[index]] = 1;\n            } else {\n                loadAttempts[urls[index]]++;\n            }\n            if (loadAttempts[urls[index]] <= config.maxLoadAttempts) {\n                const retryMessage = `第${index + 1}页加载失败，正在进行第${loadAttempts[urls[index]]}次加载！`;\n                $('#messages').append(`<span class=\"error\">${retryMessage}</span><br>`);\n                setTimeout(() => { \n                    canLoadNextPage = true;\n                    loadContent(index); \n                }, config.retryDelayTime);\n            } else {\n                const finalErrorMessage = `第${index + 1}页加载失败，已达到最大尝试次数(${config.maxLoadAttempts})！`;\n                $('#messages').append(`<span class=\"error\">${finalErrorMessage}</span><br>`);\n                if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                    setTimeout(() => { \n                        canLoadNextPage = true;\n                        loadContent(currentPageIndex + 1); \n                    }, config.delayTime);\n                } else {\n                    canLoadNextPage = true;\n                    if (autoLoadInProgress) {\n                        hideLoadingStatus();\n                    }\n                }\n            }\n        }\n\n        // 更新视频源\n        function updateVideoSource() {\n            const selectedIndex = parseInt(document.getElementById('video-source-select').value);\n            if (isNaN(selectedIndex) || !videoSources[selectedIndex]) {\n                $('#messages').append(`<span class=\"warn\">未找到有效的视频源。</span><br>`);\n                console.warn(\"Invalid or undefined video source:\", selectedIndex, videoSources);\n                return;\n            }\n\n            const selectedSource = videoSources[selectedIndex];\n            document.getElementById('video-url').textContent = `视频地址:\\n ${selectedSource}`;\n\n            const videoSourceElement = document.getElementById('video-source');\n            videoSourceElement.src = selectedSource;\n\n            const videoElement = document.getElementById('video-element');\n            videoElement.load();\n\n            $('#messages').append(`<span>更新视频源为: ${selectedSource}</span><br>`);\n            console.log(\"Updated video source to:\", selectedSource);\n        }\n\n        // 切换总页数显示状态\n        function toggleTotalPagesDisplay() {\n            if (urls.length > 1) {\n                $('#page').show();\n            } else {\n                $('#page').hide();\n            }\n        }\n\n        // 页面加载完成后执行的主要逻辑\n        $(document).ready(function () {\n            imageBox = document.getElementById('images');\n            textBox = document.getElementById('text');\n            if (imageBox && textBox) {\n                new Viewer(imageBox, { title: true, interval: 2000 });\n                new Viewer(textBox, { title: true, interval: 2000 });\n            }\n\n            const totalPagesText = config.totalPagesText;\n            const totalPages = parseInt(totalPagesText, 10) || 1;\n            const baseUrl = '{{baseUrl}}';\n\n            clearContainers();\n            $('#urls, #debug-info textarea, #video-url, #video-source-select').empty();\n            $('#urls, #messages, #debug-info, #video-url, #video-container, #video-source-container, #images, #text').hide();\n\n            buildUrls(totalPages, baseUrl);\n\n            const urlSelect = document.getElementById('url-select');\n            if (urlSelect.options.length > 0) {\n                urlSelect.value = '0'; \n\n                if (config.autoLoading) {\n                    autoLoadInProgress = true;\n                    for (let i = 0; i < urls.length; i++) {\n                        loadContent(i);\n                    }\n                } else {\n                    loadContent(0);\n                }\n            } else {\n                loadContent(0);\n            }\n\n            $('#url-select').change(function () {\n                clearContainers();\n                const selectedIndex = parseInt($(this).val());\n                loadContent(selectedIndex);\n            });\n            $('#prev-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex > 0) {\n                    loadContent(currentPageIndex - 1);\n                }\n            });\n            $('#next-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex < urls.length - 1) {\n                    loadContent(currentPageIndex + 1);\n                }\n            });\n            $('#auto-load-btn').click(function () {\n                autoLoadInProgress = true;\n                showLoadingStatus(1); \n                for (let i = currentPageIndex + 1; i < urls.length; i++) {\n                    loadContent(i);\n                }\n            });\n            $('#toggle-messages-btn').click(function () { $('#messages').toggle(); });\n            $('#toggle-urls-btn').click(function () { $('#urls').toggle(); });\n            $('#toggle-debug-btn').click(function () { $('#debug-info').toggle(); });\n        });\n    </script>\n</body>\n</html>",
    "ruleImage": "a@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page||text.下一页@href",
    "rulePubDate": "[class=\"pic-text text-right\"]@text",
    "ruleTitle": "h4@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索🔍::/jiejie/index.php/vod/search.html?wd={{source.getVariable()}}\n黄瓜资源::/jiejie/index.php/vod/type/id/87.html\n155资源::/jiejie/index.php/vod/type/id/248.html\n森林资源::/jiejie/index.php/vod/type/id/117.html\n奥斯卡资源::/jiejie/index.php/vod/type/id/86.html\n百万资源::/jiejie/index.php/vod/type/id/237.html\n制服诱惑::/jiejie/index.php/vod/show/id/251.html\n中文字幕::/jiejie/index.php/vod/show/id/254.html\n美乳巨乳::/jiejie/index.php/vod/show/id/262.html\n熟女人妻::/jiejie/index.php/vod/show/id/259.html\n萝莉少女::/jiejie/index.php/vod/show/id/260.html\n强奸乱伦::/jiejie/index.php/vod/show/id/263.html\n无码专区::/jiejie/index.php/vod/show/id/249.html",
    "sourceComment": "jiejiesp.xyz",
    "sourceGroup": "h",
    "sourceIcon": "https://8wx27o6v.91gaoqing.rest/upload/vod/20250428-1/cfc014ec16937c7f415afd712b482842.gif",
    "sourceName": "姐姐视频",
    "sourceUrl": "https://wap.jiejiesp19.xyz",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1079,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.clearfix@tag.li",
    "ruleContent": "id.post@all",
    "ruleImage": "class.image-list-item-image@a@img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "class.nextpostslink@href",
    "rulePubDate": "class.image-list-item-regist-date@text",
    "ruleTitle": "class.image-list-item-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://hentai-cosplays.com/search/keyword/Genshin/\n排行::https://hentai-cosplays.com/ranking/\n萝莉::https://hentai-cosplays.com/search/tag/lolita",
    "sourceComment": "<js>github@ifwlzs</js>",
    "sourceGroup": "h",
    "sourceIcon": "https://avatars.githubusercontent.com/u/49548316",
    "sourceName": "hentai-cosplays",
    "sourceUrl": "https://hentai-cosplays.com/",
    "style": "img{\n\twidth:100%;\n\theight:auto;\n\t}##github@ifwlzs",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1082,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\t\"User-Agent\":\"Mozilla/5.0 (Linux; Android 11; Pixel 3 XL Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.4988.0 Mobile Safari/537.36 SearchCraft/3.9.2 (Baidu; P1 11)\",\n\t\"referer\": \"{{baseUrl}}\"\n}",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n\n  // 触摸事件处理\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    \n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = '50%';\n    button.style.transform = 'translateY(-50%)';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n\n  // 旋转按钮（右侧）\n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    \n    // 保留当前的缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale})`;\n  }, { horizontal: 'right' });\n\n  // 缩放按钮（左侧）\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    \n    // 获取当前缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1)`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' });\n\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n  ];\n\n  seekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    button.addEventListener('click', () => {\n      video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n    });\n    buttonContainer.appendChild(button);\n  });\n\n  video.parentNode.appendChild(buttonContainer);\n}\n\n// 直接初始化避免额外事件\nconst video = document.getElementById('video');\nif (video) setupCustomPlayer(video);",
    "lastUpdateTime": 1772384934561,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\nresult = java.ajax(source.sourceUrl + \"go.js\");\nvar urlMatch = result.match(/top\\.location\\s*=\\s*['\"](https?:\\/\\/[^\\/'\"]+)/);\nif (urlMatch) {\n    A = urlMatch[1];} else {\n    A = source.sourceUrl;}\njava.put('url', A);\npath = baseUrl.replace(/^https?:\\/\\/[^\\/]+/, '');\nB = A + path;\njava.put('next', B);\njava.ajax(B);\n</js>\n.stui-vodlist__box",
    "ruleContent": "{{@@script@all##\"url\":\"(.*)\",\"url##$1##}}\n@js:\nresult = result.replace(/\\\\+/g, '');\n\nresult = `\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\">\n<style>\nhtml, body { text-align:center; margin:0; padding:0; width:100%; overflow:hidden; }\n</style>\n<!-- 引入CryptoJS库 -->\n<script src=\"https://s4.zstatic.net/ajax/libs/crypto-js/4.1.1/crypto-js.min.js\"></script>\n</head>\n<body>\n<div class=\"container\">\n<div class=\"title\">{{@@h4.0@text##.*:}}</div>\n<video id=\"video\" width=\"100%\" height=\"90%\" poster=\"{{java.get('pic')}}\" controls autoplay muted loop></video>\n</div>\n\n<script>\n(function() {\n// 配置解密参数\nconst key = CryptoJS.enc.Latin1.parse('9q4h7kt7skwsc9af1qmwy14jkfq2biab');\nconst iv = CryptoJS.enc.Latin1.parse('6b3gslw69k6eazmw');\nconst encryptedUrl = \"${result}\"; // 注入加密URL\n\ntry {\n// 1. 预处理URL\nlet base64Str = encryptedUrl\n.replace(/-/g, '+') // URL安全Base64替换\n.replace(/_/g, '/');\n\n// 2. Base64补全\nconst pad = base64Str.length % 4;\nif (pad) base64Str += '===='.slice(0, 4 - pad);\n\n// 3. 解密流程\nconst encryptedData = CryptoJS.enc.Base64.parse(base64Str);\nconst decrypted = CryptoJS.AES.decrypt(\n{ ciphertext: encryptedData },\nkey,\n{ iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }\n);\n\n// 4. 处理解密结果\nconst decryptedStr = decodeURIComponent(\nCryptoJS.enc.Latin1.stringify(decrypted)\n);\nconst parts = decryptedStr.split(',');\n\nif (parts.length !== 5) throw new Error('无效解密数据');\nconst realUrl = \\`https://cdn-m.asujp.com:59888/f/\\${parts[0]}/\\${parts[1]}/\\${parts[2]}/play.m3u8?_KS=\\${parts[3]}&_KE=\\${parts[4]}\\`;\n\n// 5. 动态设置视频源\ndocument.getElementById('video').src = realUrl;\n} catch (e) {\ndocument.body.innerHTML = '视频解析失败: ' + e.message;\n}\n})();\n</script>\n</body>\n</html>\n`;\nresult",
    "ruleImage": "{{@@a@data-original}}\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "{{java.get('url')}}{{@@a.0@href}}",
    "ruleNextPage": "@js:\nvar A = java.get('next'); \nvar B = java.ajax(A);\nvar C = java.get('url'); \nvar D = B.match(/<a [^>]*href=\"([^\"]+)\"[^>]*>\\s*下一页\\s*<\\/a>/i);\nnextPageUrl = D ? (C + D[1]) : \"\";\n",
    "rulePubDate": "{{@@span@text}}\n@js:\nresult = result !== \"\" ? result : \"点击播放\";",
    "ruleTitle": "h4@text##.*屎.*|.*喝尿.*|.*Ts.*|.*ts.*|.*伪娘.*|.*伪男.*|.*人妖.*|.*男同.*|.*狼狗.*|.*奶狗.*|.*鲜肉.*|.*帅哥.*|.*正装.*|.*猛1.*|.*ZKtop1.*|.*体育生.*|.*双性.*|.*男男.*|.*直男.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*女性向.*|.*骚0.*|.*poop.*|.*男奴.*|.*奴男.*|.*同志.*|.*苏木.*|.*西装.*|.*骚受.*|.*QS.*|.*Peter.*|.*摔跤社.*|.*基情.*|.*天菜.*|.*大鸡.*|.*肌肉.*|.*薄肌.*|.*G片.*|.*术0.*|.*宏翔.*|.*男蜜.*|.*自制口.*|.*威廉.*|.*骚男.*|.*基友.*|.*美男子.*|.*鸡儿.*",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/index.php/vod/type/id/{{ Math.floor(Math.random()*3) +1}}/page/{{ Math.ceil(Math.random()*440) }}.html\n\n🔎搜索::/index.php/vod/search.html?wd={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}\n\n国产::/index.php/vod/type/id/1.html\n无码::/index.php/vod/type/id/2.html\n有码::/index.php/vod/type/id/3.html\n黑料::/index.php/vod/type/id/7.html\n欧美::/index.php/vod/type/id/4.html\n三级::/index.php/vod/type/id/6.html\n动漫::/index.php/vod/type/id/5.html",
    "sourceComment": "备用地址\nhttp://3.j332.cc/\nhttp://k587.cc/\n\n",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "YourPorn",
    "sourceUrl": "http://t.t631.cc/",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: +20px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(93% + 0px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1084,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.children",
    "ruleContent": "<html lang=\"en\" data-dpr=\"1\" style=\"font-size: 39.3091px;\"><head>\n    <meta charset=\"UTF-8\">\n    <link rel=\"stylesheet\" href=\"http://m.6yueting.com/css/play.css?v=1.0.2\">\n    <div class=\"outer-wrapper page-width\">\n        <div class=\"player page-width\">\n\n            <div class=\"top\">\n                <h2 class=\"title episode-name\">{{$..channel_name}}</h2>\n            </div>\n            <div class=\"background\">\n               <div class=\"background-mask\">\n                </div>\n            </div>\n            <div class=\"player-cover p-run\">\n                <img class=\"image\" src=\"{{$..cover_url}}\">\n            </div>\n            <div class=\"bottom\">\n                <div class=\"personalized\">\n                    <div class=\"item to-list-link\">\n<audio id=\"kugou\" height=\"100%\" width=\"100%\" controls=\"\" src=\"http://open.ls.qingting.fm/live/{{$..qt_channel_id}}/24k.m3u8?deviceid=652f2086-a7ae-3c71-afb1-ef1fd020ff23\"></audio>                  </div>\n                       </div>\n                </div>\n\n</body></html>",
    "ruleDescription": "",
    "ruleImage": "$..pic_large_url",
    "ruleLink": "https://fm.music.xiaomi.com{$..request_url}",
    "rulePubDate": "{{$..subtitle}}",
    "ruleTitle": "$.data..name",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "国家台",
    "sourceUrl": "https://fm.music.xiaomi.com/fm/v1/category/channel/370?pageType=%2Ffm_broadcast_list%2F%E5%B9%BF%E6%92%AD%2F%E5%9B%BD%E5%AE%B6%E5%8F%B0&version_info=%7B%22apk_version%22%3A%22230%22%2C%22apk_version_name%22%3A%221.0.230%22%2C%22device%22%3A%22platina%22%2C%22language%22%3A%22zh_CN%22%2C%22sys_verversion%22%3A%229_V10.3.7.0.PDTCNXM%22%7D&sign=2a57df4bf0b8a5e428b079783f529eeddac4f39d&nonce=9213596406902170431&i=37828e023677ad6e78e96f1c8506e8c4&oaid=56fbb3561e299e40&oaid_imei_both_have=true&ui_version=87&is_pad=false&miui_version=V10&package_name=com.miui.fm&support_fmservice=false",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1090,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\t\"User-Agent\": \"Mozilla/5.0 (Linux; Android 9) Mobile Safari/537.36\",\"referer\": \"{{baseUrl}}\"\n\t}",
    "lastUpdateTime": 1762664964830,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".video-item",
    "ruleContent": "@js:\njava.startBrowser(\"{{baseUrl}}\", true)",
    "ruleImage": "img@src",
    "ruleLink": "img@data-preview",
    "ruleNextPage": "page",
    "rulePubDate": ".flex@text##\\n##🥰",
    "ruleTitle": "a.1@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "动漫::/?fenlei=%E6%BF%80%E6%83%85%E5%8A%A8%E6%BC%AB&p={{page}}\n抹胸::/?tag=抹胸&p={{page}}\n　　互亲::/?tag=互亲&p={{page}}\n　　法语::/?tag=法语&p={{page}}\n　　体力::/?tag=体力&p={{page}}\n　　玷污::/?tag=玷污&p={{page}}\n　　使用::/?tag=使用&p={{page}}\n　　外阴::/?tag=外阴&p={{page}}\n　　内衣::/?fenlei=内衣&p={{page}}\n　　强迫::/?fenlei=强迫&p={{page}}\n　　人妖::/?fenlei=人妖&p={{page}}\n　　卫生间::/?fenlei=卫生间&p={{page}}\n　　少妇::/?fenlei=少妇&p={{page}}\n　　淫乱::/?fenlei=淫乱&p={{page}}\n　　视角::/?fenlei=视角&p={{page}}\n　　中文字幕::/?fenlei=中文字幕&p={{page}}\n　　日本有码::/?fenlei=日本有码&p={{page}}\n　　日本无码::/?fenlei=日本无码&p={{page}}\n　　AV解说::/?fenlei=AV解说&p={{page}}\n　　cosplay::/?fenlei=cosplay&p={{page}}\n　　黑丝诱惑::/?fenlei=黑丝诱惑&p={{page}}\n　　SWAG::/?fenlei=SWAG&p={{page}}\n　　自拍偷拍::/?fenlei=自拍偷拍&p={{page}}\n　　激情动漫::/?fenlei=激情动漫&p={{page}}\n　　网红主播::/?fenlei=网红主播&p={{page}}\n　　探花系列::/?fenlei=探花系列&p={{page}}\n　　三级伦理::/?fenlei=三级伦理&p={{page}}\n　　VR视角::/?fenlei=VR视角&p={{page}}\n　　国产传媒::/?fenlei=国产传媒&p={{page}}\n　　素人搭讪::/?fenlei=素人搭讪&p={{page}}\n　　门事件::/?fenlei=门事件&p={{page}}\n　　抖阴视频::/?fenlei=抖阴视频&p={{page}}\n　　中文字幕::/?fenlei=中文字幕&p={{page}}\n　　日本有码::/?fenlei=日本有码&p={{page}}\n　　日本无码::/?fenlei=日本无码&p={{page}}\n　　AV解说::/?fenlei=AV解说&p={{page}}\n　　cosplay::/?fenlei=cosplay&p={{page}}\n　　黑丝诱惑::/?fenlei=黑丝诱惑&p={{page}}&p={{page}}\n　　SWAG::/?fenlei=SWAG&p={{page}}\n　　自拍偷拍::/?fenlei=自拍偷拍&p={{page}}\n　　激情动漫::/?fenlei=激情动漫&p={{page}}\n　　网红主播::/?fenlei=网红主播&p={{page}}\n　　探花系列::/?fenlei=探花系列&p={{page}}\n　　三级伦理::/?fenlei=三级伦理&p={{page}}\n　　VR视角::/?fenlei=VR视角\n　　国产传媒::/?fenlei=国产传媒\n　　素人搭讪::/?fenlei=素人搭讪\n　　门事件::/?fenlei=门事件\n　　抖阴视频::/?fenlei=抖阴视频\n　　国产::/?fenlei=国产&p={{page}}\n　　字幕::/?fenlei=字幕&p={{page}}\n　　独家::/?fenlei=独家&p={{page}}\n　　师生::/?fenlei=师生&p={{page}}\n　　有码::/?fenlei=有码&p={{page}}\n　　中文::/?fenlei=中文&p={{page}}\n　　传媒::/?fenlei=传媒&p={{page}}\n　　私拍::/?fenlei=私拍&p={{page}}\n　　日本::/?fenlei=日本&p={{page}}\n　　欧美::/?fenlei=欧美&p={{page}}\n　　乱伦::/?fenlei=乱伦&p={{page}}\n　　伦理::/?fenlei=伦理&p={{page}}\n　　萝莉::/?fenlei=萝莉&p={{page}}\n　　三级::/?fenlei=三级&p={{page}}\n　　网红::/?fenlei=网红&p={{page}}\n　　精品::/?fenlei=精品&p={{page}}\n　　韩国::/?fenlei=韩国&p={{page}}\n　　新人::/?fenlei=新人&p={{page}}\n　　巨屌::/?fenlei=巨屌&p={{page}}\n　　探花::/?fenlei=探花&p={{page}}\n　　直播::/?fenlei=直播&p={{page}}\n　　爆菊::/?fenlei=爆菊&p={{page}}\n　　中出::/?fenlei=中出&p={{page}}\n　　高清::/?fenlei=高清&p={{page}}\n　　vr::/?fenlei=vr&p={{page}}\n　　肥臀::/?fenlei=肥臀&p={{page}}\n　　潮吹::/?fenlei=潮吹&p={{page}}\n　　重口::/?fenlei=重口&p={{page}}\n　　性感::/?fenlei=性感&p={{page}}\n　　女优::/?fenlei=女优&p={{page}}\n　　亚洲::/?fenlei=亚洲&p={{page}}\n　　素人::/?fenlei=素人&p={{page}}\n　　印度::/?fenlei=印度&p={{page}}\n　　内射::/?fenlei=内射&p={{page}}\n　　吹箫::/?fenlei=吹箫&p={{page}}\n　　肛门::/?fenlei=肛门&p={{page}}\n　　成熟::/?fenlei=成熟&p={{page}}\n　　多毛::/?fenlei=多毛&p={{page}}\n　　熟女::/?fenlei=熟女&p={{page}}\n　　大奶::/?fenlei=大奶&p={{page}}",
    "sourceComment": "调用系统自带视频播放器打开链接\n@js:\njava.openUrl('{{baseUrl}}','video/*');\n\n调用阅读自带视频播放器打开链接\n@js:\njava.openVideoPlayer(\"{{baseUrl}}\", \"标题\", true)\n\n调用阅读自带浏览器打开链接\n@js:\njava.startBrowser(\"{{baseUrl}}\", true)",
    "sourceGroup": "h",
    "sourceIcon": "https://u25m.seguidh.xyz/static/logo.png",
    "sourceName": "色鬼影院(调用系统自带视频播放器打开)",
    "sourceUrl": "https://u25m.seguidh.xyz/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1092,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "noh",
    "sourceIcon": "https://ss0.bdstatic.com/9bA1vGfa2gU2pMbfm9GUKT-w/timg?wisealaddin&size=w150&quality=100&sec=1575337050&di=fddefb66ead178ed6855e89223c66c1a&src=http%3A%2F%2Fg.hiphotos.bdimg.com%2Fwisegame%2Fwh%253D512%252C512%2Fsign%3D6078937e042442a7ae5bf5a0e071817e%2Fdc54564e9258d1094df7004fda58ccbf6c814d33.jpg",
    "sourceName": "吾爱破解",
    "sourceUrl": "https://www.52pojie.cn/forum.php?mod=rss",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1094,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n \"User-Agent\":\"Mozilla/5.0 (Linux; Android 12; HarmonyOS; OCE-AN50; HMSCore 6.15.0.302) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 HuaweiBrowser/16.0.3.302 Mobile Safari/537.36\",\n \"Origin\":\"https://www.iwara.tv\",\n \"referer\":\"https://www.iwara.tv/\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.results[*]",
    "ruleContent": "{{@@html@all}}\n<script defer>\n (()=>{\n   a=document.querySelector('a')\n   a.removeAttribute('href')\n\t})();\n</script>",
    "ruleImage": "https://i.iwara.tv/image/thumbnail/{{$.file.id}}/thumbnail-{{a=java.getString('$.thumbnail');a>9?n=a:n=\"0\"+a;n}}.jpg\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "https://www.iwara.tv/video/{{$.id}}",
    "ruleNextPage": "page",
    "rulePubDate": "👤{{$..username}} 🕒{{a=java.getString('$.file.duration');m=parseInt((a%3600)/60),s=a%60;a=`${m}:${s>9?s:s=\"0\"+s}`}} 👁{{$..numViews}}",
    "ruleTitle": "$.title\n<js>\njava.put('title',result)\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "飙升::/videos?rating=all&sort=trending&page={{page=page-1}}\n搜索::/search?type=video&page={{page=page-1}}&query={{source.getVariable()}}\n最新::/videos?rating=all&sort=date&page={{page=page-1}}\n最佳::/videos?rating=all&sort=popularity&page={{page=page-1}}",
    "sourceGroup": "h",
    "sourceIcon": "https://img1.baidu.com/it/u=3008977101,1742060047&fm=253&fmt=auto&app=120&f=JPEG?w=889&h=500",
    "sourceName": "Iwaraᵛᵖⁿ",
    "sourceUrl": "https://api.iwara.tv/",
    "style": "header,.page-video__details,.contentBlock,.comment__byline,.shareButton,.menu__background,.page-video__sidebar,.footer{\n\tdisplay:none !important;\n}\n.col-md-9{\n\tposition:absolute !important;\n\ttop:0;left:0;\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1095,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "<js>\nheaders={\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36 EdgA/127.0.0.0\",\n    \"Referer\": String(source.getKey()).replace(/(.*\\/\\/[a-z0-9.-]+).*/, '$1')\n}\nJSON.stringify(headers);\n</js>",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n\n  // 触摸事件处理\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    \n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = position.offset ? position.offset : '0';\n    button.style.top = '50%';\n    button.style.transform = 'translateY(-50%)';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n\n  // 获取所有source元素\n  const sources = Array.from(video.querySelectorAll('source'));\n  let currentSourceIndex = 0;\n  \n  // 存储初始source以便重置\n  const initialSource = sources.length > 0 ? sources[0].src : video.src;\n  \n  // 切换视频源函数\n  function switchSource(index) {\n    if (sources.length > 0) {\n      // 如果有<source>元素\n      if (index >= 0 && index < sources.length) {\n        currentSourceIndex = index;\n        const newSrc = sources[index].src;\n        video.src = newSrc;\n        video.load();\n        video.play();\n      }\n    } else {\n      // 如果直接使用src属性\n      video.src = initialSource;\n      video.load();\n      video.play();\n    }\n  }\n\n  // 旋转按钮（右侧）\n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    \n    // 保留当前的缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale})`;\n  }, { horizontal: 'right' });\n\n  // 缩放按钮（左侧）\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    \n    // 获取当前缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1)`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' });\n\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n    { text: '◀', time: null, action: 'prev' }, // 上一个按钮\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 },\n    { text: '▶', time: null, action: 'next' }  // 下一个按钮\n  ];\n\n  seekButtons.forEach(({ text, time, action }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    \n    if (action === 'prev') {\n      // 上一个按钮处理\n      button.addEventListener('click', () => {\n        if (sources.length > 0) {\n          currentSourceIndex = (currentSourceIndex - 1 + sources.length) % sources.length;\n          switchSource(currentSourceIndex);\n        } else {\n          // 如果没有source元素，则重新加载当前视频\n          video.src = initialSource;\n          video.load();\n          video.play();\n        }\n      });\n    } else if (action === 'next') {\n      // 下一个按钮处理\n      button.addEventListener('click', () => {\n        if (sources.length > 0) {\n          currentSourceIndex = (currentSourceIndex + 1) % sources.length;\n          switchSource(currentSourceIndex);\n        } else {\n          // 如果没有source元素，则重新加载当前视频\n          video.src = initialSource;\n          video.load();\n          video.play();\n        }\n      });\n    } else {\n      // 普通跳转按钮处理\n      button.addEventListener('click', () => {\n        video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n      });\n    }\n    \n    buttonContainer.appendChild(button);\n  });\n\n  video.parentNode.appendChild(buttonContainer);\n}\n\n// 修改初始化逻辑，增加重试机制\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\n    const video = document.getElementById('video');\n    if (video) {\n      setupCustomPlayer(video);\n    } else if (retries < maxRetries) {\n      retries++;\n      setTimeout(tryInit, retryInterval);\n    }\n  };\n  tryInit();\n}\n// 使用重试机制初始化播放器\ninitPlayerWithRetry();",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".item",
    "ruleContent": "@js:\nplayer = result.match(/contentUrl\":\\s*\"([^\"]+)\"/)[1];\nplayer2 = \"{{@@source@src}}\";\n\n// 定义所有视频源\nvar sources = [\n    `${player2}`,\n    `${player}`,\n];\n\n// 生成源按钮\nvar sourceButtons = \"\";\nif (sources.length > 1) {\n    for (var i = 0; i < sources.length; i++) {\n        sourceButtons += `<button class=\"source-btn\" data-index=\"${i}\">源${i+1}</button>`;\n    }\n}\n\nresult = `\n<html>  \n<head>  \n<meta charset=\"utf-8\">  \n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\">\n<meta name=\"referrer\" content=\"never\"/>\n<script src=\"https://s4.zstatic.net/ajax/libs/hls.js/1.6.13/hls.min.js\"></script>\n<style>\nhtml, body { text-align: center; margin: 0; padding: 0; width: 100%; overflow: hidden; }\n.source-container { position: absolute; top: 23px; right: 1px; z-index: 10; display: flex; gap: 1px; }\n.source-btn { color: #ff0; background: rgba(0,0,0,0.7); padding: 1px 5px; border-radius: 10px; font-size: 13px; border: none; cursor: pointer; }\n.source-btn.active { color: red !important; }\n</style>\n</head>  \n<body>  \n<div class=\"container\">\n    <div class=\"title\">{{@@title@text## / Embed Player}}</div>\n    ${sources.length > 1 ? `<div class=\"source-container\">${sourceButtons}</div>` : ''}\n    <video id=\"video\" width=\"100%\" height=\"91%\" poster=\"{{@@script@all##thumbnailUrl\":\\s*\"([^\"]+)\"##$1##}}\" controls autoplay muted loop></video>\n<script>\n    const video = document.getElementById('video');\n    const sources = ${JSON.stringify(sources)};\n    let hls = null;\n    let currentSource = 0;\n    \n    // 检测是否为HLS格式\n    function isHLS(url) {\n        return url.includes('.m3u8') || url.includes('/playlist.m3u8');\n    }\n    \n    // 播放视频源\n    function playSource(url) {\n        if (hls) {\n            hls.destroy();\n            hls = null;\n        }\n        \n        if (isHLS(url)) {\n            if (Hls.isSupported()) {\n                hls = new Hls({\n                    enableSoftwareAES: true,\n                    maxBufferLength: 30,\n                    maxMaxBufferLength: 60\n                });\n                hls.loadSource(url);\n                hls.attachMedia(video);\n                hls.on(Hls.Events.ERROR, function(event, data) {\n                    if (data.fatal) switchToNextSource();\n                });\n            } else if (video.canPlayType('application/vnd.apple.mpegurl')) {\n                video.src = url;\n            }\n        } else {\n            // MP4格式直接播放\n            video.src = url;\n        }\n    }\n    \n    // 切换到下一个源\n    function switchToNextSource() {\n        if (sources.length <= 1) return;\n        currentSource = (currentSource + 1) % sources.length;\n        playSource(sources[currentSource]);\n        updateButtons();\n    }\n    \n    // 切换视频源\n    function switchSource(index) {\n        currentSource = index;\n        playSource(sources[index]);\n        updateButtons();\n    }\n    \n    // 更新按钮状态\n    function updateButtons() {\n        document.querySelectorAll('.source-btn').forEach((btn, i) => {\n            btn.classList.toggle('active', i === currentSource);\n        });\n    }\n    \n    // 绑定按钮事件\n    document.addEventListener('click', function(e) {\n        if (e.target.classList.contains('source-btn')) {\n            switchSource(parseInt(e.target.dataset.index));\n        }\n    });\n    \n    // 错误处理和循环播放\n    video.onerror = switchToNextSource;\n    video.onended = function() {\n        if (sources.length === 1) {\n            video.currentTime = 0;\n            video.play();\n        } else {\n            switchToNextSource();\n        }\n    };\n    \n    // 播放第一个源\n    if (sources.length > 0) switchSource(0);\n</script>\n</div>\n</body>  \n</html>\n`;",
    "ruleImage": "img@data-original\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "{{@@a.0@href}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.added@text}}  ⏱️{{@@.duration@text}}  {{@@.is-hd@text}}",
    "ruleTitle": "@js:\nif (\"{{@@.duration@text}}\"==\"0:10\") {\n    result = \"\";\n} else {\n    result = \"{{@@strong@text##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*伪男.*|.*人妖.*|.*男同.*|.*狼狗.*|.*奶狗.*|.*鲜肉.*|.*帅哥.*|.*正装.*|.*猛1.*|.*ZKtop1.*|.*体育生.*|.*大屌.*|.*双性.*|.*男男.*|.*直男.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*女性向.*|.*骚0.*|.*poop.*|.*娘娘腔.*|.*变性.*|.*TGirls.*|.*鸡巴.*|.*阴茎.*|.*男奴.*|.*奴男.*|.*同志.*|.*苏木.*|.*西装.*|.*骚受.*|.*QS.*|.*Peter.*|.*摔跤社.*|.*基情.*|.*天菜.*|.*大鸡.*|.*肌肉.*|.*薄肌.*|.*G片.*|.*术0.*|.*宏翔.*|.*男蜜.*|.*自制口.*|.*威廉.*|.*骚男.*|.*基友.*|.*美男子.*|.*鸡儿.*|.*口活王子.*|.*融化的冰.*|.*自己射.*|.*運動生.*|.*苏婧薇.*|.*社畜.*|.*纪练深.*|.*性别.*|.*淋尿.*|.*控射.*|.*熟女.*|.*CD.*|.*肥女.*|.*黄金.*|.*厕.*|.*老阿姨.*|.*排泄.*|.*臭脚.*|.*大便.*|.*马眼.*|.*聖水.*|.*尸.*|.*廁.*|.*圣水.*|.*豊満.*|.*黑妹.*|.*坦克.*|.*黑珍珠.*|.*黑屁股.*|.*黑人妹子.*|.*黑逼.*|.*孕妇.*|.*消遣.*|.*伦勃朗.*|.*拉丁裔.*|.*asmr.*|.*GOOD.*|.*奶奶.*|.*老妈.*|.*妈妈.*|.*儿子.*|.*爸爸.*|.*女儿.*|.*母子.*|.*父女.*|.*兄妹.*|.*亲姐.*|.*亲妹.*|.*VR.*|.*都丸富美.*|.*山本かを.*|.*守谷多香子.*|.*波多.*|.*飯岡.*|.*希島.*|.*希岛.*|.*深田.*|.*君島.*|.*君岛.*|.*田中瞳.*|.*向美奈.*|.*美原咲.*|.*华行香.*|.*藤泽丽.*|.*Hitomi.*|.*美乃雀.*|.*若菜奈.*|.*水野朝.*|.*後藤.*|.*明日花.*|.*卯水.*|.*由爱.*|.*JULIA.*|.*风间.*|.*濑圆.*|.*平冈.*|.*藤樱.*|.*藤泽.*|.*蓮実.*|.*藤沢麗央.*|.*木村玲.*|.*SILK.*|.*afchina.*|.*fway.*|.*rebd.*|.*mbdd.*|.*眼射.*|.*第.*期.*|.*π.*|.*寻花.*|.*尋花.*|.*探花.*|.*偷拍.*|.*偸拍.*|.*抄底.*|.*攝像頭.*|.*摄像头.*|.*第.*话.*|.*番系列.*|.*经典番.*|.*里番.*|.*老番.*|.*国漫.*|.*王者.*|.*斗罗.*|.*穿越.*|.*斗破.*|.*仙剑.*|.*小舞.*|.*MMD.*|.*MODEL.*|.*断雪.*|.*M男.*|.*女王.*|.*老太.*|.*黑肉.*|.*面基.*|.*情侣网黄.*|.*夫妻奴.*|.*田中.*|.*拒絕融化的冰.*|.*TW-.*|.*希格雯.*}}\";\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/latest-updates/?mode=async&function=get_block&block_id=list_videos_latest_videos_list&sort_by=post_date&from={{ Math.ceil(Math.random()*490) }}\n\n最新::/latest-updates/{{page}}/\n🔎搜索::/search/?mode=async&function=get_block&block_id=list_videos_videos_list_search_result&q={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}&from_videos={{page}}\n\n中字::/categories/e9e2cf61b2d2de7cac4b69af42fd7ad2/{{page}}/\n无码::/categories/eb396c61f96584d69566e3ae1700261a/{{page}}/\nFC2::/categories/fc2/{{page}}/\n传媒::/categories/av4/{{page}}/\n日韩::/categories/av/{{page}}/\n网红::/categories/b2babe520942b7cb8afcc89c54c8cd6b/{{page}}/\n国产::/categories/av3/{{page}}/\n福利姬::/categories/c7712cae3d7e542dcb33cba28619e569/{{page}}/\n主播::/categories/dbd2edcf3bd294a652d04d6756969787/{{page}}/\n欧美::/categories/av6/{{page}}/\n",
    "sourceComment": "https://www.ovoav.org/\nhttps://github.com/ovojav/ovojav-\n备用地址\nhttps://ovojav.org/\nhttps://gxpqsc.com/\nhttps://dlmmbjy.com/\nhttps://mfzy.net/\nhttps://myplink.com/\nhttps://31hc.net/\nhttps://shpywl4.com/\nhttps://81fan.com/\nhttps://zhaoweb.com/\nhttps://ovo13.cc/\n",
    "sourceGroup": "h",
    "sourceIcon": "https://i1.wp.com/i.postimg.cc/GpvjBZcR/105.gif",
    "sourceName": "❀OVO视频",
    "sourceUrl": "https://ovojav.org/",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: +20px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(93% + 0px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \n",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1098,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1770433515484,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".item",
    "ruleContent": "id.kt_player@all&&script@all",
    "ruleImage": "img@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": ".time@span",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://www.85xo.com/search/{{v=source.getVariable()}}/\n亚洲人::/tags/ya-zhou-ren/\n马来::/tags/ma-lai/\n日本::/tags/ri-ben/\n后入::/tags/hou-ru/\n大奶::/tags/da-nai/\n高潮::/tags/gao-chao/\n做爱::/tags/zuo-ai/\n马来西亚::/tags/ma-lai-zi-ya/\n妹妹::/tags/mei-mei/\n兔牙::/tags/tu-ya/\n妹::/tags/mei/\n巨乳::/tags/ju-ru/\n自慰::/tags/zi-wei/\n情侣::/tags/qing-lv/\n骚::/tags/sao/\n男友::/tags/nan-you/\n淫叫::/tags/yin-jiao/\n抓奶::/tags/zhua-nai/\n新加坡::/tags/xin-jia-po/\n内衣::/tags/nei-yi/\n肉棒::/tags/rou-bang/\n床上::/tags/chuang-shang/\n嫩逼::/tags/nei-bi/\n日本人::/tags/ri-ben-ren/\n鲍鱼::/tags/bao-yu/\n口::/tags/kou/\n少女::/tags/shao-nv/\n美女::/tags/mei-nv/\n台灣::/tags/tai-wan/\n可爱::/tags/ke-ai/\n偷拍::/tags/tou-pai/\n掰逼::/tags/bai-bi/\n喷水::/tags/pen-shui/\n脱衣::/tags/tuo-yi/\n屁眼::/tags/pi-yan/\n口交::/tags/kou-jiao/\n高中::/tags/gao-zhong/\n妹子::/tags/mei-zi/\n中國::/tags/zhong-guo/\n母狗::/tags/mu-gao/\n全裸::/tags/quan-luo/\n美臀::/tags/mei-tun/\n贫乳::/tags/pin-ru/\n逼::/tags/bi/\n内裤::/tags/nei-ku/\n爱::/tags/ai/\n自拍::/tags/zi-pai/\n学生::/tags/xue-sheng/\n呻吟::/tags/shen-yin/\n韓國::/tags/han-guo/\n泰國::/tags/tai-guo/\n越南::/tags/yue-nan/\n近拍::/tags/jin-pai/\n香港::/tags/xiang-gang/\n新馬::/tags/xin-ma/\n街拍::/tags/jie-pai/",
    "sourceComment": "https://www.85po.com",
    "sourceGroup": "h",
    "sourceIcon": "https://85tube.com/favicon.ico",
    "sourceName": "85Tube",
    "sourceUrl": "https://www.85xo.com/",
    "style": "{background-color:black;margin:0;padding:0;width:100%;}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1104,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article",
    "ruleContent": "<js>\nplayer=result.match(\"https.*m3u8\")[0]\nresult = \"{{@@title@text}}<video src=\\\"\" + player\n + \"\\\"width=\\\"100%\\\" height=\\\"auto\\\" controls=\\\"controls\\\" ></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result + \"</body></html>\"\n</js>",
    "ruleDescription": "",
    "ruleImage": "提取不到",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "",
    "ruleTitle": "class.post-card-title@text##热榜.*",
    "shouldOverrideUrlLoading": "class.post-content@tag.img!-1@html",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部::https://heiliao464.pro/<,page/{{page}}/>\n搜索::https://heiliao464.pro/search/{{source.getVariable()}}/",
    "sourceComment": "//多个视频不会写，故只能播放单视频的正文\n//期待大佬修改\n发邮件到heiliaobudayang@gmail.com",
    "sourceGroup": "h",
    "sourceIcon": "https://i03piccdn.sogoucdn.com/14b82bd552025ec1",
    "sourceName": "黑料",
    "sourceUrl": "https://heiliao461.pro/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1114,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.clearfix@tag.li",
    "ruleContent": "id.post@all",
    "ruleImage": "class.image-list-item-image@a@img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "class.nextpostslink@href",
    "rulePubDate": "class.image-list-item-regist-date@text",
    "ruleTitle": "class.image-list-item-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://zh.hentai-img.com/search/keyword/Genshin/\n排行::https://zh.hentai-img.com/ranking/\n萝莉::https://zh.hentai-img.com/search/tag/lolita",
    "sourceGroup": "h",
    "sourceIcon": "https://avatars.githubusercontent.com/u/49548316",
    "sourceName": "hentai-img",
    "sourceUrl": "https://zh.hentai-img.com/",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1118,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"Referer\":\"baseUrl\"}",
    "lastUpdateTime": 1769849169885,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.item",
    "ruleContent": "<js>\np=String(result.match(/url\":\"(.*.m3u8)\",\"u/)[1]).replace(/\\\\/g,\"\");\n pi=java.getString('h1@text')||1;\n`<html>\n    <head>\n        <meta name=\"viewport\" content=\"width=device-width\">\n        <style>\n            body {\n                margin: 0;\n                font-family: Arial, sans-serif;\n                background: linear-gradient(135deg, #ece9e6, #ffffff);\n                display: flex;\n                flex-direction: column;\n                align-items: center;\n                justify-content: flex-start;\n                padding: 20px;\n            }\n            .container {\n                width: 100%;\n                max-width: 800px;\n                background: #fff;\n                border-radius: 10px;\n                box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n                overflow: hidden;\n                margin-bottom: 20px;\n            }\n            h3 {\n                margin: 0;\n                padding: 10px 20px;\n                font-size: 0.9em;\n                background: #333;\n                color: #fff;\n                border-radius: 10px 10px 0 0;\n            }\n            .video-container {\n                width: 100%;\n                background: #000;\n                position: relative;\n            }\n            video {\n                width: 100%;\n                height: auto;\n                display: block;\n            }\n            .info-container {\n                padding: 20px;\n            }\n            .info-container p {\n                margin: 10px 0;\n                color: #555;\n            }\n            .info-container p span {\n                font-weight: bold;\n                color: #000;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"container\">\n        <h3>${pi}</h3>\n            <div class=\"video-container\">\n                <video controls autoplay name=\"media\" id=\"videoPlayer\">\n                    <source src=\"${p}\" type=\"video/mp4\">\n                </video>\n            </div>\n            <div class=\"info-container\">\n                \n            </div>\n        </div>\n\n        <script>\n            // 获取视频元素\n            const video = document.getElementById('videoPlayer');\n            let touchStartX = 0;\n            let touchStartY = 0;\n            let touchStartTime = 0;\n            let isLongPress = false;\n\n            // 滑动快进\n            video.addEventListener('touchstart', (e) => {\n                touchStartX = e.touches[0].clientX;\n                touchStartY = e.touches[0].clientY;\n                touchStartTime = Date.now();\n                isLongPress = false;\n            });\n\n            video.addEventListener('touchmove', (e) => {\n                const deltaX = e.touches[0].clientX - touchStartX;\n                const deltaY = e.touches[0].clientY - touchStartY;\n\n                // 如果是水平滑动，且未进入长按状态\n                if (Math.abs(deltaX) > Math.abs(deltaY) && !isLongPress) {\n                    const duration = video.duration;\n                    const seekTime = video.currentTime + (deltaX / 100); // 每滑动100px快进1秒\n                    video.currentTime = Math.min(Math.max(seekTime, 0), duration);\n                }\n            });\n\n            // 长按快进\n            video.addEventListener('touchend', (e) => {\n                const touchEndTime = Date.now();\n                const touchDuration = touchEndTime - touchStartTime;\n\n                // 如果长按时间超过500ms，进入长按快进状态\n                if (touchDuration > 500) {\n                    isLongPress = true;\n\n                    // 在长按状态下，根据滑动距离快进\n                    const deltaX = e.changedTouches[0].clientX - touchStartX;\n                    const duration = video.duration;\n                    const seekTime = video.currentTime + (deltaX / 100); // 每滑动100px快进1秒\n                    video.currentTime = Math.min(Math.max(seekTime, 0), duration);\n                } else {\n                    isLongPress = false;\n                }\n            });\n\n            // 防止默认行为（如页面滚动）\n            video.addEventListener('touchmove', (e) => {\n                e.preventDefault();\n            });\n        </script>\n    </body>\n</html>`;\n\n</js>",
    "ruleImage": "img@data-original",
    "ruleLink": "a@href##detail\\/(\\d+)\\.html##play/$1-1-1.html",
    "ruleNextPage": "page",
    "rulePubDate": "📅{{@class.added@text}}     👁{{@class.views@text}}",
    "ruleTitle": "class.title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/力争上游\n搜索::/vodsearch//{{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('双飞'):\"\"}}{{source.getVariable()}}----------{{page}}---.html\n国产精品::/vodtype/70-{{page}}.html\n日韩无码::/vodtype/56-{{page}}.html\n欧美激情::/vodtype/21-{{page}}.html\n伦理三级::/vodtype/23-{{page}}.html\n国产自拍::/vodtype/55-{{page}}.html\n探花约炮::/vodtype/58-{{page}}.html\n偷拍偷窥::/vodtype/60-{{page}}.html\n主播诱惑::/vodtype/63-{{page}}.html\n传媒剧情::/vodtype/64-{{page}}.html\n网曝吃瓜::/vodtype/57-{{page}}.html\n黑料吃瓜::/vodtype/69-{{page}}.html\n抖音短片::/vodtype/65-{{page}}.html\n日韩主播::/vodtype/61-{{page}}.html",
    "sourceComment": "源社区：@Mengteen\n特别感谢源社区@Buding 大佬的支持（感谢大佬帮忙完善了内容规则及请求头和链接规则）\n\n永久地址:91av50.cc（需要VPN）\n或者发送邮件到：av91bbb@yahoo.com 获取最新地址。",
    "sourceGroup": "h",
    "sourceIcon": "https://cdn.sshs.rip/7a/bc/7ab55ff4b790f9aecd73c6f1e14988bc.webp",
    "sourceName": "🎞91AV",
    "sourceUrl": "https://ttt.91av105.xyz",
    "style": "iframe{\n\theight:600px\n}\ntitle{\n\tdisplay:block\n}",
    "type": 0,
    "variableComment": "源变量搜索说明：请在设置源变量处输入搜索词后刷新即可。"
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1122,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; U; Android 13; zh-Hans-CN; PFJM10 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/135.0.4896.58 Quark/6.13.6.581 Mobile Safari/537.36\",\n\"Accept-Language\":\"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7\"}",
    "lastUpdateTime": 1768973521281,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".videos-box>div>div>div",
    "ruleContent": "<js>\nlet p = java.getString('iframe@src').match(/url=(.*\\.m3u8)/)[1];\nlet pi = java.getString('h1 b@text');\n`<html>\n    <head>\n        <meta name=\"viewport\" content=\"width=device-width\">\n        <style>\n            body {\n                margin: 0;\n                font-family: Arial, sans-serif;\n                background: linear-gradient(135deg, #ece9e6, #ffffff);\n                display: flex;\n                flex-direction: column;\n                align-items: center;\n                justify-content: flex-start;\n                padding: 20px;\n            }\n            .container {\n                width: 100%;\n                max-width: 800px;\n                background: #fff;\n                border-radius: 10px;\n                box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n                overflow: hidden;\n                margin-bottom: 20px;\n            }\n            h3 {\n                margin: 0;\n                padding: 10px 20px;\n                font-size: 0.9em;\n                background: #333;\n                color: #fff;\n                border-radius: 10px 10px 0 0;\n            }\n            .video-container {\n                width: 100%;\n                background: #000;\n                position: relative;\n            }\n            video {\n                width: 100%;\n                height: auto;\n                display: block;\n            }\n            .info-container {\n                padding: 20px;\n            }\n            .info-container p {\n                margin: 10px 0;\n                color: #555;\n            }\n            .info-container p span {\n                font-weight: bold;\n                color: #000;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"container\">\n        <h3>${pi}</h3>\n            <div class=\"video-container\">\n                <video controls autoplay name=\"media\" id=\"videoPlayer\">\n                    <source src=\"${p}\" type=\"video/mp4\">\n                </video>\n            </div>\n            <div class=\"info-container\">\n            </div>\n        </div>\n\n        <script>\n            // 获取视频元素\n            const video = document.getElementById('videoPlayer');\n            let touchStartX = 0;\n            let touchStartY = 0;\n            let touchStartTime = 0;\n            let isLongPress = false;\n\n            // 滑动快进\n            video.addEventListener('touchstart', (e) => {\n                touchStartX = e.touches[0].clientX;\n                touchStartY = e.touches[0].clientY;\n                touchStartTime = Date.now();\n                isLongPress = false;\n            });\n\n            video.addEventListener('touchmove', (e) => {\n                const deltaX = e.touches[0].clientX - touchStartX;\n                const deltaY = e.touches[0].clientY - touchStartY;\n\n                // 如果是水平滑动，且未进入长按状态\n                if (Math.abs(deltaX) > Math.abs(deltaY) && !isLongPress) {\n                    const duration = video.duration;\n                    const seekTime = video.currentTime + (deltaX / 100); // 每滑动100px快进1秒\n                    video.currentTime = Math.min(Math.max(seekTime, 0), duration);\n                }\n            });\n\n            // 长按快进\n            video.addEventListener('touchend', (e) => {\n                const touchEndTime = Date.now();\n                const touchDuration = touchEndTime - touchStartTime;\n\n                // 如果长按时间超过500ms，进入长按快进状态\n                if (touchDuration > 500) {\n                    isLongPress = true;\n\n                    // 在长按状态下，根据滑动距离快进\n                    const deltaX = e.changedTouches[0].clientX - touchStartX;\n                    const duration = video.duration;\n                    const seekTime = video.currentTime + (deltaX / 100); // 每滑动100px快进1秒\n                    video.currentTime = Math.min(Math.max(seekTime, 0), duration);\n                } else {\n                    isLongPress = false;\n                }\n            });\n\n            // 防止默认行为（如页面滚动）\n            video.addEventListener('touchmove', (e) => {\n                e.preventDefault();\n            });\n        </script>\n    </body>\n</html>`;\n\n</js>",
    "ruleImage": "img@data-src",
    "ruleLink": ".uk-card-body a@href",
    "ruleNextPage": "page",
    "ruleTitle": ".uk-card-body h5@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "熟女少妇::/list/0/{{page}}.html\n解说类::/list/1/{{page}}.html\n调教中文::/list/2/{{page}}.html\nVR专区::/list/3/{{page}}.html\n口交颜射::/list/4/{{page}}.html\n人兽性交::/list/5/{{page}}.html\n亚洲情色::/list/6/{{page}}.html\n户外野战::/list/7/{{page}}.html\n人妖视频::/list/8/{{page}}.html\n巨乳嫩逼::/list/9/{{page}}.html",
    "sourceGroup": "h",
    "sourceIcon": "https://i03piccdn.sogoucdn.com/14b82bd552025ec1",
    "sourceName": "🔞十八禁",
    "sourceUrl": "http://www.zbbiaopai.com",
    "style": "iframe{\n\theight:600px\n}\ntitle{\n\tdisplay:block\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1123,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://mmjs.1vkx.cn/public/1/assets/images/header/logo.png",
    "sourceName": "猫咪社区（请制作 不要VIP分类）",
    "sourceUrl": "https://www.bec9693b2cfd.com/shipin/list-%E4%BA%9A%E6%B4%B2%E6%97%A0%E7%A0%81-1.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 1125,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": ".posts-row@.posts-item||.posts-item",
    "ruleContent": "{{@@.wp-block-image@tag.img@src##\\n##\\$}}\n{{@@tag.figure@tag.img@src##\\n##\\$}}\n<js>\nli='\\n'\nlist=result.split('$')\nfor(i in list){\n\t\tli += '<li><img src=\"https://s2.1231216.xyz/uploads/2022/01/1643635257-dongtilogo.png\" data-src=\"'+list[i]+'\"></li>\\n'\n\t}\nli\n</js>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n\n\n<ul id=\"box\">\n{{result}}\n</ul>\n<h3>{{@@.entry-title@text}}</h3>\r\n<h6>{{@@.entry-date.0@text}}</h6>\n\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\n<script>\n\troot = document.getElementById('box')\n\tlazy = new IntersectionObserver(entires => {\n\t\tentires.forEach(item => {\n\t\t\tif(item.isIntersecting){\n\t\t\t\titem=item.target\n\t\t\t\titem.src=item.getAttribute('data-src')\n\t\t\t\tlazy.unobserve(item)\n\t\t\t}\n\t\t})\n\t}, {\n\t\troot: root,\n\t\tthreshold: [0],\n\t\trootMargin:\"0px 0px 500px 0px\"\n\t})\n\nimgs = document.getElementsByTagName('img')\nArray.from(imgs).forEach(item => {\n\t\tlazy.observe(item)\n\t})\n\n//查看大图插件\nnew Viewer(root,{title:false,interval:3000,url:'data-src'})\n</script>",
    "ruleDescription": "",
    "ruleImage": ".radius8@data-src",
    "ruleLink": ".item-heading@tag.a@href",
    "ruleNextPage": ".next@href",
    "rulePubDate": "tag.item@title",
    "ruleTitle": ".item-heading@tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "cos::https://dongti2023.com/category/tu/cos\r\n福利姬::https://dongti2023.com/category/tu/%e7%a6%8f%e5%88%a9%e5%a7%ac\n搜索::https://dongti2023.com/?s={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('白莉'):\"\"}}{{source.getVariable()}}&type=post\r\n写真::https://dongti2023.com/category/tu/xiezhen\r\n随机cos::https://dongti2023.com/category/tu/cos/page/{{ Math.ceil(Math.random()*94) }}\r\n随机福利::https://dongti2023.com/category/tu/%e7%a6%8f%e5%88%a9%e5%a7%ac/page/{{ Math.ceil(Math.random()*259) }}",
    "sourceComment": "有时封面图会是一个加载中的样式,这是网站的问题.他没有设置封面图",
    "sourceGroup": "h",
    "sourceIcon": "https://s2.1231218.xyz/uploads/2022/08/heart-2.png",
    "sourceName": "胴体的秘密",
    "sourceUrl": "https://dongti2023.com/",
    "style": "* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 1131,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": ".posts-row@.posts-item||.posts-item",
    "ruleContent": "{{@@.wp-block-image@tag.img@src##\\n##\\$}}\n{{@@tag.figure@tag.img@src##\\n##\\$}}\n<js>\nli='\\n'\nlist=result.split('$')\nfor(i in list){\n\t\tli += '<li><img src=\"https://s2.1231216.xyz/uploads/2022/01/1643635257-dongtilogo.png\" data-src=\"'+list[i]+'\"></li>\\n'\n\t}\nli\n</js>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n\n\n<ul id=\"box\">\n{{result}}\n</ul>\n<h3>{{@@.entry-title@text}}</h3>\r\n<h6>{{@@.entry-date.0@text}}</h6>\n\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\n<script>\n\troot = document.getElementById('box')\n\tlazy = new IntersectionObserver(entires => {\n\t\tentires.forEach(item => {\n\t\t\tif(item.isIntersecting){\n\t\t\t\titem=item.target\n\t\t\t\titem.src=item.getAttribute('data-src')\n\t\t\t\tlazy.unobserve(item)\n\t\t\t}\n\t\t})\n\t}, {\n\t\troot: root,\n\t\tthreshold: [0],\n\t\trootMargin:\"0px 0px 500px 0px\"\n\t})\n\nimgs = document.getElementsByTagName('img')\nArray.from(imgs).forEach(item => {\n\t\tlazy.observe(item)\n\t})\n\n//查看大图插件\nnew Viewer(root,{title:false,interval:3000,url:'data-src'})\n</script>",
    "ruleDescription": "",
    "ruleImage": ".radius8@data-src",
    "ruleLink": ".item-heading@tag.a@href",
    "ruleNextPage": ".next@href",
    "rulePubDate": "tag.item@title",
    "ruleTitle": ".item-heading@tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "cos::https://dongti233.com/category/tu/cos\r\n福利姬::https://dongti233.com/category/tu/%e7%a6%8f%e5%88%a9%e5%a7%ac\r\n搜索::https://dongti233.com/?s={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('白莉'):\"\"}}{{source.getVariable()}}&type=post\r\n写真::https://dongti233.com/category/tu/xiezhen\r\n随机cos::https://dongti233.com/category/tu/cos/page/{{ Math.ceil(Math.random()*94) }}\r\n随机福利::https://dongti233.com/category/tu/%e7%a6%8f%e5%88%a9%e5%a7%ac/page/{{ Math.ceil(Math.random()*259) }}",
    "sourceComment": "有时封面图会是一个加载中的样式,这是网站的问题.他没有设置封面图",
    "sourceGroup": "h",
    "sourceIcon": "https://s2.1231218.xyz/uploads/2022/08/heart-2.png",
    "sourceName": "胴体的秘密.back",
    "sourceUrl": "https://dongti233.com/",
    "style": "* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1135,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1769951828712,
    "loadWithBaseUrl": true,
    "loginUi": "[{\"name\": \"输入页码后，手动点击“刷新分类”(默认第一页)\",\"type\": \"text\"},\n{\"name\": \"🎁 更新书源\",\"type\": \"button\",\"action\":\"https://ycoo.net/thread-69451-1-1.html\",\"style\": {\n\"layout_flexGrow\": 1,\"layout_flexBasisPercent\": 0.4}},\n{\"name\": \"🌐 打开网站\",\"type\": \"button\",\"action\": \"web()\",\"style\": {\"layout_flexGrow\": 1,\"layout_flexBasisPercent\": 0.4}}]",
    "loginUrl": "function login() {}\nvar url1 = source.key;\nvar url2=\"\";\nvar startpage = (source.getLoginInfoMap())['输入页码后，手动点击“刷新分类”(默认第一页)'];\nvar startpage=startpage==\"\"||startpage=='undefined'||startpage==\"null\"?\"1\":startpage;\nsource.setVariable(startpage);\nfunction web() {\njava.startBrowser(url1,url1);\njava.toast('\\n🌐 '+url1);\n}",
    "preload": false,
    "ruleArticles": "@js:\nvar a=java.getElements('[class=\"stui-vodlist clearfix\"]@li');\nvar b=java.getString('[class=\"active num\"]@a@text');\n//java.log(b);\njava.toast('📚 第'+b+'页');\nresult=a;",
    "ruleContent": "<js>\nvar step1 = java.base64Decode('PGpzPgp2YXIgYT1zb3VyY2Uuc291cmNlQ29tbWVudDsKdmFyIGI9c291cmNlLmdldExvZ2luVWkoKTsKdmFyIGM9Jyc7CnZhciBkPWphdmEuYmFzZTY0RGVjb2RlKCc1TDJjNklDRjc3eWE1YVNjNXBpTzU2bTZDaTh2NXJxUTU2Uys1WXk2Nzd5YWFIUjBjSE02THk5NVkyOXZMbTVsZEFyaW1xRHZ1SS9rdUtYbnBvSGxpSWJrdXF2amdJSGxnSkxsalpibGo0cmt1N3ZrdlpYb3Y1M21zNVhvb1l6a3VMcnZ2SUhrdmIvbmxLam9nSVhvaDZyb29Zem1pYi9taTRYcG80N3BtYW5rdUk3b3RLUGt1N3NLUEMvbG83RG1tSTQrJyk7CnZhciBlPWphdmEuYmFzZTY0RGVjb2RlKCdhSFIwY0hNNkx5OXhiUzV4Y1M1amIyMHZjUzlvZFRsV2JrNW9jWEZCJyk7CnZhciBmPWphdmEuYmFzZTY0RGVjb2RlKCc0cHFnNzdpUElPUzdoZVdjcU9hNmtPZWt2dVdNdXVXUGtlVzRnMmgwZEhCek9pOHZlV052Ynk1dVpYVHZ2SXpsaGJia3U1YnBnSlRsdm9UbG5ZZmt1THJsZ0pMbGpaWT0nKTsKaWYoYS5pbmNsdWRlcyhkKSl7CnZhciBjb250ID0KamF2YS5iYXNlNjREZWNvZGUoJ1BHcHpQZ3AyWVhJZ2FIUnRiRDFxWVhaaExtZGxkRk4wY21sdVp5Z25Mbk4wZFdrdGNHeGhlV1Z5WDE5MmFXUmxiMEJ6WTNKcGNIUkFhSFJ0YkNjcE93cDJZWElnZFhKc01UMW9kRzFzTG0xaGRHTm9LQzhpZFhKc0lqb2lLR2gwZEhCelB6cGJYaUpkSzF3dWJUTjFPQ2tpTHlrN0NtbG1JQ2gxY213eElDWW1kWEpzTVZzeFhTa2dld3AyWVhJZ2RYSnNJRDBnZFhKc01Wc3hYUzV5WlhCc1lXTmxLQzljWEM5bkxDQW5KeWs3Q2k4dmFtRjJZUzVzYjJjb2RYSnNLVHNLZFhKc093cDlDbkE5ZFhKc093cDJZWElnZEQxcVlYWmhMbWRsZEZOMGNtbHVaeWduWTJ4aGMzTXVkR2wwYkdWQWRHVjRkQ2NwT3dwMllYSWdjMmxuYmpFZ1BTQnFZWFpoTG1KaGMyVTJORVJsWTI5a1pTZ25ORFJEVVRWaFUyTTFjR2xQTlRadE5qUTBRMUkxTlhGRk5YQkxkRFZ3VXlzMVdtMXZKeWs3Q25aaGNpQnphV2R1TWlBOUlHcGhkbUV1WW1GelpUWTBSR1ZqYjJSbEtDYzFUSFZHTlV3MllqVk1hWEUxVEhFMk5Vd3lMelUxVTI4MVRHbFBOVzl4UVRWd2VYWTFUSEZyTlhKWFFqYzNlVTAyU3lzek5WbDFMelZaYVVjMVRIRnlORFJEUWpWWlExTTFXVEpYTnpkNVFpY3BPd3AyWVhJZ2MybG5iak05YW1GMllTNWlZWE5sTmpSRVpXTnZaR1VvSnpSd2NXYzNOMmxRU1U5VE4yaGxWMk54VDJFMmEwOWxhM1oxVjAxMWRWZFFhMlZYTkdjeWFEQmtTRUo2VDJrNGRtVlhUblppZVRWMVdsaFVkblpKZW14b1ltSnJkVFZpY0dkS1ZHeDJiMVJzYmxsbWEzVk1jbXhuU2t4c2FscFpQU2NwT3dwZ1BDRkVUME5VV1ZCRklHaDBiV3crQ2p4b2RHMXNQZ284YUdWaFpENEtQRzFsZEdFZ1kyaGhjbk5sZEQwaWRYUm1MVGdpUGdvOGJXVjBZU0J1WVcxbFBTSjJhV1YzY0c5eWRDSWdZMjl1ZEdWdWREMGlkMmxrZEdnOVpHVjJhV05sTFhkcFpIUm9MQ0JwYm1sMGFXRnNMWE5qWVd4bFBURXVNQ0krQ2p4MGFYUnNaVDRrZTNSOVBDOTBhWFJzWlQ0S1BITjBlV3hsUGdvcWUyMWhjbWRwYmpvd08zQmhaR1JwYm1jNk1EdGliM2d0YzJsNmFXNW5PbUp2Y21SbGNpMWliM2g5Q21KdlpIbDdabTl1ZEMxbVlXMXBiSGs2TFdGd2NHeGxMWE41YzNSbGJTeHpZVzV6TFhObGNtbG1PMkpoWTJ0bmNtOTFibVE2STJZd1pqbG1aanR3WVdSa2FXNW5PakV3Y0hoOUNpNTJMV0p2ZUh0dFlYZ3RkMmxrZEdnNk9EQXdjSGc3YldGeVoybHVPakFnWVhWMGJ6dGlZV05yWjNKdmRXNWtPbmRvYVhSbE8ySnZjbVJsY2kxeVlXUnBkWE02TVRKd2VEdGliM2d0YzJoaFpHOTNPakFnTlhCNElERTFjSGdnY21kaVlTZ3dMREFzTUN3d0xqRXBPMjkyWlhKbWJHOTNPbWhwWkdSbGJuMEtMbWhsWVdSbGNudHdZV1JrYVc1bk9qRXljSGc3WW05eVpHVnlMV0p2ZEhSdmJUb3hjSGdnYzI5c2FXUWdJMlZsWlR0a2FYTndiR0Y1T21ac1pYZzdabXhsZUMxM2NtRndPbmR5WVhBN2FuVnpkR2xtZVMxamIyNTBaVzUwT25Od1lXTmxMV0psZEhkbFpXNTlDaTV6YVdkdWUySmhZMnRuY205MWJtUTZJMlU1WmpkbVpqdHdZV1JrYVc1bk9qWndlRHRpYjNKa1pYSXRjbUZrYVhWek9qWndlRHR0WVhKbmFXNHRZbTkwZEc5dE9qaHdlRHRtYjI1MExYTnBlbVU2TVRSd2VEdGpiMnh2Y2pvak1XRTNNMlU0TzNkcFpIUm9PakV3TUNWOUNpNTBhWFJzWlh0bWIyNTBMWE5wZW1VNk1UaHdlRHRtYjI1MExYZGxhV2RvZERvMk1EQTdiV0Z5WjJsdUxXSnZkSFJ2YlRvNGNIZzdkMmxrZEdnNk1UQXdKWDBLTG5SaFozTjdZMjlzYjNJNkl6Vm1Oak0yT0R0bWIyNTBMWE5wZW1VNk1UUndlRHRtYkdWNE9qRTdiV2x1TFhkcFpIUm9Pall3SlR0M2IzSmtMV0p5WldGck9tSnlaV0ZyTFdGc2JIMEtMblJwYldWN1kyOXNiM0k2SXpWbU5qTTJPRHRtYjI1MExYTnBlbVU2TVRSd2VEdDBaWGgwTFdGc2FXZHVPbkpwWjJoME8yWnNaWGd0WW1GemFYTTZNelVsZlFvdWRpMTNjbUZ3ZTNCdmMybDBhVzl1T25KbGJHRjBhWFpsTzNCaFpHUnBibWN0ZEc5d09qVTJMakkxSlR0aVlXTnJaM0p2ZFc1a09pTXdNREI5Q2k1MmFXUmxiM3R3YjNOcGRHbHZianBoWW5OdmJIVjBaVHQwYjNBNk1EdHNaV1owT2pBN2QybGtkR2c2TVRBd0pUdG9aV2xuYUhRNk1UQXdKWDBLTG1admIzUmxjbnR3WVdSa2FXNW5Pamh3ZUR0MFpYaDBMV0ZzYVdkdU9tTmxiblJsY2p0amIyeHZjam9qTldZMk16WTRPMlp2Ym5RdGMybDZaVG94TTNCNGZRb3VhVzVtYnkxaWIzaDdjR0ZrWkdsdVp6b3hOWEI0TzJadmJuUXRjMmw2WlRveE5IQjRPMnhwYm1VdGFHVnBaMmgwT2pFdU5uMEtMbWx1Wm04dFltOTRJSEI3YldGeVoybHVPamh3ZUNBd2ZRb3VhR2x1ZEh0d2IzTnBkR2x2YmpwaFluTnZiSFYwWlR0MGIzQTZOVEFsTzJ4bFpuUTZOVEFsTzNSeVlXNXpabTl5YlRwMGNtRnVjMnhoZEdVb0xUVXdKU3d0TlRBbEtUdGlZV05yWjNKdmRXNWtPbkpuWW1Fb01Dd3dMREFzTUM0M0tUdGpiMnh2Y2pvalptWm1PM0JoWkdScGJtYzZNVEp3ZUNBeU1IQjRPMkp2Y21SbGNpMXlZV1JwZFhNNk1qQndlRHRtYjI1MExYTnBlbVU2TVM0eGNtVnRPM290YVc1a1pYZzZNVEE3WkdsemNHeGhlVHB1YjI1bGZRb3VZMjl1ZEhKdmJITjdjRzl6YVhScGIyNDZZV0p6YjJ4MWRHVTdkRzl3T2pBN2JHVm1kRG93TzNkcFpIUm9PakV3TUNVN2FHVnBaMmgwT2pSd2VEdGlZV05yWjNKdmRXNWtPbkpuWW1Fb01qVTFMREkxTlN3eU5UVXNNQzR6S1R0NkxXbHVaR1Y0T2pVN2RISmhibk5wZEdsdmJqcHZjR0ZqYVhSNUlEQXVNM045Q2k1d2NtOW5jbVZ6YzN0b1pXbG5hSFE2TVRBd0pUdGlZV05yWjNKdmRXNWtPaU0wWVRsbFptWTdkMmxrZEdnNk1IMEtQQzl6ZEhsc1pUNEtQQzlvWldGa1BnbzhZbTlrZVQ0S1BHUnBkaUJqYkdGemN6MGlkaTFpYjNnaVBnbzhaR2wySUdOc1lYTnpQU0pvWldGa1pYSWlQZ284WkdsMklHTnNZWE56UFNKemFXZHVJaUJ6ZEhsc1pUMGlkR1Y0ZEMxaGJHbG5ianBqWlc1MFpYSTdjR0ZrWkdsdVp6bzFjSGdnTUNJK0NqeGthWFkrSkh0emFXZHVNWDA4TDJScGRqNEtQR1JwZGo0a2UzTnBaMjR5ZlR3dlpHbDJQZ284WkdsMlBpUjdjMmxuYmpOOVBDOWthWFkrQ2p3dlpHbDJQZ284WkdsMklHTnNZWE56UFNKMGFYUnNaU0krSkh0MGZUd3ZaR2wyUGdvOFpHbDJJR05zWVhOelBTSjBZV2R6SWo0OEwyUnBkajRLUEdScGRpQmpiR0Z6Y3owaWRHbHRaU0lnYVdROUluUnBiV1ZFYVhOd2JHRjVJajR3TURvd01DOHdNRG93TUR3dlpHbDJQand2WkdsMlBnbzhaR2wySUdOc1lYTnpQU0oyTFhkeVlYQWlQZ284WkdsMklHTnNZWE56UFNKamIyNTBjbTlzY3lJK1BHUnBkaUJqYkdGemN6MGljSEp2WjNKbGMzTWlJR2xrUFNKd2NtOW5jbVZ6YzBKaGNpSStQQzlrYVhZK1BDOWthWFkrQ2p4a2FYWWdZMnhoYzNNOUltaHBiblFpSUdsa1BTSm9hVzUwSWo3bHY2dm92NXZrdUswZ0ptZDBPeVpuZERzOEwyUnBkajRLUEhacFpHVnZJR05zWVhOelBTSjJhV1JsYnlJZ2FXUTlJbllpSUdOdmJuUnliMnh6SUhCc1lYbHphVzVzYVc1bFBnbzhjMjkxY21ObElITnlZejBpSkh0d2ZTSWdkSGx3WlQwaWRtbGtaVzh2YlhBMElqN21ncWpubW9UbXRZL29wNGpsbWFqa3VJM21sSy9taklGSVZFMU1OZWluaHVtaWtRbzhMM1pwWkdWdlBnbzhMMlJwZGo0S1BHUnBkaUJqYkdGemN6MGlabTl2ZEdWeUlqN211NUhsaXFqb3NJUG1sYlRvdjV2bHVxWWdmQ0RwbGIvbWpJa3k1WUNONllDZlBDOWthWFkrQ2p3dlpHbDJQZ284YzJOeWFYQjBQZ3AyWVhJZ2RpQTlJR1J2WTNWdFpXNTBMbWRsZEVWc1pXMWxiblJDZVVsa0tDZDJKeWs3Q25aaGNpQjBSR2x6Y0d4aGVTQTlJR1J2WTNWdFpXNTBMbWRsZEVWc1pXMWxiblJDZVVsa0tDZDBhVzFsUkdsemNHeGhlU2NwT3dwMllYSWdjRUpoY2lBOUlHUnZZM1Z0Wlc1MExtZGxkRVZzWlcxbGJuUkNlVWxrS0Nkd2NtOW5jbVZ6YzBKaGNpY3BPd3AyWVhJZ2FHbHVkQ0E5SUdSdlkzVnRaVzUwTG1kbGRFVnNaVzFsYm5SQ2VVbGtLQ2RvYVc1MEp5azdDblpoY2lCemRHRnlkRmdnUFNBd0xDQnpkR0Z5ZEZScGJXVWdQU0F3T3dwMllYSWdiRzl1WjFCeVpYTnpWR2x0WlhJN0NuWmhjaUJ6Wlc1emFYUnBkbWwwZVNBOUlEQXVNVHNLZG1GeUlHeHZibWRRY21WemMxUnBiV1VnUFNBMU1EQTdDblpoY2lCb2FXNTBSSFZ5WVhScGIyNGdQU0F5TURBd093cG1kVzVqZEdsdmJpQjFjR1JoZEdWVWFXMWxLQ2tnZXdwcFppQW9JWFl1WkhWeVlYUnBiMjRwSUhKbGRIVnlianNLZG1GeUlHMHhJRDBnVFdGMGFDNW1iRzl2Y2loMkxtTjFjbkpsYm5SVWFXMWxJQzhnTmpBcE93cDJZWElnY3pFZ1BTQk5ZWFJvTG1ac2IyOXlLSFl1WTNWeWNtVnVkRlJwYldVZ0pTQTJNQ2s3Q25aaGNpQnRNaUE5SUUxaGRHZ3VabXh2YjNJb2RpNWtkWEpoZEdsdmJpQXZJRFl3S1RzS2RtRnlJSE15SUQwZ1RXRjBhQzVtYkc5dmNpaDJMbVIxY21GMGFXOXVJQ1VnTmpBcE93cDBSR2x6Y0d4aGVTNTBaWGgwUTI5dWRHVnVkQ0E5SUcweElDc2dKem9uSUNzZ0tITXhJRHdnTVRBZ1B5QW5NQ2NnT2lBbkp5a2dLeUJ6TVNBcklDY3ZKeUFySUcweUlDc2dKem9uSUNzZ0tITXlJRHdnTVRBZ1B5QW5NQ2NnT2lBbkp5a2dLeUJ6TWpzS2NFSmhjaTV6ZEhsc1pTNTNhV1IwYUNBOUlDaDJMbU4xY25KbGJuUlVhVzFsSUM4Z2RpNWtkWEpoZEdsdmJpa2dLaUF4TURBZ0t5QW5KU2M3ZlFwMkxtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJb0ozUnBiV1YxY0dSaGRHVW5MQ0IxY0dSaGRHVlVhVzFsS1RzS2RpNWhaR1JGZG1WdWRFeHBjM1JsYm1WeUtDZHNiMkZrWldSdFpYUmhaR0YwWVNjc0lIVndaR0YwWlZScGJXVXBPd3AyTG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvSjNSdmRXTm9jM1JoY25RbkxDQm1kVzVqZEdsdmJpaGxLU0I3Q25OMFlYSjBXQ0E5SUdVdWRHOTFZMmhsYzFzd1hTNWpiR2xsYm5SWU93cHpkR0Z5ZEZScGJXVWdQU0JFWVhSbExtNXZkeWdwT3dwcFppQW9iRzl1WjFCeVpYTnpWR2x0WlhJcElHTnNaV0Z5VkdsdFpXOTFkQ2hzYjI1blVISmxjM05VYVcxbGNpazdDbWhwYm5RdWMzUjViR1V1WkdsemNHeGhlU0E5SUNkdWIyNWxKenNLYkc5dVoxQnlaWE56VkdsdFpYSWdQU0J6WlhSVWFXMWxiM1YwS0daMWJtTjBhVzl1S0NrZ2V3cDJMbkJzWVhsaVlXTnJVbUYwWlNBOUlESXVNRHNLYUdsdWRDNXpkSGxzWlM1a2FYTndiR0Y1SUQwZ0oySnNiMk5ySnpzS2MyVjBWR2x0Wlc5MWRDaG1kVzVqZEdsdmJpZ3BJSHNnYUdsdWRDNXpkSGxzWlM1a2FYTndiR0Y1SUQwZ0oyNXZibVVuT3lCOUxDQm9hVzUwUkhWeVlYUnBiMjRwTzMwc0lHeHZibWRRY21WemMxUnBiV1VwTzMwcE93cDJMbUZrWkVWMlpXNTBUR2x6ZEdWdVpYSW9KM1J2ZFdOb2JXOTJaU2NzSUdaMWJtTjBhVzl1S0dVcElIc0taUzV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BPd3BqYkdWaGNsUnBiV1Z2ZFhRb2JHOXVaMUJ5WlhOelZHbHRaWElwT3dwMllYSWdaR2xtWmxnZ1BTQmxMblJ2ZFdOb1pYTmJNRjB1WTJ4cFpXNTBXQ0F0SUhOMFlYSjBXRHNLZG1GeUlHTm9ZVzVuWlNBOUlHUnBabVpZSUNvZ2MyVnVjMmwwYVhacGRIa2dLaUIyTG1SMWNtRjBhVzl1SUM4Z01UQXdPd3AyTG1OMWNuSmxiblJVYVcxbElEMGdUV0YwYUM1dFlYZ29NQ3dnVFdGMGFDNXRhVzRvZGk1amRYSnlaVzUwVkdsdFpTQXJJR05vWVc1blpTd2dkaTVrZFhKaGRHbHZiaWtwT3dwemRHRnlkRmdnUFNCbExuUnZkV05vWlhOYk1GMHVZMnhwWlc1MFdEdDFjR1JoZEdWVWFXMWxLQ2s3ZlNrN0NuWXVZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ25kRzkxWTJobGJtUW5MQ0JtZFc1amRHbHZiaWdwSUhzS2RpNXdiR0Y1WW1GamExSmhkR1VnUFNBeExqQTdDbU5zWldGeVZHbHRaVzkxZENoc2IyNW5VSEpsYzNOVWFXMWxjaWs3ZlNrN0Nqd3ZjMk55YVhCMFBnbzhMMkp2WkhrK0Nqd3ZhSFJ0YkQ1Z0Nqd3Zhbk0rJyk7CnJlc3VsdCA9IGphdmEuZ2V0U3RyaW5nKGNvbnQpOwp9CmVsc2V7CmVycm9yPWphdmEuYmFzZTY0RGVjb2RlKCc0cHFnNzdpUElPYWpnT2ExaStXSXNPUzVwdWE2a09paXErYUJ0dWFFaitldm9lYVV1UXJpclpBZzZLKzM1WW1ONWI2QTVMMmM2SUNGNUxpNzZhRzE1cHUwNXBhdzVMbW01cnFRNzd5YUNtaDBkSEJ6T2k4dmVXTnZieTV1WlhRSzRxMlFJT2FRbk9lMG91ZVVxT2FJdCtXUWplKzhtdVdrbk9hWWp1ZXB1Zz09Jyk7CnJlc3VsdD1qYXZhLnRvYXN0KCdcbicrZXJyb3IpOwpyZXN1bHQ9J1xuJmxybTtcbicrZXJyb3I7Cn0KcmVzdWx0CjwvanM+');\nvar step2 = java.getString(step1);\nresult = step2\n</js>",
    "ruleImage": "[class=\"stui-vodlist__box\"]@a@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "ruleTitle": "[class=\"stui-vodlist__detail\"]@p@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\nvar start= source.getVariable();\nstart = (start == '' || start == 'undefined' || start=='null') ? '1' : start;\nvar next = parseInt(start) - 1;\n`日本片商::/vodtype/1-<${start},{{page+${next}}}>.html\n国产精品::/vodtype/2-<${start},{{page+${next}}}>.html\n精品推荐::/vodtype/3-<${start},{{page+${next}}}>.html\n成人动漫::/vodtype/26-<${start},{{page+${next}}}>.html\n三级伦理::/vodtype/4-<${start},{{page+${next}}}>.html\n欧美情色::/vodtype/5-<${start},{{page+${next}}}>.html\n日本无码::/vodtype/6-<${start},{{page+${next}}}>.html\n日本有码::/vodtype/7-<${start},{{page+${next}}}>.html\n中文字幕::/vodtype/8-<${start},{{page+${next}}}>.html\n童颜巨乳::/vodtype/9-<${start},{{page+${next}}}>.html\n性感人妻::/vodtype/10-<${start},{{page+${next}}}>.html\n强奸乱伦::/vodtype/11-<${start},{{page+${next}}}>.html\n丝袜OL::/vodtype/12-<${start},{{page+${next}}}>.html\n自拍偷拍::/vodtype/13-<${start},{{page+${next}}}>.html\n网曝系列::/vodtype/14-<${start},{{page+${next}}}>.html\n国产丝袜::/vodtype/15-<${start},{{page+${next}}}>.html\n明星换脸::/vodtype/16-<${start},{{page+${next}}}>.html\n国产乱伦::/vodtype/20-<${start},{{page+${next}}}>.html\n国产SM::/vodtype/21-<${start},{{page+${next}}}>.html\n国产人妻::/vodtype/22-<${start},{{page+${next}}}>.html\n探花嫖娼::/vodtype/23-<${start},{{page+${next}}}>.html\n麻豆传媒::/vodtype/24-<${start},{{page+${next}}}>.html\n主播秀色::/vodtype/25-<${start},{{page+${next}}}>.html\n同性恋::/vodtype/17-<${start},{{page+${next}}}>.html\n剧情介绍::/vodtype/18-<${start},{{page+${next}}}>.html`",
    "sourceComment": "<声明>\n//2025.10.15 作者：夜明空\n//源社区：https://ycoo.net\n⚠️严禁分享、倒卖及任何违法行为！使用者自行承担风险与责任\n</声明>\n\n💡 使用说明：\n①首次使用，先在登录界面打√；\n②登录界面输入新页码后需要点击“刷新分类”，下拉刷新不起作用；\n③访问不了就挂梯；",
    "sourceGroup": "h",
    "sourceIcon": "https://sbzytpimg1.com:3519/upload/vod/20251013-1/588b27352246e71bc1f8721ae2430bf9.jpg",
    "sourceName": "吾爱V-夜明空",
    "sourceUrl": "https://www.ikanav.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1137,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": " {\n\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "tag.article",
    "ruleContent": "@js:\nvar title = java.getElements(\".entry-title\");\n\nvar content = java.getElements(\".entry-content\");\n\nvar date = java.getElements(\".wpd-comment-date\");\n\nvar  text = java.getElements(\".wpd-comment-text\");\n\nvar author = java.getElements(\".wpd-comment-author\")\nvar list = [];\nfor(var i = 0;i < author.size();i++){\nlist[i] ='<p><a id = \"author\">'+author.get(i).text()+'</a><br><br><a id = \"text\">'+text.get(i).text()+'</a><br><br><a id = \"date\">'+date.get(i).text()+'</a><hr>'\n}\nvar clean = (content+list.join(\" \")).replace(/(\\<button.*\\】)|(\\<pre\\>\\<a.*pre\\>)/g,\"\");\n\nvar convert = clean.replace(/\\<pre\\>/g, \"\\<a id=\\\"convert\\\"\\>\").replace(/\\<\\/pre\\>/g,\"\\<\\/a\\>\")\n\nresult = title+convert",
    "ruleImage": "class.entry-content@tag.img@src",
    "ruleLink": "class.entry-title@tag.a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "@js:\nfunction myFormat(str) {\nvar d = new Date(str);\nvar weeks = d.getFullYear() + '/' + (d.getMonth() + 1) + '/' + d.getDate() + '  ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();\n\nreturn weeks\n}\nvar time = \"{{@@class.entry-date@datetime}}\";\n\nvar author = \"{{@@class.author@tag.a@text}}\"\nresult = myFormat(time)+'           '+author\n",
    "ruleTitle": "class.entry-title@tag.a.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://www.hacg.mom/wp/page\\/{{page}}?s={{source.getVariable()}}\n文章::https://www.hacg.mom/wp/age.html/page\\/{{page}}\n动画::https://www.hacg.mom/wp/anime.html/page\\/{{page}}\n漫画::https://www.hacg.mom/wp/comic.html/page\\/{{page}}\n游戏::https://www.hacg.mom/wp/game.html/page\\/{{page}}\n其他::https://www.hacg.mom/wp/book.html/page\\/{{page}}",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://s3.ax1x.com/2020/11/19/DnHXhq.png",
    "sourceName": "琉璃神社",
    "sourceUrl": "https://www.hacg.mom/wp/",
    "style": ".entry-title {\nfont-size:15;\nword-break:break-all;\ncolor:white;\ntext-align:center\n}\n\n\np {\nfont-size:12;\nword-break:break-all;\ncolor:#BBBBBB;\n}\n\n#date {\nfont-size:10;\ncolor:#BBBBBB;\n}\n\n#text {\nfont-size:10;\ncolor:#BBBBBB;\nword-break:break-all;\n}\n\n#author {\nfont-size:12;\nfont-weight: bold;\ncolor:#00ADFF;\n}\n\n#convert{\nfont-size:12;\ncolor:#BBBBBB;\nword-break:break-all;\n}\n\nhr{\nwidth:100%;\nheight:1px;\nmargin:0 auto;\nborder:0;\nbackground: #333;\nbackground-image: linear-gradient(to right, #ccc, #333, #ccc); \n}\n\nimg {\nwidth:100%;\nheight:auto;\nborder:solid;\n}\n\nbody {\nbackground:#0F0F0F;\n}\n\nh2 {\ncolor:#BBBBBB;\n}\n\nul {\ncolor:#BBBBBB;\n}\n",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1140,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; U; Android 13; zh-Hans-CN; PFJM10 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/135.0.4896.58 Quark/6.13.6.581 Mobile Safari/537.36\",\"Accept-Language\":\"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7\"}",
    "jsLib": "function getData() {\nvar Data = this.source.getVariable();\nif (Data == \"\" || Data == undefined) {\nreturn {};\n}\ntry {\nreturn JSON.parse(String(Data));\n} catch (e) {\nreturn {};\n}\n}\nfunction getPage() {\nvar data = getData.call(this);\nvar startPage = (data.page == \"\" || data.page == undefined) ? '' : parseInt(data.page)-1;\nreturn startPage;\n}\n\nfunction getUrl1() {\nvar url1='https://github.com/taiav/ab12286695';\nreturn url1;\n}\n\nfunction getUrl2() {\nvar url2=String(this.source.key).replace(/\\/$/,'');\nreturn url2;\n}",
    "lastUpdateTime": 1766887043311,
    "loadWithBaseUrl": true,
    "loginUi": "[{\"name\": \"发现起始页\",\"type\": \"text\"},\n{\"name\": \"🍭 发布页\",\"type\": \"button\",\"action\":\"publish()\",\"style\": {\n\"layout_flexGrow\": 1,\"layout_flexBasisPercent\": 0.25}},\n{\"name\": \"🌐 打开网站\",\"type\": \"button\",\"action\": \"web()\",\"style\": {\"layout_flexGrow\": 1,\"layout_flexBasisPercent\": 0.25}},\n{\"name\": \"🎁 更新书源\",\"type\": \"button\",\"action\":\"https://ycoo.net/thread-74672-1-1.html\",\"style\": {\n\"layout_flexGrow\": 1,\"layout_flexBasisPercent\": 0.25}}]",
    "loginUrl": "function login() {\nvar loginInfo = source.getLoginInfoMap() || {};\nvar pageInput = loginInfo['发现起始页'];\nif (!pageInput || pageInput == \"\" || pageInput == undefined || pageInput == null) {\npageInput = \"1\";\nloginInfo['发现起始页'] = pageInput;       source.putLoginInfo(JSON.stringify(loginInfo));\n}\nvar pageData = {\"page\": pageInput};\nsource.setVariable(JSON.stringify(pageData));\n}\nfunction web() {\njava.startBrowser(`{{getUrl2()}}`, baseUrl);\njava.toast('\\n🌐 '+getUrl2());\n}\nfunction publish() {\njava.startBrowser(`{{getUrl1()}}`, baseUrl);\njava.toast('\\n🍭'+getUrl1());\n}",
    "preload": false,
    "ruleArticles": "@js:\nvar list = java.getElements('.movie-card').toArray().filter(item => {\nvar tagText = String(item.select('.uk-tag').text());\nreturn !tagText.includes('其它');\n});\nvar last=parseInt(String(java.getString('.page-item.-1@a@href')).replace(/\\?page=(\\d+)/,'$1'));\n//java.log(last);\nvar base=parseInt(java.getString('.active@text'));\n//java.log(base);\nif (baseUrl.match(/search|random|hots/)) {\nlist;\n} else {\njava.toast('第'+base+'/'+last+'页');\nlist;\n}",
    "ruleContent": "<js>\nvar step1 = java.base64Decode('PGpzPgp2YXIgYT1zb3VyY2Uuc291cmNlQ29tbWVudDsKdmFyIGI9c291cmNlLmdldExvZ2luVWkoKTsKdmFyIGQ9amF2YS5iYXNlNjREZWNvZGUoJzVMMmM2SUNGNzd5YTVhU2M1cGlPNTZtNkNpOHY1cnFRNks2NjVaMmI3N3lhYUhSMGNITTZMeTk1WTI5dkxtNWxkQW92TCtTN2hlV2NxT2E2a09pdXV1V2RtK1dQa2VXNGcrUzVwdWE2a08rOGpPV0Z0dVM3bHVtQWxPVytoT1dkaCtTNHV1ZWJsK2VKaU8rOG13cmltcUR2dUkva3VLWG5wb0hsaUlia3VxdmpnSUhsZ0pMbGpaYmxqNHJrdTd2a3ZaWG92NTNtczVYb29Zemt1THJ2dklIa3ZiL25sS2pvZ0lYb2g2cm9vWXptaWIvbWk0WHBvNDdwbWFua3VJN290S1BrdTdzS1BDL2xvN0RtbUk0KycpOwp2YXIgZT1qYXZhLmJhc2U2NERlY29kZSgnVzNzaWJtRnRaU0k2SUNMbGo1SG5qckRvdGJmbHA0dnBvYlVpTENKMGVYQmxJam9nSW5SbGVIUWlmU3dLZXlKdVlXMWxJam9nSXZDZmphMGc1WStSNWJpRDZhRzFJaXdpZEhsd1pTSTZJQ0ppZFhSMGIyNGlMQ0poWTNScGIyNGlPaUp3ZFdKc2FYTm9LQ2tpTENKemRIbHNaU0k2SUhzS0lteGhlVzkxZEY5bWJHVjRSM0p2ZHlJNklERXNJbXhoZVc5MWRGOW1iR1Y0UW1GemFYTlFaWEpqWlc1MElqb2dNQzR5TlgxOUxBcDdJbTVoYldVaU9pQWk4SitNa0NEbWlaUGx2SURudlpIbnE1a2lMQ0owZVhCbElqb2dJbUoxZEhSdmJpSXNJbUZqZEdsdmJpSTZJQ0ozWldJb0tTSXNJbk4wZVd4bElqb2dleUpzWVhsdmRYUmZabXhsZUVkeWIzY2lPaUF4TENKc1lYbHZkWFJmWm14bGVFSmhjMmx6VUdWeVkyVnVkQ0k2SURBdU1qVjlmU3dLZXlKdVlXMWxJam9nSXZDZmpvRWc1cHUwNXBhdzVMbW01cnFRSWl3aWRIbHdaU0k2SUNKaWRYUjBiMjRpTENKaFkzUnBiMjRpT2lKb2RIUndjem92TDNsamIyOHVibVYwTDNSb2NtVmhaQzAzTkRZM01pMHhMVEV1YUhSdGJDSXNJbk4wZVd4bElqb2dld29pYkdGNWIzVjBYMlpzWlhoSGNtOTNJam9nTVN3aWJHRjViM1YwWDJac1pYaENZWE5wYzFCbGNtTmxiblFpT2lBd0xqSTFmWDFkJyk7CnZhciBmPWphdmEuYmFzZTY0RGVjb2RlKCc0cHFnNzdpUElPUzdoZVdjcU9hNmtPaXV1dVdkbStXUGtlVzRnK1M1cHVhNmtPKzhtbWgwZEhCek9pOHZlV052Ynk1dVpYVHZ2SXpsaGJia3U1YnBnSlRsdm9UbG5ZZmt1THJubTVmbmlZZz0nKTsKaWYoYS5pbmNsdWRlcyhkKSYmYi5pbmNsdWRlcyhlKSl7CnZhciBjb250ID0KamF2YS5iYXNlNjREZWNvZGUoJ1BHcHpQZ3AyWVhJZ2FIUnRiQ0E5SUdwaGRtRXVaMlYwVTNSeWFXNW5LQ2R6WTNKcGNIUXVMVEpBYUhSdGJDY3BPd3AyWVhJZ2FHUmZJRDBnYUhSdGJDNXRZWFJqYUNndmRtRnlYSE1yYUdSY2N5bzlYSE1xV3lJbllGMG9YR1FyS1ZzaUoyQmRMeWs3Q25aaGNpQm9aQ0E5SUNob1pGOGdKaVlnYUdSZld6RmRLU0EvSUdoa1gxc3hYU0E2SUNjeE1qZ3dKenNLZG1GeUlHRndhVjhnUFNCb2RHMXNMbTFoZEdOb0tDOTFjbXhjY3lvNlcxeDROakFuSWwwb0xpby9LVnRjZURZd0p5SmRMQzhwT3dwMllYSWdZWEJwSUQwZ0p5YzdDbWxtSUNoaGNHbGZJQ1ltSUdGd2FWOWJNVjBwSUhzS1lYQnBJRDBnWVhCcFgxc3hYUzV5WlhCc1lXTmxLQ2NrZTJoa2ZTY3NJR2hrS1RzS2ZRcDJZWElnY21WemNHOXVjMlVnUFNCcVlYWmhMbUZxWVhnb1oyVjBWWEpzTWlncElDc2dZWEJwS1RzS2RtRnlJR1JoZEdFZ1BTQktVMDlPTG5CaGNuTmxLSEpsYzNCdmJuTmxLVHNLZG1GeUlHMHpkVGdnUFNCblpYUlZjbXd5S0NrZ0t5QmtZWFJoTG0wemRUZzdDbTB6ZFRnN0Nqd3Zhbk0rJyk7CnJlc3VsdCA9IGphdmEuZ2V0U3RyaW5nKGNvbnQpOwp9IGVsc2UgewplcnJvcj1qYXZhLmJhc2U2NERlY29kZSgnNHBxZzc3aVBJT2FqZ09hMWkrV0lzT1M1cHVhNmtPaWlxK2FCdHVhRWorZXZvZWFVdVFyaXJaQWc2SyszNVltTjViNkE1TDJjNklDRjVMaTc2YUcxNXB1MDVwYXc1TG1tNXJxUUtPV0ZzK21YcmVXSGdPV01sdWFZdnVla3V1bVR2dWFPcFNudnZKb0thSFIwY0hNNkx5OTVZMjl2TG01bGRBcmlyWkFnNXBDYzU3U2k1NVNvNW9pMzVaQ043N3lhNWFTYzVwaU81Nm02Jyk7CnJlc3VsdD1qYXZhLmxvbmdUb2FzdCgnXG4nK2Vycm9yKTsKcmVzdWx0PSdcbiZscm07XG4nK2Vycm9yOwp9CnJlc3VsdAo8L2pzPg==');\nvar step2 = java.getString(step1);\nresult = step2\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".uk-tag@text",
    "ruleTitle": "h5@text",
    "searchUrl": "/search?q={{key}}&page={{page}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\nvar list = [];\nvar discoverUrl =getUrl2() + \"/discover\";\nvar tag = java.ajax(discoverUrl);\nif (tag) {\nvar doc = org.jsoup.Jsoup.parse(tag);\nvar container = doc.select(\".uk-container.uk-margin-top.videos-box\").first();\nif (container) {\nlist.push(\"随机::/random\");\nlist.push(\"热门::/hots\");\nvar h3List = container.select(\"h3.uk-heading-bullet\");\nfor (var i = 0; i < h3List.size(); i++) {\nvar h3 = h3List.get(i);\nvar categoryName = h3.text();\nlist.push(\"🔖​\"+categoryName + '🔖​' + \"::javascript:void(0)\");\nvar nextDiv = h3.nextElementSibling();\nif (nextDiv != null) {\nvar buttons = nextDiv.select(\".uk-button\");\nfor (var j = 0; j < buttons.size(); j++) {\nvar btn = buttons.get(j);\nvar title = btn.text();\nvar href = btn.attr(\"href\");\nvar url = href + \"?page=<{{page+getPage()}}>\";                  \nlist.push(title + \"::\" + url);\n}\n}\n}\n}\n} else {\njava.toast(\"🥺 加载失败~\");\n}\nlist.join(\"\\n\");\n</js>",
    "sourceComment": "<声明>\n//2025.12.28 作者：夜明空\n//源论坛：https://ycoo.net\n//仅在源论坛发布书源，其他途径均为盗版；\n⚠️严禁分享、倒卖及任何违法行为！使用者自行承担风险与责任\n</声明>\n\n//登录界面可输入页码，下拉刷新/刷新分类均可；\n\n//请使用洛娅橙改版阅读，是否最新无影响，本页面左上角的“类型”，看到有“视频”类就行可以：\nhttps://gitee.com/lyc486/legado/releases\n\n//永久域名(挂代理)：\nhttps://taiav.com/\n\t\n//发布页(挂代理)：\nhttps://github.com/taiav/ab12286695\n\n//备用域名\nhttps://taimadou.com/\nhttps://rapidtai.com/",
    "sourceGroup": "h",
    "sourceIcon": "https://rapidtai.com/favicon.ico",
    "sourceName": "Taiav\n☆夜明空☆",
    "sourceUrl": "https://rapidtai.com/",
    "type": 2
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1141,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "",
    "sourceName": "樱动漫",
    "sourceUrl": "https://www.yinghuadongman.tv/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1144,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; U; Android 13; zh-Hans-CN; PFJM10 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/135.0.4896.58 Quark/6.13.6.581 Mobile Safari/537.36\",\"Accept-Language\":\"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7\"}",
    "lastUpdateTime": 1766712856961,
    "loadWithBaseUrl": true,
    "loginUrl": "/",
    "preload": false,
    "ruleArticles": "@js:\njava.getElements('[class=\"item-col col\"]').toArray().filter(item => {\nreturn !\nitem.select('.time').text().includes('相');\n});",
    "ruleContent": "<js>\nvar step1 = java.base64Decode('PGpzPgp2YXIgYT1zb3VyY2Uuc291cmNlQ29tbWVudDsKdmFyIGQ9amF2YS5iYXNlNjREZWNvZGUoJzVMMmM2SUNGNzd5YTVhU2M1cGlPNTZtNkNpOHY1cnFRNks2NjVaMmI3N3lhYUhSMGNITTZMeTk1WTI5dkxtNWxkQW92TCtTN2hlV2NxT2E2a09pdXV1V2RtK1dQa2VXNGcrUzVwdWE2a08rOGpPV0Z0dVM3bHVtQWxPVytoT1dkaCtTNHV1ZWJsK2VKaU8rOG13cmltcUR2dUkva3VLWG5wb0hsaUlia3VxdmpnSUhsZ0pMbGpaYmxqNHJrdTd2a3ZaWG92NTNtczVYb29Zemt1THJ2dklIa3ZiL25sS2pvZ0lYb2g2cm9vWXptaWIvbWk0WHBvNDdwbWFua3VJN290S1BrdTdzS1BDL2xvN0RtbUk0KycpOwppZihhLmluY2x1ZGVzKGQpKXsKdmFyIGNvbnQgPQpqYXZhLmJhc2U2NERlY29kZSgnSTNSb2FYTlFiR0Y1WlhKQWMyOTFjbU5sUUhOeVl3PT0nKTsKcmVzdWx0ID0gamF2YS5nZXRTdHJpbmcoY29udCk7Cn0gZWxzZSB7CmVycm9yPWphdmEuYmFzZTY0RGVjb2RlKCc0cHFnNzdpUElPYWpnT2ExaStXSXNPUzVwdWE2a09paXErYUJ0dWFFaitldm9lYVV1UXJpclpBZzZLKzM1WW1ONWI2QTVMMmM2SUNGNUxpNzZhRzE1cHUwNXBhdzVMbW01cnFRS09XRnMrbVhyZVdIZ09XTWx1YVl2dWVrdXVtVHZ1YU9wU252dkpvS2FIUjBjSE02THk5NVkyOXZMbTVsZEFyaXJaQWc1cENjNTdTaTU1U281b2kzNVpDTjc3eWE1YVNjNXBpTzU2bTYnKTsKcmVzdWx0PWphdmEubG9uZ1RvYXN0KCdcbicrZXJyb3IpOwpyZXN1bHQ9J1xuJmxybTtcbicrZXJyb3I7Cn0KcmVzdWx0CjwvanM+');\nvar step2 = java.getString(step1);\nresult = step2\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "时长:{{@@.time@text}}   观看:{{@@.sub-desc.-1@text}}",
    "ruleTitle": ".title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新发布::/most-viewed/page{{page}}.html\n最多播放::/most-viewed/page{{page}}.html\n最高评价::/top-rated/page{{page}}.html\n最高评论::/most-discussed/page{{page}}.html\n成人影片::/videos/page{{page}}.html\nA片::/paysites/2/a%E7%89%87/page{{page}}.html\n性爱偷拍::/paysites/5/%E6%80%A7%E6%84%9B%E5%81%B7%E6%8B%8D%E6%88%90%E4%BA%BA%E5%BD%B1%E7%89%87/page{{page}}.html\n成人视频::/paysites/3/%E6%88%90%E4%BA%BA%E8%A6%96%E9%A0%BB/page{{page}}.html\n情人情婦::/channels/1/情人情婦/page{{page}}.html\n非洲色情::/channels/13/非洲色情/page{{page}}.html\n免費色情::/channels/24/免費色情/page{{page}}.html\n美女視頻::/channels/25/美女視頻/page{{page}}.html\n偷拍自拍::/channels/7/偷拍自拍/page{{page}}.html\n中國A片::/channels/22/中國a片/page{{page}}.html\n華人色情::/channels/8/華人色情/page{{page}}.html\n夫妻視頻::/channels/2/夫妻視頻/page{{page}}.html\n歐美A片::/channels/12/歐美a片/page{{page}}.html\n淫亂群P::/channels/3/淫亂群p/page{{page}}.html\n香港成人::/channels/19/香港成人/page{{page}}.html\n日本::/channels/9/日本/page{{page}}.html\n韓國::/channels/10/韓國/page{{page}}.html\n馬來西亞::/channels/23/馬來西亞/page{{page}}.html\n熟女人妻::/channels/26/熟女人妻/page{{page}}.html\n約炮一夜情::/channels/4/約炮一夜情/page{{page}}.html\n私拍視頻::/channels/21/私拍視頻/page{{page}}.html\n援交色情::/channels/5/援交色情/page{{page}}.html\n新加坡影片::/channels/20/新加坡影片/page{{page}}.html\n換妻A片::/channels/6/換妻a片/page{{page}}.html\n台灣影片::/channels/18/台灣影片/page{{page}}.html\n泰國::/channels/11/泰國/page{{page}}.html",
    "sourceComment": "<声明>\n//2025.12.26 作者：夜明空\n//源论坛：https://ycoo.net\n//仅在源论坛发布书源，其他途径均为盗版；\n⚠️严禁分享、倒卖及任何违法行为！使用者自行承担风险与责任\n</声明>\n\n//打不开就挂梯；\n\n//网站不支持模糊搜索，不写搜索规则了；\n\t\n//请使用洛娅橙改版阅读，否则无法播放视频；\n洛娅橙改版：\nhttps://gitee.com/lyc486/legado/releases",
    "sourceGroup": "h",
    "sourceIcon": "https://asianssex.com/templates/default_tube2016/images/logo.png",
    "sourceName": "AsiansSex\n☆夜明空☆",
    "sourceUrl": "https://asianssex.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1145,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.[*]",
    "ruleContent": "class.wookmark-initialised@img@html##src.*data-",
    "ruleImage": "t_url",
    "ruleLink": "g_url",
    "ruleNextPage": "page",
    "ruleTitle": "desc",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "热门::https://www.pornpics.com/search/srch.php?q=popular&limit=20&offset={{(page-1)*20}}\n搜索::https://www.pornpics.com/search/srch.php?q=关键字&limit=20&offset={{(page-1)*20}}\n丝袜::https://www.pornpics.com/search/srch.php?q=stocking&limit=20&offset={{(page-1)*20}}\r\n亚洲::https://www.pornpics.com/search/srch.php?q=asians&limit=20&offset={{(page-1)*20}}\r\n萝莉::https://www.pornpics.com/search/srch.php?q=lolita&limit=20&offset={{(page-1)*20}}\r\n青少年::https://www.pornpics.com/search/srch.php?q=teenager&limit=20&offset={{(page-1)*20}}\r\n白::https://www.pornpics.com/search/srch.php?q=white&limit=20&offset={{(page-1)*20}}\r\n自拍::https://www.pornpics.com/search/srch.php?q=Selfie&limit=20&offset={{(page-1)*20}}\r\n公开场合::https://www.pornpics.com/getchank2.php?rid=1&cat=102&limit=20&offset={{(page-1)*20}}\r\n肛::https://www.pornpics.com/search/srch.php?q=anus&limit=20&offset={{(page-1)*20}}\n",
    "sourceComment": "需VPN\n搜索自行替换关键字，只支持英文搜索\n<js>github@ifwlzs</js>",
    "sourceGroup": "h",
    "sourceIcon": "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F5a93370d-5604-4420-82cb-dea9f6bf5573%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1681571427&t=bd6d35c7eeb261f7d2cf98747331db22",
    "sourceName": "pornpics",
    "sourceUrl": "https://www.pornpics.com/",
    "style": "img{\n\twidth:100%;\n\theight:auto;\n\t}##github@ifwlzs",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1146,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773222833605,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "[class=\"box\"]@a",
    "ruleContent": "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<title>内容提取</title>\n<!-- v2025.05.10 -->\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<script src=\"https://code.jquery.com/jquery-3.6.0.min.js\"></script>\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.css\" />\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.js\"></script>\n<style>\n    body { font-family: Arial, sans-serif; font-size: 16px; }\n    #title, #page, #loading-status { margin: 0 auto; font-size: 20px; text-align: center; }\n    #description, #urls, #video-url, #video-sources, #messages { width: 100%; max-width: 800px; margin: 1.5px auto; font-size: 14px; text-align: left; word-wrap: break-word; white-space: pre-wrap; }\n    #text, #text :not(img), #text img + * { text-indent: 2em; width: 100%; font-size: 16px; line-height: 1.5em; margin-top: 0; margin-bottom: 0; word-wrap: break-word; white-space: pre-wrap; }\n    img, #text img { width: 100%; height: auto; display: block; margin-bottom: 1.5px; }\n    .flex-container { display: flex; justify-content: center; align-items: center; gap: 10px; margin: 1.5px 0; font-size: 14px; }\n    button, select { flex: 1 1 31%; padding: 3px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; cursor: pointer; background-color: #f9f9f9; transition: background-color 0.3s ease; margin: 1.5px; min-width: 0; font-size: 14px; }\n    #url-select, #video-source-select { flex: 1 1 100%; margin-left: 0; margin-right: 0; text-align: center; }\n    #video-element { width: 100%; height: auto; }\n    textarea { width: 100%; height: auto; min-height: 100px; box-sizing: border-box; resize: vertical; }\n    .error, .warn { color: red; }\n</style>\n</head>\n<body>\n    <h3 id=\"title\">{{@@title@text||h1.0@text||h2.0@text||.title.0@text}}</h3>\n    <p id=\"description\">{{@@.info.0@html||.jianjie@html}}</p>\n    <p id=\"page\" style=\"display:none;\">共<span id=\"total-pages\">1</span>页</p>\n    <p id=\"loading-status\" style=\"display:none;\"></p>\n\n    <div class=\"flex-container\" id=\"loading-buttons\" style=\"display:none;\">\n        <button id=\"prev-page-btn\">上一页</button>\n        <button id=\"next-page-btn\">下一页</button>\n        <button id=\"auto-load-btn\">自&nbsp;&nbsp;动</button>\n    </div>\n    \n    <div class=\"flex-container\">\n        <select id=\"url-select\" style=\"display:none;\"></select>\n    </div>\n    \n    <div class=\"flex-container\">\n        <button id=\"toggle-urls-btn\">显/隐网址</button>\n        <button id=\"toggle-messages-btn\">显/隐信息</button>\n        <button id=\"toggle-debug-btn\">显/隐调试</button>\n    </div>\n    <div id=\"urls\"></div>\n    <div id=\"messages\"></div>\n    <div id=\"debug-info\"></div>\n    <div id=\"video-url\"></div>\n    <div id=\"video-container\" style=\"display: none;\">\n        <video id=\"video-element\" controls preload=\"auto\" width=\"640\" height=\"264\">\n            <source id=\"video-source\" src=\"\" type=\"\">您的浏览器不支持 video 标签。\n        </video>\n    </div>\n    <div class=\"flex-container\" id=\"video-source-container\" style=\"display: none;\">\n        <select id=\"video-source-select\" onchange=\"updateVideoSource()\"></select>\n    </div>\n    <div id=\"images\"></div>\n    <div id=\"text\"></div>\n\n    <script>\n        // 配置对象，包含各种选择器、延迟时间等配置项\n        const config = {    \n            videoSelector: 'body', // 视频选择器\n            imgSelector: '.gridlane-box-inside img,.photos figure img,.content p img', // 图片选择器\n            textSelector: '#content', // 文本选择器\n            debugSelector: '#content, .page, .pager, .content, script', // 调试信息选择器\n            swapImageAttributes: false, // 是否交换图片属性\n            delayTime: 1500, // 延迟提取时间\n            retryDelayTime: 1500, // 重试加载延迟时间\n            maxLoadAttempts: 3, // 最大加载次数\n            autoLoading: false, // true自动模式，false单页模式\n            debugOnce: 0, // 只在特定索引输出一次调试信息\n            totalPagesText: '{{@@.page.0@a.-2@textNodes}}', // 总页码\n            urlSuffixToRemove: /\\.html$/, // 移除url后缀\n            pageUrlText: '{urlPrefix}_{i}.html', // 拼接URL模板        \n            ListMode: true, // true网址列表模式，false网址拼接模式    \n            initialUrls: `{{@@#sort-item-5.0@a@href}}`, // 网址\n            initialUrlsName: `{{@@#sort-item-5.0@a@span@text}}`, // 网址名称\n            sourceurl: '', // 来源URL前缀\n        };\n\n        let videoSources = []; // 存储视频源数组\n        let loadAttempts = {}; // 记录每个URL的加载尝试次数\n        let urls = []; // 存储所有页面的URL\n        let imageBox;\n        let textBox;\n        let currentPageIndex = 0; // 当前页面索引\n        let canLoadNextPage = true; // 控制是否可以加载下一页\n        let autoLoadInProgress = false; // 自动加载状态\n\n        // 构建URL列表\n        function buildUrls(totalPages, baseUrl) {\n            let initialUrlsArray = config.initialUrls.trim().split('\\n').filter(url => url.trim() !== '');\n            let initialUrlsNameArray = config.initialUrlsName.trim().split('\\n').filter(name => name.trim() !== '');\n\n            if (config.ListMode && initialUrlsArray.length > 0) {\n                if (initialUrlsArray.length !== initialUrlsNameArray.length) {\n                    $('#messages').append(`<span class=\"warn\">警告：initialUrls 和 initialUrlsName 的长度不匹配。</span><br>`);\n                }\n\n                urls = initialUrlsArray.map(url => {\n                    if (config.sourceurl && url.startsWith('/') && !/^https?:\\/\\//i.test(url)) {\n                        return config.sourceurl.replace(/\\/$/, '') + url;\n                    } else {\n                        return url;\n                    }\n                });\n\n                urls.forEach((url, index) => {\n                    const name = initialUrlsNameArray[index] || `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            } else {\n                if (totalPages === 1) {\n                    urls.push(baseUrl);\n                } else {\n                    urls.push(baseUrl);\n                    for (let i = 2; i <= totalPages; i++) {\n                        urls.push(config.pageUrlText.replace('{urlPrefix}', baseUrl.replace(config.urlSuffixToRemove, '').replace(/\\/$/, '')).replace('{i}', i));\n                    }\n                }\n\n                urls.forEach((url, index) => {\n                    const name = `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            }\n\n            $('#total-pages').text(urls.length);\n            toggleNavigationButtons();\n            toggleTotalPagesDisplay();\n        }\n\n        // 规范化URL\n        function normalizeUrl(url) {\n            if (typeof url !== 'string' || !url.trim()) {\n                return '';\n            }\n            const match = url.match(/['\"](.*?)['\"]/);\n            if (match && match[1]) {\n                url = match[1];\n            }\n\n            function processUrl(str) {\n                str = str.trim();\n                str = str.replace(/\\\\u[\\dA-F]{4}/gi, match => String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16)));\n                str = decodeURIComponent(str);\n                str = str.replace(/^http:\\/([^/])/, 'http://$1');\n                str = str.replace(/^https:\\/([^/])/, 'https://$1');\n                return str;\n            }\n            return processUrl(url);\n        }\n\n        // 清空容器内容\n        function clearContainers() {\n            $('#messages').empty();\n            $('#images').empty();\n            $('#text').empty();\n        }\n\n        // 更新图像源\n        function updateImageSrc(elements, shouldSwap) {\n            elements.each(function () {\n                const $this = $(this);\n                const attrsToUpdate = {};\n                if (shouldSwap) {\n                    ['data-original', 'data-src', 'data-url'].forEach(attr => {\n                        if ($this.attr(attr)) {\n                            attrsToUpdate['src'] = $this.attr(attr);\n                        }\n                    });\n                }\n                $this.attr(attrsToUpdate);\n            });\n            return elements;\n        }\n\n        // 切换导航按钮显示状态\n        function toggleNavigationButtons() {\n            if ($('#url-select option').length > 1 && !config.autoLoading) {\n                $('#loading-buttons').show();\n                $('#url-select').show();\n            } else {\n                $('#loading-buttons').hide();\n                $('#url-select').hide();\n            }\n        }\n\n        // 显示加载状态\n        function showLoadingStatus(pageNumber) {\n            const selectedOption = $('#url-select option:selected').text();\n            $('#loading-status').text(`正在加载：${selectedOption}`).show();\n        }\n\n        // 隐藏加载状态\n        function hideLoadingStatus() {\n            $('#loading-status').hide();\n        }\n\n        // 加载指定索引的内容\n        function loadContent(index) {\n            if (index < 0 || index >= urls.length || !canLoadNextPage) return;\n            canLoadNextPage = false;\n            currentPageIndex = index;\n            $('#url-select').val(index);\n            $('#messages').append(`<div>当前地址: <span class=\"warn\">${urls[index]}</span></div>`);\n            if (autoLoadInProgress) {\n                showLoadingStatus(index + 1);\n            }\n            $.ajax({\n                url: urls[index],\n                type: 'GET',\n                success: function (data) {\n                    try {\n                    const $data = $(data);\n                    let updatedHtmlContent = data.replace(/(['\"])(\\/\\/)(?!\\/)/g, '$1https://')\n                        .replace(/src=\"upload/gi, 'src=\"/upload')\n                        .replace(/style=[\"'][^'\"]+[\"']/gi, '')\n                        .replace(/\\\\\\//g, '/');\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(updatedHtmlContent, \"text/html\");\n\n                    if (config.debugOnce === index) {\n                        const debugElements = $(doc).find(config.debugSelector);\n                        if (debugElements.length > 0) {\n                            const debugContents = $('<pre>').html(debugElements.clone().wrapAll('<div/>').parent().html()).html();\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">${debugContents}</textarea></span>`);\n                        } else {\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">调试信息未提取到内容，请检查选择器！</textarea></span>`);\n                        }\n                    }\n                    // 方法1：提取视频\n                    const videoSources1 = [];\n                    const videoContents = $(doc).find(config.videoSelector);\n                    const videoTags = $(videoContents).find('video, source');\n                    videoTags.each(function() {\n                        const videosrc = $(this).attr('src') || \n                                     $(this).attr('data-src') || \n                                     $(this).attr('data-original') || '';\n                        \n                        if (videosrc) {\n                            videoSources1.push(videosrc);\n                        }\n                    });\n                    //反馈\n                    if (videoSources1.length > 0) {\n                        $('#messages').append(`<span>方法1，找到 ${videoSources1.length} 个视频。</span><br>`);\n                    }\n\n                    // 方法2：正则提取视频\n                    const regex = /['\"]https?[^'<>\"]+(m3u8|mp4|webm|ogg|flv|mp3|m4a|wav|ape|flac)([^'<>\"]+)?['\"]/gi;\n                    const matches = data.match(regex);\n                    const videoSources2 = [];\n\n                    if (matches) {\n                        const uniqueMatches = [...new Set(matches)];\n                    \n                        uniqueMatches.forEach(match => {\n                            const normalizedSrc = normalizeUrl(match.replace(/['\"]/g, ''));\n                            videoSources2.push(normalizedSrc);\n                        });\n                    }\n                    //反馈\n                    if (videoSources2.length > 0) {\n                        $('#messages').append(`<span>方法2，找到 ${videoSources2.length} 个视频。</span><br>`);\n                    }\n\n                    // 合并两种方法的结果\n                    videoSources = [...videoSources1, ...videoSources2];\n\n                    // 去重并标准化 URL\n                    const imageExtensions = /\\.(jpg|jpeg|png|gif|bmp|svg)$/i;\n\n                    videoSources = videoSources\n                                  .map(src => normalizeUrl(src.replace(/\\\\+/g, '')))\n                                  .filter(src => src) // 过滤空值\n                                  .filter(src => !imageExtensions.test(src)); // 移除图片地址\n                        \n                    videoSources = [...new Set(videoSources)];// 去重\n\n                    // 显示最终结果\n                    $('#messages').append(`<span>总共找到 ${videoSources.length} 个视频。</span><br>`);\n\n                    if (videoSources.length > 0) {\n                        $('#messages').append(`<span>成功提取到视频，找到 ${videoSources.length} 个视频。</span><br>`);\n                        videoSources.forEach((src, idx) => {\n                            $('#messages').append(`<div>视频地址:<span class=\"warn\"> ${src}</span><br></div>`);\n                            $('#video-source-select').append(`<option value=\"${idx}\">视频源 ${idx + 1}</option>`);\n                        });\n                    \n                        if (videoSources.length == 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').hide();\n                            updateVideoSource();\n                        } else if (videoSources.length > 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').show();\n                            updateVideoSource();\n                        } else {\n                            $('#video-container').hide();\n                            $('#video-url').hide();\n                            $('#video-source-container').hide();\n                        }\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未找到视频源。</span><br>`);\n                        $('#video-container').hide();\n                        $('#video-url').hide();\n                        $('#video-source-container').hide();\n                    }\n\n                    //提取图片\n                    const $imgContents = $(doc).find(config.imgSelector);\n                    const shouldSwap = config.swapImageAttributes;\n                    const newContents = updateImageSrc($imgContents.clone(), shouldSwap);\n                    $('#images').append(newContents).show();\n                    if (newContents.length > 0) {\n                        $('#messages').append(`<span>成功提取图片，共 ${newContents.length} 张。</span><br>`);\n                        newContents.each(function () {\n                            const imgSrc = $(this).attr('src') || $(this).attr('data-original') || $(this).attr('data-src') || $(this).attr('data-url');\n                            $('#messages').append(`<div>地址:<span class=\"warn\"> ${imgSrc}</span><br></div>`);\n                        });\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图片。</span><br>`);\n                    }\n\n                    //提取图片和文本\n                    const textContents = $(doc).find(config.textSelector).map(function () {\n                        const $currentContents = $(this);\n                        $currentContents.find('img + br, script, video, source, iframe').remove();\n                        $currentContents.html($currentContents.html().replace(/>\\s+/gi, '>').replace(/<\\/?br\\s*([^>]*)\\s*\\/?>/gi, '\\n').replace(/\\n+/g, '\\n'));\n                        return $currentContents.html();\n                    }).get().join('');\n                    if (textContents.trim()) {\n                        $('#text').append(`<span>${textContents}</span><br>`).show();\n                        $('#messages').append(`<span>成功提取图文。</span><br>`);\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图文。</span><br>`);\n                    }\n\n                    if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                        setTimeout(() => { \n                            canLoadNextPage = true;\n                            loadContent(currentPageIndex + 1); \n                        }, config.delayTime);\n                    } else {\n                        canLoadNextPage = true;\n                        if (autoLoadInProgress) {\n                            hideLoadingStatus();\n                        }\n                    }\n                } catch (parseError) {\n                    $('#messages').append(`<span class=\"error\">解析页面内容时发生错误: ${parseError.message}</span><br>`);\n                    handleLoadFailure(urls, index);\n                } finally {\n                    if (imageBox) imageBox.viewer.update();\n                    if (textBox) textBox.viewer.update();\n                }\n            },\n            error: function (jqXHR, textStatus, errorThrown) {\n                let errorMessage = `内容加载失败: ${urls[index]}`;\n                switch (textStatus) {\n                    case 'timeout':\n                        errorMessage += ', 请求超时';\n                        break;\n                    case 'abort':\n                        errorMessage += ', 请求被取消';\n                        break;\n                    case 'parsererror':\n                        errorMessage += ', 解析响应出错';\n                        break;\n                    default:\n                        errorMessage += `, 状态码: ${jqXHR.status}, 错误信息: ${errorThrown}`;\n                        break;\n                }\n                $('#messages').append(`<span class=\"error\">${errorMessage}</span><br>`);\n                handleLoadFailure(urls, index);\n                }\n            });\n        }\n\n        // 处理加载失败的情况\n        function handleLoadFailure(urls, index) {\n            if (!loadAttempts[urls[index]]) {\n                loadAttempts[urls[index]] = 1;\n            } else {\n                loadAttempts[urls[index]]++;\n            }\n            if (loadAttempts[urls[index]] <= config.maxLoadAttempts) {\n                const retryMessage = `第${index + 1}页加载失败，正在进行第${loadAttempts[urls[index]]}次加载！`;\n                $('#messages').append(`<span class=\"error\">${retryMessage}</span><br>`);\n                setTimeout(() => { \n                    canLoadNextPage = true;\n                    loadContent(index); \n                }, config.retryDelayTime);\n            } else {\n                const finalErrorMessage = `第${index + 1}页加载失败，已达到最大尝试次数(${config.maxLoadAttempts})！`;\n                $('#messages').append(`<span class=\"error\">${finalErrorMessage}</span><br>`);\n                if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                    setTimeout(() => { \n                        canLoadNextPage = true;\n                        loadContent(currentPageIndex + 1); \n                    }, config.delayTime);\n                } else {\n                    canLoadNextPage = true;\n                    if (autoLoadInProgress) {\n                        hideLoadingStatus();\n                    }\n                }\n            }\n        }\n\n        // 更新视频源\n        function updateVideoSource() {\n            const selectedIndex = parseInt(document.getElementById('video-source-select').value);\n            if (isNaN(selectedIndex) || !videoSources[selectedIndex]) {\n                $('#messages').append(`<span class=\"warn\">未找到有效的视频源。</span><br>`);\n                console.warn(\"Invalid or undefined video source:\", selectedIndex, videoSources);\n                return;\n            }\n\n            const selectedSource = videoSources[selectedIndex];\n            document.getElementById('video-url').textContent = `视频地址:\\n ${selectedSource}`;\n\n            const videoSourceElement = document.getElementById('video-source');\n            videoSourceElement.src = selectedSource;\n\n            const videoElement = document.getElementById('video-element');\n            videoElement.load();\n\n            $('#messages').append(`<span>更新视频源为: ${selectedSource}</span><br>`);\n            console.log(\"Updated video source to:\", selectedSource);\n        }\n\n        // 切换总页数显示状态\n        function toggleTotalPagesDisplay() {\n            if (urls.length > 1) {\n                $('#page').show();\n            } else {\n                $('#page').hide();\n            }\n        }\n\n        // 页面加载完成后执行的主要逻辑\n        $(document).ready(function () {\n            imageBox = document.getElementById('images');\n            textBox = document.getElementById('text');\n            if (imageBox && textBox) {\n                new Viewer(imageBox, { title: true, interval: 2000 });\n                new Viewer(textBox, { title: true, interval: 2000 });\n            }\n\n            const totalPagesText = config.totalPagesText;\n            const totalPages = parseInt(totalPagesText, 10) || 1;\n            const baseUrl = '{{baseUrl}}';\n\n            clearContainers();\n            $('#urls, #debug-info textarea, #video-url, #video-source-select').empty();\n            $('#urls, #messages, #debug-info, #video-url, #video-container, #video-source-container, #images, #text').hide();\n\n            buildUrls(totalPages, baseUrl);\n\n            const urlSelect = document.getElementById('url-select');\n            if (urlSelect.options.length > 0) {\n                urlSelect.value = '0'; \n\n                if (config.autoLoading) {\n                    autoLoadInProgress = true;\n                    for (let i = 0; i < urls.length; i++) {\n                        loadContent(i);\n                    }\n                } else {\n                    loadContent(0);\n                }\n            } else {\n                loadContent(0);\n            }\n\n            $('#url-select').change(function () {\n                clearContainers();\n                const selectedIndex = parseInt($(this).val());\n                loadContent(selectedIndex);\n            });\n            $('#prev-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex > 0) {\n                    loadContent(currentPageIndex - 1);\n                }\n            });\n            $('#next-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex < urls.length - 1) {\n                    loadContent(currentPageIndex + 1);\n                }\n            });\n            $('#auto-load-btn').click(function () {\n                autoLoadInProgress = true;\n                showLoadingStatus(1); \n                for (let i = currentPageIndex + 1; i < urls.length; i++) {\n                    loadContent(i);\n                }\n            });\n            $('#toggle-messages-btn').click(function () { $('#messages').toggle(); });\n            $('#toggle-urls-btn').click(function () { $('#urls').toggle(); });\n            $('#toggle-debug-btn').click(function () { $('#debug-info').toggle(); });\n        });\n    </script>\n</body>\n</html>",
    "ruleImage": "img@data-src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "em@text",
    "ruleTitle": "strong@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索🔍::/new/index.php?mod=search&kw={{source.getVariable()}}&page={{page}}\n最新::/new/index.php?page={{page}}\n国产自拍::/new/index.php?mod=forumdisplay&fid=10065&page={{page}}\n欧美极品::/new/index.php?mod=forumdisplay&fid=10066&page={{page}}\n日韩无码::/new/index.php?mod=forumdisplay&fid=10067&page={{page}}\n日韩有码::/new/index.php?mod=forumdisplay&fid=10068&page={{page}}\n中文字幕::/new/index.php?mod=forumdisplay&fid=10069&page={{page}}\n动漫精品::/new/index.php?mod=forumdisplay&fid=10070&page={{page}}\n极品萝莉::/new/index.php?mod=forumdisplay&fid=10071&page={{page}}\n强奸乱伦::/new/index.php?mod=forumdisplay&fid=10072&page={{page}}\n童颜巨乳::/new/index.php?mod=forumdisplay&fid=10073&page={{page}}\n三级自慰::/new/index.php?mod=forumdisplay&fid=10075&page={{page}}",
    "sourceComment": "xxrbs.com",
    "sourceGroup": "h",
    "sourceIcon": "https://xn--bwy.taojing62.buzz/upload/155042831.jpg",
    "sourceName": "日鲍社",
    "sourceUrl": "https://879.xxrbs.biz/",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1148,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1770433643536,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.stui-vodlist clearfix@tag.li||class.col-lg-4 col-md-3 col-sm-2 col-xs-1",
    "ruleContent": "class.player-box@all&&\nscript@all",
    "ruleImage": "a.0@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "text.下一页@href",
    "ruleTitle": "h4@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::/index.php/vod/search.html?wd={{source.getVariable()}}&submit=\n國產::/index.php/vod/type/id/1/page/{{page}}.html\n無碼::/index.php/vod/type/id/2/page/{{page}}.html\n有碼::/index.php/vod/type/id/3/page/{{page}}.html\n歐美::/index.php/vod/type/id/4/page/{{page}}.html\n動漫::/index.php/vod/type/id/5/page/{{page}}.html\n情色::/index.php/vod/type/id/6/page/{{page}}.html\n黑料::/index.php/vod/type/id/7/page/{{page}}.html",
    "sourceComment": "bmx56.com",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "youporn",
    "sourceUrl": "https://x139gc2uaksfi4.com:58011/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1149,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; U; Android 13; zh-Hans-CN; PFJM10 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/135.0.4896.58 Quark/6.13.6.581 Mobile Safari/537.36\",\"Accept-Language\":\"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7\"}",
    "jsLib": "function getData() {\nvar Data = this.source.getVariable();\nif (Data == \"\" || Data == undefined) {\nreturn {};\n}\ntry {\nreturn JSON.parse(String(Data));\n} catch (e) {\nreturn {};\n}\n}\nfunction getPage() {\nvar data = getData.call(this);\nvar startPage = (data.page == \"\" || data.page == undefined) ? '' : parseInt(data.page)-1;\nreturn startPage;\n}\nfunction getUrl2() {\nvar url2=String(this.source.key).replace(/\\/$/,'');\nreturn url2;\n}",
    "lastUpdateTime": 1769656586824,
    "loadWithBaseUrl": true,
    "loginUi": "[{\"name\": \"起始页码\",\"type\": \"text\"},\n{\"name\": \"🎁 更新书源\",\"type\": \"button\",\"action\":\"https://pc.sysbbs.com/thread-72602-1-1.html\",\"style\": {\n\"layout_flexGrow\": 1,\"layout_flexBasisPercent\": 0.4}},\n{\"name\": \"🌐 打开网站(登录)\",\"type\": \"button\",\"action\": \"web()\",\"style\": {\"layout_flexGrow\": 1,\"layout_flexBasisPercent\": 0.4}}]",
    "loginUrl": "function login() {\nvar loginInfo = source.getLoginInfoMap() || {};\nvar pageInput = loginInfo['起始页码'];\nif (!pageInput || pageInput == \"\" || pageInput == undefined || pageInput == null) {\npageInput = \"1\";\nloginInfo['起始页码'] = pageInput;       source.putLoginInfo(JSON.stringify(loginInfo));\n}\nvar pageData = {\"page\": pageInput};\nsource.setVariable(JSON.stringify(pageData));\n}\nfunction web() {\njava.startBrowser(`{{getUrl2()}}`, baseUrl);\njava.toast('\\n🌐 '+getUrl2());\n}",
    "preload": false,
    "ruleArticles": "@js:\nvar a=java.getElements('.col-xs-12');\nvar b=parseInt(java.getString('.page_number@value'));\n//java.log(b);\nvar c=parseInt(String(java.getString('.pagingnav@form@a.-2@text')));\n//java.log(c);\nif (baseUrl.match(/search_id/)) {\na;\n} else {\njava.toast('\\n📚 第'+b+'/'+c+'页');\na;\n}",
    "ruleContent": "<js>\nvar step1 = java.base64Decode('PGpzPgp2YXIgYT1zb3VyY2Uuc291cmNlQ29tbWVudDsKdmFyIGQ9amF2YS5iYXNlNjREZWNvZGUoJzVMMmM2SUNGNzd5YTVhU2M1cGlPNTZtNkNpOHY1cnFRNTZTKzVZeTY3N3lhYUhSMGNITTZMeTl3WXk1emVYTmlZbk11WTI5dEN1S2FvTys0aitTNHBlZW1nZVdJaHVTNnErT0FnZVdBa3VXTmx1V1BpdVM3dStTOWxlaS9uZWF6bGVpaGpPUzR1dSs4Z2VTOXYrZVVxT2lBaGVpSHF1aWhqT2FKdithTGhlbWpqdW1acWVTNGp1aTBvK1M3dXdvOEwrV2pzT2FZamo0PScpOwppZihhLmluY2x1ZGVzKGQpKXsKdmFyIGNvbnQgPQpqYXZhLmJhc2U2NERlY29kZSgnUEdwelBncDJZWElnYUhSdGJDQTlJR3BoZG1FdVoyVjBVM1J5YVc1bktDY2pjR3hoZVdWeVgyOXVaVUJ6WTNKcGNIUkFhSFJ0YkNjcE93cDJZWElnWlc1amIyUmxaRTFoZEdOb0lEMGdhSFJ0YkM1dFlYUmphQ2d2Wkc5amRXMWxiblJjTG5keWFYUmxYQ2h6ZEhKbGJtTnZaR1V5WENoYklpZGRLRnRlSWlkZEt5bGJJaWRkWENsY0tTOHBPd3AyWVhJZ1pXNWpiMlJsWkNBOUlHVnVZMjlrWldSTllYUmphQ0EvSUdWdVkyOWtaV1JOWVhSamFGc3hYU0E2SUc1MWJHdzdDbWxtSUNobGJtTnZaR1ZrS1NCN0NuWmhjaUJrWldOdlpHVmtJRDBnWkdWamIyUmxWVkpKUTI5dGNHOXVaVzUwS0dWdVkyOWtaV1FwT3dwMllYSWdjM0pqVFdGMFkyZ2dQU0JrWldOdlpHVmtMbTFoZEdOb0tDOXpjbU5jY3lvOVhITXFXeUluWFNoYlhpSW5YU3NwV3lJblhTOHBPd3BwWmlBb2MzSmpUV0YwWTJnZ0ppWWdjM0pqVFdGMFkyaGJNVjBwSUhzS2RtRnlJSFZ5YkNBOUlITnlZMDFoZEdOb1d6RmRPd3AyWVhJZ1ZWSk1JRDBnZFhKc0xuSmxjR3hoWTJVb0x5Wm1QVnRlSmwwcUx5d25KeWs3Q2xWU1REc0tmUXA5Q2p3dmFuTSsnKTsKcmVzdWx0ID0gamF2YS5nZXRTdHJpbmcoY29udCk7Cn0gZWxzZSB7CmVycm9yPWphdmEuYmFzZTY0RGVjb2RlKCc0cHFnNzdpUElPYWpnT2ExaStXSXNPUzVwdWE2a09paXErYUJ0dWFFaitldm9lYVV1UXJpclpBZzZLKzM1WW1ONWI2QTVMMmM2SUNGNUxpNzZhRzE1cHUwNXBhdzVMbW01cnFRS09XRnMrbVhyZVdIZ09XTWx1YVl2dWVrdXVtVHZ1YU9wU252dkpvS2FIUjBjSE02THk5dExuTjVjMkppY3k1amIyMEs0cTJRSU9hUW5PZTBvdWVVcU9hSXQrV1FqZSs4bXVXa25PYVlqdWVwdWc9PScpOwpyZXN1bHQ9amF2YS5sb25nVG9hc3QoJ1xuJytlcnJvcik7CnJlc3VsdD0nXG4mbHJtO1xuJytlcnJvcjsKfQpyZXN1bHQKPC9qcz4=');\nvar step2 = java.getString(step1);\nresult = step2\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "<js>\nvar html = String(java.getString('.well@text'));\nvar resultParts = [];\nvar time=java.getString('.duration@text');\nresultParts.push('🔁' + time);\n\nvar data = html.replace(/.*添加时间:([^作者]+)作者.*/, '$1').replace(/\\s*/g, '');\nif (data && data.trim() !== '' && data !== html) {\nresultParts.push('⏰' + data);\n}\nvar author = html.replace(/.*作者:([^热度]+)热度.*/, '$1');\nif (author && author.trim() !== '' && author !== html) {\nresultParts.push('👤' + author);\n}\nvar hotMatch = html.match(/.*热度:([^收藏]+)收藏.*/);\nif (hotMatch && hotMatch[1]) {\nvar hot = parseInt(hotMatch[1].trim());\nif (!isNaN(hot) && hot !== 0) {\nresultParts.push('🔥' + hot);\n}\n}\nresultParts.join(' ')\n</js>",
    "ruleTitle": ".video-title@text",
    "searchUrl": "/search_result.php?viewtype=basic&search_type=search_videos&search_id={{key}}&min_duration=10&page={{page}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::/v.php?next=watch&page=<{{page+getPage()}}>\n91原创::/v.php?category=ori&viewtype=basic&page=<{{page+getPage()}}>\n当前最热::/v.php?category=hot&viewtype=basic&page=<{{page+getPage()}}>\n本月最热::/v.php?category=top&viewtype=basic&page=<{{page+getPage()}}>\n10分钟以上::/v.php?category=long&viewtype=basic&page=<{{page+getPage()}}>\n20分钟以上::/v.php?category=longer&viewtype=basic&page=<{{page+getPage()}}>\n本月收藏::/v.php?category=tf&viewtype=basic&page=<{{page+getPage()}}>\n最近加精::/v.php?category=rf&viewtype=basic&page=<{{page+getPage()}}>\n高清::/v.php?category=hd&viewtype=basic&page=<{{page+getPage()}}>\n每月最热::/v.php?category=top&m=-1&viewtype=basic&page=<{{page+getPage()}}>\n本月讨论::/v.php?category=md&viewtype=basic&page=<{{page+getPage()}}>\n收藏最多::/v.php?category=mf&viewtype=basic&page=<{{page+getPage()}}>",
    "sourceComment": "<声明>\n//2025.12.5 作者：夜明空\n//源社区：https://pc.sysbbs.com\n⚠️严禁分享、倒卖及任何违法行为！使用者自行承担风险与责任\n</声明>\n\n💡 使用说明\n1、需要挂梯；\n2、登录界面可控制页码；\n3、请使用洛娅橙版阅读，否则没有搜索功能，也无法播放视频；如果先导入了旧版阅读，发现没有搜索功能(如果有搜索可无视本条说明)，需要到作者原帖下载初始订阅源再导入；\n4、登录后搜索才有结果，但是搜索有间隔，且有观看次数限制，不建议使用登录；\n5、注意一下最大页码，到最后一页还继续往下拉，会返回前面几章无限轮回；\n\n//洛娅橙魔改版阅读：\nhttps://gitee.com/lyc486/legado/releases\n\n//疑似永久域名：http://91p676.com\n//同类：\nhttps://a1019.9p58b.com/index.php\nhttps://f1011.a2507app.com/index.php",
    "sourceGroup": "h",
    "sourceIcon": "http://img95.699pic.com/xsj/1r/73/9i.jpg",
    "sourceName": "✈️91PORN\n☆夜明空☆",
    "sourceUrl": "https://f1011.a2507app.com/index.php",
    "type": 2,
    "variableComment": "❌ 请勿修改此处内容，请自行查看源注释"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1150,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://ps.ssl.qhmsg.com/t023694f5f40f3c6887.jpg",
    "sourceName": "小小影视",
    "sourceUrl": "https://m.007ys1.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1151,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://img2.baidu.com/it/u=1574304958,174721775&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=665",
    "sourceName": "蓝色导航（发布页）",
    "sourceUrl": "http://www.lanse.ml/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1152,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "http://metvb1.com/favicon.ico",
    "sourceName": "港剧网",
    "sourceUrl": "http://metvb1.com",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1154,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1770433649385,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.list",
    "ruleDescription": "$.vod_play_url\n@js:\nresult=result.replace('在线播放$','');\nresult=\"<video src=\\\"\"+result+\"\\\" width=\\\"100%\\\" controls height=\\\"285px\\\"></video>\";\nresult=\"<html><head><meat charset=\\\"utf-8\\\"><meat name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\"/><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\"+result+\"</body></html>\"",
    "ruleImage": "$.vod_pic",
    "ruleLink": "$.vod_id",
    "ruleNextPage": "page",
    "rulePubDate": "$.vod_time",
    "ruleTitle": "$.vod_name",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&wd=全裸&pg={{page}}\n推荐::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&pg={{page}}\n国产::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=1&pg={{page}}\n精品::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=31&pg={{page}}\n日无::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=2&pg={{page}}\n日有::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=3&pg={{page}}\n中字::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=20&pg={{page}}\n主播::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=21&pg={{page}}\n动漫::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=22&pg={{page}}\n欧美::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=23&pg={{page}}\n私拍::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=24&pg={{page}}\n丝袜::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=25&pg={{page}}\n人妻::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=26&pg={{page}}\n韩国::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=27&pg={{page}}\n香港::https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&t=28&pg={{page}}",
    "sourceGroup": "h",
    "sourceIcon": "https://z3.ax1x.com/2021/02/07/ytBxSK.gif",
    "sourceName": "©Tikhub",
    "sourceUrl": "https://shayuapi.com/api.php/provide/vod/at/json/?ac=detail&pg={{page}}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "coverDecodeJs": "function toByteArray(input) {\n  var out = new Packages.java.io.ByteArrayOutputStream();\n  var buffer = java.strToBytes('\\0'.repeat(4096));\n  var bytesRead;\n  while ((bytesRead = input.read(buffer)) != -1) {\n    out.write(buffer, 0, bytesRead);\n  }\n  return out.toByteArray();\n}\n\n(function() {\n  if (src.endsWith('.gif')) {\n    return toByteArray(result);\n  }\n\n  // 非GIF文件继续走AES解密逻辑\n  var keyBytes = \"102_53_100_57_54_53_100_102_55_53_51_51_54_50_55_48\"\n    .split('_')\n    .map(c => parseInt(c, 10));\n\n  var ivBytes = \"57_55_98_54_48_51_57_52_97_98_99_50_102_98_101_49\"\n    .split('_')\n    .map(c => parseInt(c, 10));\n\n  return java.createSymmetricCrypto(\n    \"AES/CBC/PKCS5Padding\", \n    keyBytes,\n    ivBytes\n  ).decrypt(result);\n})();",
    "customOrder": 1155,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 11; Pixel 3 XL Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.4988.0 Mobile Safari/537.36 SearchCraft/3.9.2 (Baidu; P1 11)\",\n\t\"referer\": \"{{baseUrl}}\"\n}",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n\n  // 触摸事件处理\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    \n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = '50%';\n    button.style.transform = 'translateY(-50%)';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n\n  // 旋转按钮（右侧）\n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    \n    // 保留当前的缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale})`;\n  }, { horizontal: 'right' });\n\n  // 缩放按钮（左侧）\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    \n    // 获取当前缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1)`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' });\n\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n  ];\n\n  seekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    button.addEventListener('click', () => {\n      video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n    });\n    buttonContainer.appendChild(button);\n  });\n\n  video.parentNode.appendChild(buttonContainer);\n}\n\n// 修改初始化逻辑，增加重试机制\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\n    const video = document.getElementById('video');\n    if (video) {\n      setupCustomPlayer(video);\n    } else if (retries < maxRetries) {\n      retries++;\n      setTimeout(tryInit, retryInterval);\n    }\n  };\n  tryInit();\n}\n// 使用重试机制初始化播放器\ninitPlayerWithRetry();",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".video-item",
    "ruleContent": "{{@@.player-container@script@all}}\n@js:\nvar scriptContent = result.match(/<script>([\\s\\S]*?)<\\/script>/)[1];\nvar decoded = eval(scriptContent.split('eval').join(''));\n\nvar fakeDoc = {write: function(h) { this.h = h; }};\neval(decoded.split('document').join('fakeDoc'));\n\nvar src = fakeDoc.h.match(/src=\"([^\"]*)\"/)[1];\nvar response = java.ajax(source.sourceUrl + src);\n\nif (response && response.indexOf('eval(function(p,a,c,k,e,d)') === 0) {\n    var innerDecoded = eval(response.split('eval').join(''));\n    var fakeDoc2 = {write: function(h) { this.h = h; }};\n    eval(innerDecoded.split('document').join('fakeDoc2'));\n    result = fakeDoc2.h.match(/data-url=\"([^\"]*)\"/)[1];\n} else {\n    result = response;\n}\n\n// 定义所有视频源\n//var sources = [`${result}`,`${play4}`];\nvar sources = [`${result}`];\n\n// 生成源按钮\nvar sourceButtons = \"\";\nif (sources.length > 1) {\n    for (var i = 0; i < sources.length; i++) {\n        sourceButtons += `<button class=\"source-btn\" data-index=\"${i}\">源${i+1}</button>`;\n    }\n}\n\nresult=`\n<html>  \n<head>  \n<meta charset=\"utf-8\">  \n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\">\n<meta name=\"referrer\" content=\"never\"/>\n<script src=\"https://s4.zstatic.net/ajax/libs/hls.js/1.6.13/hls.min.js\"></script>\n<style>\nhtml, body { text-align: center;margin: 0; padding: 0; width: 100%; overflow: hidden; }\n.source-container { position: absolute; top: 23px; right: 1px; z-index: 10; display: flex; gap: 1px; }\n.source-btn { color: #ff0; background: rgba(0,0,0,0.7); padding: 1px 5px; border-radius: 10px; font-size: 13px; border: none; cursor: pointer; }\n.source-btn.active { color: red !important; }\n</style>\n</head>  \n<body>  \n<div class=\"container\">\n    <div class=\"title\">{{@@h1@text##A片|日本AV}}</div>\n    ${sources.length > 1 ? `<div class=\"source-container\">${sourceButtons}</div>` : ''}\n    <video id=\"video\" width=\"100%\" height=\"91%\" controls autoplay muted loop></video>\n<script>\n    const video = document.getElementById('video');\n    const sources = ${JSON.stringify(sources)};\n    let hls = null;\n    let currentSource = 0;\n    \n    // 初始化HLS播放\n    function playHLS(url) {\n        if (hls) hls.destroy();\n        \n        if (Hls.isSupported()) {\n            hls = new Hls({\nenableSoftwareAES: true, // 强制软件解密\nforceKeyFrameOnDiscontinuity: true, // 关键帧恢复\n\nenableWorker: true, // 启用Web Worker提升性能\nlowLatencyMode: false, // 点播关闭低延迟模式\nbackBufferLength: 90, // 增加后缓冲长度，支持快速回退\n      \nmaxBufferLength: 30,  // 最大缓冲区长度(秒)\nmaxMaxBufferLength: 60,   // 绝对最大缓冲区长度\nmaxBufferSize: 60 * 1000 * 1000,  // 缓冲区大小限制(60MB)\nmaxBufferHole: 0.5, // 减少缓冲区空洞容忍度\n\nabrEwmaFastLive: 3.0,   // 快速ABR响应\nabrEwmaSlowLive: 9.0, // 慢速ABR响应  \nabrEwmaDefaultEstimate: 500000,  // 默认带宽估计(500kbps)\nabrMaxWithRealBitrate: true, // 基于实际码率进行ABR\nmaxFragLookUpTolerance: 0.25, // 片段查找容差\n\nfragLoadingMaxRetry: 6, // 片段加载重试次数\nfragLoadingRetryDelay: 1000, // 片段加载重试延迟\nmanifestLoadingMaxRetry: 3, // 清单加载重试次数\nlevelLoadingMaxRetry: 4, // 级别加载重试次数\n    });\n            hls.loadSource(url);\n            hls.attachMedia(video);\n        } else if (video.canPlayType('application/vnd.apple.mpegurl')) {\n            video.src = url;\n        }\n    }\n    \n    // 切换视频源\n    function switchSource(index) {\n        currentSource = index;\n        playHLS(sources[index]);\n        updateButtons();\n    }\n    \n    // 更新按钮状态\n    function updateButtons() {\n        document.querySelectorAll('.source-btn').forEach((btn, i) => {\n            btn.classList.toggle('active', i === currentSource);\n        });\n    }\n    \n    // 绑定按钮事件\n    document.querySelectorAll('.source-btn').forEach(btn => {\n        btn.addEventListener('click', () => switchSource(parseInt(btn.dataset.index)));\n    });\n    \n    // 播放第一个源\n    if (sources.length > 0) switchSource(0);\n</script>\n<script src=\"https://s4.zstatic.net/ajax/libs/crypto-js/4.1.1/crypto-js.min.js\"></script>\n<script>\n// 密钥配置\nconst KEY_STR = \"102_53_100_57_54_53_100_102_55_53_51_51_54_50_55_48\";\nconst IV_STR = \"57_55_98_54_48_51_57_52_97_98_99_50_102_98_101_49\";\n\nconst key = CryptoJS.enc.Utf8.parse(\n  KEY_STR.split('_').map(c => String.fromCharCode(parseInt(c, 10))).join('')\n);\nconst iv = CryptoJS.enc.Utf8.parse(\n  IV_STR.split('_').map(c => String.fromCharCode(parseInt(c, 10))).join('')\n);\n\n// ArrayBuffer转Base64\nasync function ab2b64(buffer) {\n  return new Promise(resolve => {\n    const reader = new FileReader();\n    reader.onload = () => resolve(reader.result.split(',')[1]);\n    reader.readAsDataURL(new Blob([buffer]));\n  });\n}\n\n// 简化后的解密函数\nasync function decryptImageToBlob(url) {\n  const response = await fetch(url, { mode: 'cors' });\n  const buffer = await response.arrayBuffer();\n  const base64Data = await ab2b64(buffer);\n\n  const decrypted = CryptoJS.AES.decrypt(\n    base64Data,\n    key,\n    { iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }\n  );\n\n  const decryptedBytes = new Uint8Array(\n    decrypted.toString(CryptoJS.enc.Latin1)\n      .split('')\n      .map(c => c.charCodeAt(0))\n  );\n\n  return URL.createObjectURL(new Blob([decryptedBytes], { type: 'image/jpeg' }));\n}\n\n// 直接执行解密设置\nwindow.addEventListener('DOMContentLoaded', () => {\n  const video = document.getElementById('video');\n  const originalPoster = \"${java.get('pic')}\";\n  \n  decryptImageToBlob(originalPoster).then(decryptedUrl => {\n    video.poster = decryptedUrl;\n  });\n});\n</script>\n</div>\n</body>  \n</html>\n`;",
    "ruleImage": "{{@@img@data-src}}\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "{{@@a.0@href}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@img@data-src##\\/(\\d{8})\\/##$1##}}  ⏱️{{@@.text-sm.0@text}} ",
    "ruleTitle": "@js:\nif (/广告|禁漫/.test(`{{@@.text-sm@text}}`)) {\n    result = \"\";\n} else {\n    result = \"{{@@img@alt##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*伪男.*|.*人妖.*|.*男同.*|.*狼狗.*|.*奶狗.*|.*鲜肉.*|.*帅哥.*|.*正装.*|.*猛1.*|.*ZKtop1.*|.*体育生.*|.*大屌.*|.*双性.*|.*男男.*|.*直男.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*女性向.*|.*骚0.*|.*poop.*|.*娘娘腔.*|.*变性.*|.*TGirls.*|.*鸡巴.*|.*阴茎.*|.*男奴.*|.*奴男.*|.*同志.*|.*苏木.*|.*西装.*|.*骚受.*|.*QS.*|.*Peter.*|.*摔跤社.*|.*基情.*|.*天菜.*|.*大鸡.*|.*肌肉.*|.*薄肌.*|.*G片.*|.*术0.*|.*宏翔.*|.*男蜜.*|.*自制口.*|.*威廉.*|.*骚男.*|.*基友.*|.*美男子.*|.*鸡儿.*|.*口活王子.*|.*融化的冰.*|.*自己射.*|.*運動生.*|.*苏婧薇.*|.*社畜.*|.*纪练深.*|.*性别.*|.*淋尿.*|.*控射.*|.*熟女.*|.*CD.*|.*肥女.*|.*黄金.*|.*厕.*|.*老阿姨.*|.*排泄.*|.*臭脚.*|.*大便.*|.*马眼.*|.*聖水.*|.*尸.*|.*廁.*|.*圣水.*|.*豊満.*|.*黑妹.*|.*坦克.*|.*黑珍珠.*|.*黑屁股.*|.*黑人妹子.*|.*黑逼.*|.*孕妇.*|.*消遣.*|.*伦勃朗.*|.*拉丁裔.*|.*asmr.*|.*GOOD.*|.*奶奶.*|.*老妈.*|.*妈妈.*|.*儿子.*|.*爸爸.*|.*女儿.*|.*母子.*|.*父女.*|.*兄妹.*|.*亲姐.*|.*亲妹.*|.*VR.*|.*都丸富美.*|.*山本かを.*|.*守谷多香子.*|.*波多.*|.*飯岡.*|.*希島.*|.*希岛.*|.*深田.*|.*君島.*|.*君岛.*|.*田中瞳.*|.*向美奈.*|.*美原咲.*|.*华行香.*|.*藤泽丽.*|.*Hitomi.*|.*美乃雀.*|.*若菜奈.*|.*水野朝.*|.*後藤.*|.*明日花.*|.*卯水.*|.*由爱.*|.*JULIA.*|.*风间.*|.*風間.*|.*濑圆.*|.*平冈.*|.*藤樱.*|.*藤泽.*|.*蓮実.*|.*藤沢麗央.*|.*木村玲.*|.*SILK.*|.*afchina.*|.*fway.*|.*rebd.*|.*mbdd.*|.*眼射.*|.*水果派.*|.*解说.*|.*第.*期.*|.*π.*|.*寻花.*|.*尋花.*|.*探花.*|.*偷拍.*|.*偸拍.*|.*抄底.*|.*攝像頭.*|.*摄像头.*|.*第.*话.*|.*番系列.*|.*经典番.*|.*里番.*|.*老番.*|.*国漫.*|.*王者.*|.*斗罗.*|.*穿越.*|.*斗破.*|.*仙剑.*|.*小舞.*|.*MMD.*|.*MODEL.*|.*断雪.*|.*M男.*|.*女王.*|.*老太.*|.*黑肉.*|.*面基.*|.*情侣网黄.*|.*夫妻奴.*|.*田中.*|.*梦梦.*|.*刘玥.*|.*mb.*|.*MB系列.*|.*川怜子.*|.*NINE.*|.*婆婆.*|.*姫野.*|.*肉弹.*|.*L罩杯.*|.*黑木.*|.*爱泽沙罗.*|.*瞳美.*|.*望月绫.*|.*藤森里.*}}\";\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/av/new/{{ Math.ceil(Math.random()*3160) }}\n最新::/av/new?o=u&page={{page}}\n🔎AV搜::/av/search?search={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}&page={{page}}\n🔎视频搜::/video/search?search={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}&page={{page}}\n\n丝袜::/av/tag?tag=丝袜\n强奸::/av/tag?tag=强奸\n潮吹::/av/tag?tag=潮吹\n黑人::/av/tag?tag=黑人\n巨汉::/av/tag?tag=巨汉\n\n\n\n",
    "sourceComment": "https://github.com/kissav12/douyin\nhttps://zz.douyin18.com/\nhttps://fbhhnyhm.top/\n备用地址\nhttps://among.oaqoqjep.cc/\n\n\n{{bhost()}}\n@js:\nbhost() + result",
    "sourceGroup": "h",
    "sourceIcon": "https://i1.wp.com/i.postimg.cc/GpvjBZcR/105.gif",
    "sourceName": "🌈抖阴AV   S",
    "sourceUrl": "https://www.jtupsta.cc/",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: +20px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(93% + 0px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \n",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1160,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1770433651775,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": ".item",
    "ruleContent": "id.kt_player@all&&script@all\n@js:\nresult=result.replace(/src=.*?js\"/g,'').replace(/\\n/g,'').replace(/<div class=\"top-links\">.*<\\/nav>/,'').replace(/<div class=\"sponsor.*/,'')",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": ".added@text",
    "ruleTitle": ".title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "破壞版::https://tktube.com/categories/454545388bfe05b5b43cdc4fb9496ac6/\n國產::https://tktube.com/categories/dcfdf51a95d382c8d30e69a5c11a8d91/\n韓國::https://tktube.com/categories/korean-bj-dance/\n中文字幕::https://tktube.com/categories/8a0059a17039887e9a354fe90e91c1c8/\n日本無碼::https://tktube.com/categories/7c26fad3901898582e98669f503d20de/\n日本有碼::https://tktube.com/categories/d7925a1dc9f80c4da5a47d8bf0ffb1d6/\nFC2-PPV::https://tktube.com/categories/fc2/\n歐美::https://tktube.com/categories/280fb8fa3ac78f44611a041dd5e394a5/\n寫真::https://tktube.com/categories/6965207df7870386905f6ee14c32f389/\nMGS動畫::https://tktube.com/categories/mgs/\n動畫::https://tktube.com/categories/98d0e76bc8de76ab8abed00e7d50a7b4/\n",
    "sourceGroup": "h",
    "sourceIcon": "https://z3.ax1x.com/2021/05/04/gnLfmD.png",
    "sourceName": "©TkTube",
    "sourceUrl": "https://tktube.com/",
    "style": "video{width:100%}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1172,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "<js>\nheaders={\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36 EdgA/127.0.0.0\",\n    \"Referer\": String(source.getKey()).replace(/(.*\\/\\/[a-z0-9.-]+).*/, '$1')\n}\nJSON.stringify(headers);\n</js>",
    "injectJs": "const video = document.getElementById('video');\nlet isDragging = false;\nlet startX = 0;\nlet startTime = 0;\n\n// 手势滑动快进\nvideo.addEventListener('touchstart', (e) => {\n    isDragging = true;\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    video.pause();\n});\n\nvideo.addEventListener('touchmove', (e) => {\n    if (!isDragging) return;\n    const dx = e.touches[0].clientX - startX;\n    const change = (dx / video.clientWidth) * video.duration;\n    video.currentTime = Math.min(Math.max(startTime + change, 0), video.duration);\n});\n\nvideo.addEventListener('touchend', () => {\n    if (isDragging) {\n        video.play();\n        isDragging = false;\n    }\n});\n\n// 播放速度倍数\nvideo.playbackRate = 1.25;\n\n// 创建按钮的通用函数\nfunction createButton(text, onClick, position) {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = '50%';\n    button.style.transform = 'translateY(-50%)';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '20px';\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n}\n\n// 旋转按钮\ncreateButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    video.style.transform = `rotate(${newRotation}deg) scale(${video.style.transform.match(/scale\\(([^)]+)\\)/)?.[1] || 1})`;\n}, { horizontal: 'right' });\n\n// 缩放按钮\nlet zoomCount = 0;\ncreateButton('+', () => {\n    const currentTransform = video.style.transform || 'rotate(0deg) scale(1)';\n    const scale = parseFloat(currentTransform.match(/scale\\(([^)]+)\\)/)?.[1] || 1);\n    const newScale = zoomCount < 4 ? scale * 1.25 : 1;\n    zoomCount = zoomCount < 4 ? zoomCount + 1 : 0;\n    video.style.transform = `rotate(${video.getAttribute('data-rotation') || 0}deg) scale(${newScale})`;\n}, { horizontal: 'left' });\n\n// 快速跳转按钮\nconst seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n];\n\nconst buttonContainer = document.createElement('div');\nbuttonContainer.style.position = 'absolute';\nbuttonContainer.style.bottom = '0';\nbuttonContainer.style.left = '50%';\nbuttonContainer.style.transform = 'translateX(-50%)';\nbuttonContainer.style.display = 'flex';\nbuttonContainer.style.gap = '10px';\nbuttonContainer.style.zIndex = '999';\n\nseekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    button.addEventListener('click', () => {\n        video.currentTime = Math.min(Math.max(video.currentTime + time, 0), video.duration);\n    });\n    buttonContainer.appendChild(button);\n});\n\nvideo.parentNode.appendChild(buttonContainer);\n",
    "lastUpdateTime": 1769953327686,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".item",
    "ruleContent": "{{@@script@all##video_url: '(.*?)'##$1##}}\n<js>\nplayer=result.match(\"https.*.mp4/\")[0]\nresult=`\n<html>  \n<head>  \n<meta charset=\"utf-8\">  \n<style>html,body{text-align:center;margin:0;padding:0;width:100%;overflow: hidden; /*隐藏超出容器的部分 */ }</style>\n</head>  \n<body>  \n<div class=\"container\"><div  class=\"title\">{{@@title@text## / Embed Player}}</div>\n<video id=\"video\" width=\"100%\" height=\"91%\" poster=\"{{@@script@all##preview_url: '(.*?)'##$1##}}\"  controls autoplay muted loop>  \n\n    <source src=\"${player}\" type=\"application/x-mpegURL\">    \n    <source src=\"https://170.178.189.147/videos/{{@@script@all##video_url: '[^']+\\/(\\d+\\/\\d+\\/\\d+\\.mp4)##$1##}}\" type=\"video/mp4\"> \n    \n</video></div>\n</body>  \n</html>\n`\n</js>",
    "ruleImage": "img@src\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "/embed/{{@@a.0@href##videos/(.*)/.*/##$1##}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.added@text}}  ⏱️{{@@.duration@text}}  {{@@.is-hd@text}}",
    "ruleTitle": "strong@text##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*人妖.*|.*美妖.*|.*男同.*|.*偷拍.*|.*水果派.*|.*解说.*|.*攝像頭.*|.*寻花.*|.*摄像头.*|.*rebd.*|.*探花.*|.*双性.*|.*妈妈.*|.*儿子.*|.*爸爸.*|.*女儿.*|.*母子.*|.*父女.*|.*熟女.*|.*眼射.*|.*直男.*|.*CD.*|.*肥女.*|.*黄金.*|.*骚0.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*厕.*|.*老阿姨.*|.*乱伦.*|.*排泄.*|.*poop.*|.*女性向.*|.*马眼.*|.*尸.*|.*奶奶.*|.*骚男.*|.*基友.*|.*廁.*|.*圣水.*|.*VR.*|.*都丸富美.*|.*山本かを.*|.*守谷多香子.*|.*波多.*|.*飯岡.*|.*希島.*|.*希岛.*|.*深田.*|^(?!.*[\\u4e00-\\u9fa5]).*$|.*拒絕融化的冰.*|",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/latest-updates/?mode=async&function=get_block&block_id=list_videos_latest_videos_list&sort_by=post_date&from={{ Math.ceil(Math.random()*3800) }}\n随机页面后面的有广告且画质低\n最新::/latest-updates/{{page}}/\n🔎搜索::/search/?mode=async&function=get_block&block_id=list_videos_videos_list_search_result&q={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}&from_videos={{page}}\n自拍::/categories/451bf6aed63bf5d8f04a13fb2448d52d/{{page}}/\n\t动漫::/categories/f8789a0bf37c07c754c8e6fe27daf5f6/{{page}}/\n一本道::/categories/d0df014883946b42d905f96390f84892/{{page}}/\n加勒比::/categories/2e42ff66f321b5bda55e8005ed5a002c/{{page}}/\n无码::/categories/300353f4488f57f8718f8f7e246c749b/{{page}}/\n有码::/categories/2f3d48fda20378cbdaaa099069a4af1e/{{page}}/\n\n丝袜:/categories/0df1ef331cf742a67f694a8a4ca81ed8/{{page}}/\n欧美::/categories/ffc7a71b8aae8ddd42031cea42f5bb7c/{{page}}/",
    "sourceComment": "https://xn--qpr921i.dear7.cc/%E9%9F%B3%E4%B9%90%E6%88%8F%E5%89%A7/index.html",
    "sourceGroup": "h",
    "sourceIcon": "https://kp-i25985.com/Uploads/vod/2023-06-21/1141.mp4.gif",
    "sourceName": "❀久久热    S",
    "sourceUrl": "https://99vv87.com/",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: +20px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(93% + 0px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1173,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "<js>\nheaders={\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36 EdgA/127.0.0.0\",\n    \"Referer\": String(source.getKey()).replace(/(.*\\/\\/[a-z0-9.-]+).*/, '$1')\n}\nJSON.stringify(headers);\n</js>",
    "injectJs": "const video = document.getElementById('video');\nlet isDragging = false;\nlet startX = 0;\nlet startTime = 0;\n\n// 手势滑动快进\nvideo.addEventListener('touchstart', (e) => {\n    isDragging = true;\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    video.pause();\n});\n\nvideo.addEventListener('touchmove', (e) => {\n    if (!isDragging) return;\n    const dx = e.touches[0].clientX - startX;\n    const change = (dx / video.clientWidth) * video.duration;\n    video.currentTime = Math.min(Math.max(startTime + change, 0), video.duration);\n});\n\nvideo.addEventListener('touchend', () => {\n    if (isDragging) {\n        video.play();\n        isDragging = false;\n    }\n});\n\n// 播放速度倍数\nvideo.playbackRate = 1.25;\n\n// 创建按钮的通用函数\nfunction createButton(text, onClick, position) {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = '50%';\n    button.style.transform = 'translateY(-50%)';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '20px';\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n}\n\n// 旋转按钮\ncreateButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    video.style.transform = `rotate(${newRotation}deg) scale(${video.style.transform.match(/scale\\(([^)]+)\\)/)?.[1] || 1})`;\n}, { horizontal: 'right' });\n\n// 缩放按钮\nlet zoomCount = 0;\ncreateButton('+', () => {\n    const currentTransform = video.style.transform || 'rotate(0deg) scale(1)';\n    const scale = parseFloat(currentTransform.match(/scale\\(([^)]+)\\)/)?.[1] || 1);\n    const newScale = zoomCount < 4 ? scale * 1.25 : 1;\n    zoomCount = zoomCount < 4 ? zoomCount + 1 : 0;\n    video.style.transform = `rotate(${video.getAttribute('data-rotation') || 0}deg) scale(${newScale})`;\n}, { horizontal: 'left' });\n\n// 快速跳转按钮\nconst seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n];\n\nconst buttonContainer = document.createElement('div');\nbuttonContainer.style.position = 'absolute';\nbuttonContainer.style.bottom = '0';\nbuttonContainer.style.left = '50%';\nbuttonContainer.style.transform = 'translateX(-50%)';\nbuttonContainer.style.display = 'flex';\nbuttonContainer.style.gap = '10px';\nbuttonContainer.style.zIndex = '999';\n\nseekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    button.addEventListener('click', () => {\n        video.currentTime = Math.min(Math.max(video.currentTime + time, 0), video.duration);\n    });\n    buttonContainer.appendChild(button);\n});\n\nvideo.parentNode.appendChild(buttonContainer);\n",
    "lastUpdateTime": 1769953180404,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".item",
    "ruleContent": "\n<js>\nplayer=result.match(\"https.*.mp4/\")[0]\nresult=`\n<html>  \n<head>  \n<meta charset=\"utf-8\">  \n<style>html,body{text-align:center;margin:0;padding:0;width:100%;overflow: hidden; /*隐藏超出容器的部分 */ }</style>\n</head>  \n<body>  \n<div class=\"container\"><div  class=\"title\">{{@@title@text## / Embed Player}}</div>\n<video id=\"video\" width=\"100%\" height=\"91%\" poster=\"{{@@script@all##preview_url: '(.*?)'##$1##}}\"  controls autoplay muted loop>  \n\n    <source src=\"${player}\" type=\"application/x-mpegURL\">    \n    <source src=\"https://170.178.189.170/contnesr/videos/{{@@script@all##video_url: '[^']+\\/(\\d+\\/\\d+\\/\\d+\\.mp4)##$1##}}\" type=\"video/mp4\"> \n    \n</video></div>\n</body>  \n</html>\n`\n</js>",
    "ruleImage": "img@data-original||img@src",
    "ruleLink": "/embed/{{@@a.0@href##videos/(.*)/.*/##$1##}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.added@text}}  ⏱️{{@@.duration@text}}  {{@@.is-hd.0@text}}",
    "ruleTitle": "strong@text##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*人妖.*|.*男同.*|.*偷拍.*|.*水果派.*|.*解说.*|.*攝像頭.*|.*寻花.*|.*摄像头.*|.*rebd.*|.*探花.*|.*双性.*|.*妈妈.*|.*儿子.*|.*爸爸.*|.*女儿.*|.*母子.*|.*父女.*|.*熟女.*|.*眼射.*|.*直男.*|.*CD.*|.*肥女.*|.*黄金.*|.*骚0.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*厕.*|.*老阿姨.*|.*乱伦.*|.*排泄.*|.*poop.*|.*女性向.*|.*马眼.*|.*尸.*|.*奶奶.*|.*骚男.*|.*基友.*|.*廁.*|.*圣水.*|.*VR.*|.*都丸富美.*|.*山本かを.*|.*守谷多香子.*|.*波多.*|.*希島.*|.*希岛.*|.*藤沢麗央.*|.*豊満.*|.*融化的冰.*|^(?!.*[\\u4e00-\\u9fa5]).*$|",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n随机::/latest-updates/?mode=async&function=get_block&block_id=list_videos_latest_videos_list&sort_by=post_date&from={{ Math.ceil(Math.random()*3100) }}\n最新::/latest-updates/{{page}}/\n\n🔎搜索::/search/?mode=async&function=get_block&block_id=list_videos_videos_list_search_result&q={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}&sort_by=post_date&from_videos={{page}}\n\n自拍::/categories/27f8a5c9ce83cbfa7b70fc5c9a73a082/{{page}}/\n\t动漫::/categories/46480850549e28993fb49cefcb75f82a/{{page}}/\nVip::/categories/vip/{{page}}/\n无码::/categories/efc5f4716ea1e36b82dc5df866401ce7/{{page}}/\n有码::/categories/c535ce35c36eb7fa67f39468157714f3/{{page}}/\n韩国::/categories/bd2c9c41dffe88e87f713b64b60cc966/{{page}}/\n欧美::/categories/9662210c07ecb7133502aeeb80347c3c/{{page}}/",
    "sourceComment": "https://fcw1.xyz/\nhttps://www.fcw.life/\n\thttps://www.fccw51.com/\n备用地址\n",
    "sourceGroup": "h",
    "sourceIcon": "https://pic.baike.soso.com/ugc/baikepic2/0/20230415001950-981736301_gif_100_100_99720.gif/0",
    "sourceName": "❀废柴视频S",
    "sourceUrl": "https://www.fccw51.com/",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: +20px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(93% + 0px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1175,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1\"}",
    "lastUpdateTime": 1772385663933,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article.masonry-post",
    "ruleContent": "@js:\nvar img_list=\"\";\ndata=java.getElements('.dynamic-entry-content@img')\nfor(i in data){\n\turl=data[i].attr('src')\n\timg_list+=`<img src=\"${url}\"/>\\n`\n}\nresult=`<html>\n<head>\n <title>${java.get('title')}</title>\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n</head>\n<body>\n <div class=\"img_container\">\n   ${img_list}\n </div>\n</body>\n</html>`",
    "ruleImage": ".gb-block-image img@src",
    "ruleLink": "a@href##$##,{\"webView\":true}",
    "ruleNextPage": "a.next@href",
    "ruleTitle": ".gb-headline a@text\n<js>\njava.put('title',result)\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::https://danryoku.com/\nNSFW::https://danryoku.com/category/nsfw/\nCOSPLAY::https://danryoku.com/category/cosplay/\n日本::https://danryoku.com/category/country/japan/\n中国::https://danryoku.com/category/country/china/{{page}}/\n韩国::https://danryoku.com/category/country/korea/\n台湾::https://danryoku.com/category/country/taiwan/\n西方::https://danryoku.com/category/country/western/\n搜索::https://danryoku.com/?s={{source.getVariable()}}/",
    "sourceComment": "DANRYOKU - Idol & Cosplay Photobook gallery\n网站：https://danryoku.com",
    "sourceGroup": "h",
    "sourceIcon": "https://danryoku.com/favicon.ico",
    "sourceName": "DANRYOKU",
    "sourceUrl": "https://danryoku.com",
    "style": "*{margin:0;padding:0;}\nhtml,body{width:100%;height:100%;}\nh2{text-align:center;}\nimg{width:100%;height:auto;}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1190,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://p1.ssl.qhimgs1.com/t02ecea706fdf6fb8d1.jpg",
    "sourceName": "人人影视",
    "sourceUrl": "https://www.recer.cn",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1191,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".featured-img-box",
    "ruleContent": "@js: \nlet pics=java.getString('article@img@src'); \nlet p=String(pics).split(\"\\n\").map(i=>`<img src=\"${i}\">`).join(\"\\n\");\np = '<title>👤Mengteen</title>\\n' + \n'<h3>{{@@.category-and-tags@text}}｜{{@@.entry-title@text}}</h3>\\n' + \np;\np;",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "🔖{{@@.featured-img-category@text}}｜📆{{@@time@text}}",
    "ruleTitle": "h2@a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/index.php/page/{{page}}/\n搜索::/index.php/page/{{page}}/?s={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('诱惑'):source.getVariable()}}\n黑丝::/index.php/category/黑丝/page/{{page}}/\n白丝::/index.php/category/白丝/page/{{page}}/\n写真集::/index.php/category/写真集/page/{{page}}/",
    "sourceComment": "源社区：@Mengteen 2025.06.27原创\n二传二创或者是其它问题请联系我。\n我邮箱:[xxxmgqxxx@vip.qq.com]",
    "sourceGroup": "h",
    "sourceIcon": "https://mo8.org/wp-content/uploads/2025/05/photo_29_2025-05-13_14-54-28.jpg",
    "sourceName": "😍MOMO图库",
    "sourceUrl": "https://mo8.org/##@Mengteen",
    "style": "/*标题相关*/\nh3{text-align:left;color: #8FBC8F;}\n* {margin: 0;\tpadding: 0}\nul {font-size: 0;height: 100%;overflow-y: scroll}\nli {list-style: none;text-align: center}\nimg {width: 100%;height: auto}",
    "type": 0,
    "variableComment": "🏄Mengteen提示：在此输入关键词搜索！"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1193,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://www.jzyy.org/template/jz/statics/img/load_w.gif",
    "sourceName": "桔子影院",
    "sourceUrl": "https://www.jzyy.org",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1194,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://p5.ssl.qhimgs1.com/t02de0a0e3fdc546afb.jpg",
    "sourceName": "奇优影院",
    "sourceUrl": "https://www.qfgyy.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1195,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1772385578372,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".vod[2:23]",
    "ruleImage": "img@data-original",
    "ruleLink": "a@href<js>var url='https://eeoopinkyy.cc'+result;var html=String(java.ajax(url));var idx=html.indexOf('index.m3u8');var start=html.lastIndexOf('\\\"',idx);var end=html.indexOf('\\\"',idx);var u=html.substring(start+1,end);u.split('\\\\/').join('/')</js>\n",
    "ruleNextPage": ".pageitem.-1@href",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "自拍::https://eeoopinkyy.cc/pink/index.php/vod/type/id/198/page/{{page}}.html\n国产::https://eeoopinkyy.cc/pink/index.php/vod/type/id/197/page/{{page}}.html\n国产视频::https://eeoopinkyy.cc/pink/index.php/vod/type/id/199.html\n国产传媒::https://eeoopinkyy.cc/pink/index.php/vod/type/id/200.html\n国产裸聊::https://eeoopinkyy.cc/pink/index.php/vod/type/id/201.html\n国产直播::https://eeoopinkyy.cc/pink/index.php/vod/type/id/202.html\n国产偷拍::https://eeoopinkyy.cc/pink/index.php/vod/type/id/203.html\n国产大制作::https://eeoopinkyy.cc/pink/index.php/vod/type/id/204.html\n国产主播::https://eeoopinkyy.cc/pink/index.php/vod/type/id/205.html\n蜜桃传媒::https://eeoopinkyy.cc/pink/index.php/vod/type/id/217.html\n天美传媒::https://eeoopinkyy.cc/pink/index.php/vod/type/id/218.html\n乌鸦传媒::https://eeoopinkyy.cc/pink/index.php/vod/type/id/219.html\n星空传媒::https://eeoopinkyy.cc/pink/index.php/vod/type/id/220.html\n乐播传媒::https://eeoopinkyy.cc/pink/index.php/vod/type/id/221.html\n大象传媒::https://eeoopinkyy.cc/pink/index.php/vod/type/id/222.html\n映画传媒::https://eeoopinkyy.cc/pink/index.php/vod/type/id/223.html\n皇家华人::https://eeoopinkyy.cc/pink/index.php/vod/type/id/208.html\n精东影业::https://eeoopinkyy.cc/pink/index.php/vod/type/id/209.html\n成人头条::https://eeoopinkyy.cc/pink/index.php/vod/type/id/210.html\n免子先生::https://eeoopinkyy.cc/pink/index.php/vod/type/id/211.html\n杏吧原创::https://eeoopinkyy.cc/pink/index.php/vod/type/id/212.html\n91制片厂::https://eeoopinkyy.cc/pink/index.php/vod/type/id/213.html\n开心鬼传媒::https://eeoopinkyy.cc/pink/index.php/vod/type/id/214.html\n黑料网曝::https://eeoopinkyy.cc/pink/index.php/vod/type/id/181.html\n会所技师::https://eeoopinkyy.cc/pink/index.php/vod/type/id/182.html\n探花约炮::https://eeoopinkyy.cc/pink/index.php/vod/type/id/183.html\n淫妻绿帽::https://eeoopinkyy.cc/pink/index.php/vod/type/id/184.html\n制服诱惑::https://eeoopinkyy.cc/pink/index.php/vod/type/id/185.html\n重口猎奇::https://eeoopinkyy.cc/pink/index.php/vod/type/id/186.html\n强奸乱伦::https://eeoopinkyy.cc/pink/index.php/vod/type/id/187.html\n精品甄之::https://eeoopinkyy.cc/pink/index.php/vod/type/id/190.html\n网曝黑料::https://eeoopinkyy.cc/pink/index.php/vod/type/id/191.html\n明星换脸::https://eeoopinkyy.cc/pink/index.php/vod/type/id/192.html\n女优明星::https://eeoopinkyy.cc/pink/index.php/vod/type/id/193.html\n韩国主播::https://eeoopinkyy.cc/pink/index.php/vod/type/id/194.html\n网红主播::https://eeoopinkyy.cc/pink/index.php/vod/type/id/195.html\n群交淫乱::https://eeoopinkyy.cc/pink/index.php/vod/type/id/196.html\n巨乳美乳::https://eeoopinkyy.cc/pink/index.php/vod/type/id/244.html\n高清名优::https://eeoopinkyy.cc/pink/index.php/vod/type/id/245.html\n人妻熟女::https://eeoopinkyy.cc/pink/index.php/vod/type/id/246.html\n中文字幕::https://eeoopinkyy.cc/pink/index.php/vod/type/id/247.html\nSM调教::https://eeoopinkyy.cc/pink/index.php/vod/type/id/248.html\nVR视角::https://eeoopinkyy.cc/pink/index.php/vod/type/id/249.html\nAV解说::https://eeoopinkyy.cc/pink/index.php/vod/type/id/250.html\n日本无码::https://eeoopinkyy.cc/pink/index.php/vod/type/id/235.html\n欧美性爱::https://eeoopinkyy.cc/pink/index.php/vod/type/id/236.html\n欧美无码::https://eeoopinkyy.cc/pink/index.php/vod/type/id/237.html\n高清有码::https://eeoopinkyy.cc/pink/index.php/vod/type/id/238.html\n日本素人::https://eeoopinkyy.cc/pink/index.php/vod/type/id/239.html\n伦理三级::https://eeoopinkyy.cc/pink/index.php/vod/type/id/240.html\n动漫精选::https://eeoopinkyy.cc/pink/index.php/vod/type/id/241.html\n乱伦毁三观::https://eeoopinkyy.cc/pink/index.php/vod/type/id/226.html\n淫乱学生妹::https://eeoopinkyy.cc/pink/index.php/vod/type/id/227.html\n玩偶姐姐::https://eeoopinkyy.cc/pink/index.php/vod/type/id/228.html\n糖心Vlog::https://eeoopinkyy.cc/pink/index.php/vod/type/id/229.html\n萝莉社::https://eeoopinkyy.cc/pink/index.php/vod/type/id/230.html\n性视界::https://eeoopinkyy.cc/pink/index.php/vod/type/id/231.html\nPsychoPorn::https://eeoopinkyy.cc/pink/index.php/vod/type/id/232.html",
    "sourceComment": "├───┬────────────┤\n│！免责│本书源只提供代码进行技术│\n│！声明│交流，请于２４小时后删除│\n└────────────────┘",
    "sourceGroup": "h",
    "sourceIcon": "https://ico.img12345.com/jt/favicon.png",
    "sourceName": "粉粉",
    "sourceUrl": "https://eeoopinkyy.cc/pink/index.php/vod/type/id/197.html",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1197,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.inner_layer@ul@li@a",
    "ruleContent": "text.普通下载@href\n<js>\nresult+=\".m3u8\";\r\nresult = \"<video src=\\\"\" + result + \"\\\" width=\\\"100%\\\" height=\\\"240px\\\" controls=\\\"controls\\\" ></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result + \"</body></html>\"\n</js>",
    "ruleImage": "img@data-original||img@src",
    "ruleLink": "href##$##,\\{\\\"webView\\\": true\\}",
    "ruleNextPage": "page",
    "rulePubDate": "class.timeobxobx@text",
    "ruleTitle": "p.-1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "三级::/Html/109/{{page - 1 == 0 ? \"\":\"index-\"+page+\".html\"}},{\"webView\": true}\n女优::/Html/100/{{page - 1 == 0 ? \"\":\"index-\"+page+\".html\"}},{\"webView\": true}\n人妻::/Html/111/{{page - 1 == 0 ? \"\": \"index-\"+page+\".html\"}},{\"webView\": true}\n国产::/Html/60/{{page - 1 == 0 ? \"\": \"index-\"+page+\".html\"}},{\"webView\": true}\n欧美::/Html/62/{{page - 1 == 0 ? \"\": \"index-\"+page+\".html\"}},{\"webView\": true}\n无码::/Html/113/{{page - 1 == 0 ? \"\": \"index-\"+page+\".html\"}},{\"webView\": true}\n动漫::https://033yp.com/Html/101/{{page - 1 == 0 ? \"\": \"index-\"+page+\".html\"}}",
    "sourceComment": "发布页https://guochandizhi6.com/\n永久地址https://992kp.com/",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/j5ZxW6v7/1657950527553.png",
    "sourceName": "©痴汉",
    "sourceUrl": "https://99imm13.xyz/",
    "type": 0
  },
  {
    "articleStyle": 4,
    "cacheFirst": false,
    "customOrder": 1209,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\t\"User-Agent\": \"Mozilla/5.0 (Linux; Android 9) Mobile Safari/537.36\",\"referer\": \"{{baseUrl}}\"\n\t}",
    "lastUpdateTime": 1768544549869,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".picture-list a",
    "ruleContent": ".picture-item-box@all##src=\".*\" data-src##src\n<js>##href##</js>",
    "ruleImage": "img@data-src",
    "ruleLink": "href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "span@text",
    "ruleTitle": "text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部::/arttype/2000\n热姐::/arttype/2001\n罗莉塔::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/2002/\n性感的::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/2003/\n杂志::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/2004/\n角色扮演::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5001/\n美足::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5029/\n唯美::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/2002/\n柚木::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5035/\n少女映画::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5036/\n沫沫::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5037/\n海堂::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5038/\n年年::/arttype/5039/\n模特儿::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5031/\n日本::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5032/\n东盟::https://mak803-ad398-dke3e.xofulitu765.xyz/arttype/5033/\n韩国::https://mak803-ad398-dke3e.xofulitu765.xyz/t/5034/\n搜索::https://mak803-ad398-dke3e.xofulitu765.xyz/s/wd/小丁",
    "sourceGroup": "h",
    "sourceIcon": "https://mak803-ad398-dke3e.xofulitu765.xyz/favicon.ico",
    "sourceName": "美足美图",
    "sourceUrl": "https://mak803-ad398-dke3e.xofulitu765.xyz/label/sort?ck=",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1222,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.myvideoDiv||class.picture-list@a||class.novel-item",
    "ruleContent": "script@all&&class.picture-image col s9@all&&class.novel-content-txt@all",
    "ruleImage": "img@data-src",
    "ruleLink": "a@href <js>##pic##detail</js>\n<js>##book##detail</js>",
    "ruleNextPage": "page",
    "rulePubDate": "class.right@text",
    "ruleTitle": "class.video-desc-content@text||class.album-name@text||class.name@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "國產精品::https://www.hurigirls88.xyz/index.php/vod/type/id/30/page/{{page}}.html\n國產偷拍::https://www.hurigirls88.xyz/index.php/vod/type/id/91/page/{{page}}.html\n國產主播::https://www.hurigirls88.xyz/index.php/vod/type/id/40/page/{{page}}.html\n國產自拍::https://www.hurigirls88.xyz/index.php/vod/type/id/124/page/{{page}}.html\n探花約拍::https://www.hurigirls88.xyz/index.php/vod/type/id/117/page/{{page}}.html\nP站精品::https://www.hurigirls88.xyz/index.php/vod/type/id/119/page/{{page}}.html\n原創傳媒::https://www.hurigirls88.xyz/index.php/vod/type/id/100/page/{{page}}.html\n明星淫夢::https://www.hurigirls88.xyz/index.php/vod/type/id/125/page/{{page}}.html\n中文視頻::https://www.hurigirls88.xyz/index.php/vod/type/id/8/page/{{page}}.html\n日本無碼::https://www.hurigirls88.xyz/index.php/vod/type/id/6/page/{{page}}.html\n日本有碼::https://www.hurigirls88.xyz/index.php/vod/type/id/26/page/{{page}}.html\n無碼內射::https://www.hurigirls88.xyz/index.php/vod/type/id/126/page/{{page}}.html\n亞洲情色::https://www.hurigirls88.xyz/index.php/vod/type/id/63/page/{{page}}.html\n少女蘿莉::https://www.hurigirls88.xyz/index.php/vod/type/id/32/page/{{page}}.html\n熟女人妻::https://www.hurigirls88.xyz/index.php/vod/type/id/34/page/{{page}}.html\n長腿絲襪::https://www.hurigirls88.xyz/index.php/vod/type/id/64/page/{{page}}.html\n巨乳美女::https://www.hurigirls88.xyz/index.php/vod/type/id/29/page/{{page}}.html\n強奸亂倫::https://www.hurigirls88.xyz/index.php/vod/type/id/31/page/{{page}}.html\n制服誘惑::https://www.hurigirls88.xyz/index.php/vod/type/id/66/page/{{page}}.html\n群交淫亂::https://www.hurigirls88.xyz/index.php/vod/type/id/95/page/{{page}}.html\n三級倫理::https://www.hurigirls88.xyz/index.php/vod/type/id/35/page/{{page}}.html\n港台倫理::https://www.hurigirls88.xyz/index.php/vod/type/id/127/page/{{page}}.html\n韓國倫理::https://www.hurigirls88.xyz/index.php/vod/type/id/69/page/{{page}}.html\n女同性戀::https://www.hurigirls88.xyz/index.php/vod/type/id/71/page/{{page}}.html\n水果派解說::https://www.hurigirls88.xyz/index.php/vod/type/id/118/page/{{page}}.html\n歐美視頻::https://www.hurigirls88.xyz/index.php/vod/type/id/7/page/{{page}}.html\n金髮幼齒::https://www.hurigirls88.xyz/index.php/vod/type/id/121/page/{{page}}.html\n黑男白女::https://www.hurigirls88.xyz/index.php/vod/type/id/122/page/{{page}}.html\n稀有另類::https://www.hurigirls88.xyz/index.php/vod/type/id/123/page/{{page}}.html\n男同性戀::https://www.hurigirls88.xyz/index.php/vod/type/id/93/page/{{page}}.html\nVR無碼::https://www.hurigirls88.xyz/index.php/vod/type/id/42/page/{{page}}.html\n成人美圖::https://www.hurigirls88.xyz/index.php/art/type/id/2/page/{{page}}.html\n成人小說::https://www.hurigirls88.xyz/index.php/art/type/id/3/page/{{page}}.html",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://www.hurigirls88.xyz/favicon.ico",
    "sourceName": "狐狸少女",
    "sourceUrl": "https://www.hurigirls88.xyz/",
    "style": "video{width:100%}img{width:100%}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1238,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/acgboxlink/acgbox/logo/86742914_p0.png",
    "sourceName": "ACG盒子",
    "sourceUrl": "https://www.acgbox.link",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1239,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://p2.ssl.qhimgs1.com/sdr/_220_/t011f089b0840fae0ae.jpg",
    "sourceName": "PornHub\n(VPN)",
    "sourceUrl": "https://cn.pornhub.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1240,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://www.drymiss.com/usr/themes/missz/assets/images/favicon.png",
    "sourceName": "动漫天堂",
    "sourceUrl": "https://www.drymiss.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1242,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "class.pic@li",
    "ruleContent": "script@all",
    "ruleDescription": "",
    "ruleImage": "img@src",
    "ruleLink": "/play/{{@a@href##/info/(.*).html##$1}}",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "span@text",
    "ruleTitle": "b@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "国产传媒::/type/158.html\n国产视频::/type/181.html",
    "sourceComment": "//正文就样啦,要更好的自行写吧",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "小鸟酱",
    "sourceUrl": "https://xiaoniao4.buzz/design.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://893586.com,\nhttps://t91458.xyz:9388,\nhttps://t91702.xyz:9388,\nhttps://t91458.xyz:9388",
    "contentWhitelist": "",
    "customOrder": 1243,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "//选择需要删除的标签，以,分隔\nitems = document.querySelectorAll(`\n\t.pannel_head,\n\t.play_vlist_box,\n\t.foot,\n\t.vodlist,\n\t.head_box\n`)\n\n//把选择的html值改成空\nArray.from(items,(item)=>{\n\titem.innerHTML = ``\n\titem.style.display = `none`\n})",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.row col5 clearfix@dl",
    "ruleContent": "script@all",
    "ruleImage": "img@data-original",
    "ruleLink": "/vodplay/{{@a@href##/voddetail/(.*).html##$1}}-1-1.html",
    "ruleNextPage": "text.下一页@href",
    "ruleTitle": "h3@text",
    "shouldOverrideUrlLoading": "\nnjmp=/host|regex/g.test(url);\nif(njmp) true\nelse false",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "国::https://5n2e.bymt6.buzz/vodtype/40.html",
    "sourceComment": "//正文广告去不完\nhttps://www.bymt1.buzz/",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "白玉馒头",
    "sourceUrl": "https://5n2e.bymt6.buzz/by/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1245,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.preview",
    "ruleContent": "id.video@all&&script@all",
    "ruleImage": "class.lazy@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "span@text",
    "ruleTitle": "class.th-description@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "網紅嫩模::https://www.1024x.ga/type.php?t=1&pg={{page}}\n國產精品::https://www.1024x.ga/type.php?t=2&pg={{page}}\n原創傳媒::https://www.1024x.ga/type.php?t=3&pg={{page}}\n主播直播::https://www.1024x.ga/type.php?t=4&pg={{page}}\nAI換臉::https://www.1024x.ga/type.php?t=6&pg={{page}}\n",
    "sourceGroup": "h",
    "sourceIcon": "https://image.yrmbb0hc.space/GsebNewi/10.gif",
    "sourceName": "少女福利姬",
    "sourceUrl": "https://www.1024x.ga/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1249,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://m.hanjutv2020.com/pc/images/favicon.ico",
    "sourceName": "韩剧TV",
    "sourceUrl": "https://m.hanjutv2020.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1252,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://www.rijula.com/template/vfed/asset/img/favicon.png",
    "sourceName": "日剧啦",
    "sourceUrl": "https://www.rijula.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1254,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://m.rijutv.com//favicon.ico",
    "sourceName": "日剧TV",
    "sourceUrl": "https://m.rijutv.com",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1257,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.item col-xs-12 col-sm-6 col-md-4 col-lg-3",
    "ruleContent": "",
    "ruleImage": "img@data-original",
    "ruleLink": "class.item-link@href",
    "ruleNextPage": "page",
    "rulePubDate": "页数::{{@class.item-num@textNodes}}",
    "ruleTitle": "class.item-link-text@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://www.fulitu.cc/page/{{page}}/\n白丝::https://www.fulitu.cc/category/baisi/{{page}}/\n肉丝::https://www.fulitu.cc/category/rousi/{{page}}/\n黑丝::https://www.fulitu.cc/category/heisi/{{page}}/\n萝莉::https://www.fulitu.cc/category/loli/{{page}}/\n少女::https://www.fulitu.cc/category/shaonv/{{page}}/\n御姐::https://www.fulitu.cc/category/yujie/{{page}}/\n腿控::https://www.fulitu.cc/category/tuikong/{{page}}/\n脚控::https://www.fulitu.cc/category/jiaokong/{{page}}/\n网袜::https://www.fulitu.cc/category/wangwa/{{page}}/\n女仆::https://www.fulitu.cc/category/nvpu/{{page}}/\n睡衣::https://www.fulitu.cc/category/shuiyi/{{page}}/\n泳装::https://www.fulitu.cc/category/yongzhuang/{{page}}/\n旗袍::https://www.fulitu.cc/category/qipao/{{page}}/\n巨乳::https://www.fulitu.cc/category/juru/{{page}}/\n锁骨::https://www.fulitu.cc/category/suogu/{{page}}/\n比基尼::https://www.fulitu.cc/category/bijini/{{page}}/\n兔女郎::https://www.fulitu.cc/category/tunvlang/{{page}}/\nJK制服::https://www.fulitu.cc/category/jk/{{page}}/\n死库水::https://www.fulitu.cc/category/sikushui/{{page}}/\n运动体操服::https://www.fulitu.cc/category/yundongticaofu/{{page}}/",
    "sourceGroup": "h",
    "sourceIcon": "https://img4.tuwandata.com/v2/thumb/jpg/NWFkMywxMTI1LDAsOSwzLDEsLTEsTk9ORSwsLDkw/u/res.tuwan.com/zipgoods/20190508/3b6408c569f8eb687a8dd6eb3578bdb9.jpg",
    "sourceName": "福利兔",
    "sourceUrl": "https://www.fulitu.cc/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1259,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.stui-vodlist__box",
    "ruleContent": "class.stui-player__video clearfix@script.0@all##url\":\"([^\"]+.m3u8)##$1##\n<js>\nresult=result.replace(/\\\\/g,\"\")\r\nresult = \"<video src=\\\"\" + result + \"\\\" width=\\\"100%\\\" height=\\\"auto\\\" controls=\\\"controls\\\" ></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result + \"</body></html>\"\n result\n</js>",
    "ruleImage": "",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "span@text",
    "ruleTitle": "class.stui-vodlist__thumb lazyload@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "國產精品::https://caomeisp.net/vod/6-{{page}}.html\n傳媒精品::https://caomeisp.net/vod/24-{{page}}.html\n偷拍自拍::https://caomeisp.net/vod/7-{{page}}.html\n網紅主播::https://caomeisp.net/vod/22-{{page}}.html\n日本無碼::https://caomeisp.net/vod/8-{{page}}.html\n少女蘿莉::https://caomeisp.net/vod/38-{{page}}.html\n歐美精品::https://caomeisp.net/vod/12-{{page}}.html\n三級倫理::https://caomeisp.net/vod/37-{{page}}.html\n卡通動漫::https://caomeisp.net/vod/20-{{page}}.html",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://ttrpic.ccczq.com/upload/20220914/acb37c2bb0141eefa300fcf5b8996b41.gif",
    "sourceName": "草莓視頻",
    "sourceUrl": "https://caomeisp.net/",
    "style": "video{width:100%}img{width:100%}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1268,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1665922836679,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.row justify-content-md-center@class.col-6 col-sm-4 col-lg-3 col-xl-2",
    "ruleContent": "class.hentai__episodes@ul@all\n<js>\nvar li_shuzu  = java.getStringList(\"class.hentai__episodes@ul@li@all\")\nvar pic_url = java.getStringList(\"//@src\",li_shuzu)\nvar chapter_text = java.getStringList(\"a@text\", li_shuzu)\nresult=\"\"\nresult+= \"<html> <meta content=\\\"width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no\\\" />  <body>\"\n\nfor(var i in chapter_text){\nvar spkey = pic_url[i].match(/hh\\/.+(?=\\/s_poster)/)\n result+=\"<a href=\\\"javascript:;\\\" onclick=\\\"myplay(this.type)\\\"; type=\\\"\"+spkey+\"\\\" style='width: 100%; height: auto' > <img src=\\\"\"+pic_url[i]+\"\\\" alt=\\\"\"+chapter_text[i]+\"\\\" width='120px' height='68px'> \"+chapter_text[i]+ \"</a>\"\n result+=\"<br />\"\n}\nresult +=\"<p id=\\\"dd\\\"><video id=\\\"mv\\\" src=\\\"https://mymaster-uk.cyou/api/v3/\" +spkey+\"/master.m3u8\\\" controls preload=\\\"auto\\\" style='width: 100%; height: auto'></video><\\p>\"\n result+=\"<br />\"\n result+=\"<br />\"\n result+=\"<br />\"\n//修改播放链接函数\nresult+=\"<script> myplay=function(data){ document.getElementById(\\\"mv\\\").remove(); alert( \\\"更新成功\\\");  document.getElementById(\\\"dd\\\").innerHTML =\\\"<video id=\\'mv\\' src=\\'https://mymaster-uk.cyou/api/v3/\\\" +data+\\\"/master.m3u8\\' controls preload=\\'auto\\' style='width: 100%; height: auto'></video>\\\";}</script>\"\nresult += \"</body></html>\"\n</js>",
    "ruleDescription": "",
    "ruleImage": "tag.img@src",
    "ruleLink": "a@href",
    "ruleTitle": "tag.img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部最新::https://hanime.xxx/hentai/<,page/{{page}}>/\n全部评分::https://hanime.xxx/hentai/<,page/{{page}}>/?m_orderby=rating\n全部热门::https://hanime.xxx/hentai/<,page/{{page}}>/?m_orderby=views\n\n无修最新::https://hanime.xxx/category/uncensored-hentai<,/page/{{page}}>\n无修评分::https://hanime.xxx/category/uncensored-hentai/<,page/{{page}}>/?m_orderby=rating\n无修热门::https://hanime.xxx/category/uncensored-hentai<,page/{{page}}>/?m_orderby=views\n百合最新::https://hanime.xxx/category/yuri<,/page/{{page}}/>\n百合评分::https://hanime.xxx/category/yuri/<,page/{{page}}>/?m_orderby=rating\n百合热门::https://hanime.xxx/category/yuri/<,page/{{page}}>/?m_orderby=views\n\n触手最新::https://hanime.xxx/category/tentacle<,/page/{{page}}/>\n触手评分::https://hanime.xxx/category/tentacle<,page/{{page}}>/?m_orderby=rating\n触手热门::https://hanime.xxx/category/tentacle<,page/{{page}}>/?m_orderby=views\n\n熟女最新::https://hanime.xxx/category/milf/<,page/{{page}}/>\n熟女评分::https://hanime.xxx/category/milf/<,page/{{page}}>/?m_orderby=rating\n熟女热门::https://hanime.xxx/category/milf/<,page/{{page}}>/?m_orderby=views",
    "sourceComment": "实现点击动态更新视频播放链接",
    "sourceGroup": "h",
    "sourceIcon": "https://hanime.xxx/wp-content/uploads/2019/10/Logo-Hanime.png",
    "sourceName": "hanime.xxx 2.0",
    "sourceUrl": "https://hanime.xxx/hentai",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1270,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "//*[@class=\"masonry-item style-1\"]",
    "ruleContent": "//*[@class=\"full\"]",
    "ruleDescription": "",
    "ruleImage": "//*[@class=\"masonry-item style-1\"]/a/article/div/img/@src",
    "ruleLink": "//*[@class=\"masonry-item style-1\"]/a/@href",
    "ruleNextPage": "//*[@class=\"next\"]/a/@href",
    "rulePubDate": "//*[@class=\"masonry-item style-1\"]/a/article/div[2]/div/time/@datetime",
    "ruleTitle": "//*[@class=\"masonry-item style-1\"]/a/article/div[2]/div/time/@datetime",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "00::https://nsfwpicx.com/page/{{page}}/",
    "sourceComment": "00",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "nsfwpicx",
    "sourceUrl": "https://nsfwpicx.com/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1271,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "https://qidian.gtimg.com/hongxium/img/activities/download-header-logo-dda168a850.png",
    "sourceName": "红袖添香",
    "sourceUrl": "https://m.hongxiu.com",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1272,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".videos@li",
    "ruleContent": "id.bofang_box@script.0@all##url\":\"([^\"]+.m3u8)##$1##\n<js>\nresult=result.replace(/\\\\/g,\"\")\r\nresult = \"<video src=\\\"\" + result + \"\\\" width=\\\"100%\\\" height=\\\"auto\\\" controls=\\\"controls\\\" ></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result + \"</body></html>\"\n result\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a@href##.html##/sid/1/nid/1.html<js>##detail##play</js>",
    "ruleNextPage": ".pagelink_b@href",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "精品視頻::http://152.72527.buzz/vod/type/id/40/page/{{page}}.html\n國產視頻::http://152.72527.buzz/vod/type/id/22/page/{{page}}.html\n主播直播::http://152.72527.buzz/vod/type/id/23/page/{{page}}.html\n自拍偷拍::http://152.72527.buzz/vod/type/id/34/page/{{page}}.htm\n明星換臉::http://152.72527.buzz/vod/type/id/37/page/{{page}}.html\n日韓無碼::http://152.72527.buzz/vod/type/id/24/page/{{page}}.html\n日韓有碼::http://152.72527.buzz/vod/type/id/25/page/{{page}}.html\n中文字幕::http://152.72527.buzz/vod/type/id/27/page/{{page}}.html\n漢化字幕::http://152.72527.buzz/vod/type/id/42/page/{{page}}.html\n強奸亂倫::http://152.72527.buzz/vod/type/id/28/page/{{page}}.html\n制服絲襪::http://152.72527.buzz/vod/type/id/29/page/{{page}}.html\n紅潤美乳::http://152.72527.buzz/vod/type/id/30/page/{{page}}.html\n變態極樂::http://152.72527.buzz/vod/type/id/31/page/{{page}}.html\n日韓大全::http://152.72527.buzz/vod/type/id/35/page/{{page}}.html\n嬌妻出軌::http://152.72527.buzz/vod/type/id/36/page/{{page}}.html\n海外明星::http://152.72527.buzz/vod/type/id/38/page/{{page}}.html\n出道作品::http://152.72527.buzz/vod/type/id/39/page/{{page}}.html\n強奸亂倫::http://152.72527.buzz/vod/type/id/45/page/{{page}}.html\n巨乳波霸::http://152.72527.buzz/vod/type/id/46/page/{{page}}.html\n制服美腿::http://152.72527.buzz/vod/type/id/47/page/{{page}}.html\n熟女人妻::http://152.72527.buzz/vod/type/id/48/page/{{page}}.html\n多人群P::http://152.72527.buzz/vod/type/id/50/page/{{page}}.html\n家庭倫理::http://152.72527.buzz/vod/type/id/32/page/{{page}}.html\n三級倫理::http://152.72527.buzz/vod/type/id/49/page/{{page}}.html\n歐美極品::http://152.72527.buzz/vod/type/id/26/page/{{page}}.html\n歐美情色::http://152.72527.buzz/vod/type/id/43/page/{{page}}.html\n成人動漫::http://152.72527.buzz/vod/type/id/33/page/{{page}}.html\n動漫精品::http://152.72527.buzz/vod/type/id/44/page/{{page}}.html",
    "sourceGroup": "h",
    "sourceIcon": "http://152.72527.buzz/templates/theme2/images/favicon.png",
    "sourceName": "情趣研究所",
    "sourceUrl": "http://152.72527.buzz/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1280,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://m.riju.tv/favicon.ico",
    "sourceName": "日剧网",
    "sourceUrl": "https://m.riju.tv",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1285,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".aspect-ratio",
    "ruleContent": "class.max-width-md margin-x-auto margin-bottom-lg@all",
    "ruleImage": "img@data-src",
    "ruleLink": "a@href",
    "ruleNextPage": "",
    "rulePubDate": ".card-video__duration@text",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "中國AV::https://ppp.porn/categories/china-av/\n日本片商::https://ppp.porn/categories/japan-producer/\n素人自拍::https://ppp.porn/categories/amateur/\n中國::https://ppp.porn/categories/china/\n台灣::https://ppp.porn/categories/taiwan/\n日本::https://ppp.porn/categories/japan/\n東南亞::https://ppp.porn/categories/se-asia/\n韓國::https://ppp.porn/categories/korea/\n香港::https://ppp.porn/categories/hongkong/\nCosplay::https://ppp.porn/categories/cosplay/\n主播::https://ppp.porn/categories/streamer/\n主觀視角::https://ppp.porn/categories/first-person-pov/\n凌辱::https://ppp.porn/categories/bdsm/\n劇情::https://ppp.porn/categories/drama/\n多P::https://ppp.porn/categories/threesome/\n探花::https://ppp.porn/categories/91-tanhua/\n流出::https://ppp.porn/categories/leaked/\n無碼::https://ppp.porn/categories/uncensored/\n野外露出::https://ppp.porn/categories/exhibitionists/\nOL::https://ppp.porn/categories/office-lady/\n動漫::https://ppp.porn/categories/acg/\n古裝::https://ppp.porn/categories/costume/\n女僕::https://ppp.porn/categories/maid/\n學生::https://ppp.porn/categories/student/\n旗袍::https://ppp.porn/categories/cheongsam/\n獸耳::https://ppp.porn/categories/kemonomimi/\n瑜伽褲::https://ppp.porn/categories/yoga-pants/\n真理褲::https://ppp.porn/categories/dolfin-shorts/\n絲襪::https://ppp.porn/categories/pantyhose/\n護士::https://ppp.porn/categories/nurse/\n過膝襪::https://ppp.porn/categories/knee-socks/",
    "sourceGroup": "h",
    "sourceIcon": "https://ppp.porn/favicon.ico",
    "sourceName": "P站",
    "sourceUrl": "https://ppp.porn/",
    "style": "video{width:100%}img{width:100%}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1299,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.item",
    "ruleContent": "source@src<js>\nresult = `<video src=\"${result}\" width=\"100%\" height=\"280px\" controls=\"controls\" ></video>`;\nresult = `<html><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" /><style>html,body{background-color:black;margin:0;padding:0;width:100%;}</style></head><body>${result}</body></html>`\n</js>",
    "ruleImage": "tag.a@thumb",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "ruleTitle": "class.title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "变量搜索::https://91porn.cf/?k={{java.encodeURI(source.getVariable())}}&pg={{page}}\n国产::https://91porn.cf/list/22-{{page}}.html\n福利::https://91porn.cf/list/20-{{page}}.html\n主播::https://91porn.cf/list/25-{{page}}.html\n网红::https://91porn.cf/list/21-{{page}}.html\n韩国::https://91porn.cf/list/23-{{page}}.html\n制服::https://91porn.cf/?k=jk&pg={{page}}\n白虎::https://91porn.cf/?k=%E7%99%BD%E8%99%8E&pg={{page}}\n女神::https://91porn.cf/?k=%E5%A5%B3%E7%A5%9E&pg={{page}}\n少女::https://91porn.cf/?k=%E5%B0%91%E5%A5%B3&pg={{page}}\n网红::https://91porn.cf/?k=%E7%BD%91%E7%BA%A2&pg={{page}}\n学生::https://91porn.cf/?k=%E5%AD%A6%E7%94%9F&pg={{page}}\n母狗::https://91porn.cf/?k=%E6%AF%8D%E7%8B%97&pg={{page}}\n黑丝::https://91porn.cf/?k=%E9%BB%91%E4%B8%9D&pg={{page}}\n白丝::https://91porn.cf/?k=%E7%99%BD%E4%B8%9D&pg={{page}}\n自慰::https://91porn.cf/?k=%E8%87%AA%E6%85%B0&pg={{page}}\n情趣::https://91porn.cf/?k=%E6%83%85%E8%B6%A3&pg={{page}}\n清纯::https://91porn.cf/?k=%E6%B8%85%E7%BA%AF&pg={{page}}\n高潮::https://91porn.cf/?k=%E9%AB%98%E6%BD%AE&pg={{page}}\n调教::https://91porn.cf/?k=%E8%B0%83%E6%95%99&pg={{page}}\n巨乳::https://91porn.cf/?k=%E5%B7%A8%E4%B9%B3&pg={{page}}\n嫩穴::https://91porn.cf/?k=%E5%AB%A9%E7%A9%B4&pg={{page}}\n户外::https://91porn.cf/?k=%E6%88%B7%E5%A4%96&pg={{page}}\n白浆::https://91porn.cf/?k=%E7%99%BD%E6%B5%86&pg={{page}}\n双飞::https://91porn.cf/?k=%E5%8F%8C%E9%A3%9E&pg={{page}}\n次元::https://91porn.cf/?k=cos&pg={{page}}",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/3NHQTJpJ/1658938308728.png",
    "sourceName": "©91国产",
    "sourceUrl": "https://91porn.cf/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1305,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n    'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 3 XL Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.4988.0 Mobile Safari/537.36 SearchCraft/3.9.2 (Baidu; P1 11) '\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "li.col-md-3.col-sm-3.col-xs-6",
    "ruleContent": "link@all&&script!3:4:5:6:7:8:9@all&&.clearfix.p-0.m-0@all",
    "ruleImage": "a@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": ".subtitle@text",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "欧美精品::https://bjjiaoche6.buzz/index.php/vod/type/id/28.html\n卡通动漫::https://bjjiaoche6.buzz/index.php/vod/type/id/29.html\n偷拍自拍::https://bjjiaoche6.buzz/index.php/vod/type/id/23.html\n麻豆视频::https://bjjiaoche6.buzz/index.php/vod/type/id/5/page/{{page}}.html\n玩偶姐姐::https://bjjiaoche6.buzz/index.php/vod/type/id/16/page/{{page}}.html\n三级伦理::https://bjjiaoche6.buzz/index.php/vod/type/id/36.html\n颜射口爆::https://bjjiaoche6.buzz/index.php/vod/search/wd/%E5%8F%A3%E7%88%86.html\n街头素人::https://bjjiaoche6.buzz/index.php/vod/type/id/30.html\n日本无码::https://bjjiaoche6.buzz/index.php/vod/type/id/24.html\n中文字幕::https://bjjiaoche6.buzz/index.php/vod/type/id/27.html\n人妻制服::https://bjjiaoche6.buzz/index.php/vod/type/id/26.html",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/Kz2hFV3P/ySn1UA.png",
    "sourceName": "©叫车",
    "sourceUrl": "https://bjjiaoche6.buzz",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1309,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "id.wztj@li&&class.nav nav_menu clearfix@li",
    "ruleLink": "a@href",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::http://www.chaosedh18.xyz/",
    "sourceGroup": "h",
    "sourceIcon": "http://heixs03.xyz/upload/website/20210318-1/cd95cb8c971099d88227dee044037af6.jpg",
    "sourceName": "超色导航",
    "sourceUrl": "http://www.chaosedh18.xyz",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1315,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "tag.ul@tag.li",
    "ruleContent": "",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.1@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "tag.span.-1@text",
    "ruleTitle": "h5@tag.a@text||h3@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "短视频区::https://www.w6pdc.com/shipin/list-短视频.html\n美女主播::https://www.w6pdc.com/shipin/list-美女主播.html\n国产精品::https://www.w6pdc.com/shipin/list-国产精品.html\n中文字幕::https://www.w6pdc.com/shipin/list-中文字幕.html\n女优专区::https://www.w6pdc.com/shipin/list-女优专区.html\n亚洲无码::https://www.w6pdc.com/shipin/list-亚洲无码.html\n欧美精品::https://www.w6pdc.com/shipin/list-欧美精品.html\n精彩动漫::https://www.w6pdc.com/shipin/list-精彩动漫.html",
    "sourceComment": "www.maomiav.com",
    "sourceGroup": "h",
    "sourceIcon": "https://3js.cheqiao.cc/1/assets/images/theme/default/maomi_32x32.png",
    "sourceName": "猫咪视频",
    "sourceUrl": "www.w6pdc.com",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1317,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.result.list",
    "ruleContent": ".fui-swipe-wrapper@all",
    "ruleImage": "thumb",
    "ruleLink": "https://shop.av.cn/app/index.php?i=3&c=entry&m=ewei_shopv2&do=mobile&r=goods.detail&id={{$.id}}",
    "ruleNextPage": "page",
    "rulePubDate": "subtitle",
    "ruleTitle": "title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "h",
    "sourceIcon": "https://img2.baidu.com/it/u=2870860226,1713447382&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500",
    "sourceName": "x妹基地",
    "sourceUrl": "https://shop.av.cn/app/index.php?i=3&c=entry&m=ewei_shopv2&do=mobile&r=goods.get_list&keywords=&isrecommand=&ishot=&isnew=&isdiscount=&issendfree=&istime=&cate=&order=&by=&merchid=&page={{page}}&frommyshop=0&_=1665731965262",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1318,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": " {\n\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.stui-vodlist@tag.li",
    "ruleContent": "@js:\nheader={\"Referer\":baseUrl};\nheaders={\"headers\":JSON.stringify(header)}\nvar doc = org.jsoup.Jsoup.parse(result);\nvar title = doc.select(\"h3.title\").get(1).text()\nvar data = String(doc).match(/{.*}/g)[1]\nvar url = JSON.parse(data).url\nvar video='<iframe src='+url+' width=\"100%\" height=\"560\" frameborder=\"no\" allowfullscreen=\"true\">'\nresult = '<h5>'+title+'</h5>'+video",
    "ruleDescription": "swag换",
    "ruleImage": "tag.a@data-original",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "class.stui-page@tag.li.-2@tag.a@href",
    "rulePubDate": "@js:\nvar doc = org.jsoup.Jsoup.parse(result)\nvar time = doc.select(\"p\").textNodes().get(0);\nvar view = doc.select(\"span\").text().replace(\"已完结\",\"\");\nresult = view+\"    \"+ time",
    "ruleTitle": "class.title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://www.66se2.com\n搜索::https://www.66se2.com/index.php/vod/search.html?wd=学生&submit=\n精品动漫::https://www.66se2.com/index.php/vod/type/id/4.html\n国产精品::https://www.66se2.com/index.php/vod/type/id/1.html\n日韩精品::https://www.66se2.com/index.php/vod/type/id/2.html\n欧美精品::https://www.66se2.com/index.php/vod/type/id/3.html\n三级精品::https://www.66se2.com/index.php/vod/type/id/34.html\n",
    "sourceComment": "搜索使用:将下面搜索代码中的“学生”两字替换为想搜索的内容\n网址发布页：https://66se.tv",
    "sourceGroup": "h",
    "sourceIcon": "https://www.66se2.com//statics/img/favicon.ico",
    "sourceName": "66色",
    "sourceUrl": "https://www.66se2.com",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1319,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "id.main@div.0@.relative",
    "ruleContent": "<!DOCTYPE html>\r\n<html>\r\n\r\n<head>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\r\n    <link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n    <script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\r\n    <script src=\"http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js\"></script>\n    <title>{{@@id.main@h1@text}}</title>\r\n</head>\r\n\r\n<body>\r\n    <h3>{{@@id.main@h1@text}}</h3>\r\n    <div id=\"box\">{{@@class.my-2@tag.img@html}}</div>\r\n    <div id=\"loads\">加载中 </div>\r\n    <script>\r\n        var loads;\r\n        $(document).ready(function () {\r\n            var box = document.getElementById(\"box\");\r\n            loads = document.getElementById(\"loads\");\r\n            new Viewer(box, { title: false, interval: 3000 })\r\n            var i = 1;\r\n            var page = {{@@tag.nav.1@tag.a.-2@textNodes##\\n}}-1;\r\n            var url = \"{{baseUrl}}\";\r\n            new IntersectionObserver(entries => {\r\n                if (entries[0].intersectionRatio) {\r\n                    if (entries[0].intersectionRatio <= 0) return;\r\n                    for (var j = 0; j < 1; j++) {\r\n                        fetchHtml(i, page, url);\r\n                        i += 1;\r\n                    }\r\n                }\r\n            }).observe(loads)\r\n        });\r\n\r\n\r\n        function fetchHtml(i, page, url) {\n        \t\r\n            if (i <= page) {\r\n                nurl = url+'?page=' + i;\r\n                $.ajax({\r\n                    url: nurl,\r\n                    dataType: 'html',\r\n                    success: function (html) {\r\n                        $('#box').append('<h5>' + (++i) + '->' + (++page) + '</h5>');\r\n                        $('#box').append($(html).find('.my-2 img'));\r\n                        box.viewer.update();\r\n                    },\r\n                    error: function (xhr) { }\r\n                });\r\n            } else {\r\n                $('#loads').html(\"\");\r\n            }\r\n        }\r\n    </script>\r\n</body>\r\n\r\n</html>",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "tag.time@datetime",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/?page={{page}}\n摄影::/search/摄影?page={{page}}\n随机::/?page={{ Math.ceil(Math.random()*1700) }}\n国模人体::/groups/国模人体?page={{page}}\n搜索::/search/{{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('美女'):source.getVariable()}}?page={{page}}",
    "sourceGroup": "h",
    "sourceIcon": "https://youwu.pics/favicon.ico",
    "sourceName": "尤物丧志",
    "sourceUrl": "https://youwu.pics",
    "style": "/*标题相关*/\nh3{text-align:center}\nh6{margin-bottom:0}\n* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 1330,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.related_posts@tag.li||class.node@tag.p",
    "ruleContent": "<js>page=Number({{@@class.pagination.0@tag.a.-2@textNodes}})\nurl=baseUrl.replace('.html','_')\n\nnurl=[]\nfor(i=1;i<page;i++){\n\t\tnurl.push(url+i+'.html,{\"retry\": 9}')\n\t}\n\nhtml=src\njava.toast('稍等片刻\\n　正在飞速加载')\njava.ajaxAll(nurl).map(item=>{\n\t\thtml += '\\n'+item.body()\n\t})\njava.toast('加载成功\\n　正在获取图片')\nhtml\n</js>\n\nclass.article-content@tag.p@tag.img@src\n<js>\nli='\\n'\nlist=result.split('\\n')\nfor(i in list){\n\t\tli += '<li><img src=\"http://bpic.wotucdn.com/20/32/52/20325281-1190f9105412b42f759882ce262c2dcb-3.jpg\" data-src=\"'+list[i]+'\"></li>\\n'\n\t}\nli\n</js>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n\r\n\n\n<ul id=\"box\">\n{{result}}\n</ul>\n\n\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\n<script>\n\troot = document.getElementById('box')\n\tlazy = new IntersectionObserver(entires => {\n\t\tentires.forEach(item => {\n\t\t\tif(item.isIntersecting){\n\t\t\t\titem=item.target\n\t\t\t\titem.src=item.getAttribute('data-src')\n\t\t\t\tlazy.unobserve(item)\n\t\t\t}\n\t\t})\n\t}, {\n\t\troot: root,\n\t\tthreshold: [0],\n\t\trootMargin:\"0px 0px 500px 0px\"\n\t})\n\nimgs = document.getElementsByTagName('img')\nArray.from(imgs).forEach(item => {\n\t\tlazy.observe(item)\n\t})\n\n//查看大图插件\nnew Viewer(root,{title:false,interval:3000})\n</script>",
    "ruleDescription": "",
    "ruleImage": "tag.a@tag.img@src||a.0@href##.*\\/\\D*(.*)\\.html##https://www.xgmn02.com/UploadFile/pic/$1.jpg",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "page",
    "rulePubDate": "",
    "ruleTitle": "h2@text||tag.a@title||tag.b@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::plus/search/index.asp?keyword={{source.getVariable()}}&searchtype=titlekeywords&p={{page}}\nCosplay::Cosplay/page_{{page+1}}.html\n性感::Xgyw/page_{{page+1}}.html\n内衣::neiyiyouwu/page_{{page+1}}.html\n秀人网::Xiuren/page_{{page+1}}.html\n美媛馆::MyGirl/page_{{page+1}}.html\n尤物馆::YouWu/page_{{page+1}}.html\n爱蜜社::IMiss/page_{{page+1}}.html\n蜜桃社::MiiTao/page_{{page+1}}.html\n优星馆::Uxing/page_{{page+1}}.html\n嗲囡囡::FeiLin/page_{{page+1}}.html\n魅妍社::MiStar/page_{{page+1}}.html\n兔几盟::Tukmo/page_{{page+1}}.html\n影私荟::WingS/\n星乐园::LeYuan/page_{{page+1}}.html\n顽味生活::Taste/page_{{page+1}}.html\n模范学院::MFStar/page_{{page+1}}.html\n花の顔::Huayan/page_{{page+1}}.html\n御女郎::DKGirl/page_{{page+1}}.html\n网红馆::Candy/page_{{page+1}}.html\n尤蜜荟::YouMi/page_{{page+1}}.html\n薄荷叶::MintYe/\n瑞丝馆::Micat/page_{{page+1}}.html\n模特联盟::Mtmeng/\n花漾::HuaYang/page_{{page+1}}.html\n星颜社::XingYan/page_{{page+1}}.html\n画语界::XiaoYu/page_{{page+1}}.html\n艺图语::Yituyu/\n推女郎::Tuigirl/page_{{page+1}}.html\n尤果网::Ugirls/page_{{page+1}}.html\n青豆客::Tgod/page_{{page+1}}.html\n头条女神::TouTiao/page_{{page+1}}.html\n果团网::Girlt/page_{{page+1}}.html\n喵糖映画::Mtcos/page_{{page+1}}.html\n爱尤物::Aiyouwu/page_{{page+1}}.html\n波萝社::BoLoli/page_{{page+1}}.html\n猎女神::Slady/\n尤蜜::YouMei/page_{{page+1}}.html\nYsweb::Ysweb/page_{{page+1}}.html\n潘多拉::Pdl/page_{{page+1}}.html\nArtgravia::Artgravia/",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://www.xgmn08.com/img/logo.gif",
    "sourceName": "秀人集",
    "sourceUrl": "https://www.xg05.xyz/",
    "style": "* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1356,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.ajax-item",
    "ruleContent": "<js>\nurl = result.match(/[\\s\\S]+\"url\":\"([^\"]+)\"/)[1]\nurl = 'https://help.siwazywcdn2.com:5278/m3u8.php?url=' + String(url).replace(/\\\\\\//g,'/')\n</js>\n\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n\n<iframe src=\"{{result}}\" frameborder=\"0\" allowfullscreen=\"true\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"></iframe>",
    "ruleDescription": "",
    "ruleImage": "tag.img@lay-src",
    "ruleLink": "class.title@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "tag.span!1@text##\\n##　",
    "ruleTitle": "class.title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://chaojiflsous7.buzz/index.php/vod/search.html?wd={{source.getVariable()?source.getVariable():\"学生\"}}\n\n\n//搜索\n妹妹::https://chaojiflsous7.buzz/index.php/vod/search.html?wd=妹妹\n乱伦::https://chaojiflsous7.buzz/index.php/vod/search.html?wd=乱伦\n\n\n//分类\n国产::https://chaojiflsous7.buzz/index.php/vod/type/id/20.html\n无码::https://chaojiflsous7.buzz/index.php/vod/type/id/21.html\n日韩::https://chaojiflsous7.buzz/index.php/vod/type/id/22.html\n有码::https://chaojiflsous7.buzz/index.php/vod/type/id/23.html\n自拍::https://chaojiflsous7.buzz/index.php/vod/type/id/24.html\n强奸::https://chaojiflsous7.buzz/index.php/vod/type/id/25.html\n欧美::https://chaojiflsous7.buzz/index.php/vod/type/id/26.html\n动漫::https://chaojiflsous7.buzz/index.php/vod/type/id/27.html\n中字::https://chaojiflsous7.buzz/index.php/vod/type/id/28.html\n伦理::https://chaojiflsous7.buzz/index.php/vod/type/id/29.html\n人妻::https://chaojiflsous7.buzz/index.php/vod/type/id/30.html\n巨乳::https://chaojiflsous7.buzz/index.php/vod/type/id/31.html\n自慰::https://chaojiflsous7.buzz/index.php/vod/type/id/32.html\n制服::https://chaojiflsous7.buzz/index.php/vod/type/id/33.html\n群交::https://chaojiflsous7.buzz/index.php/vod/type/id/34.html\n师生::https://chaojiflsous7.buzz/index.php/vod/type/id/35.html\n口交::https://chaojiflsous7.buzz/index.php/vod/type/id/36.html\n重口::https://chaojiflsous7.buzz/index.php/vod/type/id/37.html\n颜射::https://chaojiflsous7.buzz/index.php/vod/type/id/38.html\n女同::https://chaojiflsous7.buzz/index.php/vod/type/id/39.html\n萝莉::https://chaojiflsous7.buzz/index.php/vod/type/id/40.html\n美腿::https://chaojiflsous7.buzz/index.php/vod/type/id/41.html\n主播::https://chaojiflsous7.buzz/index.php/vod/type/id/42.html\n91::https://chaojiflsous7.buzz/index.php/vod/type/id/43.html\nP站::https://chaojiflsous7.buzz/index.php/vod/type/id/44.html",
    "sourceComment": "//发布页：https://chaojisousuo.me",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/nhKRtvZf/1630038585941.png",
    "sourceName": "©福利搜",
    "sourceUrl": "https://chaojiflsous7.buzz",
    "style": "*{\n\tpadding:0;\n\tmargin:0;\n\theight:100%;\n\twidth:100%\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1399,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "http://m.kkkkwu.com/favicon.ico",
    "sourceName": "4K屋",
    "sourceUrl": "http://m.kkkkwu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1434,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=957533087,2987653894&fm=26&gp=0.jpg",
    "sourceName": "美剧天堂",
    "sourceUrl": "http://www.mjgod.net",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1436,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "class.th",
    "ruleContent": "class.video_player&&class.container&&class.player_twocolumns&&class.column&&class.player&&class.player-holder@all\t\t\t\t\t\t\t\t\t\t\t\t\t",
    "ruleImage": "class.lazy-load@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "",
    "rulePubDate": "class.sticky_time",
    "ruleTitle": "class.lazy-load@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "國產自拍::https://theav28.com/categories/21c031e02ee6ad29acda82b9625b28ef/\n主播福利::https://theav28.com/categories/21dc971a5d4361143877eb09b7cd08a5/\n傳媒映畫::https://theav28.com/categories/cc1dce3873efbfae9448ff8049d72b95/\n中文字幕::https://theav28.com/categories/6eec9fd0dad785e04651354b8ddab749/\n高清無碼::https://theav28.com/categories/cd80c93db2d41150d80f5668f6e20b7f/\n高清有碼::https://theav28.com/categories/ddc1aab6fe0d5609e60d6941280b7660/\n歐美風情::https://theav28.com/categories/a0b14da040498ca8c3882059087b722c/\n三級電影::https://theav28.com/categories/6c589f4e28d3bb2944ec613ac6a25456/\n卡通動漫::https://theav28.com/categories/b83d6021cfa5cc3a3feff746a6f72b12/",
    "sourceGroup": "h",
    "sourceIcon": "https://theav28.com/favicon.ico",
    "sourceName": "TheAVPorn",
    "sourceUrl": "https://theav28.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1486,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.children",
    "ruleContent": "<html lang=\"en\" data-dpr=\"1\" style=\"font-size: 39.3091px;\"><head>\n    <meta charset=\"UTF-8\">\n    <link rel=\"stylesheet\" href=\"http://m.6yueting.com/css/play.css?v=1.0.2\">\n    <div class=\"outer-wrapper page-width\">\n        <div class=\"player page-width\">\n\n            <div class=\"top\">\n                <h2 class=\"title episode-name\">{{$..channel_name}}</h2>\n            </div>\n            <div class=\"background\">\n               <div class=\"background-mask\">\n                </div>\n            </div>\n            <div class=\"player-cover p-run\">\n                <img class=\"image\" src=\"{{$..cover_url}}\">\n            </div>\n            <div class=\"bottom\">\n                <div class=\"personalized\">\n                    <div class=\"item to-list-link\">\n<audio id=\"kugou\" height=\"100%\" width=\"100%\" controls=\"\" src=\"http://open.ls.qingting.fm/live/{{$..qt_channel_id}}/24k.m3u8?deviceid=652f2086-a7ae-3c71-afb1-ef1fd020ff23\"></audio>                  </div>\n                       </div>\n                </div>\n\n</body></html>",
    "ruleDescription": "",
    "ruleImage": "$..pic_large_url",
    "ruleLink": "https://fm.music.xiaomi.com{$..request_url}",
    "rulePubDate": "{{$..subtitle}}",
    "ruleTitle": "$.data..name",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "国家台::https://fm.music.xiaomi.com/fm/v1/category/channel/370?pageType=%2Ffm_broadcast_list%2F%E5%B9%BF%E6%92%AD%2F%E5%9B%BD%E5%AE%B6%E5%8F%B0&version_info=%7B%22apk_version%22%3A%22230%22%2C%22apk_version_name%22%3A%221.0.230%22%2C%22device%22%3A%22platina%22%2C%22language%22%3A%22zh_CN%22%2C%22sys_verversion%22%3A%229_V10.3.7.0.PDTCNXM%22%7D&sign=2a57df4bf0b8a5e428b079783f529eeddac4f39d&nonce=9213596406902170431&i=37828e023677ad6e78e96f1c8506e8c4&oaid=56fbb3561e299e40&oaid_imei_both_have=true&ui_version=87&is_pad=false&miui_version=V10&package_name=com.miui.fm&support_fmservice=false\n交通台::https://fm.music.xiaomi.com/fm/v1/category/channel/401?pageType=%2Ffm_broadcast_list/广播/交通台&version_info=%7B%22apk_version%22%3A%22230%22%2C%22apk_version_name%22%3A%221.0.230%22%2C%22device%22%3A%22platina%22%2C%22language%22%3A%22zh_CN%22%2C%22sys_verversion%22%3A%229_V10.3.7.0.PDTCNXM%22%7D&sign=95a7b18a89cb3419d1b54658f25216aec5d4df21&nonce=-5530817897123709456&i=37828e023677ad6e78e96f1c8506e8c4&oaid=56fbb3561e299e40&oaid_imei_both_have=true&ui_version=87&is_pad=false&miui_version=V10&package_name=com.miui.fm&support_fmservice=false\n资讯广播::https://fm.music.xiaomi.com/fm/v1/category/channel/397?pageType=%2Ffm_broadcast_list%2F%E5%B9%BF%E6%92%AD%2F%E8%B5%84%E8%AE%AF%E5%8F%B0&version_info=%7B%22apk_version%22%3A%22230%22%2C%22apk_version_name%22%3A%221.0.230%22%2C%22device%22%3A%22platina%22%2C%22language%22%3A%22zh_CN%22%2C%22sys_verversion%22%3A%229_V10.3.7.0.PDTCNXM%22%7D&sign=bdabdf5fe65fe58bc800c2bcd9c3658e1847da6b&nonce=-5845902009413785201&i=37828e023677ad6e78e96f1c8506e8c4&oaid=56fbb3561e299e40&oaid_imei_both_have=true&ui_version=87&is_pad=false&miui_version=V10&package_name=com.miui.fm&support_fmservice=false",
    "sourceGroup": "noh",
    "sourceIcon": "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1721193954,2785126282&fm=26&gp=0.jpg",
    "sourceName": "广播电台",
    "sourceUrl": "https://fm.music.xiaomi.com/fm/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1496,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleImage": "",
    "ruleLink": "",
    "rulePubDate": "",
    "ruleTitle": "",
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://ps.ssl.qhmsg.com/t022c0047a09b681985.jpg",
    "sourceName": "百食阁",
    "sourceUrl": "http://www.cf555.com/mm.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1498,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_8502_1606287649/256",
    "sourceName": "美食杰",
    "sourceUrl": "http://m.meishij.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1499,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "",
    "ruleLink": "",
    "ruleTitle": "",
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "noh",
    "sourceIcon": "https://b.bdstatic.com/searchbox/mappconsole/image/20181107/1541551479-90958.png",
    "sourceName": "心食谱",
    "sourceUrl": "https://www.xinshipu.com",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1513,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.well well-sm",
    "ruleContent": "class.video-js vjs-default-skin vjs-big-play-centered vjs-16-9@all",
    "ruleImage": "img@data-src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": ".duration@text",
    "ruleTitle": "img@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "國產AV::https://18porn.cc/?c=16&page={{page}}\n自拍::https://18porn.cc/?c=1&page={{page}}\n台灣本土::https://18porn.cc/?c=20&page={{page}}\n長片::https://18porn.cc/?c=41&page={{page}}\n短視頻::https://18porn.cc/?c=35&page={{page}}",
    "sourceGroup": "h",
    "sourceIcon": "https://18porn.cc/images/favicon.ico",
    "sourceName": "18Porn",
    "sourceUrl": "https://18porn.cc/",
    "style": "video{width:100%}img{width:100%}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1516,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\n//变量为零时，保存搜索关键词为\"二次元\"\nif(source.getVariable()==''){\n\tsource.setVariable('二次元')\n}else{result}\n</js>\n.clearfix@li",
    "ruleContent": "<br><h3>{{@@h1@text}}</h3>\n<h6>{{@@.special@a@text&&.relation_tags@a@text##\\s##　}}<b>{{@@.base-info@text}}</b></h6>\n\n<div id=\"box\">\n{{@@.con_img@html}}\n</div>\n<h6 id=\"loads\">加载中 </h6>\n\n\n\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.2/viewer.min.css\">\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.2/viewer.min.js\"></script>\n\n\n<script>\n//定义box,loads\n\tvar box = document.getElementById(\"box\");\n\tvar loads = document.getElementById(\"loads\");\n\n//加载完第一页图片后，启动js\n\tdocument.querySelector(\"img\").onload = () => {\n\n//启用查看大图插件\n\t\tnew Viewer(box,{\n\t//是否显示图片标题(true/false)\n\t\t\ttitle: false,\n\t//设置播放间隔\n\t//单位毫秒，1秒=1000毫秒，默认5000\n\t\t\tinterval: 3000\n\t\t});\n\n//把loads的id改成ioad，定义i,page,url\n\t\tloads.id = 'load';\n\t\tvar i = 1;\n\t\tvar page = {{@@.pages@a.-2@text}};\n\t\tvar url = \"{{baseUrl.replace('.html','-')}}\";\n\n\n//图片懒加载，当entries<=0时结束？\n\tio = new IntersectionObserver(entries => {\n\t\tif(entries[0].intersectionRatio<=0) return;\n\n\n//for循环，一次获取3页图片\n\t\tfor(j=0;j<3;j++){\n\t\t\tfetchHtml(i,page,url);\t\n\t\t\ti += 1;\n\t\t}\n\t})\n\n//刷新loads，把\"加载中\"替换为获取的图片\n\tio.observe(load);\n}\r\n\n\n\n//通过异步加载获取图片\r\nfunction fetchHtml(i,page,url){\n\tif(i<=page){\n\t\tnurl=url+i+'.html';\n\n//加载网址并建立一个数组?\n\t\tfetch(nurl).then(res=>res.text())\n//获取图片在数组里？\n\t\t.then(text => {\n//显示当前页数\n\t\t\tbox.innerHTML += '<h4>'+i+'->'+(page+1)+'</h4>';\n\n//格式化网站\n\t\t\tnew DOMParser()\n\t\t\t.parseFromString(text,\"text/html\")\n\n//定位图片位置，获取\n\t\t\t.querySelectorAll(\".con_img\")\n\t\t\t.forEach(item => box.innerHTML += item.outerHTML.replace('<img', '<img onload=\"box.viewer.update()\"'))\n\t\t})\n\n//页面加载完之后不再显示\"加载中\"\n\t}else{\n\t\tio.unobserve(load);\n\t\tload.innerHTML=''\n\t}\n\ti += 1;\r\n}\n</script>",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href||page",
    "rulePubDate": "div@text",
    "ruleTitle": "p@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\n\"🔎 搜索::https://www.meijuntu.com/search/{{source.getVariable()}}-{{page}}.html\\n⭐ 三度_69::https://www.meijuntu.com/model/sandu_69-{{page}}.html\\n小九月::https://www.meijuntu.com/model/xiaojiuyue-{{page}}.html\\n\" +\n\n//热门主题\norg.jsoup.Jsoup.parse(\n\tjava.ajax(\"https://www.meijuntu.com/beauty\")\n).select(\".tags a\").toArray()\n.map(x=>x.text()+\"::https://www.meijuntu.com\"+x.attr(\"href\")).join(\"\\n\") +\"\\n\"+\n\n//热门搜索\norg.jsoup.Jsoup.parse(\n\tjava.ajax(\"https://www.meijuntu.com/search\")\n).select(\".keyword\").toArray()\n.map(x=>x.text()+\"::https://www.meijuntu.com\"+x.attr(\"href\")).join(\"\\n\")",
    "sourceComment": "网站分页多，ajax全加载太慢了。\n\n只能调用llili大佬的异步加载模板，再解析一下大致意思(也只知道大致意思，\n\n正文图片好像有一张是重复的，原因未知\n\n\n\n【实现网站搜索】\n\n刷新，刷新，刷新！\n\n列表页右上角-设置源变量(搜索关键字)-确认\n\n右上角-清除-然后上滑刷新(不清除就需要往下翻才能\"搜索\")\n\n不设置源变量会调用source.setVariable()的默认搜索关键字(需要在列表页等待一会，然后上滑刷新。有概率失败，可能是没加载js)\n\n有等待的功夫不如直接调整源变量搜索",
    "sourceGroup": "noh",
    "sourceIcon": "https://www.meijuntu.com/favicon.ico",
    "sourceName": "俊美图",
    "sourceUrl": "https://www.meijuntu.com",
    "style": "/*标题相关*/\nh3{text-align:center}\nh6{margin-bottom:0}\nb{float:right}\n\n/*图片相关*/\nimg{width:100%}\n\n/*分页相关*/\nh4{\n\tborder-left:2px solid #000;\n\tmargin-bottom:2px;\n\tpadding-left:2px\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1518,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.maincontent@tag.section||class.table@tag.tbody@tag.tr",
    "ruleContent": "class.card-body@html||class.card-body@tag.img@html",
    "ruleImage": "tag.a.0@tag.img@src",
    "ruleLink": "tag.a.0@href||tag.a@href",
    "ruleNextPage": "text.Next@href",
    "ruleTitle": "tag.td@tag.a@text||tag.a@tag.p.0@text||tag.tr@tag.td@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "街拍偷拍::https://imghub.space/xiao77/cat/jiepai\n网友自拍::https://imghub.space/xiao77/cat/self\n激情男女::https://imghub.space/1024/cat/jiqing\n偷拍男女::https://imghub.space/1024/cat/toupai\n自拍男女 ::https://imghub.space/1024/cat/selfie\n",
    "sourceComment": "1024",
    "sourceGroup": "h",
    "sourceIcon": "https://i.postimg.cc/FKmx3pcg/1658968390917.png",
    "sourceName": "📖Imghub",
    "sourceUrl": "https://imghub.space/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1520,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.listing-videos@li",
    "ruleContent": "<js>\ntitle=java.getElements('title').text()\nresult=java.getElements('class.flowplayer').attr('data-item')\nresult=result.match(/src\":\"(.*)\",\"type\":/)[1]\nif(result){\n\tjava.toast('🔞视频链接获取成功！\\n加载稍慢，请耐心等待\\nby 银河中的咸鱼')\nresult=result.replace(/\\\\/g,'')\nresult = \"<video src=\\\"\" + result + \"\\\" width=\\\"100%\\\" height=\\\"auto\\\" controls=\\\"controls\\\" autoplay=\\\"autoplay\\\"></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result + \"<h4>\"+title+\"</h4>\"+ \"</body></html>\"\n result\n}else{\n\tjava.toast('🔞视频链接获取失败❗️\\nby 银河中的咸鱼')\n}\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href##/$##\n<js>\nif(!result.match(/sub-eng/)){\n\tresult=result+\"-episode-1-sub-eng/\"\n}else{\n\tresult\n}\n</js>",
    "ruleNextPage": "page",
    "rulePubDate": "class.time-infos@text##^##时长：",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://www.xanimeporn.com/page/{{page}}/?s={{source.getVariable()}}\n播放量::https://www.xanimeporn.com/page/{{page}}/?filtre=views&cat=0\n评分::https://www.xanimeporn.com/page/{{page}}/?filtre=rate&cat=0\n最新::https://www.xanimeporn.com/page/{{page}}/?display=tube&filtre=date\n时长::https://www.xanimeporn.com/page/{{page}}/?display=tube&filtre=duree",
    "sourceGroup": "h",
    "sourceIcon": "https://img1.baidu.com/it/u=2189826692,2238731457&fm=253&fmt=auto?w=500&h=500",
    "sourceName": "XAnime",
    "sourceUrl": "https://www.xanimeporn.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1536,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "//选择需要删除的标签，以,分隔\nitems = document.querySelectorAll(`\n\t.notice-top,\n\t.navbar-nav>li:nth-child(n+3),\n\t.navbar-right,\n\t.anti-select,\n\t#show-qrcode,\n\t#ex-comment,\n\t.hidden-more\n`)\n\n//把选择的html值改成空\nArray.from(items,(item)=>{\n\titem.innerHTML = ``\n\titem.style.display = `none`\n})\n\n\n\n//上面是通用js，下面的不是\n//删除网站的随机广告\nitems = document.querySelectorAll('.item')\nif(items){\nArray.from(items,(item)=>{\nif(item.querySelector('.item-num').innerText == 'AD'){\n\t\titem.innerHTML = ``\n\t\titem.style.display = `none`\n\t}\n})\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "",
    "preload": false,
    "ruleArticles": ".cc-cd-ih",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": ".cc-cd-sb-st@text",
    "ruleTitle": ".cc-cd-lb@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "报纸::https://tophub.today/c/epaper?p={{page}}",
    "sourceComment": "广告屏蔽测试，阅读版本需要22.11.08以上",
    "sourceGroup": "noh可用,noh",
    "sourceIcon": "https://www.fulitu.cc/usr/themes/photograph/favicon.png",
    "sourceName": "报纸聚合",
    "sourceUrl": "https://tophub.today/c/epaper?p={{page}}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1537,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "//选择需要删除的标签，以,分隔\nitems = document.querySelectorAll(`\n\t.notice-top,\n\t.navbar-nav>li:nth-child(n+3),\n\t.navbar-right,\n\t.anti-select,\n\t#show-qrcode,\n\t#ex-comment,\n\t.hidden-more\n`)\n\n//把选择的html值改成空\nArray.from(items,(item)=>{\n\titem.innerHTML = ``\n\titem.style.display = `none`\n})\n\n\n\n//上面是通用js，下面的不是\n//删除网站的随机广告\nitems = document.querySelectorAll('.item')\nif(items){\nArray.from(items,(item)=>{\nif(item.querySelector('.item-num').innerText == 'AD'){\n\t\titem.innerHTML = ``\n\t\titem.style.display = `none`\n\t}\n})\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".xing_vb ul li",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@.xing_vb5.0@text}} {{@.xing_vb5.1@text}} {{@.xing_vb5.2@text}} {{@.xing_vb6@text}}",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "福利::https://1080zyk2.com/?m=vod-type-id-19-pg-{{page}}.html\n伦理::https://1080zyk2.com/?m=vod-type-id-61-pg-{{page}}.html",
    "sourceComment": "广告屏蔽测试，阅读版本需要22.11.08以上",
    "sourceGroup": "h",
    "sourceIcon": "https://www.fulitu.cc/usr/themes/photograph/favicon.png",
    "sourceName": "福利视频啦",
    "sourceUrl": "https://1080zyk2.com",
    "type": 0,
    "variableComment": "<div class=\"xing_vb\">\n<ul>\n<li><span class=\"xing_vb1\">影片名称</span><span class=\"xing_vb2\">影片类别</span><span class=\"xing_vb2\">影片地区</span><span class=\"xing_vb2\">影片评分</span><span class=\"xing_vb3\">更新时间</span></li>\n</ul>\n<ul>\n<li><span class=\"tt\"></span><span class=\"xing_vb4\"><a href=\"/?m=vod-detail-id-36299.html\" target=\"_blank\">絲襪穿搭lookbook- 窄裙性感小洋裝試穿- 掌握拉鍊技巧HD</a></span> <span class=\"xing_vb5\">福利</span><span class=\"xing_vb5\">大陆</span><span class=\"xing_vb5\">0.0</span> <span class=\"xing_vb6\">2023-01-25 21:22:13</span></li>\n</ul>"
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1540,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.item",
    "ruleContent": "<js>\n\nfunction getNext(){\n\n//下一页url，链接不全请补全\nnextUrl = java.getString('class.next@href')\n\n\n\n\t\tif(nextUrl!=\"\"){\n\t\t\t\tp++\n\t\tjava.toast('p'+p+'加载中...')\n\t\t\t\treturn getHtml()\n\t\t\t}\n\njava.toast('加载完成')\n\t\treturn result\n\t}\n\n\n\n\n\nfunction getHtml(){\ntry{\n\t\tajax = java.ajax(nextUrl)\n\t\tjava.setContent(ajax)\n\t\tresult += ajax\n\t\treturn getNext()\n\t}\n\n//ajax下一页报错时，会重新尝试两次。\n//超过三次失败就不再加载。\ncatch (err){\n\t\tif(e<4){\n\t\t\t\te++\n\t\t\tjava.toast('p'+p+'加载中...')\n\t\t\t\treturn getHtml()\n\t\t\t}\n\t\treturn result\n\t}\n}\n\np = e = 1\ngetNext()\n</js>\n\n\ntag.noscript@tag.img@src\n<js>\nli='\\n'\nlist=result.split('\\n')\nfor(i in list){\n\t\tli += '<li><img src=\"https://www.q10drfc.com/wp-content/themes/justnews/images/logo.png\" data-src=\"'+list[i]+'\"></li>\\n'\n\t}\nli\n</js>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n\n\n<ul id=\"box\">\n{{result}}\n</ul>\n\n\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\n<script>\n\troot = document.getElementById('box')\n\tlazy = new IntersectionObserver(entires => {\n\t\tentires.forEach(item => {\n\t\t\tif(item.isIntersecting){\n\t\t\t\titem=item.target\n\t\t\t\titem.src=item.getAttribute('data-src')\n\t\t\t\tlazy.unobserve(item)\n\t\t\t}\n\t\t})\n\t}, {\n\t\troot: root,\n\t\tthreshold: [0],\n\t\trootMargin:\"0px\"\n\t})\n\nimgs = document.getElementsByTagName('img')\nArray.from(imgs).forEach(item => {\n\t\tlazy.observe(item)\n\t})\n\n//查看大图插件\nnew Viewer(root,{title:false,interval:3000})\n</script>",
    "ruleDescription": "",
    "ruleImage": "tag.img@src##.*src=|&.*",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.next@href",
    "rulePubDate": "{{@@class.item-category@text}} &nbsp; {{@@class.item-meta-left@text}}",
    "ruleTitle": "class.item-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "美女图片::https://www.q10drfc.com/category/mntp\n三度_69::https://www.q10drfc.com/tag/%e4%b8%89%e5%ba%a6_69\n\n变量搜索::https://www.q10drfc.com/?s={{v=source.getVariable();(v!='',v!=null)?v:(source.setVariable('青春'),source.getVariable())}}\n\n秀人网::https://www.q10drfc.com/category/mntp/%e7%a7%80%e4%ba%ba%e7%bd%91\n爱尤物::https://www.q10drfc.com/category/mntp/%e7%88%b1%e5%b0%a4%e7%89%a9\n语画界::https://www.q10drfc.com/category/mntp/%e8%af%ad%e7%94%bb%e7%95%8c\n花漾show::https://www.q10drfc.com/category/mntp/%e8%8a%b1%e6%bc%beshow\n模范学院::https://www.q10drfc.com/category/mntp/%e6%a8%a1%e8%8c%83%e5%ad%a6%e9%99%a2\n美媛馆::https://www.q10drfc.com/category/mntp/%e7%be%8e%e5%aa%9b%e9%a6%86\n喵糖映画::https://www.q10drfc.com/category/mntp/%e5%96%b5%e7%b3%96%e6%98%a0%e7%94%bb\n雅拉伊::https://www.q10drfc.com/category/mntp/%e9%9b%85%e6%8b%89%e4%bc%8a\n爱蜜社::https://www.q10drfc.com/category/mntp/%e7%88%b1%e8%9c%9c%e7%a4%be\n嗲囡囡::https://www.q10drfc.com/category/mntp/%e5%97%b2%e5%9b%a1%e5%9b%a1\n星颜社::https://www.q10drfc.com/category/mntp/%e6%98%9f%e9%a2%9c%e7%a4%be\n尤美::https://www.q10drfc.com/category/mntp/%e5%b0%a4%e7%be%8e\n尤蜜荟::https://www.q10drfc.com/category/mntp/%e5%b0%a4%e8%9c%9c%e8%8d%9f\n头条女神::https://www.q10drfc.com/category/mntp/%e5%a4%b4%e6%9d%a1%e5%a5%b3%e7%a5%9e\n糖果画报::https://www.q10drfc.com/category/mntp/%e7%b3%96%e6%9e%9c%e7%94%bb%e6%8a%a5\n魅妍社::https://www.q10drfc.com/category/mntp/%e9%ad%85%e5%a6%8d%e7%a4%be\n尤物馆::https://www.q10drfc.com/category/mntp/%e5%b0%a4%e7%89%a9%e9%a6%86\n蜜桃社::https://www.q10drfc.com/category/mntp/%e8%9c%9c%e6%a1%83%e7%a4%be\n花の颜::https://www.q10drfc.com/category/mntp/%e8%8a%b1%e3%81%ae%e9%a2%9c\nDK御女郎::https://www.q10drfc.com/category/mntp/dk%e5%be%a1%e5%a5%b3%e9%83%8e\n猫萌榜::https://www.q10drfc.com/category/mntp/%e7%8c%ab%e8%90%8c%e6%a6%9c\n尤果网::https://www.q10drfc.com/category/mntp/%e5%b0%a4%e6%9e%9c%e7%bd%91\n星乐园::https://www.q10drfc.com/category/mntp/%e6%98%9f%e4%b9%90%e5%9b%ad\n猎女神::https://www.q10drfc.com/category/mntp/%e7%8c%8e%e5%a5%b3%e7%a5%9e\n克拉女神::https://www.q10drfc.com/category/mntp/%e5%85%8b%e6%8b%89%e5%a5%b3%e7%a5%9e\n熊川纪信::https://www.q10drfc.com/category/mntp/%e7%86%8a%e5%b7%9d%e7%ba%aa%e4%bf%a1\n果团网::https://www.q10drfc.com/category/mntp/%e6%9e%9c%e5%9b%a2%e7%bd%91\n轰趴猫::https://www.q10drfc.com/category/mntp/%e8%bd%b0%e8%b6%b4%e7%8c%ab\n兔几盟::https://www.q10drfc.com/category/mntp/%e5%85%94%e5%87%a0%e7%9b%9f\n波萝社::https://www.q10drfc.com/category/mntp/%e6%b3%a2%e8%90%9d%e7%a4%be\n美腿宝贝::https://www.q10drfc.com/category/mntp/%e7%be%8e%e8%85%bf%e5%ae%9d%e8%b4%9d\n推女神::https://www.q10drfc.com/category/mntp/%e6%8e%a8%e5%a5%b3%e7%a5%9e\n模特联盟::https://www.q10drfc.com/category/mntp/%e6%a8%a1%e7%89%b9%e8%81%94%e7%9b%9f\n激萌文化::https://www.q10drfc.com/category/mntp/%e6%bf%80%e8%90%8c%e6%96%87%e5%8c%96\n优星馆::https://www.q10drfc.com/category/mntp/%e4%bc%98%e6%98%9f%e9%a6%86\n薄荷叶::https://www.q10drfc.com/category/mntp/%e8%96%84%e8%8d%b7%e5%8f%b6\n萌缚::https://www.q10drfc.com/category/mntp/%e8%90%8c%e7%bc%9a\n推女郎::https://www.q10drfc.com/category/mntp/%e6%8e%a8%e5%a5%b3%e9%83%8e\n爱丝::https://www.q10drfc.com/category/mntp/%e7%88%b1%e4%b8%9d\n影私荟::https://www.q10drfc.com/category/mntp/%e5%bd%b1%e7%a7%81%e8%8d%9f\n村长的宝物::https://www.q10drfc.com/category/mntp/%e6%9d%91%e9%95%bf%e7%9a%84%e5%ae%9d%e7%89%a9\nDDY::https://www.q10drfc.com/category/mntp/ddy\n顽味生活::https://www.q10drfc.com/category/mntp/%e9%a1%bd%e5%91%b3%e7%94%9f%e6%b4%bb\n51Modo::https://www.q10drfc.com/category/mntp/51modo\nRosi::https://www.q10drfc.com/category/mntp/rosi\nDisi::https://www.q10drfc.com/category/mntp/disi\nIShow::https://www.q10drfc.com/category/mntp/ishow\nPans::https://www.q10drfc.com/category/mntp/pans\n中国腿模::https://www.q10drfc.com/category/mntp/%e4%b8%ad%e5%9b%bd%e8%85%bf%e6%a8%a1\nVGirl::https://www.q10drfc.com/category/mntp/vgirl\nRu1mm::https://www.q10drfc.com/category/mntp/ru1mm\nSityle::https://www.q10drfc.com/category/mntp/sityle\n美女写真杂烩::https://www.q10drfc.com/category/mntp/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9d%82%e7%83%a9\n中国美女写真::https://www.q10drfc.com/category/mntp/%e4%b8%ad%e5%9b%bd%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f\n台湾美女写真::https://www.q10drfc.com/category/mntp/%e5%8f%b0%e6%b9%be%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f\n韩国美女写真::https://www.q10drfc.com/category/mntp/%e9%9f%a9%e5%9b%bd%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f\n日本美女写真::https://www.q10drfc.com/category/mntp/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f",
    "sourceComment": "",
    "sourceGroup": "h",
    "sourceIcon": "https://www.q10drfc.com/wp-includes/images/w-logo-blue-white-bg.png",
    "sourceName": "福利网",
    "sourceUrl": "https://www.q10drfc.com/category/mntp",
    "style": "*{\n\tmargin: 0;\n\tpadding: 0\n}\nul{\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli{\n\tlist-style: none;\n\ttext-align: center\n}\nimg{\n\twidth:100%;\n\theight:auto\n}",
    "type": 0,
    "variableComment": ""
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1541,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".visited[4:]",
    "ruleContent": "script@all<js>\nresult = eval(result.match(/eval(\\(.+\\))/)[1]).match(/src:[\"'](.+?)[\"']/)[1];\nresult = `<video src=\"${result}\" width=\"100%\" height=\"280px\" controls=\"controls\" ></video>`;\nresult = `<html><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" /><style>html,body{background-color:black;margin:0;padding:0;width:100%;}</style></head><body>${result}</body></html>`\n</js>",
    "ruleImage": "img@data-src",
    "ruleLink": "href",
    "ruleNextPage": "page",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "精品海外::https://www.pornlulu.com/cat/387?page={{page}}\n國產情色::https://www.pornlulu.com/cat/119?page={{page}}\n國產自拍::https://www.pornlulu.com/cat/263?page={{page}}\n國產精品::https://www.pornlulu.com/cat/249?page={{page}}\n中文字幕::https://www.pornlulu.com/cat/48?page={{page}}\n亞洲情色::https://www.pornlulu.com/cat/22?page={{page}}\n歐美極品::https://www.pornlulu.com/cat/266?page={{page}}\n日本無碼::https://www.pornlulu.com/cat/270?page={{page}}\n日本有碼::https://www.pornlulu.com/cat/269?page={{page}}\n",
    "sourceGroup": "h",
    "sourceIcon": "https://www.pornlulu.com/logo.png",
    "sourceName": "Pornlulu",
    "sourceUrl": "https://www.pornlulu.com/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1552,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "#posts .post",
    "ruleContent": "#gallery-2@img@src\n<js>result.split('\\n').map($=>`<li><img src=\"https://yskhd.com/wp-content/themes/modown/static/img/thumbnail.png\" data-src=\"${$.replace('-285x285','')}\"></li>`).join('\\n')</js>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n\n\n<ul id=\"box\">\n{{result}}\n</ul>\n\n\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\n<script>\n\troot = document.getElementById('box')\n\tlazy = new IntersectionObserver(entires => {\n\t\tentires.forEach(item => {\n\t\t\tif(item.isIntersecting){\n\t\t\t\titem=item.target\n\t\t\t\titem.src=item.getAttribute('data-src')\n\t\t\t\tlazy.unobserve(item)\n\t\t\t}\n\t\t})\n\t}, {\n\t\troot: root,\n\t\tthreshold: [0],\n\t\trootMargin:\"0px\"\n\t})\n\nimgs = document.getElementsByTagName('img')\nArray.from(imgs).forEach(item => {\n\t\tlazy.observe(item)\n\t})\n\n//查看大图插件\nnew Viewer(root,{title:false,interval:3000})\n</script>",
    "ruleImage": "img@data-src",
    "ruleLink": "a.2@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "🔖 {{@a.1@text}}　⏱️ {{@.time@text}}",
    "ruleTitle": "a.2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::https://yskhd.com/all?paged=1&c&c2&c3&c4&t\n搜索::https://yskhd.com/?s={{if(source.getVariable().match(/^\\s*$/))source.setVariable('妹');source.getVariable()}}\n秀人::https://yskhd.com/all?c=1&c2&c3&c4&t&paged=1\n丝模::https://yskhd.com/all?c=2&c2&c3&c4&t&paged=1\n雅拉伊::https://yskhd.com/all?c=15&c2&c3&c4&t&paged=1",
    "sourceGroup": "h",
    "sourceIcon": "https://yskhd.com/wp-content/themes/modown/static/img/thumbnail.png",
    "sourceName": "优丝库HD",
    "sourceUrl": "https://yskhd.com/all",
    "style": "* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1553,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 12; 22041211AC Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".list@li",
    "ruleContent": "<js>\nvar v = result.match(/source\\s*=\\s*[\"']([^\"']*?\\.(m3u8|mp4)\\b[^\"']*)[\"']/i);\nvar p = v ? v[1].replace(/\\\\/g,'') : '';\nvar t = '@get:{t}';\nvar d = java.getString('[property=\"video:tag\"]@content');\nvar sign1 = java.base64Decode('44CQ5aSc5piO56m644CR55qE5pKt5pS+5Zmo');\nvar sign2 = java.base64Decode('5LuF5L6b5Liq5Lq65a2m5Lmg5L2/55So77yM5Lil56aB5YiG5Lqr44CB5YCS5Y2W5Y+K5Lu75L2V6L+d5rOV6KGM5Li677yB');\nvar sign3 = java.base64Decode('5L2/55So6ICF6Ieq6KGM5om/5ouF6aOO6Zmp5LiO6LSj5Lu7');\n`<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>${t}</title>\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:-apple-system,sans-serif;background:#f0f9ff;padding:10px}\n.v-box{max-width:800px;margin:0 auto;background:white;border-radius:12px;box-shadow:0 5px 15px rgba(0,0,0,0.1);overflow:hidden}\n.header{padding:12px;border-bottom:1px solid #eee;display:flex;flex-wrap:wrap;justify-content:space-between}\n.sign{background:#e9f7ff;padding:6px;border-radius:6px;margin-bottom:8px;font-size:14px;color:#1a73e8;width:100%}\n.title{font-size:18px;font-weight:600;margin-bottom:8px;width:100%}\n.tags{color:#5f6368;font-size:14px;flex:1;min-width:60%;word-break:break-all}\n.time{color:#5f6368;font-size:14px;text-align:right;flex-basis:35%}\n.v-wrap{position:relative;padding-top:56.25%;background:#000}\n.video{position:absolute;top:0;left:0;width:100%;height:100%}\n.footer{padding:8px;text-align:center;color:#5f6368;font-size:13px}\n.info-box{padding:15px;font-size:14px;line-height:1.6}\n.info-box p{margin:8px 0}\n.hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(0,0,0,0.7);color:#fff;padding:12px 20px;border-radius:20px;font-size:1.1rem;z-index:10;display:none}\n.controls{position:absolute;top:0;left:0;width:100%;height:4px;background:rgba(255,255,255,0.3);z-index:5;transition:opacity 0.3s}\n.progress{height:100%;background:#4a9eff;width:0}\n</style>\n</head>\n<body>\n<div class=\"v-box\">\n<div class=\"header\">\n<div class=\"sign\" style=\"text-align:center;padding:5px 0\">\n<div>${sign1}</div>\n<div style=\"text-align:left; padding-top:4px\">\n${sign2}<br>${sign3}</div>\n</div>\n<div class=\"title\">${t}</div>\n<div class=\"tags\">${d}</div>\n<div class=\"time\" id=\"timeDisplay\">00:00/00:00</div></div>\n<div class=\"v-wrap\">\n<div class=\"controls\"><div class=\"progress\" id=\"progressBar\"></div></div>\n<div class=\"hint\" id=\"hint\">快进中 &gt;&gt;</div>\n<video class=\"video\" id=\"v\" controls playsinline>\n<source src=\"${p}\" type=\"video/mp4\">您的浏览器不支持HTML5视频\n</video>\n</div>\n<div class=\"footer\">滑动调整进度 | 长按2倍速</div>\n</div>\n<script>\nvar v = document.getElementById('v');\nvar tDisplay = document.getElementById('timeDisplay');\nvar pBar = document.getElementById('progressBar');\nvar hint = document.getElementById('hint');\nvar startX = 0, startTime = 0;\nvar longPressTimer;\nvar sensitivity = 0.1;\nvar longPressTime = 500;\nvar hintDuration = 2000;\nfunction updateTime() {\nif (!v.duration) return;\nvar m1 = Math.floor(v.currentTime / 60);\nvar s1 = Math.floor(v.currentTime % 60);\nvar m2 = Math.floor(v.duration / 60);\nvar s2 = Math.floor(v.duration % 60);\ntDisplay.textContent = m1 + ':' + (s1 < 10 ? '0' : '') + s1 + '/' + m2 + ':' + (s2 < 10 ? '0' : '') + s2;\npBar.style.width = (v.currentTime / v.duration) * 100 + '%';}\nv.addEventListener('timeupdate', updateTime);\nv.addEventListener('loadedmetadata', updateTime);\nv.addEventListener('touchstart', function(e) {\nstartX = e.touches[0].clientX;\nstartTime = Date.now();\nif (longPressTimer) clearTimeout(longPressTimer);\nhint.style.display = 'none';\nlongPressTimer = setTimeout(function() {\nv.playbackRate = 2.0;\nhint.style.display = 'block';\nsetTimeout(function() { hint.style.display = 'none'; }, hintDuration);}, longPressTime);});\nv.addEventListener('touchmove', function(e) {\ne.preventDefault();\nclearTimeout(longPressTimer);\nvar diffX = e.touches[0].clientX - startX;\nvar change = diffX * sensitivity * v.duration / 100;\nv.currentTime = Math.max(0, Math.min(v.currentTime + change, v.duration));\nstartX = e.touches[0].clientX;updateTime();});\nv.addEventListener('touchend', function() {\nv.playbackRate = 1.0;\nclearTimeout(longPressTimer);});\n</script>\n</body>\n</html>`\n</js>",
    "ruleImage": "img@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.vodlist_img@html##(\\d+)-(\\d+)-(\\d+)##$0###}} | {{@@.vodlist_img@span.0@text}}",
    "ruleTitle": ".title@text@put:{\"t\":\"@@.title@text\"}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索 🔍::/s/page/{{page}}/wd/{{source.getVariable()}}/\n最新::/label/hot/by/time/page/{{page}}/\n日榜::/label/hot/by/hits_day/page/{{page}}/\n周榜::/label/hot/by/hits_week/page/{{page}}/\n月榜::/label/hot/by/hits_month/page/{{page}}/\n国产 🎞::/t/1-{{page}}/\n自拍::/t/5-{{page}}/\n主播大秀::/t/6-{{page}}/\n主播诱惑::/t/36-{{page}}/\n探花::/t/7-{{page}}/\n偷拍::/t/8-{{page}}/\n乱伦::/t/8-{{page}}/\n吃瓜::/t/10-{{page}}/\n抖阴::/t/11-{{page}}/\nAV::/t/12-{{page}}/\n福利姬::/t/20-{{page}}/\n侵犯::/t/37-{{page}}/\n日韩 🎞::/t/2-{{page}}/\n日韩自拍::/t/13-{{page}}/\n日本无码::/t/14-{{page}}/\n字幕::/t/15-{{page}}/\n解说::/t/17-{{page}}/\n换脸::/t/18-{{page}}/\n欧美 🎞::/t/3-{{page}}/\n自拍::/t/21-{{page}}/\n字幕::/t/22-{{page}}/\n伦理 🎞::/t/4-{{page}}/\n三级::/t/29-{{page}}/\n日韩::/t/30-{{page}}/\n动漫 🎞::/t/16-{{page}}/\n剧集::/t/26-{{page}}/\n3D::/t/27-{{page}}/\n次元::/t/28-{{page}}/\n另类 🎞::/t/39-{{page}}/\n同性恋::/t/38-{{page}}/\n变性::/t/40-{{page}}/\n重口味::/t/23-{{page}}/",
    "sourceComment": "<声明>\n//2025.8.10 作者：夜明空\n//源社区：https://taoba.cf\n//仅供个人学习使用，严禁分享、倒卖及任何违法行为！使用者自行承担风险与责任\n</声明>\n\n//网址更新频繁，有需要请到发布页自行更新\n//发布页：\nhttps://18j.18hu.link/mdce\n18j.vip\n18zy.vip\n51zy.vip",
    "sourceGroup": "h",
    "sourceIcon": "https://18oc.life/18link/18j/images/favicon.ico",
    "sourceName": "18J-夜明空",
    "sourceUrl": "https://18oj.life/label/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentWhitelist": "",
    "customOrder": 1558,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\t\"User-Agent\": \"Mozilla/5.0 (Linux; Android 9) Mobile Safari/537.36\",\"referer\": \"{{baseUrl}}\"\n\t}",
    "injectJs": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.video-item",
    "ruleContent": "class.dplayer@all<js>\nresult=result.match(/http.*0/)[0]##\\</js>{{@@title@text}}\n<video src=\"{{result}}\" width=\"100%\" height=\"auto\" controls></video>",
    "ruleImage": "@js:\"https://mgtv-bbqn.oss-cn-beijing.aliyuncs.com/1/2310310103284A29582395A850D3A0F5C26862354MzFE/SrRlbr0.gif\"",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.date-xxx@text",
    "ruleTitle": "class.title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "校园吃瓜::/category/2/{{page}}.html\n反差女友::/category/4/{{page}}.html\n主页::https://rguy.ukzqkpkk.com/category/0/{{page}}.html\n黑料吃瓜::/category/6/{{page}}.html\n今日热搜::/category/7/{{page}}.html\n近期热门::/category/8/{{page}}.html\n肥臀::/tag/35/{{page}}.html\n调教::/tag/48/{{page}}.html\n巨乳::/tag/34/{{page}}.html\n大长腿::/tag/37/{{page}}.html\n拜金母狗::/tag/31/{{page}}.html\n网红::/tag/1/{{page}}.html\n模特::/tag/36/{{page}}.html\n口交::/tag/135/{{page}}.html\n大学生::/tag/10/{{page}}.html\n偷拍::/tag/27/{{page}}.html\n御姐::/tag/40/{{page}}.html\n人妻::/tag/22/{{page}}.html\n抖音::/tag/2/{{page}}.html\n吃瓜::/tag/124/{{page}}.html\n反差婊::/tag/96/{{page}}.html\n前女友::/tag/11/{{page}}.html\n曝光::/tag/272/{{page}}.html\n自慰::/tag/313/{{page}}.html\n萝莉::/tag/41/{{page}}.html\n后入::/tag/922/{{page}}.html\n母狗::/tag/140/{{page}}.html\n反差::/tag/152/{{page}}.html\n制服::/tag/50/{{page}}.html\n社会新闻::/tag/12/{{page}}.html\n户外露出::/tag/17/{{page}}.html\n重口::/tag/47/{{page}}.html\n高颜值::/tag/275/{{page}}.html\n高中生::/tag/9/{{page}}.html\n奇葩::/tag/200/{{page}}.html\n泄密::/tag/300/{{page}}.html\n直播::/tag/28/{{page}}.html\n女上位::/tag/819/{{page}}.html\n独家爆料::/tag/3700/{{page}}.html\n绿帽::/tag/23/{{page}}.html\n猎奇::/tag/494/{{page}}.html\n桃色新闻::/tag/13/{{page}}.html\n黒料网::/tag/1393/{{page}}.html\n快手::/tag/3/{{page}}.html\n推特::/tag/7/{{page}}.html\n约炮::/tag/163/{{page}}.html\n出轨::/tag/505/{{page}}.html\n自拍::/tag/332/{{page}}.html\n美乳::/tag/97/{{page}}.html\n强奸::/tag/38/{{page}}.html\n破处::/tag/33/{{page}}.html\n户外偷情::/tag/18/{{page}}.html\n露脸::/tag/781/{{page}}.html\n历史大瓜::/category/10/{{page}}.html\n每日top10::/category/11/{{page}}.html\n周报精选::/category/20/{{page}}.html\n月榜热瓜::/category/22/{{page}}.html\n网红黑料::/category/1/{{page}}.html\n影视短剧::/category/14/{{page}}.html\n原创社区::/category/13/{{page}}.html\n独家爆料::/category/9/{{page}}.html\n明星丑闻::/category/16/{{page}}.html\n黑料课堂::/category/12/{{page}}.html\n黑料大赛::/category/21/{{page}}.html\n官员干部::/category/17/{{page}}.html",
    "sourceComment": "https://ihlw16.com/",
    "sourceGroup": "h",
    "sourceIcon": "http://p6.itc.cn/images01/20201202/8d012ed623d647a78635557e7d235ab6.jpeg",
    "sourceName": "黑料网🥝",
    "sourceUrl": "https://rguy.ukzqkpkk.com/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1559,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article",
    "ruleContent": "class.dplayer@all<js>\nresult=result.match(/http.*0/)[0]##\\</js>{{@@title@text##吃瓜必备.*}}\n<video src=\"{{result}}\" width=\"100%\" height=\"auto\" controls></video>",
    "ruleImage": "@js:\"https://mgtv-bbqn.oss-cn-beijing.aliyuncs.com/1/2310310103284A29582395A850D3A0F5C26862354MzFE/SrRlbr0.gif\"",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "span@content##T##   时长:",
    "ruleTitle": "h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "校园热瓜::/category/xyrg/\n搜索::/search/{{java.encodeURI(source.getVariable())}}/{{page}}/\n吃瓜爆料::/category/jrcg1/\n热门大瓜::/category/rgjx/\n网红揭秘::/category/ylgx/\n调教::/tag/%E8%B0%83%E6%95%99\n母狗::/tag/%E6%AF%8D%E7%8B%97//{{page}}/\n女神::/tag/%E5%A5%B3%E7%A5%9E/{{page}}/\n自拍::/tag/%E8%87%AA%E6%8B%8D/{{page}}/\n大学生:/tag/%E5%A4%A7%E5%AD%A6%E7%94%9F/{{page}}/\n极品::/tag/%E6%9E%81%E5%93%81/{{page}}/\n巨乳::\"/tag/%E5%B7%A8%E4%B9%B3/{{page}}/\n娱乐八卦::/category/whbg/\n极致反差::/category/fcsj/\n海角社区::/category/llzq/\n瓜友亲历::/category/gysp/\n两性禁果::/category/lpzq/\n奇闻异事::/category/qwys/",
    "sourceComment": "https://t91bl.com/",
    "sourceGroup": "h",
    "sourceIcon": "http://p6.itc.cn/images01/20201202/8d012ed623d647a78635557e7d235ab6.jpeg",
    "sourceName": "91爆料🥝",
    "sourceUrl": "https://h47vz1.rghnyll.com/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1561,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article",
    "ruleContent": "class.dplayer@all<js>\nresult=result.match(/http.*0/)[0]##\\</js>{{@@title@text##成人黑料.*}}\n<video src=\"{{result}}\" width=\"100%\" height=\"auto\" controls></video>",
    "ruleImage": "@js:\"https://mgtv-bbqn.oss-cn-beijing.aliyuncs.com/1/2310310103284A29582395A850D3A0F5C26862354MzFE/SrRlbr0.gif\"",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "span.1@text",
    "ruleTitle": "class.post-card-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "学生校园::/category/xsxy/{{page}}/\n搜索::/search/{{source.getVariable()}}/{{page}}/\n今日吃瓜::/category/jrcg/{{page}}/\n点击率榜::/category/djvb/{{page}}/\n热搜黑料::/category/rshl/{{page}}/\n必撸优品::/category/blyp/{{page}}/\n乱伦社区::/category/llsq/{{page}}/\n反差黑料::/category/fchl/{{page}}/\n猎奇重口::/category/lqzk/{{page}}/\n明星黑料::/category/mxhl/{{page}}/\n极品::/tag/%E6%9E%81%E5%93%81\n大学生::/tag/%E5%A4%A7%E5%AD%A6%E7%94%9F/{{page}}/\n学生妹::/tag/%E5%AD%A6%E7%94%9F%E5%A6%B9/{{page}}/\n女神::/tag/%E5%A5%B3%E7%A5%9E/{{page}}/\n美乳::/tag/%E7%BE%8E%E4%B9%B3/{{page}}/\n萝莉::/tag/%E8%90%9D%E8%8E%89/{{page}}/\n白虎::/tag/%E7%99%BD%E8%99%8E/{{page}}/\n极品系列::/tag/%E6%9E%81%E5%93%81%E7%B3%BB%E5%88%97/{{page}}/\n少女::/tag/%E5%B0%91%E5%A5%B3/{{page}}/\n调教::/tag/%E8%B0%83%E6%95%99/{{page}}/\n反差::/tag/%E5%8F%8D%E5%B7%AE/{{page}}/\n母狗::\t/tag/%E6%AF%8D%E7%8B%97/{{page}}/\n巨乳::/tag/%E5%B7%A8%E4%B9%B3/{{page}}/\n口交::/tag/%E5%8F%A3%E4%BA%A4/{{page}}/\n少妇::/tag/%E5%B0%91%E5%A6%87/{{page}}/\n内射::/tag/%E5%86%85%E5%B0%84/{{page}}/\n口爆::/tag/%E5%8F%A3%E7%88%86/{{page}}/\n出轨::/tag/%E5%87%BA%E8%BD%A8/{{page}}/",
    "sourceComment": "https://w461p9tp.cc/",
    "sourceGroup": "h",
    "sourceIcon": "http://p6.itc.cn/images01/20201202/8d012ed623d647a78635557e7d235ab6.jpeg",
    "sourceName": "51吃瓜🥝",
    "sourceUrl": "https://h476z1.cmdseacf.com/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1562,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "[class=\"box\"]@a",
    "ruleContent": "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<title>内容提取</title>\n<!-- v2025.05.10 -->\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<script src=\"https://code.jquery.com/jquery-3.6.0.min.js\"></script>\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.css\" />\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.js\"></script>\n<style>\n    body { font-family: Arial, sans-serif; font-size: 16px; }\n    #title, #page, #loading-status { margin: 0 auto; font-size: 20px; text-align: center; }\n    #description, #urls, #video-url, #video-sources, #messages { width: 100%; max-width: 800px; margin: 1.5px auto; font-size: 14px; text-align: left; word-wrap: break-word; white-space: pre-wrap; }\n    #text, #text :not(img), #text img + * { text-indent: 2em; width: 100%; font-size: 16px; line-height: 1.5em; margin-top: 0; margin-bottom: 0; word-wrap: break-word; white-space: pre-wrap; }\n    img, #text img { width: 100%; height: auto; display: block; margin-bottom: 1.5px; }\n    .flex-container { display: flex; justify-content: center; align-items: center; gap: 10px; margin: 1.5px 0; font-size: 14px; }\n    button, select { flex: 1 1 31%; padding: 3px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; cursor: pointer; background-color: #f9f9f9; transition: background-color 0.3s ease; margin: 1.5px; min-width: 0; font-size: 14px; }\n    #url-select, #video-source-select { flex: 1 1 100%; margin-left: 0; margin-right: 0; text-align: center; }\n    #video-element { width: 100%; height: auto; }\n    textarea { width: 100%; height: auto; min-height: 100px; box-sizing: border-box; resize: vertical; }\n    .error, .warn { color: red; }\n</style>\n</head>\n<body>\n    <h3 id=\"title\">{{@@title@text||h1.0@text||h2.0@text||.title.0@text}}</h3>\n    <p id=\"description\">{{@@.info.0@html||.jianjie@html}}</p>\n    <p id=\"page\" style=\"display:none;\">共<span id=\"total-pages\">1</span>页</p>\n    <p id=\"loading-status\" style=\"display:none;\"></p>\n\n    <div class=\"flex-container\" id=\"loading-buttons\" style=\"display:none;\">\n        <button id=\"prev-page-btn\">上一页</button>\n        <button id=\"next-page-btn\">下一页</button>\n        <button id=\"auto-load-btn\">自&nbsp;&nbsp;动</button>\n    </div>\n    \n    <div class=\"flex-container\">\n        <select id=\"url-select\" style=\"display:none;\"></select>\n    </div>\n    \n    <div class=\"flex-container\">\n        <button id=\"toggle-urls-btn\">显/隐网址</button>\n        <button id=\"toggle-messages-btn\">显/隐信息</button>\n        <button id=\"toggle-debug-btn\">显/隐调试</button>\n    </div>\n    <div id=\"urls\"></div>\n    <div id=\"messages\"></div>\n    <div id=\"debug-info\"></div>\n    <div id=\"video-url\"></div>\n    <div id=\"video-container\" style=\"display: none;\">\n        <video id=\"video-element\" controls preload=\"auto\" width=\"640\" height=\"264\">\n            <source id=\"video-source\" src=\"\" type=\"\">您的浏览器不支持 video 标签。\n        </video>\n    </div>\n    <div class=\"flex-container\" id=\"video-source-container\" style=\"display: none;\">\n        <select id=\"video-source-select\" onchange=\"updateVideoSource()\"></select>\n    </div>\n    <div id=\"images\"></div>\n    <div id=\"text\"></div>\n\n    <script>\n        // 配置对象，包含各种选择器、延迟时间等配置项\n        const config = {    \n            videoSelector: 'body', // 视频选择器\n            imgSelector: '.gridlane-box-inside img,.photos figure img,.content p img', // 图片选择器\n            textSelector: '#content', // 文本选择器\n            debugSelector: '#content, .page, .pager, .content, script', // 调试信息选择器\n            swapImageAttributes: false, // 是否交换图片属性\n            delayTime: 1500, // 延迟提取时间\n            retryDelayTime: 1500, // 重试加载延迟时间\n            maxLoadAttempts: 3, // 最大加载次数\n            autoLoading: false, // true自动模式，false单页模式\n            debugOnce: 0, // 只在特定索引输出一次调试信息\n            totalPagesText: '{{@@.page.0@a.-2@textNodes}}', // 总页码\n            urlSuffixToRemove: /\\.html$/, // 移除url后缀\n            pageUrlText: '{urlPrefix}_{i}.html', // 拼接URL模板        \n            ListMode: true, // true网址列表模式，false网址拼接模式    \n            initialUrls: `{{@@#sort-item-5.0@a@href}}`, // 网址\n            initialUrlsName: `{{@@#sort-item-5.0@a@span@text}}`, // 网址名称\n            sourceurl: '', // 来源URL前缀\n        };\n\n        let videoSources = []; // 存储视频源数组\n        let loadAttempts = {}; // 记录每个URL的加载尝试次数\n        let urls = []; // 存储所有页面的URL\n        let imageBox;\n        let textBox;\n        let currentPageIndex = 0; // 当前页面索引\n        let canLoadNextPage = true; // 控制是否可以加载下一页\n        let autoLoadInProgress = false; // 自动加载状态\n\n        // 构建URL列表\n        function buildUrls(totalPages, baseUrl) {\n            let initialUrlsArray = config.initialUrls.trim().split('\\n').filter(url => url.trim() !== '');\n            let initialUrlsNameArray = config.initialUrlsName.trim().split('\\n').filter(name => name.trim() !== '');\n\n            if (config.ListMode && initialUrlsArray.length > 0) {\n                if (initialUrlsArray.length !== initialUrlsNameArray.length) {\n                    $('#messages').append(`<span class=\"warn\">警告：initialUrls 和 initialUrlsName 的长度不匹配。</span><br>`);\n                }\n\n                urls = initialUrlsArray.map(url => {\n                    if (config.sourceurl && url.startsWith('/') && !/^https?:\\/\\//i.test(url)) {\n                        return config.sourceurl.replace(/\\/$/, '') + url;\n                    } else {\n                        return url;\n                    }\n                });\n\n                urls.forEach((url, index) => {\n                    const name = initialUrlsNameArray[index] || `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            } else {\n                if (totalPages === 1) {\n                    urls.push(baseUrl);\n                } else {\n                    urls.push(baseUrl);\n                    for (let i = 2; i <= totalPages; i++) {\n                        urls.push(config.pageUrlText.replace('{urlPrefix}', baseUrl.replace(config.urlSuffixToRemove, '').replace(/\\/$/, '')).replace('{i}', i));\n                    }\n                }\n\n                urls.forEach((url, index) => {\n                    const name = `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            }\n\n            $('#total-pages').text(urls.length);\n            toggleNavigationButtons();\n            toggleTotalPagesDisplay();\n        }\n\n        // 规范化URL\n        function normalizeUrl(url) {\n            if (typeof url !== 'string' || !url.trim()) {\n                return '';\n            }\n            const match = url.match(/['\"](.*?)['\"]/);\n            if (match && match[1]) {\n                url = match[1];\n            }\n\n            function processUrl(str) {\n                str = str.trim();\n                str = str.replace(/\\\\u[\\dA-F]{4}/gi, match => String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16)));\n                str = decodeURIComponent(str);\n                str = str.replace(/^http:\\/([^/])/, 'http://$1');\n                str = str.replace(/^https:\\/([^/])/, 'https://$1');\n                return str;\n            }\n            return processUrl(url);\n        }\n\n        // 清空容器内容\n        function clearContainers() {\n            $('#messages').empty();\n            $('#images').empty();\n            $('#text').empty();\n        }\n\n        // 更新图像源\n        function updateImageSrc(elements, shouldSwap) {\n            elements.each(function () {\n                const $this = $(this);\n                const attrsToUpdate = {};\n                if (shouldSwap) {\n                    ['data-original', 'data-src', 'data-url'].forEach(attr => {\n                        if ($this.attr(attr)) {\n                            attrsToUpdate['src'] = $this.attr(attr);\n                        }\n                    });\n                }\n                $this.attr(attrsToUpdate);\n            });\n            return elements;\n        }\n\n        // 切换导航按钮显示状态\n        function toggleNavigationButtons() {\n            if ($('#url-select option').length > 1 && !config.autoLoading) {\n                $('#loading-buttons').show();\n                $('#url-select').show();\n            } else {\n                $('#loading-buttons').hide();\n                $('#url-select').hide();\n            }\n        }\n\n        // 显示加载状态\n        function showLoadingStatus(pageNumber) {\n            const selectedOption = $('#url-select option:selected').text();\n            $('#loading-status').text(`正在加载：${selectedOption}`).show();\n        }\n\n        // 隐藏加载状态\n        function hideLoadingStatus() {\n            $('#loading-status').hide();\n        }\n\n        // 加载指定索引的内容\n        function loadContent(index) {\n            if (index < 0 || index >= urls.length || !canLoadNextPage) return;\n            canLoadNextPage = false;\n            currentPageIndex = index;\n            $('#url-select').val(index);\n            $('#messages').append(`<div>当前地址: <span class=\"warn\">${urls[index]}</span></div>`);\n            if (autoLoadInProgress) {\n                showLoadingStatus(index + 1);\n            }\n            $.ajax({\n                url: urls[index],\n                type: 'GET',\n                success: function (data) {\n                    try {\n                    const $data = $(data);\n                    let updatedHtmlContent = data.replace(/(['\"])(\\/\\/)(?!\\/)/g, '$1https://')\n                        .replace(/src=\"upload/gi, 'src=\"/upload')\n                        .replace(/style=[\"'][^'\"]+[\"']/gi, '')\n                        .replace(/\\\\\\//g, '/');\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(updatedHtmlContent, \"text/html\");\n\n                    if (config.debugOnce === index) {\n                        const debugElements = $(doc).find(config.debugSelector);\n                        if (debugElements.length > 0) {\n                            const debugContents = $('<pre>').html(debugElements.clone().wrapAll('<div/>').parent().html()).html();\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">${debugContents}</textarea></span>`);\n                        } else {\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">调试信息未提取到内容，请检查选择器！</textarea></span>`);\n                        }\n                    }\n                    // 方法1：提取视频\n                    const videoSources1 = [];\n                    const videoContents = $(doc).find(config.videoSelector);\n                    const videoTags = $(videoContents).find('video, source');\n                    videoTags.each(function() {\n                        const videosrc = $(this).attr('src') || \n                                     $(this).attr('data-src') || \n                                     $(this).attr('data-original') || '';\n                        \n                        if (videosrc) {\n                            videoSources1.push(videosrc);\n                        }\n                    });\n                    //反馈\n                    if (videoSources1.length > 0) {\n                        $('#messages').append(`<span>方法1，找到 ${videoSources1.length} 个视频。</span><br>`);\n                    }\n\n                    // 方法2：正则提取视频\n                    const regex = /['\"]https?[^'<>\"]+(m3u8|mp4|webm|ogg|flv|mp3|m4a|wav|ape|flac)([^'<>\"]+)?['\"]/gi;\n                    const matches = data.match(regex);\n                    const videoSources2 = [];\n\n                    if (matches) {\n                        const uniqueMatches = [...new Set(matches)];\n                    \n                        uniqueMatches.forEach(match => {\n                            const normalizedSrc = normalizeUrl(match.replace(/['\"]/g, ''));\n                            videoSources2.push(normalizedSrc);\n                        });\n                    }\n                    //反馈\n                    if (videoSources2.length > 0) {\n                        $('#messages').append(`<span>方法2，找到 ${videoSources2.length} 个视频。</span><br>`);\n                    }\n\n                    // 合并两种方法的结果\n                    videoSources = [...videoSources1, ...videoSources2];\n\n                    // 去重并标准化 URL\n                    const imageExtensions = /\\.(jpg|jpeg|png|gif|bmp|svg)$/i;\n\n                    videoSources = videoSources\n                                  .map(src => normalizeUrl(src.replace(/\\\\+/g, '')))\n                                  .filter(src => src) // 过滤空值\n                                  .filter(src => !imageExtensions.test(src)); // 移除图片地址\n                        \n                    videoSources = [...new Set(videoSources)];// 去重\n\n                    // 显示最终结果\n                    $('#messages').append(`<span>总共找到 ${videoSources.length} 个视频。</span><br>`);\n\n                    if (videoSources.length > 0) {\n                        $('#messages').append(`<span>成功提取到视频，找到 ${videoSources.length} 个视频。</span><br>`);\n                        videoSources.forEach((src, idx) => {\n                            $('#messages').append(`<div>视频地址:<span class=\"warn\"> ${src}</span><br></div>`);\n                            $('#video-source-select').append(`<option value=\"${idx}\">视频源 ${idx + 1}</option>`);\n                        });\n                    \n                        if (videoSources.length == 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').hide();\n                            updateVideoSource();\n                        } else if (videoSources.length > 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').show();\n                            updateVideoSource();\n                        } else {\n                            $('#video-container').hide();\n                            $('#video-url').hide();\n                            $('#video-source-container').hide();\n                        }\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未找到视频源。</span><br>`);\n                        $('#video-container').hide();\n                        $('#video-url').hide();\n                        $('#video-source-container').hide();\n                    }\n\n                    //提取图片\n                    const $imgContents = $(doc).find(config.imgSelector);\n                    const shouldSwap = config.swapImageAttributes;\n                    const newContents = updateImageSrc($imgContents.clone(), shouldSwap);\n                    $('#images').append(newContents).show();\n                    if (newContents.length > 0) {\n                        $('#messages').append(`<span>成功提取图片，共 ${newContents.length} 张。</span><br>`);\n                        newContents.each(function () {\n                            const imgSrc = $(this).attr('src') || $(this).attr('data-original') || $(this).attr('data-src') || $(this).attr('data-url');\n                            $('#messages').append(`<div>地址:<span class=\"warn\"> ${imgSrc}</span><br></div>`);\n                        });\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图片。</span><br>`);\n                    }\n\n                    //提取图片和文本\n                    const textContents = $(doc).find(config.textSelector).map(function () {\n                        const $currentContents = $(this);\n                        $currentContents.find('img + br, script, video, source, iframe').remove();\n                        $currentContents.html($currentContents.html().replace(/>\\s+/gi, '>').replace(/<\\/?br\\s*([^>]*)\\s*\\/?>/gi, '\\n').replace(/\\n+/g, '\\n'));\n                        return $currentContents.html();\n                    }).get().join('');\n                    if (textContents.trim()) {\n                        $('#text').append(`<span>${textContents}</span><br>`).show();\n                        $('#messages').append(`<span>成功提取图文。</span><br>`);\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图文。</span><br>`);\n                    }\n\n                    if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                        setTimeout(() => { \n                            canLoadNextPage = true;\n                            loadContent(currentPageIndex + 1); \n                        }, config.delayTime);\n                    } else {\n                        canLoadNextPage = true;\n                        if (autoLoadInProgress) {\n                            hideLoadingStatus();\n                        }\n                    }\n                } catch (parseError) {\n                    $('#messages').append(`<span class=\"error\">解析页面内容时发生错误: ${parseError.message}</span><br>`);\n                    handleLoadFailure(urls, index);\n                } finally {\n                    if (imageBox) imageBox.viewer.update();\n                    if (textBox) textBox.viewer.update();\n                }\n            },\n            error: function (jqXHR, textStatus, errorThrown) {\n                let errorMessage = `内容加载失败: ${urls[index]}`;\n                switch (textStatus) {\n                    case 'timeout':\n                        errorMessage += ', 请求超时';\n                        break;\n                    case 'abort':\n                        errorMessage += ', 请求被取消';\n                        break;\n                    case 'parsererror':\n                        errorMessage += ', 解析响应出错';\n                        break;\n                    default:\n                        errorMessage += `, 状态码: ${jqXHR.status}, 错误信息: ${errorThrown}`;\n                        break;\n                }\n                $('#messages').append(`<span class=\"error\">${errorMessage}</span><br>`);\n                handleLoadFailure(urls, index);\n                }\n            });\n        }\n\n        // 处理加载失败的情况\n        function handleLoadFailure(urls, index) {\n            if (!loadAttempts[urls[index]]) {\n                loadAttempts[urls[index]] = 1;\n            } else {\n                loadAttempts[urls[index]]++;\n            }\n            if (loadAttempts[urls[index]] <= config.maxLoadAttempts) {\n                const retryMessage = `第${index + 1}页加载失败，正在进行第${loadAttempts[urls[index]]}次加载！`;\n                $('#messages').append(`<span class=\"error\">${retryMessage}</span><br>`);\n                setTimeout(() => { \n                    canLoadNextPage = true;\n                    loadContent(index); \n                }, config.retryDelayTime);\n            } else {\n                const finalErrorMessage = `第${index + 1}页加载失败，已达到最大尝试次数(${config.maxLoadAttempts})！`;\n                $('#messages').append(`<span class=\"error\">${finalErrorMessage}</span><br>`);\n                if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                    setTimeout(() => { \n                        canLoadNextPage = true;\n                        loadContent(currentPageIndex + 1); \n                    }, config.delayTime);\n                } else {\n                    canLoadNextPage = true;\n                    if (autoLoadInProgress) {\n                        hideLoadingStatus();\n                    }\n                }\n            }\n        }\n\n        // 更新视频源\n        function updateVideoSource() {\n            const selectedIndex = parseInt(document.getElementById('video-source-select').value);\n            if (isNaN(selectedIndex) || !videoSources[selectedIndex]) {\n                $('#messages').append(`<span class=\"warn\">未找到有效的视频源。</span><br>`);\n                console.warn(\"Invalid or undefined video source:\", selectedIndex, videoSources);\n                return;\n            }\n\n            const selectedSource = videoSources[selectedIndex];\n            document.getElementById('video-url').textContent = `视频地址:\\n ${selectedSource}`;\n\n            const videoSourceElement = document.getElementById('video-source');\n            videoSourceElement.src = selectedSource;\n\n            const videoElement = document.getElementById('video-element');\n            videoElement.load();\n\n            $('#messages').append(`<span>更新视频源为: ${selectedSource}</span><br>`);\n            console.log(\"Updated video source to:\", selectedSource);\n        }\n\n        // 切换总页数显示状态\n        function toggleTotalPagesDisplay() {\n            if (urls.length > 1) {\n                $('#page').show();\n            } else {\n                $('#page').hide();\n            }\n        }\n\n        // 页面加载完成后执行的主要逻辑\n        $(document).ready(function () {\n            imageBox = document.getElementById('images');\n            textBox = document.getElementById('text');\n            if (imageBox && textBox) {\n                new Viewer(imageBox, { title: true, interval: 2000 });\n                new Viewer(textBox, { title: true, interval: 2000 });\n            }\n\n            const totalPagesText = config.totalPagesText;\n            const totalPages = parseInt(totalPagesText, 10) || 1;\n            const baseUrl = '{{baseUrl}}';\n\n            clearContainers();\n            $('#urls, #debug-info textarea, #video-url, #video-source-select').empty();\n            $('#urls, #messages, #debug-info, #video-url, #video-container, #video-source-container, #images, #text').hide();\n\n            buildUrls(totalPages, baseUrl);\n\n            const urlSelect = document.getElementById('url-select');\n            if (urlSelect.options.length > 0) {\n                urlSelect.value = '0'; \n\n                if (config.autoLoading) {\n                    autoLoadInProgress = true;\n                    for (let i = 0; i < urls.length; i++) {\n                        loadContent(i);\n                    }\n                } else {\n                    loadContent(0);\n                }\n            } else {\n                loadContent(0);\n            }\n\n            $('#url-select').change(function () {\n                clearContainers();\n                const selectedIndex = parseInt($(this).val());\n                loadContent(selectedIndex);\n            });\n            $('#prev-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex > 0) {\n                    loadContent(currentPageIndex - 1);\n                }\n            });\n            $('#next-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex < urls.length - 1) {\n                    loadContent(currentPageIndex + 1);\n                }\n            });\n            $('#auto-load-btn').click(function () {\n                autoLoadInProgress = true;\n                showLoadingStatus(1); \n                for (let i = currentPageIndex + 1; i < urls.length; i++) {\n                    loadContent(i);\n                }\n            });\n            $('#toggle-messages-btn').click(function () { $('#messages').toggle(); });\n            $('#toggle-urls-btn').click(function () { $('#urls').toggle(); });\n            $('#toggle-debug-btn').click(function () { $('#debug-info').toggle(); });\n        });\n    </script>\n</body>\n</html>",
    "ruleImage": "img@data-src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "em@text",
    "ruleTitle": "strong@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n搜索🔍::/new/index.php?mod=search&kw={{source.getVariable()}}&page={{page}}\n国产自拍::/new/index.php?mod=forumdisplay&fid=10065\n欧美极品::/new/index.php?mod=forumdisplay&fid=10066\n日韩无码::/new/index.php?mod=forumdisplay&fid=10067\n日韩有码::/new/index.php?mod=forumdisplay&fid=10068\n中文字幕::/new/index.php?mod=forumdisplay&fid=10069\n动漫精品::/new/index.php?mod=forumdisplay&fid=10070\n极品萝莉::/new/index.php?mod=forumdisplay&fid=10071\n强奸乱伦::/new/index.php?mod=forumdisplay&fid=10072\n童颜巨乳::/new/index.php?mod=forumdisplay&fid=10073",
    "sourceComment": "xxrbs.com",
    "sourceGroup": "h",
    "sourceIcon": "https://xn--bwy.taojing62.buzz/upload/155042831.jpg",
    "sourceName": "日鲍社",
    "sourceUrl": "https://958.xxrbs28.lat/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1571,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (linux; u; android 9; zh-cn; v1816a build/pkq1.180819.001) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/57.0.2987.108 quark/4.2.1.138 mobile safari/537.36\",\"Accept-Language\":\"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "[class=\"thumbnail\"]",
    "ruleContent": "[class=\"margin_maker\"]@all\n<js>\nconst startIndex = result.indexOf('src=\\\"');\nconst endIndex = result.indexOf('\"',startIndex+12);\nconst url = result.slice(startIndex+5, endIndex).replaceAll(\"\\\\\",\"\");\njava.log(url)\njava.startBrowser(url,'title')\njava.toast('正在加载视频\\n视频加载较慢，请耐心等待')\n' 【刷新正文】或【点击章节链接】跳转播放\\n不要相信且不要点击视频里的任何广告，误触后请立即返回\\n🔗直链:\\n'+url\n</js>",
    "ruleImage": "img@data-src||img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page||Load More.text@button",
    "rulePubDate": "[class=\"thumbnail_video_length\"]@text&&[class=\"timestamp\"]@text",
    "ruleTitle": "a.1@text||[class=\"thumbnail_title cam_thumbnail_title\"]@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "Yoga::/videos?q=yoga\n搜索::/videos?q={{source.getVariable()}}\t\t\t\t\nBbw::/videos?q=bbw\n\t\t\t\t\tTeacher::/videos?q=teacher\n\t\t\t\t\tKitchen::/videos?q=kitchen\n\t\t\t\t\tPornstar::/videos?q=pornstar\n\t\t\t\t\tBlonde::/videos?q=blonde\n\t\t\t\t\tMilf::/videos?q=milf\n\t\t\t\t\tCreampie::/videos?q=creampie\n\t\t\t\t\tBrazzers::/videos?q=brazzers\n\t\t\t\t\tCheating::/videos?q=cheating\n\t\t\t\t\tPregnant::/videos?q=pregnant\n\t\t\t\t\tHusband::/videos?q=husband\n\t\t\t\t\tHomemade::/videos?q=homemade\n\t\t\t\t\tArab::/videos?q=arab\n\t\t\t\t\tBlowjob::/videos?q=blowjob\n\t\t\t\t\tAnal::/videos?q=anal\n\t\t\t\t\tChubby::/videos?q=chubby\n\t\t\t\t\tDoublePenetration::/videos?q=double-penetration\n\t\t\t\t\t4K::/videos?q=4k\n\t\t\t\t\tKorean::/videos?q=korean\n\t\t\t\t\tSpanish::/videos?q=spanish\n\t\t\t\t\tThreesome::/videos?q=threesome\n\t\t\t\t\tFootWorship::/videos?q=foot-worship\n\t\t\t\t\tCumshot::/videos?q=cumshot\n\t\t\t\t\tMassage::/videos?q=massage\n\t\t\t\t\tDeepthroat::/videos?q=deepthroat\n\t\t\t\t\tGirlfriend::/videos?q=girlfriend\n\t\t\t\t\tNatural::/videos?q=natural\n\t\t\t\t\tGangbang::/videos?q=gangbang\n\t\t\t\t\tOrgasm::/videos?q=orgasm\n\t\t\t\t\tFingering::/videos?q=fingering\n\t\t\t\t\tFeet::/videos?q=feet\n\t\t\t\t\tJoi::/videos?q=joi\n\t\t\t\t\tCasting::/videos?q=casting\n\t\t\t\t\tBabe::/videos?q=babe\n\t\t\t\t\tFootjob::/videos?q=footjob\n\t\t\t\t\tLatina::/videos?q=latina\n\t\t\t\t\tCloseUp::/videos?q=close-up\n\t\t\t\t\tBigTits::/videos?q=big-tits\n\t\t\t\t\tFacesitting::/videos?q=facesitting\n\t\t\t\t\t3DHentai::/videos?q=3d-hentai\n\t\t\t\t\tMasturbation::/videos?q=masturbation\n\t\t\t\t\tCompilation::/videos?q=compilation\n\t\t\t\t\tHandjob::/videos?q=handjob\n\t\t\t\t\tRubbing::/videos?q=rubbing\n\t\t\t\t\tErotic::/videos?q=erotic\n\t\t\t\t\tFootFetish::/videos?q=foot-fetish\n\t\t\t\t\tKink::/videos?q=kink\n\t\t\t\t\tBigAss::/videos?q=big-ass\n\t\t\t\t\tAmateur::/videos?q=amateur\n\t\t\t\t\tFetish::/videos?q=fetish\n\t\t\t\t\tCartoon::/videos?q=cartoon\n\t\t\t\t\tPegging::/videos?q=pegging\n\t\t\t\t\tHardcore::/videos?q=hardcore\n\t\t\t\t\tAssLicking::/videos?q=ass-licking\n\t\t\t\t\tFemdom::/videos?q=femdom\n\t\t\t\t\tBritish::/videos?q=british\n\t\t\t\t\tPov::/videos?q=pov\n\t\t\t\t\tCuckold::/videos?q=cuckold\n\t\t\t\t\tSpanking::/videos?q=spanking\n\t\t\t\t\tCougar::/videos?q=cougar\n\t\t\t\t\tAsmr::/videos?q=asmr\n\t\t\t\t\tHentai::/videos?q=hentai\n\t\t\t\t\tFacial::/videos?q=facial\n\t\t\t\t\tGranny::/videos?q=granny\n\t\t\t\t\tHd::/videos?q=hd\n\t\t\t\t\tCaught::/videos?q=caught\n\t\t\t\t\tBdsm::/videos?q=bdsm\n\t\t\t\t\tSquirting::/videos?q=squirting\n\t\t\t\t\tAsian::/videos?q=asian\n\t\t\t\t\tChinese::/videos?q=chinese\n\t\t\t\t\tBukkake::/videos?q=bukkake\n\t\t\t\t\tHairy::/videos?q=hairy\n\t\t\t\t\tRussian::/videos?q=russian\n\t\t\t\t\tMature::/videos?q=mature\n\t\t\t\t\tPublic::/videos?q=public\n\t\t\t\t\tGerman::/videos?q=german\n\t\t\t\t\tBeach::/videos?q=beach\n\t\t\t\t\tDoctor::/videos?q=doctor\n\t\t\t\t\tDildo::/videos?q=dildo\n\t\t\t\t\tBigCock::/videos?q=big-cock\n\t\t\t\t\tExotic::/videos?q=exotic\n\t\t\t\t\tOrgy::/videos?q=orgy\n\t\t\t\t\tEbony::/videos?q=ebony\n\t\t\t\t\tBallbusting::/videos?q=ballbusting\n\t\t\t\t\tRomantic::/videos?q=romantic\n\t\t\t\t\tVirgin::/videos?q=virgin\n\t\t\t\t\tLesbian::/videos?q=lesbian\n\t\t\t\t\tJapanese::/videos?q=japanese\n\t\t\t\t\tFortnite::/videos?q=fortnite\n\t\t\t\t\tInterracial::/videos?q=interracial\n\t\t\t\t\tBeauty::/videos?q=beauty",
    "sourceComment": "By小新",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "Pornkai",
    "sourceUrl": "https://pornkai.com",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1574,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 12; 22041211AC Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".umItem",
    "ruleContent": "<h3>{{@@title@text}}</h3>\n{{@@.LightGallery_Item@img@html}}\n<title>👤Mengteen</title>",
    "ruleImage": "img@src",
    "ruleLink": "h3@a@href",
    "ruleNextPage": "page",
    "rulePubDate": "🏷{{@@class.ceta@text}}｜👁️{{@@class.view@text}}",
    "ruleTitle": "h3@a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "国模人体::/cate/1/{{page}}\n搜索::/search.php?q={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('大尺度'):source.getVariable()}}&page={{page}}\n港模人体::https://hkrt.xyz/page/{{page}}\n台模人体::https://twrt.xyz/page/{{page}}\n韩模人体::https://hgrt.xyz/page/{{page}}\n日模人体::https://jprt.xyz/page/{{page}}",
    "sourceComment": "源社区：@Mengteen 原创\n二传或者是其它问题请@我并告知我",
    "sourceGroup": "h",
    "sourceIcon": "https://cdn.sshs.rip/72/d6/722cc45cb91a020df5dd862645b132d6.webp",
    "sourceName": "👙人体艺术",
    "sourceUrl": "https://crtys.net/##@Mengteen",
    "style": "/*标题相关*/\nh3{text-align:center}\nh6{margin-bottom:0}\n* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1579,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.results.list.*||$.results.list.*comic",
    "ruleImage": "$.cover||$.comic.cover",
    "ruleLink": "https://api.copymanga.com/api/v3/comic2/{$.path_word}?platform=1",
    "ruleNextPage": "page",
    "rulePubDate": "$.datetime_updated||$.comic.last_chapter||$.datetime_created@js:result.substring(0,10)",
    "ruleTitle": "$.name",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "推荐::https://api.copymanga.com/api/v3/search/comic?platform=1&q=妹妹&_update=true&limit=24&offset={{24*(page-1)}}",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "拷贝漫画📱🇯🇵~有请关耳小姐姐修复一下，你最在手json提取了",
    "sourceUrl": "https://copymanga.com/h5",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1581,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 13; SM-G998B Build/TP1A.220624.014) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36 SearchCraft/3.9.2\",\n    \"referer\": \"{{baseUrl}}\"\n}",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n\n  // 触摸事件处理\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    \n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = '50%';\n    button.style.transform = 'translateY(-50%)';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n\n  // 旋转按钮（右侧）\n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    \n    // 保留当前的缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale})`;\n  }, { horizontal: 'right' });\n\n  // 缩放按钮（左侧）\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    \n    // 获取当前缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1)`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' });\n\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n  ];\n\n  seekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    button.addEventListener('click', () => {\n      video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n    });\n    buttonContainer.appendChild(button);\n  });\n\n  video.parentNode.appendChild(buttonContainer);\n\n// 跳过片头功能\n  video.addEventListener('timeupdate', () => {\n    if (video.currentTime < 5) {\n      video.currentTime = 5;\n    }\n  });\n}\n\n// 修改初始化逻辑，增加重试机制\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\n    const video = document.getElementById('video');\n    if (video) {\n      setupCustomPlayer(video);\n    } else if (retries < maxRetries) {\n      retries++;\n      setTimeout(tryInit, retryInterval);\n    }\n  };\n  tryInit();\n}\n// 使用重试机制初始化播放器\ninitPlayerWithRetry();",
    "lastUpdateTime": 1769953281311,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".col-md-6",
    "ruleContent": "@js:\nresult=java.ajax(source.sourceUrl+\"{{@@text.第1集@href##https://.*?/}}\");\nA=result.match(\"https.*\\.(mp4|m3u8)\")[0]\nresult=`\n<html><head><meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" />\n<meta name=\"referrer\" content=\"never\"/>\n  <style>html, body {text-align: center;margin: 0; padding: 0;width: 100%;overflow: hidden;} </style>\n  <script src=\"https://unpkg.com/hls.js@1.4.3/dist/hls.min.js\"></script>\n</head><body>\n  <div class=\"container\">\n    <div class=\"title\">{{@@h1@text}}</div>\n    <video id=\"video\" width=\"100%\" height=\"91%\" poster=\"${java.get('pic')}\" controls autoplay muted loop></video>\n  </div>\n<script>\nconst v=document.getElementById('video'),s=[\n  \"${A}\",\n  \"\"];\nlet c=0;\nfunction setupCustomControls(e){/* 自定义功能实现 */}\nfunction playNext(){\n  c>=s.length&&(c=0); // 循环重置计数器\n  const u=s[c++];\n  // 检测Hls对象是否存在\n  if (typeof Hls !== 'undefined' && Hls.isSupported()) {\n    const h = new Hls({\n      enableSoftwareAES: true,          // 强制软件解密\n      forceKeyFrameOnDiscontinuity: true // 关键帧恢复\n    });\n    h.loadSource(u);\n    h.attachMedia(v);\n    h.on(Hls.Events.MANIFEST_PARSED,()=>v.play().then(()=>setupCustomControls(v)).catch(console.log));\n    h.on(Hls.Events.ERROR,(_,d)=>d.fatal&&playNext())\n  } else { // Hls加载失败或浏览器原生支持HLS\n    if (v.canPlayType('application/vnd.apple.mpegurl')) {\n      v.src = u;\n      v.onloadedmetadata = () => v.play().then(() => setupCustomControls(v));\n      v.onerror = playNext;\n    } else {\n      // 如果都不支持，尝试直接播放（可能支持MP4等格式）\n      v.src = u;\n      v.onerror = playNext;\n      v.play().then(() => setupCustomControls(v)).catch(playNext);\n    }\n  }\n}playNext();\n</script>\n</body></html>\n`",
    "ruleImage": "https://images.floriscope.io.cloud-ed.fr/?url={{@@a@data-original}}&w=400&h=300&fit=fill\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "a@href##https://.*?/",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "a@data-original##allimg/(.*)/.*.jpg##$1##||.pic-text@ownText",
    "ruleTitle": "{{@@h4@a@text}}\n<js>\nconst blockKeywords = /屎|TS|伪娘|伪男|人妖|男同|狼狗|奶狗|鲜肉|帅哥|正装|猛1|ZKtop1|体育生|大屌|双性|男男|直男|gv|父子|飞机|撸|女性向|骚0|poop|娘娘腔|变性|TGirls|鸡巴|鸡吧|阴茎|男奴|奴男|同志|苏木|西装|骚受|QS|Peter|摔跤社|基情|天菜|大鸡|肌肉|薄肌|G片|术0|宏翔|男蜜|自制口|威廉|骚男|基友|美男子|鸡儿|口活王子|融化的冰|自己射|運動生|苏婧薇|社畜|纪练深|性别|淋尿|控射|熟女|CD|肥女|老阿姨|排泄|臭脚|大便|马眼|聖水|尸|廁|圣水|豊満|黑妹|黑人女孩|坦克|黑屁股|黑人妹子|黑逼|孕妇|消遣|伦勃朗|拉丁裔|asmr|GOOD|奶奶|老妈|妈妈|母亲|儿子|爸爸|女儿|母子|父女|兄妹|亲姐|亲妹|VR|都丸富美|山本かを|守谷多香子|波多|飯岡|希島|希岛|深田|君島|君岛|田中瞳|向美奈|美原咲|华行香|藤泽丽|Hitomi|美乃雀|若菜奈|水野朝|後藤|明日花|卯水|由爱|JULIA|风间|濑圆|平冈|藤樱|藤泽|蓮実|藤沢麗央|木村玲|SILK|afchina|fway|rebd|mbdd|REBD|FWAY|眼射|水果派|解说|π|偷拍|偸拍|抄底|攝像頭|摄像头|番系列|经典番|里番|老番|国漫|王者|斗罗|穿越|斗破|仙剑|小舞|MMD|實測|女王|AIKA|喝尿|田中|Ｍ男|40岁/i;\nif (blockKeywords.test(result)) {\n  // 如果包含关键词，将标题设为空字符串\n  result = \"\";\n}\njava.put('title',result)\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "随机::/category/{{ [1959, 1960][Math.floor(Math.random()*2)] }}/time-{{ Math.ceil(Math.random()*1000) }}.html\n\n随机:/category/1958/time-{{ Math.ceil(Math.random()*2600) }}.html\n最新::/category.html\n🔎搜索::/search.html?keyword={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}\n国产::/category/1959.html\n动漫::/category/1962.html\n日韩::/category/1960.html\n欧美::/category/1961.html",
    "sourceComment": "play9115@gmail.com\nhttp://170.178.166.170/\n备用地址  需改内容规则内地址\nhttps://64.32.31.83/\nhttps://64.32.31.84/\nhttps://64.32.31.85/ 到\nhttps://64.32.31.108/\nhttps://64.32.31.117/\nhttps://64.32.31.118/\nhttps://64.32.31.119/\n",
    "sourceGroup": "h",
    "sourceIcon": "https://pic.baike.soso.com/ugc/baikepic2/0/20230414235752-790014851_gif_240_240_283020.gif/0",
    "sourceName": "❀清清草原S",
    "sourceUrl": "https://64.32.31.100/",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: -20px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(96% + 20px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "coverDecodeJs": "function decodeImage(data, key) {\n  var out = new Packages.java.io.ByteArrayOutputStream();\n  \n  // 读取前9个字节进行异或解密，后面的字节直接写入\n  for (var i = 0; i < 9; i++) {\n    var byte = data.read();\n    if (byte == -1) break; // 如果数据长度不足9字节，提前结束\n    out.write(byte ^ key);\n  }\n  \n  // 处理剩余的字节（如果有的话）\n  var remainingByte;\n  while ((remainingByte = data.read()) != -1) {\n    out.write(remainingByte);\n  }\n  \n  return out.toByteArray();\n}\n\nfunction toByteArray(input) {\n  var out = new Packages.java.io.ByteArrayOutputStream()\n  var buffer = java.strToBytes('\\0'.repeat(4096))\n  var bytesRead\n  while ((bytesRead = input.read(buffer)) != -1) {\n    out.write(buffer, 0, bytesRead)\n  }\n  return out.toByteArray()\n}\n\nif (src.endsWith('.gif')) {\n  toByteArray(result)\n} else {\n  decodeImage(result, 0x12); // 使用0x12作为密钥，与前端保持一致\n}\n\n",
    "customOrder": 1589,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n    \"User-Agent\": \"Mozilla/5.0 (Linux; Android 13; SM-G998B Build/TP1A.220624.014) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36 SearchCraft/3.9.2 okhttp/4.2.2\",\n    \"referer\": \"{{baseUrl}}\"\n}",
    "injectJs": "function setupCustomPlayer(video) {\n  // 手势滑动快进\n  let isDragging = false;\n  let startX = 0;\n  let startTime = 0;\n  \n  // 长按加速相关变量\n  let longPressTimer = null;\n  const LONG_PRESS_DELAY = 300;\n  const NORMAL_SPEED = 1.25;\n  const FAST_SPEED = 3;\n  let wasPaused = false;\n\n  // 触摸事件处理\n  function handleTouchStart(e) {\n    startX = e.touches[0].clientX;\n    startTime = video.currentTime;\n    wasPaused = video.paused;\n    \n    longPressTimer = setTimeout(() => {\n      video.playbackRate = FAST_SPEED;\n      if (wasPaused) video.play();\n    }, LONG_PRESS_DELAY);\n  }\n\n  function handleTouchMove(e) {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    const dx = e.touches[0].clientX - startX;\n    if (Math.abs(dx) > 10) {\n      if (!isDragging) {\n        video.pause();\n        isDragging = true;\n      }\n      const change = (dx / video.clientWidth) * video.duration;\n      video.currentTime = Math.max(0, Math.min(startTime + change, video.duration));\n    }\n  }\n\n  function handleTouchEnd() {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n      longPressTimer = null;\n    }\n    \n    if (isDragging) {\n      video.playbackRate = NORMAL_SPEED;\n      video.play();\n      isDragging = false;\n    } else if (video.playbackRate === FAST_SPEED) {\n      video.playbackRate = NORMAL_SPEED;\n      if (wasPaused) video.pause();\n    }\n  }\n\n  // 添加触摸事件监听\n  video.addEventListener('touchstart', handleTouchStart);\n  video.addEventListener('touchmove', handleTouchMove);\n  video.addEventListener('touchend', handleTouchEnd);\n  \n  // 初始播放速度\n  video.playbackRate = NORMAL_SPEED;\n\n  // 创建按钮的通用函数\n  function createButton(text, onClick, position, width = '20px') {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.position = 'absolute';\n    button.style[position.horizontal] = '0';\n    button.style.top = '50%';\n    button.style.transform = 'translateY(-50%)';\n    button.style.zIndex = '999';\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = width;\n    button.style.height = '30px';\n    button.addEventListener('click', onClick);\n    video.parentNode.appendChild(button);\n    return button;\n  }\n\n  // 旋转按钮（右侧）\n  createButton('⟳', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    const newRotation = (currentRotation + 90) % 360;\n    video.setAttribute('data-rotation', newRotation);\n    \n    // 保留当前的缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    video.style.transform = `rotate(${newRotation}deg) scale(${currentScale})`;\n  }, { horizontal: 'right' });\n\n  // 缩放按钮（左侧）\n  let zoomCount = 0;\n  createButton('+', () => {\n    const currentRotation = parseInt(video.getAttribute('data-rotation') || '0');\n    \n    // 获取当前缩放比例\n    const currentTransform = video.style.transform || '';\n    let currentScale = 1;\n    const scaleMatch = currentTransform.match(/scale\\(([^)]+)\\)/);\n    if (scaleMatch) currentScale = parseFloat(scaleMatch[1]);\n    \n    if (zoomCount < 4) {\n      const newScale = currentScale * 1.25;\n      video.style.transform = `rotate(${currentRotation}deg) scale(${newScale})`;\n      zoomCount++;\n    } else {\n      video.style.transform = `rotate(${currentRotation}deg) scale(1)`;\n      zoomCount = 0;\n    }\n  }, { horizontal: 'left' });\n\n  // 快速跳转按钮（底部中央）\n  const buttonContainer = document.createElement('div');\n  buttonContainer.style.position = 'absolute';\n  buttonContainer.style.bottom = '0';\n  buttonContainer.style.left = '50%';\n  buttonContainer.style.transform = 'translateX(-50%)';\n  buttonContainer.style.display = 'flex';\n  buttonContainer.style.gap = '10px';\n  buttonContainer.style.zIndex = '999';\n  \n  // 按钮配置\n  const seekButtons = [\n    { text: '-5分', time: -300 },\n    { text: '-1分', time: -60 },\n    { text: '+1分', time: 60 },\n    { text: '+5分', time: 300 }\n  ];\n\n  seekButtons.forEach(({ text, time }) => {\n    const button = document.createElement('button');\n    button.textContent = text;\n    button.style.padding = '1px';\n    button.style.background = 'rgba(51, 51, 51, 0)';\n    button.style.color = '#fff';\n    button.style.border = 'none';\n    button.style.cursor = 'pointer';\n    button.style.width = '60px';\n    button.style.height = '30px';\n    button.addEventListener('click', () => {\n      video.currentTime = Math.max(0, Math.min(video.currentTime + time, video.duration));\n    });\n    buttonContainer.appendChild(button);\n  });\n\n  video.parentNode.appendChild(buttonContainer);\n}\n\n// 修改初始化逻辑，增加重试机制\nfunction initPlayerWithRetry() {\n  const maxRetries = 10;\n  const retryInterval = 500;\n  let retries = 0;\n  const tryInit = () => {\n    const video = document.getElementById('video');\n    if (video) {\n      setupCustomPlayer(video);\n    } else if (retries < maxRetries) {\n      retries++;\n      setTimeout(tryInit, retryInterval);\n    }\n  };\n  tryInit();\n}\n// 使用重试机制初始化播放器\ninitPlayerWithRetry();",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".content-item",
    "ruleContent": "{{@@script.0@all}}\n{{@@script.3@all}}\n{{@@script.4@all}}\n{{@@script.8@all}}\n{{@@script.9@all}}\n{{@@script.10@all}}\n",
    "ruleImage": "img@data-original",
    "ruleLink": "{{@@a.0@href##vdetail##vplay}}/index_1_1.html?play=2",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@p@text}}\n@js:\nresult = result !== \"\" ? result : \"点击播放\";",
    "ruleTitle": "h5@a@title##.*屎.*|.*Ts.*|.*TS.*|.*ts.*|.*伪娘.*|.*伪男.*|.*人妖.*|.*男同.*|.*狼狗.*|.*奶狗.*|.*鲜肉.*|.*帅哥.*|.*正装.*|.*猛1.*|.*ZKtop1.*|.*体育生.*|.*大屌.*|.*双性.*|.*男男.*|.*直男.*|.*gv.*|.*父子.*|.*飞机.*|.*撸.*|.*女性向.*|.*骚0.*|.*poop.*|.*娘娘腔.*|.*变性.*|.*TGirls.*|.*鸡巴.*|.*阴茎.*|.*男奴.*|.*奴男.*|.*同志.*|.*苏木.*|.*西装.*|.*骚受.*|.*QS.*|.*Peter.*|.*摔跤社.*|.*基情.*|.*天菜.*|.*大鸡.*|.*肌肉.*|.*薄肌.*|.*G片.*|.*术0.*|.*宏翔.*|.*男蜜.*|.*自制口.*|.*威廉.*|.*骚男.*|.*基友.*|.*美男子.*|.*鸡儿.*|.*口活王子.*|.*融化的冰.*|.*自己射.*|.*運動生.*|.*苏婧薇.*|.*社畜.*|.*纪练深.*|.*性别.*|.*淋尿.*|.*控射.*|.*熟女.*|.*CD.*|.*肥女.*|.*黄金.*|.*厕.*|.*老阿姨.*|.*排泄.*|.*臭脚.*|.*大便.*|.*马眼.*|.*聖水.*|.*尸.*|.*廁.*|.*圣水.*|.*豊満.*|.*黑妹.*|.*坦克.*|.*黑屁股.*|.*黑人妹子.*|.*黑逼.*|.*孕妇.*|.*消遣.*|.*伦勃朗.*|.*拉丁裔.*|.*asmr.*|.*GOOD.*|.*奶奶.*|.*老妈.*|.*乱伦.*|.*妈妈.*|.*儿子.*|.*爸爸.*|.*女儿.*|.*母子.*|.*父女.*|.*兄妹.*|.*亲姐.*|.*亲妹.*|.*VR.*|.*都丸富美.*|.*山本かを.*|.*守谷多香子.*|.*波多.*|.*飯岡.*|.*希島.*|.*希岛.*|.*深田.*|.*君島.*|.*君岛.*|.*田中瞳.*|.*向美奈.*|.*美原咲.*|.*华行香.*|.*藤泽丽.*|.*Hitomi.*|.*美乃雀.*|.*若菜奈.*|.*水野朝.*|.*後藤.*|.*明日花.*|.*卯水.*|.*由爱.*|.*JULIA.*|.*风间.*|.*濑圆.*|.*平冈.*|.*藤樱.*|.*藤泽.*|.*蓮実.*|.*藤沢麗央.*|.*木村玲.*|.*SILK.*|.*afchina.*|.*fway.*|.*rebd.*|.*mbdd.*|.*眼射.*|.*水果派.*|.*解说.*|.*第.*期.*|.*π.*|.*寻花.*|.*尋花.*|.*探花.*|.*偷拍.*|.*偸拍.*|.*抄底.*|.*攝像頭.*|.*摄像头.*|.*第.*话.*|.*番系列.*|.*经典番.*|.*里番.*|.*老番.*|.*国漫.*|.*王者.*|.*斗罗.*|.*穿越.*|.*斗破.*|.*仙剑.*|.*小舞.*|.*MMD.*|.*碧蓝.*|.*断雪.*|.*梦梦.*|.*刘玥.*|.*筋肉.*\n\n\n<js>\njava.put('title',result)\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "随机::/vtype/{{ ['23','24', '28', '25', '26','27','31','33','34','22'][Math.floor(Math.random()*10)] }}/index_{{ Math.ceil(Math.random()*100) }}.html\n\n🔎搜索::/template/nice/html/vod/search.html?wd={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('奸');source.getVariable()}}&pg={{page}},{\"webView\":true}\n\n主播::/vtype/26/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n传媒::/vtype/20/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n学生::/vtype/22/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n少女::/vtype/32/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n少妇::/vtype/25/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n制服::/vtype/27/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n黑料::/vtype/23/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n颜值::/vtype/33/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n反差::/vtype/34/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n自拍::/vtype/24/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n\n日本::/vtype/28/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n扮演::/vtype/31/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n三级::/vtype/30/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n欧美::/vtype/29/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n亚裔::/vtype/35/index{{ page == 1 ? \"\" : \"_\" + page }}.html\n",
    "sourceComment": "miss99tv@gmail.com\nhttps://www.kkg99.com/\nhttps://lsdh.nice99dh.com/\n备用地址\nhttps://www.nna985.com/\nhttps://www.nnt985.com/\nhttps://www.nnj985.com/\nhttps://www.nne985.com/\n",
    "sourceGroup": "h",
    "sourceIcon": "https://urlimage.cc/attachments/forum/202509/22/224148lbdmt33dsn4ohbwy.gif",
    "sourceName": "❀69派对  S",
    "sourceUrl": "https://www.nnr985.com/",
    "style": ".container {\n    position: relative; /* 相对定位，用于包含视频 */\n    height: 100%; /* 容器高度与视频原始高度相同 */\n    overflow: hidden; /* 隐藏超出容器的部分 */\n}\n.title {\n    position: absolute; /* 绝对定位，相对于容器 */\n    top: 0; \n    width: 100%;\n    overflow: hidden; \n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-box-orient: vertical; \n    -webkit-line-clamp: 2;\n    z-index: 1; /* 确保标题在视频之上 */\n    background: #000; /* 纯黑色背景 */ \n    padding: 0 0 3px 0;\n}\nvideo {\n    position: absolute; /* 绝对定位，相对于容器 */ \n    top: +20px; /* 视频上移 */\n    left: 0; \n    width: 100%; \n    height: calc(93% + 0px);  /* 调整高度以适应内容 */\n    object-fit: contain; /* 确保视频内容不被裁剪 */\n    z-index: 0; /* 确保视频在标题之下 */\n    controls=\"controls\" autoplay muted; \n} \nvideo::-webkit-media-controls-overlay-play-button {\n    display: none !important;\n}\nvideo::-webkit-media-controls-fullscreen-button {\n    display: none !important;\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1599,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 10; TEL-AN00 Build/HONORTEL-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.105 Mobile Safari/537.36\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "li!0:1:2:3:4:5:6:7:8||class.grid-item",
    "ruleContent": "<!DOCTYPE html>\n<html>\n\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://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js\"></script>\n</head>\n\n<body>\n    <h3>{{@@.content@tag.h1@text}}</h3>\n<h5>{{@class.info@text}}</h5>\n{{@@video@html}}\n    <div id=\"box\">{{@@class.acg-manga@tag.p@tag.img@html}}</div>\n    <div id=\"loads\">加载中 </div>\n    <script>\n        var loads;\n        $(document).ready(function () {\n            var box = document.getElementById(\"box\");\n            loads = document.getElementById(\"loads\");\n            new Viewer(box, { title: false, interval: 3000 })\n            var i = 1;\n            var page = {{@@class.page.0@tag.a.-2@textNodes##\\n}}-1;\n            var url = \"{{baseUrl.replace('.html','-')}}\";\n            new IntersectionObserver(entries => {\n                if (entries[0].intersectionRatio) {\n                    if (entries[0].intersectionRatio <= 0) return;\n                    for (var j = 0; j < 1; j++) {\n                        fetchHtml(i, page, url);\n                        i += 1;\n                    }\n                }\n            }).observe(loads)\n        });\n\n\n        function fetchHtml(i, page, url) {\n        \t\n            if (i <= page) {\n                nurl = url + i + '.html';\n                $.ajax({\n                    url: nurl,\n                    dataType: 'html',\n                    success: function (html) {\n                        $('#box').append('<h5>' + (++i) + '->' + (++page) + '</h5>');\n                        $('#box').append($(html).find('p img'));\n                        box.viewer.update();\n                    },\n                    error: function (xhr) { }\n                });\n            } else {\n                $('#loads').html(\"\");\n            }\n        }\n    </script>\n</body>\n\n</html>\n",
    "ruleDescription": "",
    "ruleImage": "tag.a@tag.img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "class.page bigpage@tag.a.-1@href",
    "rulePubDate": "\nspan.1:2@text##\\n##,",
    "ruleTitle": "a@title ",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n图集::/hentai/index.html\n漫画::/h/index.html\n动画::/gif/index.html\n全彩::/tags/full-color.html\n网漫::/webtoon/index.html\n西漫::/western/index.html\n写真::/cos/index.html\n有声:/asmr/index.html",
    "sourceComment": "增加了视频播放",
    "sourceGroup": "h",
    "sourceIcon": "https://www.acgmhx.com/favicon.ico",
    "sourceName": "ACG漫画网1.1",
    "sourceUrl": "https://www.acgmhx.com/index.html",
    "style": "/*标题相关*/\r\nh3{text-align:center}\r\nh6{margin-bottom:0}\r\nimg{width:100%;height: auto}\nvideo{width:100%;height: auto}\nh5{margin-bottom:0;padding-left:5;}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "coverDecodeJs": "/\\/(new|xiao|upload)\\//.test(src)?java.createSymmetricCrypto(\"AES/CBC/Pkcs7Padding\", \"f5d965df75336270\",\"97b60394abc2fbe1\").decrypt(result):result",
    "customOrder": 1602,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\t\"User-Agent\": \"Mozilla/5.0 (Linux; Android 9) Mobile Safari/537.36\",\"referer\": \"{{baseUrl}}\"\n\t}",
    "lastUpdateTime": 1769676555370,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.video-item",
    "ruleContent": "class.dplayer@all<js>\nresult=result.match(/http.*0/)[0]##\\</js>{{@@title@text}}\n<video src=\"{{result}}\" width=\"100%\" height=\"auto\" controls></video>",
    "ruleImage": "@js:\nurl=String(result).match(/.*loadImg\\(this,'(.*)'.*/)[1];\nresult=url",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.date-xxx@text",
    "ruleTitle": "class.title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::/page/{{page}}/\n最新黑料::/hlcg/page/{{page}}/\n今日热瓜::/jrrs/page/{{page}}/\n热门黑料::/jqrm/page/{{page}}/\n经典黑料::/lsdg/page/{{page}}/\n日榜黑料::/mrrb/page/{{page}}/\n周榜黑料::/zbjx/page/{{page}}/\n月榜黑料::/ybrg/page/{{page}}/\n原创社区::/ycsq/page/{{page}}/\n反差专区::/fczq/page/{{page}}/\n校园黑料::/xycg/page/{{page}}/\n网红黑料::/whhl/page/{{page}}/\n影视短剧::/ysdj/page/{{page}}/\n每日大赛::/mrds/page/{{page}}/\n明星丑闻::/mxcw/page/{{page}}/\n深夜综艺::/syzy/page/{{page}}/\n推特社区::/ttsq/page/{{page}}/\n独家曝料::/djbl/page/{{page}}/\n桃图杂志::/ttzz/page/{{page}}/\n黑料课堂::/hlkt/page/{{page}}/\n有求必应::/yqby/page/{{page}}/\n黑料爆改::/hlbg/page/{{page}}/\n官场曝料::/gchl/page/{{page}}/\n全球奇闻::/qqqw/page/{{page}}/\n抖音::/tag/2/{{page}}.html\n快手::/tag/3/{{page}}.html\n推特::/tag/7/{{page}}.html\n模特::/tag/36/{{page}}.html\n学生::/tag/10/{{page}}.html\n御姐::/tag/40/{{page}}.html\n少妇::/tag/405/{{page}}.html\n人妻::/tag/22/{{page}}.html\n自拍::/tag/332/{{page}}.html\n偷拍::/tag/27/{{page}}.html\n自慰::/tag/313/{{page}}.html\n后入::/tag/922/{{page}}.html\n母狗::/tag/140/{{page}}.html\n露脸::/tag/781/{{page}}.html\n露出::/tag/17/{{page}}.html\n直播::/tag/28/{{page}}.html\n约炮::/tag/163/{{page}}.html\n出轨::/tag/505/{{page}}.html\n偷情::/tag/18/{{page}}.html\n制服::/tag/50/{{page}}.html\n肥臀::/tag/35/{{page}}.html\n巨乳::/tag/34/{{page}}.html\n高颜值::/tag/275/{{page}}.html",
    "sourceComment": "感谢社区大佬的解密\n源社区：@Mengteen \n二传二创或者是其它问题请联系我。\n我邮箱:[xxxmgqxxx@vip.qq.com]\n我QQ:99737563(备注来意)\n2025.7.6 修复分类以及更新\n地址发布页：https://hlbg3.com/\n黑料最新入口\nhttps://hlbg8.com\n牢记永久域名\nhttps://www.heiliao88.com/\nhttps://155.fun或https://18hlw.com",
    "sourceGroup": "h,h可用",
    "sourceIcon": "https://qbfeh.rcrfesyj.cc//d0/e2/d0b0d2c99a6517058ceb49e6cb9a9de2.webp",
    "sourceName": "🎞黑料网",
    "sourceUrl": "https://qbfeh.rcrfesyj.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1603,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n \"User-Agent\":\"Mozilla/5.0 (Android 14; Mobile; rv:120.0) Gecko/120.0 Firefox/120.0\"\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "[\n  { name: \"--------------切换源站 刷新分类----------------\", type: \"button\" },\n  { name: \"X研究所\", type: \"button\", action: \"bt1(1)\"},\n  { name: \"黄色仓库\", type: \"button\", action: \"bt1(2)\"},\n  { name: \"91Porn\", type: \"button\", action: \"bt1(3)\"},\n  { name: \"大奶\", type: \"button\", action: \"bt1(4)\"},\n  { name: \"杏吧\", type: \"button\", action: \"bt1(5)\"},\n  { name: \"玉兔\", type: \"button\", action: \"bt1(6)\"},\n  { name: \"奥斯卡\", type: \"button\", action: \"bt1(7)\"},\n  { name: \"白嫖\", type: \"button\", action: \"bt1(8)\"},\n  { name: \"辣椒\", type: \"button\", action: \"bt1(9)\"},\n  { name: \"丝袜\", type: \"button\", action: \"bt1(10)\"},\n  { name: \"乐播\", type: \"button\", action: \"bt1(11)\"},\n  { name: \"鸡坤\", type: \"button\", action: \"bt1(12)\"},\n  { name: \"搜片\", type: \"button\", action: \"bt1(13)\"}\n]",
    "loginUrl": "rank=[\n [\"X研究所\",\"yjs\"],\n [\"黄色仓库\",\"hsck\"],\n [\"91Porn\",\"porn\"],\n [\"大奶\",\"naizi\"],\n [\"杏吧\",\"xingba\"],\n [\"玉兔\",\"yutu\"],\n [\"奥斯卡\",\"ask\"],\n [\"白嫖\",\"bp\"],\n [\"辣椒\",\"lj\"],\n [\"丝袜\",\"swa\"],\n [\"乐播\",\"lb\"],\n [\"鸡坤\",\"jkun\"],\n [\"搜片\",\"soupian\"]\n]\n\nfunction bt1(n){\n\tjava.put('num',n-1);\n\tjava.longToast('🔞'+rank[n-1][0]);\n}",
    "preload": false,
    "ruleArticles": "#list@li",
    "ruleContent": "@js:\nlink=java.getString('link@all');\nlist=java.getString('#list@all');\nhost=java.get('host');\nlink=String(link).replace(/href=\"\\//g,'href=\"'+host)\nlist=String(list).replace(/src=\"\\//g,'src=\"'+host)\nresult=`\n<html>\n<head>\n    <title>采虹微光</title>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n    <meta name=\"renderer\" content=\"webkit\">\n    <meta name=\"referrer\" content=\"no-referrer\">\n    <meta http-equiv=\"Access-Control-Allow-Origin\" content=\"*\">\n    <meta http-equiv=\"Access-Control-Allow-Credentials\" content=\"*\">\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\">\n    ${link}\n <style>\n body{background: linear-gradient(to right, #355c7d, #6c5b7b, #c06c84);}\n  ul,.list-video,.video_right{display:none !important;}\n </style>\n</head>\n<body>\n  ${list}\n</body>\n</html>\n`;",
    "ruleImage": "img@data-original",
    "ruleLink": "a.0@href##^##{{java.get('host')}}",
    "ruleNextPage": "page",
    "rulePubDate": ".vodtime@text## .*\n@js:\nif(String(result).match(/-|年|月|日|天|小时|分钟|前天|昨天|今天/)){\n\tresult=\"🗓\"+result;\n}else if(String(result).match(/.*\\:.*/)){\n\tresult=\"🕒\"+result;\n}else{result}",
    "ruleTitle": ".vodname@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\nvar url_str=\"\";\neval(String(source.loginUrl));\neval(String(source.sourceComment));\nres=org.jsoup.Jsoup.parse(java.ajax(host));\nhost=String(res.select('.tip a').attr('href'));\nhost=host.replace(/\\?.+/g,'');\njava.put('host',host);\nlist.forEach((item,index)=>{\n\turl_str+=`${item[0]}::${host}search/${item[1]}/{{source.getVariable()}}/{{page}}.html\\n`;\n});\n\nvar num=0,category_list=\"\";\nvalue=java.get('num');\nvalue==\"\"||value==\"undefined\"?\"\":num=value;\n\nlink=`${host}/list/${rank[num][1]}.html`;\nres=org.jsoup.Jsoup.parse(java.ajax(link));\ndata=res.select('#type').select('li');\nfor(i in data){\n\tname=data[i].text();\n\turl=data[i].select('a').attr('href');\n\turl=String(url).replace(/\\/1.html|.html/,'/{{page}}.html')\n if(Number(i)==0){\n \t category_list+=`${name}(🔞${rank[num][0]}分类→)::${host}${url}\\n`;\n }else{\n \t category_list+=`${name}::${host}${url}\\n`;\n }\n}\nresult=url_str+category_list;",
    "sourceComment": "  host=\"https://nv06.cc\"\n\nlist=[\n [\"X研究所\",\"yjs\"],\n [\"黄色仓库\",\"hsck\"],\n [\"91Porn\",\"porn\"],\n [\"大奶\",\"naizi\"],\n [\"杏吧\",\"xingba\"],\n [\"玉兔\",\"yutu\"],\n [\"辣椒\",\"lj\"],\n [\"丝袜\",\"swa\"]\n]\n\n/*\n\t发布页  https://sway.cloud.microsoft/w80Tr0JptAdLWDzn\n*/",
    "sourceGroup": "h",
    "sourceIcon": "https://img2.baidu.com/it/u=2995801598,386575573&fm=253&fmt=auto&app=138&f=PNG?w=500&h=500",
    "sourceName": "Nice仓库",
    "sourceUrl": "Nice仓库",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1605,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1769674212535,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article",
    "ruleContent": "class.dplayer@all<js>\nresult=result.match(/http.*0/)[0]##\\</js>{{@@title@text##成人黑料.*}}\n<video src=\"{{result}}\" width=\"100%\" height=\"auto\" controls></video>",
    "ruleImage": "@js:\"https://mgtv-bbqn.oss-cn-beijing.aliyuncs.com/1/2310310103284A29582395A850D3A0F5C26862354MzFE/SrRlbr0.gif\"",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "span.1@text",
    "ruleTitle": "class.post-card-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::/search/{{source.getVariable()}}/{{page}}/\n今日吃瓜::/category/wpcz/{{page}}/\n热门大瓜::/category/rdsj/{{page}}/\n学生校园::/category/xsxy/{{page}}/\n网红黑料::/category/whhl/{{page}}/\n看片娱乐::/category/ysyl/{{page}}/\n乱伦道德::/category/lldd/{{page}}/\n人人吃瓜::/category/rrcg/{{page}}/\n海外吃瓜::/category/hwcg/{{page}}/\n骚男骚女::/category/snsn/{{page}}/",
    "sourceComment": "https://51cgg32.com",
    "sourceGroup": "h",
    "sourceIcon": "http://p6.itc.cn/images01/20201202/8d012ed623d647a78635557e7d235ab6.jpeg",
    "sourceName": "51吃瓜🥝",
    "sourceUrl": "https://car.fuuanuxl.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1607,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1769582869551,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article",
    "ruleContent": "class.dplayer@all<js>\nresult=result.match(/http.*m3u8/)[0]##\\</js>{{@@title@text##正在播放:|永久.*}}\n<video src=\"{{result}}\" width=\"100%\" height=\"auto\" controls></video>",
    "ruleImage": "@js:\"https://mgtv-bbqn.oss-cn-beijing.aliyuncs.com/1/2310310103284A29582395A850D3A0F5C26862354MzFE/SrRlbr0.gif\"",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.post-card-info@text",
    "ruleTitle": "h2@text##热榜.*",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "学生::/search/学生/{{page}}/\n全部①::/<,page/{{page}}/>\n全部②::/page/3/\n全部③::/page/5/\n搜索::/search/{{source.getVariable()}}/{{page}}/\n偷情::/search/偷情/{{page}}/\n白虎::/search/白虎/{{page}}/\n反差::/search/反差/{{page}}/\n极品::/search/极品/{{page}}/\n萝莉::/search/萝莉/{{page}}/\n00后::/search/00后/{{page}}/\n女同::/search/女同/{{page}}/\n双马尾::/search/双马尾/{{page}}/\n学院::/search/学院/{{page}}/\n高三::/search/高三/{{page}}/\n高中::/search/高中/{{page}}/\n少女::/search/少女/{{page}}/\n情趣::/search/情趣/{{page}}/\n自拍::/search/自拍/{{page}}/\n大学::/search/大学/{{page}}/\n大一::/search/大一/{{page}}/\n学妹::/search/学妹/{{page}}/\n校花::/search/校花/{{page}}/\n调教::/search/调教/{{page}}/\n女神::/search/女神/{{page}}/\n少妇::/search/少妇/{{page}}/\n巨乳::/search/巨乳/{{page}}/\n孕妇::/search/孕妇/{{page}}/\n口::/search/口交/{{page}}/\n精::/search/精/{{page}}/",
    "sourceComment": "//多个视频不会写\n发:https://heiliao.su",
    "sourceGroup": "h",
    "sourceIcon": "http://p6.itc.cn/images01/20201202/8d012ed623d647a78635557e7d235ab6.jpeg",
    "sourceName": "黑料不打洋🥝",
    "sourceUrl": "https://heiliao1076.pro/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1616,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "ai交互小说软件需登录",
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "魅魔ai",
    "sourceUrl": "http://i.sexyai.top/Uc8hq",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1627,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "h",
    "sourceIcon": "",
    "sourceName": "COSPLAY,求大佬帮忙做成订阅源，或者完善一下书源",
    "sourceUrl": "https://vip.aqdz104.com/sitemap",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1628,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>'<x t=\"净化规则\" h=\"legado://import/Source?src=https://gitee.com/yveguang/yuedu/raw/master/净化规则.json\">,<x t=\"书源\" h=\"legado://import/Source?src=https://gitee.com/lyc486/yuedu/raw/master/书源.json\">,<x t=\"检查更新\" h=\"legado://import/Source?src=https://gitee.com/yveguang/yuedu/raw/master/订阅.json\">'.split(\",\")</js>",
    "ruleContent": "",
    "ruleLink": "@@x@h\n@js:\nresult=\"https://www.coolapk.com/link?url=\"+result",
    "ruleTitle": "@@x@t",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "替换规则::https://gitee.com/yveguang/yuedu/raw/master/jinghuals1.json",
    "sourceComment": "encodeURIComponent(",
    "sourceGroup": "noh",
    "sourceIcon": "https://gitee.com/lyc486/yuedu/raw/master/5x.webp",
    "sourceName": "洛娅橙",
    "sourceUrl": "书源整合/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1629,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.list@class.item",
    "ruleContent": "<!DOCTYPE html>\n<html>\n\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://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js\"></script>\n    <script src=\"https://cdn.jsdelivr.net/hls.js/latest/hls.min.js\"></script>\n    <script src=\"https://xchina.co/scripts/my_49.js\"></script>\n</head>\n\n<body>\n\n    <div id=\"div_video\">\n        <div class=\"controls\">\n            <button class=\"btn prev\" go=\"-1\" disabled>上一个</button>\n            <div class=\"index\">\n                <span class=\"current\">1</span>\n                /\n                <span class=\"total\"></span>\n            </div>\n            <button class=\"btn next\" go=\"1\">下一个</button>\n        </div>\n        <video id=\"video\" width=\"100%\" controls src=\"\"></video>\n    </div>\n\n    {{@@class.main@tag.script.0@html}}\n\n    <script>\n\n\n            var xhs_type = \"{{@@id.tab_1@tag.div.2@text}}\";\n            var regType = /V/;\n            if (regType.test(xhs_type)) {\n                $('#div_video').css('display', 'block');\n                // 判断是否是mp4类型视频\n                if (typeof videos !== 'undefined') {\n                    // 视频个数\n                    var total = videos.length;\n                    $('.total').text(total)\n\n                    if (total == 1) {\n                        $('.controls').css(\"display\", 'none');\n                    }\n\n                    playVideo();\n                    $(\".btn[go]\").click(function () {\n                        if (!$(this).attr(\"disabled\")) {\n                            var go = parseInt($(this).attr(\"go\"));\n                            currentVideo += go;\n                            currentVideo = currentVideo < 0 ? 0 : currentVideo;\n                            currentVideo = currentVideo > videos.length - 1 ? videos.length - 1 : currentVideo;\n                            currentVideo == 0 ? $(\".btn[go='-1']\").attr(\"disabled\", \"disabled\") : $(\".btn[go='-1']\").removeAttr(\"disabled\");\n                            currentVideo == videos.length - 1 ? $(\".btn[go='1']\").attr(\"disabled\", \"disabled\") : $(\".btn[go='1']\").removeAttr(\"disabled\");\n                            $(\".current\").text(currentVideo + 1);\n                            playVideo(true);\n                        }\n                    });\n                    function playVideo(autoplay = false) {\n                        var $player = $(\"video\");\n                        var player = $player;\n                        $player.attr(\"poster\", $player.attr(\"_poster\")).attr(\"src\", domain + videos[currentVideo][\"url\"]).off(\"canplaythrough\").on(\"canplaythrough\", function () {\n                            $player.removeAttr(\"poster\");\n                        });\n                        player.load();\n                        if (autoplay) {\n                            player.play();\n                        }\n                    }\n                }else{\n                   $('.controls').css(\"display\", 'none');                \n                }\n            }\n\n    </script>\n{{@@class.container@tag.script.1@html}}\n\n\n    <div id=\"box\">{{@@class.photos@tag.a@tag.figure@tag.img@html}}</div>\n    <div id=\"loads\">加载中 </div>\n    <script>\n        var loads;\n        $(document).ready(function () {\n            var box = document.getElementById(\"box\");\n            loads = document.getElementById(\"loads\");\n            new Viewer(box, { title: false, interval: 3000 })\n            var i = 1;\n            var page = {{@@class.pager.0@tag.a.-2@textNodes##\\n}};\n            var baseurl = window.location.href.substring(0, window.location.href.lastIndexOf('.'));\n            var urlStart = baseurl + \"/\";\n            var urlEnd = \".html\";\n            var nurl;\n            new IntersectionObserver(entries => {\n                if (entries[0].intersectionRatio) {\n                    if (entries[0].intersectionRatio <= 0) return;\n                    for (var j = 0; j < 1; j++) {\n                        fetchHtml(i, page, urlStart, urlEnd);\n                        i += 1;\n                    }\n                }\n            }).observe(loads)\n        });\n\n        function fetchHtml(i, page, urlStart, urlEnd) {\n\n            if (i < page) {\n                i += 1;\n                nurl = urlStart + i + urlEnd;\n                $.ajax({\n                    url: nurl,\n                    dataType: 'html',\n                    success: function (html) {\n                        $('#box').append('<h5>' + i + '->' + page + '</h5>');\n                        $('#box').append($(html).find('img.cr_only'));\n                        box.viewer.update();\n                    },\n                    error: function (xhr) { }\n                });\n            } else {\n                $('#loads').html(\"\");\n            }\n        }\n    </script>\n</body>\n\n</html>",
    "ruleImage": "tag.a@tag.img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.pager.0@class.next@href",
    "ruleTitle": "tag.a@tag.img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "秀人网::https://xchina.co/photos/album-1.html\n大尺度主题::https://xchina.co/photos/album-2.html\n性爱主题::https://xchina.co/photos/album-3.html\n露出主题::https://xchina.co/photos/album-4.html\nCosplay主题::https://xchina.co/photos/album-5.html\n道具主题::https://xchina.co/photos/album-6.html\n捆绑主题::https://xchina.co/photos/album-7.html\n白虎主题::https://xchina.co/photos/album-8.html\n女同主题::https://xchina.co/photos/album-9.html\n丝袜主题::https://xchina.co/photos/album-10.html\n有视频::https://xchina.co/photos/album-11.html",
    "sourceComment": "(挂梯使用)(加载不出来多刷新几次)",
    "sourceGroup": "h",
    "sourceIcon": "https://p3-search.byteimg.com/obj/labis/0a5502af6b95a6b49d3acd488aae8398",
    "sourceName": "小黄书(图集)",
    "sourceUrl": "https://xchina.co/photos.html",
    "style": "img{width:100%;height:auto;margin-bottom:10px}\nh5{margin-bottom:0;padding-left:5;margin-top:-10px}\n.controls {\n        padding: 5px 0 10px;\n        text-align: center;\n        font-size: 16px;\n        color: #000;\n        line-height: 30px;\n        white-space: nowrap;\n        user-select: none;\n\n    }\n\n    .btn {\n        height: 30px;\n        line-height: 30px;\n        padding: 0 20px;\n        font-size: 14px;\n        cursor: pointer;\n        background-color: #3498db;\n        color: #fff;\n        border: none;\n        border-radius: 5px;\n        outline: none;\n        margin: 0 5px;\n        display: inline-block;\n    }\n\n    .index {\n        display: inline-block;\n        margin: 0 10px;\n        padding: 5px;\n    }\n    #div_video {\n        display: none;\nmargin-bottom:10px;\n    }",
    "type": 0
  }
]