[
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": -10106484,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1774456210114,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.itemList",
    "ruleDescription": "<html>\n<head>\n    <title>开眼</title>\n    <style>\n        :root {\n            --text-color: #333;\n            --bg-color: #f9f9f9;\n            --title-color: #222;\n            --link-color: #0066cc;\n            --original-link-color: #888;\n            --download-bg: #f0f0f0;\n            --download-hover-bg: #e6e6e6;\n            --video-shadow: 0 4px 12px rgba(0,0,0,0.15);\n        }\n\n        @media (prefers-color-scheme: dark) {\n            :root {\n                --text-color: #e0e0e0;\n                --bg-color: #121212;\n                --title-color: #ffffff;\n                --link-color: #4dabf7;\n                --original-link-color: #aaaaaa;\n                --download-bg: #2d2d2d;\n                --download-hover-bg: #3d3d3d;\n                --video-shadow: 0 4px 12px rgba(0,0,0,0.3);\n            }\n        }\n\n        body {\n            font-family: 'Helvetica Neue', Arial, sans-serif;\n            max-width: 800px;\n            margin: 0 auto;\n            padding: 20px;\n            background-color: var(--bg-color);\n            color: var(--text-color);\n            line-height: 1.6;\n            transition: background-color 0.3s, color 0.3s;\n        }\n\n        .title {\n            font-size: 26px;\n            font-weight: bold;\n            margin: 30px 0 25px 0;\n            color: var(--title-color);\n            text-align: center;\n        }\n\n        video {\n            width: 100%;\n            border-radius: 6px;\n            margin: 0 auto 25px auto;\n            box-shadow: var(--video-shadow);\n            display: block;\n            background-color: #000;\n        }\n\n        .text {\n            font-size: 16px;\n            margin: 0 auto 30px auto;\n            color: var(--text-color);\n            max-width: 700px;\n            text-align: justify;\n        }\n\n        .download-section {\n            margin: 30px 0;\n            text-align: center;\n        }\n\n        .download-label {\n            font-size: 16px;\n            color: var(--text-color);\n            margin-bottom: 10px;\n        }\n\n        .down {\n            display: inline-block;\n            background-color: var(--download-bg);\n            padding: 10px 15px;\n            border-radius: 6px;\n            word-break: break-all;\n            color: var(--link-color);\n            text-decoration: none;\n            font-size: 14px;\n            max-width: 100%;\n            box-sizing: border-box;\n            transition: background-color 0.3s;\n        }\n\n        .down:hover {\n            background-color: var(--download-hover-bg);\n            text-decoration: underline;\n        }\n\n        .original-link {\n            text-align: right;\n            margin: 0 0 20px 0;\n        }\n\n        .original-link a {\n            color: var(--original-link-color);\n            text-decoration: none;\n            font-size: 14px;\n            transition: color 0.2s;\n        }\n\n        .original-link a:hover {\n            color: var(--link-color);\n            text-decoration: underline;\n        }\n    </style>\n</head>\n<body>\n    <div class=\"original-link\">\n        <a href=\"{{$.data.content.data.webUrl.raw||$.data.webUrl.raw}}\">原文地址</a>\n    </div>\n    \n    <p class=\"title\"><strong>{{$.data.content.data.title||$.data.title}}</strong></p>\n    \n    <video src=\"{{$.data.content.data.playUrl||$.data.playUrl}}\" width=100% height=\"auto\" controls=\"controls\" poster=\"{{$.data.content.data.cover.feed||$.data.feed}}\"></video>\n    \n    <p class=\"text\">{{$.data.content.data.description||$.data.description}}</p>\n    \n    <div class=\"download-section\">\n        <div class=\"download-label\">下载地址：</div>\n        <a class='down'>{{$.data.content.data.playUrl||$.data.playUrl}}</a>\n    </div>\n</body>\n</html>\n",
    "ruleImage": "$.data.content.data.cover.feed",
    "ruleLink": "$.data.text||$.data.content.data.webUrl.raw||$.data.web.raw",
    "ruleNextPage": "{{$.nextPageUrl}}&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28",
    "rulePubDate": "$.data.header.description",
    "ruleTitle": "$.data.text||$.data.content.data.title||$.data.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "日报::http://baobab.kaiyanapp.com/api/v5/index/tab/feed?udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&广告::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=16&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&剧情::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=12&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&运动::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1022&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&创意::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=2&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&旅行::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1019&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&记录::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=24&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&音乐::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1018&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&影视::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1025&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&科技::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1024&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&开胃::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1020&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&游戏::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=30&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&搞笑::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=140&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&时尚::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=26&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&综艺::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=28&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&生活::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=666&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28",
    "sourceGroup": "影视",
    "sourceIcon": "http://android-artworks.25pp.com/fs08/2024/11/14/0/110_43dbbf6566db7dc0860ea99af8391a83_con.png",
    "sourceName": "🎞\n开眼",
    "sourceUrl": "http://baobab.kaiyanapp.com",
    "style": ".text{color:#f0f0f0;text-indent: 2em}\nbody{background-color:#8e8e8e}\n.title{text-align:center;color:#ffffff}\n.down{font-size:10px}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10106483,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36\"}",
    "injectJs": "    if (!/^https:\\/\\/(so\\.toutiao\\.com\\/search\\/?|quark\\.sm\\.cn\\/s|wap\\.sogou\\.com\\/web\\/searchList\\.jsp|m\\.so\\.com\\/s|cn\\.bing\\.com\\/search|www\\.baidu\\.com\\/s)\\?/.test(window.location.href) && !document.getElementById('open-yuedu-bookshelf')) {\n      const btn = document.createElement('div'),\n        autoBtn = document.createElement('div');\n      autoBtn.style.display = \"none\";\n      const widthIsMax = window.innerWidth > window.innerHeight;\n      let size, unit = 1500;\n      if (widthIsMax) {\n        size = window.innerWidth / unit;\n        unit = \"vw\";\n      } else {\n        size = window.innerHeight / unit;\n        unit = \"vh\"\n      }\n\n      const pubStyle = `background-color: rgb(255, 153, 0);border-radius:5px;border: 1px solid rgb(255, 153, 0);color: #fff;line-height:1;font-size:${4 * size}${unit};font-weight: 400;padding: ${size}${unit} ${size}${unit};`;\n\n      const pubBtn = (btns) => {\n        let text = \"\";\n        for (let i in btns) {\n          text += `<button type=\"button\" style=\"margin:5px auto;${pubStyle}\" onclick=\"window.open(\\`legado://import/addToBookshelf?src=${encodeURIComponent(btns[i])},{origin:'通用书源'}\\`, '_blank')\">${i}</button>`\n        }\n        return text\n      };\n\n      btn.innerHTML = `<button type=\"button\" id='open-yuedu-bookshelf' style=\"z-index: 9999999999;position: fixed;bottom: 7%;right: 7%;${pubStyle}\">加入书架</button>`;\n\n      autoBtn.innerHTML = `<div id='auto-yuedu-bookshelf' style=\"background-color:#ffffff;z-index: 99999999999;position: fixed;bottom:0;left: 0;width:100%;\">\n    <div style=\"background-color:#f0f0f0;border-top:1px rgb(255, 153, 0) solid;display:flex;flex-wrap: wrap;\">${pubBtn({\n        目录识别: window.location.href,\n        尾页目录: `${window.location.href}?录`,\n        单页识别: `${window.location.href}?单`,\n        尾页正文: `${window.location.href}?[${window.location.href}]单`,\n      })}\n    </div>\n    <div style=\"padding:0px 5px;border-top: 1px solid rgb(255, 153, 0);\">\n      <p><span style=\"color:rgb(255, 153, 0);\">目录识别: </span>当前为目录页，且所有章节都在此页或有下一页按钮时，点\"目录识别\"按钮自动识别</p>\n      <p><span style=\"color:rgb(255, 153, 0);\">尾页目录: </span>目录页无下一页按钮且存在其他目录页时，进入最后一个目录页，点\"尾页目录\"逆推生成全部目录（此方式生成的目录无法更新）\n      </p>\n      <p><span style=\"color:rgb(255, 153, 0);\">单页识别:\n        </span></p>\n      <p>1. 当前为正文且页面下方为纯数字形式的目录时，点\"单页识别\"按钮自动识别</p>\n      <p>2. 当前为正文且当前书籍无录页但有下一页按钮时，点\"单页识别\"按钮自动识别（目录过多时需要的识别时间比较长，可考虑进入最后一个正文页点\"尾页正文\"按钮快速逆推生成整本书）</p>\n      <p><span style=\"color:rgb(255, 153, 0);\">尾页正文:\n        </span>章节链接符合数字递增规律时，进入最后一个正文页，点\"尾页正文\"逆推生成整本书（此方式生成的目录无法更新）</p>\n    </div>\n    <p style=\"margin:0px;background-color: rgb(255, 153, 0);color:#ffffff;width:100%;text-align: center;\">长按弹窗任意空白处关闭弹窗</p>\n  </div>`;\n\n      let time, isLong;\n      function onBtnStart(evt) {\n        evt.preventDefault();\n        time = setTimeout(() => {\n          isLong = true;\n          autoBtn.style.display = \"block\";\n        }, 600);\n      };\n      function onBtnEnd(evt) {\n        evt.preventDefault();\n        if (isLong) {\n          isLong = undefined;\n        } else {\n          clearTimeout(time);\n          time = undefined;\n          window.open(`legado://import/addToBookshelf?src=${encodeURIComponent(window.location.href)}`, '_blank');\n        }\n      }\n      btn.addEventListener('touchstart', onBtnStart);\n      btn.addEventListener('touchend', onBtnEnd);\n      btn.addEventListener('touchcancel', onBtnEnd);\n      btn.addEventListener('mousedown', onBtnStart);\n      btn.addEventListener('mouseup', onBtnEnd);\n      document.body.appendChild(btn);\n\n      let time2, isLong2;\n      function onBtnStart2(evt) {\n        time2 = setTimeout(() => {\n          isLong2 = true;\n          autoBtn.style.display = \"none\";\n        }, 600);\n      };\n      function onBtnEnd2(evt) {\n        if (isLong2) {\n          evt.preventDefault();\n          isLong2 = undefined;\n        } else {\n          clearTimeout(time2);\n          time2 = undefined;\n        }\n      }\n\n      autoBtn.addEventListener('touchstart', onBtnStart2);\n      autoBtn.addEventListener('touchend', onBtnEnd2);\n      autoBtn.addEventListener('touchcancel', onBtnEnd2);\n      autoBtn.addEventListener('mousedown', onBtnStart2);\n      autoBtn.addEventListener('mouseup', onBtnEnd2);\n      document.body.appendChild(autoBtn);\n    }\n\n    let time, num = 0;\n    const herfs = new Map();\n    function onTouchStart(evt) {\n      for (const el of evt.path) {\n        if (el.tagName === \"A\") {\n          if (el.href !== 'javascript:void(0)') {\n            const inner = el.href;\n            herfs.set(el, inner);\n            el.setAttribute('href', 'javascript:void(0)');\n            time = setTimeout(() => {\n              window.open(`legado://import/addToBookshelf?src=${encodeURIComponent(inner)}`, '_blank')\n            }, 600);\n          }\n          break;\n        }\n      }\n    };\n    function onTouchEnd(evt) {\n      if (time) {\n        clearTimeout(time);\n        time = undefined;\n      }\n      for (const el of evt.path) {\n        if (el.tagName === \"A\") {\n          if (el.href === 'javascript:void(0)') {\n            const herf = herfs.get(el);\n            if (herf) {\n              el.setAttribute('href', herf)\n            }\n          }\n          break;\n        }\n      }\n    }\n\n    function addListener(els) {\n      Array.from(els, (item) => {\n        if (item.getAttribute('add-yuedu-bookshelf') !== 'add-yuedu-bookshelf' && item.innerText && item.href && !/^#|^javascript:/.test(item.href)) {\n          item.setAttribute('add-yuedu-bookshelf', 'add-yuedu-bookshelf');\n          item.addEventListener('touchstart', onTouchStart);\n          item.addEventListener('touchend', onTouchEnd);\n          item.addEventListener('touchcancel', onTouchEnd);\n          item.addEventListener('mousedown', onTouchStart);\n          item.addEventListener('mouseup', onTouchEnd);\n        }\n      });\n      num = els.length;\n    }\n\n    function reAdd() {\n      const els = document.getElementsByTagName('a');\n      if (els.length > num) addListener(els);\n    }\n\n    reAdd();\n\n    const observer = new ResizeObserver(reAdd);\n    observer.observe(document.body);",
    "lastUpdateTime": 1774454922984,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "@js:\n{{cookie.removeCookie(source.getKey())}};\nlet labels = `${source.getVariable()}`.trim();\nlet list = [\n{\n\t\"name\":\"人人热书\",\n\t\"url\":\"https://www.rrssk.com/keywords-{{source.getVariable()}}.html\"\n},\n{\n\t\"name\":\"夸克搜索\",\n\t\"url\":\"https://quark.sm.cn/s?q={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"神马搜索\",\n\t\"url\":\"https://m.sm.cn/s?q={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"搜狗搜索\",\n\t\"url\":\"https://wap.sogou.com/web/searchList.jsp?keyword={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"头条搜索\",\n\t\"url\":\"https://so.toutiao.com/search/?keyword={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"360搜索\",\n\t\"url\":\"https://m.so.com/s?q={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"必应搜索\",\n\t\"url\":\"https://cn.bing.com/search?q={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"百度搜索\",\n\t\"url\":\"https://www.baidu.com/s?wd={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"yandex搜索\",\n\t\"url\":\"https://yandex.com/search/touch/?text={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"owlook小说搜索\",\n\t\"url\":\"https://www.owlook.com.cn/search?wd={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"完本神站小说搜索\",\n\t\"url\":\"https://www.sososhu.com/?q={{source.getVariable()}}&site=mwanbengo\"\n},{\n\t\"name\":\"AU文学聚合搜索\",\n\t\"url\":\"https://book4.cc/AU%E6%96%87%E5%AD%A6/searchword?q={{source.getVariable()}}\"\n\t},\n{\n\t\"name\": \"爱丽书屋\",\n\t\"url\": \"https://m.ailisw.com/search/?keyword={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"搜书网\",\n\t\"url\":\"https://www.sou.st/search/result?wd={{source.getVariable()}}&tab=book\"\n},\n{\n\t\"name\":\"yep搜索\",\n\t\"url\":\"https://yep.com/web?q={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"DuckDuckGo搜索（梯子）\",\n\t\"url\":\"https://duckduckgo.com/?q={{source.getVariable()}}&t=h_\"\n},\n{\n\t\"name\":\"mojeek搜索（梯子）\",\n\t\"url\":\"https://www.mojeek.com/search?q={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"谷歌搜索（梯子）\",\n\t\"url\":\"https://www.google.com/search?q={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"ecosia搜索（梯子）\",\n\t\"url\":\"https://www.ecosia.org/search?q={{source.getVariable()}}\"\n},\n{\n\t\"name\":\"brave搜索（梯子）\",\n\t\"url\":\"https://search.brave.com/search?q={{source.getVariable()}}\"\n}\n];\n\nlabels?list.concat(labels.split(/\\s+/).map(it=>{\n\tconst href=it.split(\"::\");\n\treturn {\"name\":href[0],\"url\":href[1]}\n})):list",
    "ruleLink": "url",
    "ruleTitle": "name",
    "showWebLog": false,
    "singleUrl": false,
    "sourceComment": "以如下格式设置源变量，可在列表后追加任意多个书签和搜索引擎\n\n夸克搜索::https://quark.sm.cn/s?q={{source.getVariable()}}",
    "sourceGroup": "工具",
    "sourceIcon": "https://5b0988e595225.cdn.sohucs.com/q_70,c_zoom,w_640/images/20180118/22271e695f5f48a89795e2b9858f5008.jpeg",
    "sourceName": "聚合搜索",
    "sourceUrl": "https://www.baidu.com",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": -10106419,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1774770965889,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".plist-4-textbox a",
    "ruleLink": "a@href",
    "rulePubDate": "a@title",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "菜谱大全::https://m.meishichina.com/recipe/\n肉禽类::https://m.meishichina.com/ingredient/category/rql/\n水产品::https://m.meishichina.com/ingredient/category/scl/\n蔬菜类::https://m.meishichina.com/ingredient/category/shucailei/\n米面豆乳::https://m.meishichina.com/ingredient/category/mmdr/\n调味品::https://m.meishichina.com/ingredient/category/tiaoweipinl\n果品类::https://m.meishichina.com/ingredient/category/guopinlei/\n酒水茶饮::https://m.meishichina.com/ingredient/category/jiushui/",
    "sourceComment": "┍   　  　书源作者：闻君三月　　  　┒\n├───┬────────────┤\n│！免责│本书源只提供代码进行技术│\n│！声明│交流，请于２４小时后删除│\n└────────────────┘",
    "sourceGroup": "工具",
    "sourceIcon": "https://i6.meishichina.com/img/a/wapicon.png",
    "sourceName": "美食天下·分类大全",
    "sourceUrl": "https://m.meishichina.com/ingredient/category/rql/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": -10106418,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774770960259,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".alist a",
    "ruleImage": "img@data-src",
    "ruleLink": "a.0@href",
    "ruleNextPage": ".mbox a.0@href",
    "rulePubDate": "div.-1@text&&div.-2@text##\\n##_",
    "ruleTitle": "h3@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>var u=\"::https://m.meishichina.com/search/recipe/\";\nresult=\t\"搜索\"+u+\"{{source.getVariable()}}\\n\"+\n\"热菜\"+u+\"热菜\\n\"+\n\"凉菜\"+u+\"凉菜\\n\"+\n\"早餐\"+u+\"早餐\\n\"+\n\"懒人菜\"+u+\"懒人菜\\n\"+\n\"家宴\"+u+\"家宴\\n\"+\n\"酱料\"+u+\"酱料\\n\"+\n\"宴客\"+u+\"宴客\\n\"+\n\"海鲜\"+u+\"海鲜\\n\"\n</js>\n",
    "sourceComment": "┍   　  　书源作者：闻君三月　　  　┒\n├───┬────────────┤\n│！免责│本书源只提供代码进行技术│\n│！声明│交流，请于２４小时后删除│\n└────────────────┘",
    "sourceGroup": "工具",
    "sourceIcon": "https://i6.meishichina.com/img/a/wapicon.png",
    "sourceName": "美食天下",
    "sourceUrl": "https://m.meishichina.com/recipe/category/recai/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10106416,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1774770941098,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".recipe-96-horizon,.recipe-list>li",
    "ruleImage": "img@data-src",
    "ruleLink": "a@href",
    "ruleTitle": "header@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://m.xiachufang.com/search/?keyword={{source.getVariable()}}\n家常菜::https://m.xiachufang.com/search/?keyword=家常菜\n下饭菜::https://m.xiachufang.com/search/?keyword=下饭菜\n烘焙::https://m.xiachufang.com/search/?keyword=烘焙\n肉类::https://m.xiachufang.com/search/?keyword=肉类\n早餐::https://m.xiachufang.com/search/?keyword=早餐\n蔬菜::https://m.xiachufang.com/search/?keyword=蔬菜\n汤粥主食::https://m.xiachufang.com/search/?keyword=汤粥主食\n快手菜::https://m.xiachufang.com/search/?keyword=快手菜\n素菜::https://m.xiachufang.com/search/?keyword=素菜\n甜品饮品::https://m.xiachufang.com/search/?keyword=甜品饮品\n小吃::https://m.xiachufang.com/search/?keyword=小吃\n零食::https://m.xiachufang.com/search/?keyword=零食\n懒人食谱::https://m.xiachufang.com/search/?keyword=懒人食谱\n下酒菜::https://m.xiachufang.com/search/?keyword=下酒菜\n沙拉凉菜::https://m.xiachufang.com/search/?keyword=沙拉凉菜\n一人食::https://m.xiachufang.com/search/?keyword=一人食\n宴客::https://m.xiachufang.com/search/?keyword=宴客\n下午茶::https://m.xiachufang.com/search/?keyword=下午茶\n便当::https://m.xiachufang.com/search/?keyword=便当\n宿舍::https://m.xiachufang.com/search/?keyword=宿舍\n宵夜::https://m.xiachufang.com/search/?keyword=宵夜\n鱼虾水产::https://m.xiachufang.com/search/?keyword=鱼虾水产\n水果::https://m.xiachufang.com/search/?keyword=水果\n蛋类豆类::https://m.xiachufang.com/search/?keyword=蛋类豆类\n奶类::https://m.xiachufang.com/search/?keyword=奶类\n腌肉腌菜::https://m.xiachufang.com/search/?keyword=腌肉腌菜\n创意菜::https://m.xiachufang.com/search/?keyword=创意菜\n自制::https://m.xiachufang.com/search/?keyword=自制\n外貌协会::https://m.xiachufang.com/search/?keyword=外貌协会\n野餐::https://m.xiachufang.com/search/?keyword=野餐\n视频菜谱::https://m.xiachufang.com/search/?keyword=视频菜谱\n异国风味::https://m.xiachufang.com/search/?keyword=异国风味\n大师秘方::https://m.xiachufang.com/search/?keyword=大师秘方\n餐厅Cosplay::https://m.xiachufang.com/search/?keyword=restaurant-cosplay/\n影视\n深夜食堂::https://m.xiachufang.com/search/?keyword=深夜食堂\n孤独的美食家::https://m.xiachufang.com/search/?keyword=孤独的美食家\n小森林::https://m.xiachufang.com/search/?keyword=小森林\n拜托了冰箱::https://m.xiachufang.com/search/?keyword=拜托了冰箱\nHappy Together::https://m.xiachufang.com/search/?keyword=Happy Together\n食戟之灵::https://m.xiachufang.com/search/?keyword=食戟之灵\n多谢款待::https://m.xiachufang.com/search/?keyword=多谢款待\n一起吃饭吧::https://m.xiachufang.com/search/?keyword=一起吃饭吧\n地狱厨房::https://m.xiachufang.com/search/?keyword=地狱厨房\n梦色蛋糕师::https://m.xiachufang.com/search/?keyword=梦色蛋糕师\n十二道锋味::https://m.xiachufang.com/search/?keyword=十二道锋味\n没有名字的甜点店::https://m.xiachufang.com/search/?keyword=没有名字的甜点店\n康熙来了::https://m.xiachufang.com/search/?keyword=康熙来了\n面包和汤和猫好天气::https://m.xiachufang.com/search/?keyword=面包和汤和猫好天气\n白熊咖啡厅::https://m.xiachufang.com/search/?keyword=白熊咖啡厅\n型男大主厨::https://m.xiachufang.com/search/?keyword=型男大主厨\n中华小当家::https://m.xiachufang.com/search/?keyword=中华小当家\n料理仙姬::https://m.xiachufang.com/search/?keyword=料理仙姬\n花之懒散饭::https://m.xiachufang.com/search/?keyword=花之懒散饭\n调酒师Bartender::https://m.xiachufang.com/search/?keyword=调酒师Bartender",
    "sourceComment": "┍   　  　书源作者：闻君三月　　  　┒\n├───┬────────────┤\n│！免责│本书源只提供代码进行技术│\n│！声明│交流，请于２４小时后删除│\n└────────────────┘",
    "sourceGroup": "工具",
    "sourceIcon": "https://i2.chuimg.com/68f5fd36f49611e58561b82a72e00100.png",
    "sourceName": "下厨房",
    "sourceUrl": "https://m.xiachufang.com/category/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": -10106414,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "jsLib": "// 本地备用地址\nconst fallbackHosts = [\n  \"https://www.yck.email\",\n  \"https://www.yck2026.top\",\n  \"https://www.yckceo.com\"\n];\n\nconst KEY_WORKING_HOST = \"working_host\";\nconst KEY_HOST_EXPIRE = \"host_expire\";\nconst CACHE_TIME = 300000; // 5分钟缓存\n\nfunction bhost() {\n  const { java, cache } = this;\n  const now = Date.now();\n\n  // 1. 优先直接用缓存（不检测、不提示）\n  const cachedHost = cache.getFromMemory(KEY_WORKING_HOST);\n  const expireTime = cache.getFromMemory(KEY_HOST_EXPIRE) || 0;\n\n  if (cachedHost != null && now < expireTime) {\n    // 直接返回，不检测、不弹窗\n    return cachedHost;\n  }\n\n  // ======================================================\n  // 下面这段 【只有缓存过期/没有缓存时 才会执行】\n  // 平时访问根本不会走到这里！\n  // ======================================================\n  java.toast(\"正在更新最优线路...\");\n\n  const goodList = checkLatency(fallbackHosts, this);\n  let bestHost;\n\n  if (goodList.length > 0) {\n    bestHost = goodList[0].host;\n  } else {\n    bestHost = fallbackHosts[0];\n  }\n\n  // 缓存起来 5 分钟\n  cache.putMemory(KEY_WORKING_HOST, bestHost);\n  cache.putMemory(KEY_HOST_EXPIRE, now + CACHE_TIME);\n\n  java.toast(\"线路已保存，5分钟内不再检测\");\n  return bestHost;\n}\n\n// 检测连通性\nfunction isHostAvailable(host, java) {\n  try {\n    org.jsoup.Jsoup.connect(host)\n      .method(org.jsoup.Connection.Method.HEAD)\n      .timeout(2000)\n      .ignoreHttpErrors(true)\n      .execute();\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n// 批量测速\nfunction checkLatency(urls, ctx) {\n  const { java } = ctx;\n  const list = [];\n  for (var i = 0; i < urls.length; i++) {\n    let url = urls[i].startsWith(\"http\") ? urls[i] : \"https://\" + urls[i];\n    try {\n      var t1 = Date.now();\n      org.jsoup.Jsoup.connect(url)\n        .method(org.jsoup.Connection.Method.HEAD)\n        .timeout(2000)\n        .ignoreHttpErrors(true)\n        .execute();\n      var t2 = Date.now();\n      list.push({ host: url, latency: t2 - t1 });\n    } catch (e) {}\n  }\n  list.sort(function (a, b) {\n    return a.latency - b.latency;\n  });\n  return list;\n}\n",
    "lastUpdateTime": 1774465122712,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".layui-card-body@.ylist",
    "ruleDescription": "<title>{{@h2@a@text}}</title>\n<iframe src=\"legado://import/auto?src={{bhost()}}/yuedu/{{@a@href##.*/yuedu/(.*)/content/id/.*.html##$1}}/json/id/{{@a@href##.*/yuedu/.*/content/id/(.*).html##$1}}.json\" hidden></iframe>\n<br><h3>{{@h2@a@text}}</h3>\n<h5>{{@span.-1@text}}</h5>\n<h6><b>\n↓资源链接，点击复制\n<a href=\"legado://import/auto?src={{bhost()}}/yuedu/{{@a@href##.*/yuedu/(.*)/content/id/.*.html##$1}}/json/id/{{@a@href##.*/yuedu/.*/content/id/(.*).html##$1}}.json\">一键导入</a>\n<textarea id=\"copy\" onclick=\"copy()\">{{bhost()}}/yuedu/{{@a@href##.*/yuedu/(.*)/content/id/.*.html##$1}}/json/id/{{@a@href##.*/yuedu/.*/content/id/(.*).html##$1}}.json</textarea>\n{{@span.-2@text}} {{@p@text}}</b></h6><script>\nfunction copy(){\n\tdocument.getElementById('copy').select()\n\tdocument.execCommand('copy')\n\talert(\"链接复制成功👉请粘贴到对应导入地方导入\")\n}\n</script>",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@span.-2@text}} {{@.m-right@text}} {{@span.-1@text}}",
    "ruleTitle": "h2@a@text",
    "searchUrl": "@js:\nresult=bhost()+\"/yuedu/shuyuan/index.html?keys=\"+key+\"&uid=&order1=time&order2=1&ver=&faxian=&sousuo=&tu=&shengyin=&page=\"+page\nresult",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "书源📖::{{bhost()}}/yuedu/shuyuan/index.html?page={{page}}\n书源搜索::{{bhost()}}/yuedu/shuyuan/index.html?keys={{source.getVariable()}}&uid=&order1=time&order2=1&ver=&faxian=&sousuo=&tu=&shengyin=&page={{page}}\n书源合集📖📖::{{bhost()}}/yuedu/shuyuans/index.html?page={{page}}\n订阅源🔔::{{bhost()}}/yuedu/rss/index.html?page={{page}}\n订阅源搜索::{{bhost()}}/yuedu/rss/index.html?keys={{source.getVariable()}}&uid=&order1=time&order2=1&page={{page}}\n订阅源合集🔔🔔::{{bhost()}}/yuedu/rsss/index.html?page={{page}}",
    "sourceGroup": "书源",
    "sourceIcon": "https://gitee.com/lyc486/yuedu/raw/master/ycktb.gif",
    "sourceName": "源仓库",
    "sourceUrl": "https://www.yckgo.top",
    "style": "a{float:right;text-decoration:none}\nh3,h5{text-align:center}\nh6{margin:0 2;position:sticky;top:30%}\ntextarea{width:100%;border-radius:5px}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10106403,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774455630522,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "<js>\n// 1. 先拿到整个 response 对象\nif (typeof result === 'string') {\n    result = JSON.parse(result);\n}\n\n// 2. 获取 data.links 字符串并解析\nconst linksStr = result.data.links;\nconst links = JSON.parse(linksStr);\n\n// 3. 过滤出 type 为 \"url\" 的启用项，并映射为 { n, u } 结构\nresult = links\n  .filter(item => item.type === \"url\" && item.enable)\n  .map(item => ({\n    n: item.typeValue.title,\n    u: item.typeValue.nav_url\n  }));\n</js>\n",
    "ruleContent": "<js>\nconst legadoUrl = \"legado://import/auto?src=\" + encodeURIComponent(baseUrl);\nhtml = `\n<!DOCTYPE html>\n<html lang=\"zh\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>雨落星辰 · 书源分享</title>\n  <style>\n    body {\n      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n      background: #f4f6f8;\n      color: #333;\n      padding: 20px;\n    }\n    .container {\n      max-width: 600px;\n      margin: 0 auto;\n      background: white;\n      border-radius: 12px;\n      padding: 20px;\n      box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n    }\n    h3 {\n      color: #2c3e50;\n      margin-top: 0;\n    }\n    a {\n      display: inline-block;\n      padding: 10px 20px;\n      background: #007bff;\n      color: white !important;\n      text-decoration: none;\n      border-radius: 6px;\n      font-size: 14px;\n      margin-bottom: 15px;\n    }\n    a:hover {\n      background: #0056b3;\n    }\n    textarea {\n      width: 100%;\n      min-height: 80px;\n      padding: 12px;\n      border: 1px solid #ccc;\n      border-radius: 6px;\n      resize: none;\n      font-size: 14px;\n      background: #f8f9fa;\n      color: #495057;\n      font-family: monospace;\n      cursor: pointer;\n    }\n    textarea:focus {\n      outline: none;\n      border-color: #007bff;\n    }\n    .tip {\n      font-size: 12px;\n      color: #6c757d;\n      margin-top: 10px;\n    }\n  </style>\n</head>\n<body>\n\n<div class=\"container\">\n  <!-- 隐藏 iframe（尝试预加载协议） -->\n  <iframe src=\"${legadoUrl}\" style=\"display:none;\" aria-hidden=\"true\"></iframe>\n\n  <h3>📚 书源分享</h3>\n\n  <h6><b>\n    ↓ 资源链接，点击复制\n  </b></h6>\n\n  <!-- 一键导入按钮 -->\n  <a href=\"${legadoUrl}\">⬇️ 一键导入</a>\n\n  <!-- 点击复制的文本框 -->\n  <textarea id=\"copy\" readonly onclick=\"copyLink()\" title=\"点击复制链接\">${baseUrl}</textarea>\n\n  <p class=\"tip\">💡 提示：书源失效加交流群961955482反馈</p>\n</div>\n\n<script>\n  // 复制函数\n  function copyLink() {\n    const textarea = document.getElementById('copy');\n    textarea.select();\n    textarea.setSelectionRange(0, 99999); // 兼容移动端\n    try {\n      document.execCommand('copy');\n      alert(\"✅ 链接已复制，请粘贴导入！\");\n    } catch (err) {\n      alert(\"❌ 复制失败，请手动长按选择并复制。\");\n    }\n  }\n</script>\n\n</body>\n</html>\n`;\nhtml;\n</js>",
    "ruleLink": "u",
    "ruleTitle": "n",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "书源",
    "sourceIcon": "http://q1.qlogo.cn/g?b=qq&nk=3079609264&s=100",
    "sourceName": "星辰书源",
    "sourceUrl": "https://v5.api.link3.cc:5678/api/no_auth/user,{\n  \"body\": \"username=link3_1762261264982\",\n  \"method\": \"POST\"\n}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": -10100171,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "@js:\nlet url=getUrl();\nJSON.stringify({\n  'User-Agent': java.getWebViewUA(),\n  'sec-ch-ua-platform': \"\\\"Android\\\"\",\n  'x-requested-with': \"cn.mujiankeji.mbrowser\",\n  'Accept-language': \"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7\",\n \"Authorization\":\"Bearer \"+token\n})",
    "jsLib": "var r = {\n\t\"sourl\": \"ged520\",\n\t\"jk\":\"1\",\n\t\"type\": \"订阅源\",\n\t\"seturl\":\"http://gednvys.yeoi.me\",\n\t\"key\":\"\",\n\t\"name\":\"辞晨\",\n\t\"page\":\"1\"\n};\t\n\nvar api = [\n\t\"ged520\"\n]\n\nlet img='http://srcbs.cn/cyapi.php';\nlet imd='http://ged520.yeoi.me/static/img/txs.png';\nlet imo='https://api.mtyqx.cn/tapi/random.php';\nlet imh='https://t.alcy.cc/ycy';\nlet imp='https://t.alcy.cc/ai';\nlet imk='https://t.alcy.cc/ysz';\nlet iml='https://t.alcy.cc/moemp';\nlet imj=\"https://t.alcy.cc/mp\";\nfunction showPopup(b) {\n    const { java, source } = this;\n    let sleep = Packages.java.lang.Thread.sleep;\n    for (let t = 0; t < 4; t++) {\n        let tim = Math.floor(Math.random() * 401);\n        let totalDelay = 1200 - tim;\n        //java.log(`第${t + 1}次弹窗，随机延迟时间：${tim}ms，总延迟时间：${totalDelay}ms`);\n        sleep(totalDelay);\n        java.toast(b);\n    }\n}\n\nfunction start(){\n\tconst{java,source}=this;\nvar timestamp = new Date().getTime();\nvar uptime = this.cache.get(\"uptime\");\nif (!uptime) {\n    this.update(\"发现\");\n    this.cache.put(\"uptime\", (timestamp + 21600000).toString());\n} else if (timestamp >= Number(uptime)) {\n    this.update(\"发现\");\n    this.cache.delete(\"uptime\");\n    this.cache.put(\"uptime\", (timestamp + 21600000).toString());\n};\n}\n\nfunction update(u) {\nconst{java,source}=this;\n   let sourcetime = String(source.lastUpdateTime);\n   //java.log(sourcetime);\n    const upul = \"https://github.dpik.top/https://raw.githubusercontent.com/GEd520/ps/refs/heads/main/%E8%AE%A2%E9%98%85%E6%BA%90/%E8%AE%A2%E9%98%85%E6%BA%90.json\";\n    try{\n    let cc = java.get(upul,{}).body();\n    let uptime = String(JSON.parse(cc)[0].lastUpdateTime);\n    //java.log(uptime);\n    if (Number(uptime) > Number(sourcetime)) {\n        java.toast(\"检测到更新，正在跳转……\");\n    Packages.java.lang.Thread.sleep(2000);\n        java.startBrowser('data:text/html;base64,' + nk, '更新');\n    } else if (Number(uptime) <= Number(sourcetime) && u != \"发现\") {\n        java.toast(`\\n本地书源版本较新，无需更新。\\n本地时间：${timeov(Number(sourcetime))}\\n更新时间：${timeov(Number(uptime))}`);\n    }\n    }catch (e){\n    java.log(e+ \"\\n访问失败\")\n    \t}\n}\n\nnk='PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9InpoLUNOIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD1sZWdhZG86Ly9pbXBvcnQvcnNzU291cmNlP3NyYz1odHRwczovL2dpdGh1Yi5kcGlrLnRvcC9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vR0VkNTIwL3BzL3JlZnMvaGVhZHMvbWFpbi8lRTglQUUlQTIlRTklOTglODUlRTYlQkElOTAvJUU4JUFFJUEyJUU5JTk4JTg1JUU2JUJBJTkwLmpzb24iPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPHRpdGxlPuiHquWKqOi3s+i9rOS4rS4uLjwvdGl0bGU+CiAgICA8c3R5bGU+CiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBUYWhvbWEsIEdlbmV2YSwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmOGZmOwogICAgICAgICAgICBjb2xvcjogIzMzMzsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgfQogICAgICAgIC5ub3RpY2UtYm94IHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgICAgICAgICAgd2lkdGg6IDgwJTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA2MDBweDsKICAgICAgICB9CiAgICAgICAgLm5vdGljZS1ib3ggaDEgewogICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgICAgIGNvbG9yOiAjNENBRjUwOwogICAgICAgIH0KICAgICAgICAubm90aWNlLWJveCBwIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgICAgICBjb2xvcjogIzU1NTsKICAgICAgICB9CiAgICAgICAgLm5vdGljZS1ib3ggYSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgcGFkZGluZzogMTJweCAyNHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNENBRjUwOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAubm90aWNlLWJveCBhOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQ1YTA0OTsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogICAgPGRpdiBjbGFzcz0ibm90aWNlLWJveCI+CiAgICAgICAgPGgxPuato+WcqOS4uuaCqOi3s+i9rC4uLjwvaDE+CiAgICAgICAgPHA+6Iul6Lez6L2s5pyq6Ieq5Yqo5omn6KGM77yM6K+35omL5Yqo54K55Ye75Lul5LiL5oyJ6ZKu44CCPC9wPgogICAgICAgIDxhIGhyZWY9ImxlZ2FkbzovL2ltcG9ydC9yc3NTb3VyY2U/c3JjPWh0dHBzOi8vZ2l0aHViLmRwaWsudG9wL2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9HRWQ1MjAvcHMvcmVmcy9oZWFkcy9tYWluLyVFOCVBRSVBMiVFOSU5OCU4NSVFNiVCQSU5MC8lRTglQUUlQTIlRTklOTglODUlRTYlQkElOTAuanNvbiI+54K55Ye75a+85YWlPC9hPgogICAgPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=';\n\nfunction timeov(times) {\n    const date = new Date(times);\n    const year = date.getFullYear();\n    const month = String(date.getMonth() + 1).padStart(2, '0');\n    const day = String(date.getDate()).padStart(2, '0');\n    const hours = String(date.getHours()).padStart(2, '0');\n    const minutes = String(date.getMinutes()).padStart(2, '0');\n    const seconds = String(date.getSeconds()).padStart(2, '0');\n    \n    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nvar token=\"eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MTIwNDQxMzEwNTg4Mjg2NTY2NCwidHlwZSI6ImN1c3RvbWVyIiwidGltZXN0YW1wIjoxNzY3MzI1MTIzNzY5LCJleHAiOjE3Njc5Mjk5MjN9.yiE8EGAtI44EBqE0E7d2eZPJ3bMsGfjuyf-0z_a8UoQ\";\n\nfunction setcsh(){\n\tconst{java,source}=this;\n\tif (!String(source.getVariable())||!String(source.getVariable()).match(/sourl/)) {\n    source.setVariable(JSON.stringify(r, null, \"\\t\"));\n    java.toast('\\n已初始化，使用默认站源');\n}\n\t}\n\nfunction seturlm(){\n\tconst{java,source}=this;  \n  let setcsh=this.setcsh(); \n\t var lists = JSON.parse(source.getVariable());  \n  var url=lists.seturl;  \n  return url;\n\t}\n\nfunction setzt(){  \n    const{java,source,cookie}=this;  \n    let setcsh=this.setcsh();  \n    var lists = JSON.parse(source.getVariable());  \n    var key=lists.key;  \n    if(key==\"\"||!key){  \n        let response = java.startBrowserAwait(\"http://ged520.yeoi.me/miyao.html\",'密钥');  \n        let tokens = cookie.getKey(\"http://ged520.yeoi.me/miyao.html\", \"token\");  \n       Packages.java.lang.Thread.sleep(500);\n    source.putLoginInfo(JSON.stringify({\"密钥：\":tokens}));  \n    }  \n    return \"\";  \n}\nvar _0xodq='jsjiami.com.v7';(function(_0x3bc230,_0x575d3b,_0x25cc8a,_0x559992,_0x299177,_0x27cd65,_0x36905b){return _0x3bc230=_0x3bc230>>0x5,_0x27cd65='hs',_0x36905b='hs',function(_0x3d5485,_0x3f282a,_0x968c07,_0x17c191,_0x2608a1){const _0x4111c9=_0x4abd;_0x17c191='tfi',_0x27cd65=_0x17c191+_0x27cd65,_0x2608a1='up',_0x36905b+=_0x2608a1,_0x27cd65=_0x968c07(_0x27cd65),_0x36905b=_0x968c07(_0x36905b),_0x968c07=0x0;const _0x4dcbd8=_0x3d5485();while(!![]&&--_0x559992+_0x3f282a){try{_0x17c191=parseInt(_0x4111c9(0xdb,'*)bp'))/0x1*(-parseInt(_0x4111c9(0xd5,'4(U]'))/0x2)+parseInt(_0x4111c9(0xe7,'H6Ci'))/0x3*(parseInt(_0x4111c9(0xdf,'fohK'))/0x4)+-parseInt(_0x4111c9(0xe6,'*)bp'))/0x5+-parseInt(_0x4111c9(0xde,'EpEU'))/0x6+-parseInt(_0x4111c9(0xd3,'@QE9'))/0x7*(parseInt(_0x4111c9(0xd6,'q7N$'))/0x8)+parseInt(_0x4111c9(0xe3,'v4o^'))/0x9*(parseInt(_0x4111c9(0xda,'*nc#'))/0xa)+parseInt(_0x4111c9(0xe4,'Fzqh'))/0xb*(parseInt(_0x4111c9(0xd4,'IPlm'))/0xc);}catch(_0x32ca6c){_0x17c191=_0x968c07;}finally{_0x2608a1=_0x4dcbd8[_0x27cd65]();if(_0x3bc230<=_0x559992)_0x968c07?_0x299177?_0x17c191=_0x2608a1:_0x299177=_0x2608a1:_0x968c07=_0x2608a1;else{if(_0x968c07==_0x299177['replace'](/[fVrGJpPUgKxTIdLnyHDXSR=]/g,'')){if(_0x17c191===_0x3f282a){_0x4dcbd8['un'+_0x27cd65](_0x2608a1);break;}_0x4dcbd8[_0x36905b](_0x2608a1);}}}}}(_0x25cc8a,_0x575d3b,function(_0x13a397,_0x1dd4b1,_0x4d4a63,_0x452bfa,_0x3d4bb2,_0x42e448,_0x5c86c3){return _0x1dd4b1='\\x73\\x70\\x6c\\x69\\x74',_0x13a397=arguments[0x0],_0x13a397=_0x13a397[_0x1dd4b1](''),_0x4d4a63='\\x72\\x65\\x76\\x65\\x72\\x73\\x65',_0x13a397=_0x13a397[_0x4d4a63]('\\x76'),_0x452bfa='\\x6a\\x6f\\x69\\x6e',(0x1b9355,_0x13a397[_0x452bfa](''));});}(0x1920,0x4e4d9,_0x3d1c,0xcb),_0x3d1c)&&(_0xodq=`\\xd76`);function getKey(){const _0x36b2fa=_0x4abd,_0x363020={'fLtVc':function(_0x277899,_0x490dc8){return _0x277899+_0x490dc8;}},{java:_0x114849,source:_0x4d0b9a}=this;let _0x3b4c4b=new Date(),_0x5cdf0c=_0x3b4c4b[_0x36b2fa(0xd9,'fMA1')](),_0x52abe0=String(_0x363020[_0x36b2fa(0xd1,'4(U]')](_0x3b4c4b['getMonth'](),0x1))[_0x36b2fa(0xe5,'O#6E')](0x2,'0'),_0x4aee96=''+_0x5cdf0c+_0x52abe0+'01';return _0x4aee96;}function _0x4abd(_0x5f1e9b,_0x5a5f51){const _0x3d1ca4=_0x3d1c();return _0x4abd=function(_0x4abd51,_0x52e55d){_0x4abd51=_0x4abd51-0xd1;let _0xe10090=_0x3d1ca4[_0x4abd51];if(_0x4abd['hgWCOJ']===undefined){var _0x4027e8=function(_0x40067e){const _0x4e92d9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5c2bcf='',_0x1fa18d='';for(let _0x19dd49=0x0,_0x474fca,_0x1ee0d4,_0x1c8d80=0x0;_0x1ee0d4=_0x40067e['charAt'](_0x1c8d80++);~_0x1ee0d4&&(_0x474fca=_0x19dd49%0x4?_0x474fca*0x40+_0x1ee0d4:_0x1ee0d4,_0x19dd49++%0x4)?_0x5c2bcf+=String['fromCharCode'](0xff&_0x474fca>>(-0x2*_0x19dd49&0x6)):0x0){_0x1ee0d4=_0x4e92d9['indexOf'](_0x1ee0d4);}for(let _0xb11e9a=0x0,_0x543475=_0x5c2bcf['length'];_0xb11e9a<_0x543475;_0xb11e9a++){_0x1fa18d+='%'+('00'+_0x5c2bcf['charCodeAt'](_0xb11e9a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1fa18d);};const _0x3bf56c=function(_0x240c55,_0x30a262){let _0x273c2a=[],_0x205bb8=0x0,_0x1bc17b,_0x5c2207='';_0x240c55=_0x4027e8(_0x240c55);let _0x501a1d;for(_0x501a1d=0x0;_0x501a1d<0x100;_0x501a1d++){_0x273c2a[_0x501a1d]=_0x501a1d;}for(_0x501a1d=0x0;_0x501a1d<0x100;_0x501a1d++){_0x205bb8=(_0x205bb8+_0x273c2a[_0x501a1d]+_0x30a262['charCodeAt'](_0x501a1d%_0x30a262['length']))%0x100,_0x1bc17b=_0x273c2a[_0x501a1d],_0x273c2a[_0x501a1d]=_0x273c2a[_0x205bb8],_0x273c2a[_0x205bb8]=_0x1bc17b;}_0x501a1d=0x0,_0x205bb8=0x0;for(let _0x4f4828=0x0;_0x4f4828<_0x240c55['length'];_0x4f4828++){_0x501a1d=(_0x501a1d+0x1)%0x100,_0x205bb8=(_0x205bb8+_0x273c2a[_0x501a1d])%0x100,_0x1bc17b=_0x273c2a[_0x501a1d],_0x273c2a[_0x501a1d]=_0x273c2a[_0x205bb8],_0x273c2a[_0x205bb8]=_0x1bc17b,_0x5c2207+=String['fromCharCode'](_0x240c55['charCodeAt'](_0x4f4828)^_0x273c2a[(_0x273c2a[_0x501a1d]+_0x273c2a[_0x205bb8])%0x100]);}return _0x5c2207;};_0x4abd['llutSA']=_0x3bf56c,_0x5f1e9b=arguments,_0x4abd['hgWCOJ']=!![];}const _0x1e4fb6=_0x3d1ca4[0x0],_0x542f4d=_0x4abd51+_0x1e4fb6,_0x3e08a7=_0x5f1e9b[_0x542f4d];return!_0x3e08a7?(_0x4abd['xrRVhr']===undefined&&(_0x4abd['xrRVhr']=!![]),_0xe10090=_0x4abd['llutSA'](_0xe10090,_0x52e55d),_0x5f1e9b[_0x542f4d]=_0xe10090):_0xe10090=_0x3e08a7,_0xe10090;},_0x4abd(_0x5f1e9b,_0x5a5f51);}function _0x3d1c(){const _0x3df621=(function(){return[_0xodq,'fjgsUXjKGiJHamxiK.yrcGToGmV.vIpP7SDRdInL==','rComBZdcPSoYW4iAvGRdH30','W595tmoNW7/cNb8u','FSkiWPJcJCkZW6JdOuf+cG','W53dHWldLrfaWPGXW5m','q8ocd1BdSmkNW6iH','W6KFWP0VdWVcTblcLmooDmon','nmouxmoRsCkxqeiWWPtdHW'].concat((function(){return['WOBcK1lcRtZdR8krsbVdJSkP','EqepWPVdVSopySo3W4m','WQdcKrVcP8ojWQ/dP8o4m8oMWQldVG','W7ldRCovlCkDWQJcSmkPAa','W64AWP8HbGtcIbBcM8oKy8o9','WOpdOSkcW7BdKdGKCKRdQ8o0rW','wSkNW7DNW5JcUmkfW65hW7K','FSklWPhcHmoMWRFdHv9sj1iB','WOWXWPxdNKOsjmolWP8'].concat((function(){return['WQBcNXVdSCkEW4NdS8o0ga','WO9MD8oWn8kkqJvRW5VdTmkYcG','WOXOWRDTWQKUWORdQG','EqyaW6xcU8kAkmoeW4hdPwerW48','WR83W4FdJZ0vra','lCo0W5xdQ8k9','W57dGW7cR3qIW488W6xcJSooW6D/'];}()));}()));}());_0x3d1c=function(){return _0x3df621;};return _0x3d1c();};var version_ = 'jsjiami.com.v7';\n\tvar _0xody='jsjiami.com.v7';function _0x1a13(_0x5ca468,_0x56efdf){const _0x1a6566=_0x1a65();return _0x1a13=function(_0x1a13b7,_0x290c7e){_0x1a13b7=_0x1a13b7-0x1ba;let _0x46df82=_0x1a6566[_0x1a13b7];if(_0x1a13['xSWKUD']===undefined){var _0x4a80b4=function(_0x535a86){const _0x2151e5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3c659b='',_0x3b3aed='';for(let _0xbd63e8=0x0,_0x2e0fcf,_0x483625,_0x18327c=0x0;_0x483625=_0x535a86['charAt'](_0x18327c++);~_0x483625&&(_0x2e0fcf=_0xbd63e8%0x4?_0x2e0fcf*0x40+_0x483625:_0x483625,_0xbd63e8++%0x4)?_0x3c659b+=String['fromCharCode'](0xff&_0x2e0fcf>>(-0x2*_0xbd63e8&0x6)):0x0){_0x483625=_0x2151e5['indexOf'](_0x483625);}for(let _0x30e978=0x0,_0x1f59b1=_0x3c659b['length'];_0x30e978<_0x1f59b1;_0x30e978++){_0x3b3aed+='%'+('00'+_0x3c659b['charCodeAt'](_0x30e978)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3b3aed);};const _0x200c08=function(_0xdeb63f,_0x883e30){let _0xe38d98=[],_0x10d15a=0x0,_0x538e1c,_0x75f1e='';_0xdeb63f=_0x4a80b4(_0xdeb63f);let _0x11b0d2;for(_0x11b0d2=0x0;_0x11b0d2<0x100;_0x11b0d2++){_0xe38d98[_0x11b0d2]=_0x11b0d2;}for(_0x11b0d2=0x0;_0x11b0d2<0x100;_0x11b0d2++){_0x10d15a=(_0x10d15a+_0xe38d98[_0x11b0d2]+_0x883e30['charCodeAt'](_0x11b0d2%_0x883e30['length']))%0x100,_0x538e1c=_0xe38d98[_0x11b0d2],_0xe38d98[_0x11b0d2]=_0xe38d98[_0x10d15a],_0xe38d98[_0x10d15a]=_0x538e1c;}_0x11b0d2=0x0,_0x10d15a=0x0;for(let _0x2e5899=0x0;_0x2e5899<_0xdeb63f['length'];_0x2e5899++){_0x11b0d2=(_0x11b0d2+0x1)%0x100,_0x10d15a=(_0x10d15a+_0xe38d98[_0x11b0d2])%0x100,_0x538e1c=_0xe38d98[_0x11b0d2],_0xe38d98[_0x11b0d2]=_0xe38d98[_0x10d15a],_0xe38d98[_0x10d15a]=_0x538e1c,_0x75f1e+=String['fromCharCode'](_0xdeb63f['charCodeAt'](_0x2e5899)^_0xe38d98[(_0xe38d98[_0x11b0d2]+_0xe38d98[_0x10d15a])%0x100]);}return _0x75f1e;};_0x1a13['cVOWQx']=_0x200c08,_0x5ca468=arguments,_0x1a13['xSWKUD']=!![];}const _0x2c078e=_0x1a6566[0x0],_0x4cf18e=_0x1a13b7+_0x2c078e,_0x30a7b2=_0x5ca468[_0x4cf18e];return!_0x30a7b2?(_0x1a13['OnosDl']===undefined&&(_0x1a13['OnosDl']=!![]),_0x46df82=_0x1a13['cVOWQx'](_0x46df82,_0x290c7e),_0x5ca468[_0x4cf18e]=_0x46df82):_0x46df82=_0x30a7b2,_0x46df82;},_0x1a13(_0x5ca468,_0x56efdf);}if(function(_0x475555,_0x56d6ea,_0xc0438d,_0x6ba541,_0x165a4f,_0x1d068b,_0x21e050){return _0x475555=_0x475555>>0x7,_0x1d068b='hs',_0x21e050='hs',function(_0x1232b8,_0x591192,_0x26f37d,_0x3623ed,_0x459b45){const _0x31a92b=_0x1a13;_0x3623ed='tfi',_0x1d068b=_0x3623ed+_0x1d068b,_0x459b45='up',_0x21e050+=_0x459b45,_0x1d068b=_0x26f37d(_0x1d068b),_0x21e050=_0x26f37d(_0x21e050),_0x26f37d=0x0;const _0x59d13e=_0x1232b8();while(!![]&&--_0x6ba541+_0x591192){try{_0x3623ed=-parseInt(_0x31a92b(0x1c1,'jzqT'))/0x1*(parseInt(_0x31a92b(0x1be,'F&Jm'))/0x2)+-parseInt(_0x31a92b(0x1bf,'TFA8'))/0x3+parseInt(_0x31a92b(0x1c8,'F&Jm'))/0x4+-parseInt(_0x31a92b(0x1bb,'zE$Y'))/0x5+-parseInt(_0x31a92b(0x1c6,'TFA8'))/0x6+-parseInt(_0x31a92b(0x1c5,'@zoe'))/0x7+-parseInt(_0x31a92b(0x1ba,'fA%$'))/0x8*(-parseInt(_0x31a92b(0x1c9,'VQgZ'))/0x9);}catch(_0x240a26){_0x3623ed=_0x26f37d;}finally{_0x459b45=_0x59d13e[_0x1d068b]();if(_0x475555<=_0x6ba541)_0x26f37d?_0x165a4f?_0x3623ed=_0x459b45:_0x165a4f=_0x459b45:_0x26f37d=_0x459b45;else{if(_0x26f37d==_0x165a4f['replace'](/[qLIQkurNHwEpBxTeUJC=]/g,'')){if(_0x3623ed===_0x591192){_0x59d13e['un'+_0x1d068b](_0x459b45);break;}_0x59d13e[_0x21e050](_0x459b45);}}}}}(_0xc0438d,_0x56d6ea,function(_0x5e4032,_0x16d1a9,_0x2e2365,_0x4c27c5,_0x39d4dc,_0x921cc2,_0x59eab8){return _0x16d1a9='\\x73\\x70\\x6c\\x69\\x74',_0x5e4032=arguments[0x0],_0x5e4032=_0x5e4032[_0x16d1a9](''),_0x2e2365='\\x72\\x65\\x76\\x65\\x72\\x73\\x65',_0x5e4032=_0x5e4032[_0x2e2365]('\\x76'),_0x4c27c5='\\x6a\\x6f\\x69\\x6e',(0x1a2219,_0x5e4032[_0x4c27c5](''));});}(0x6200,0x2c035,_0x1a65,0xc6),_0x1a65){}function _0x1a65(){const _0x5e7822=(function(){return[_0xody,'IQrBjTJskjLuixapmCNiuw.qHceQoUEmLC.evL7J==','WOxdRCoiW7TRWQe3zmkS','vLL1ymoCW7xdMYxdUSkQfW','sWZdP8ohW4TRf1FcHa3cM8orua','W53dHCoUW7TNWQyE','W6XFWRm4W4BcQmoMDwpcON8ceG'].concat((function(){return['W7NdNXbbW6T5iG','W67cN8kyWReYn2SbWOVdTCkBBCoO','DM9EWPpdMf7cI8oTcmogbCkszG','W4NcUSooW7L4W7VdSWCuW48Lta8','WRbiWPzFW5WqwvNdVKldRanp','W6LzWRS9W4VdICk2x3lcOLe','tq/dOCofW49Nv1dcSqJcUSoM'].concat((function(){return['WRTEWQtcQdRcImkFBIXUWOxcKa','W7SyadxdJ3FdHJq','ngVdLfJcPGW+vvRcTXq','oSoUzmoWh8o4W4i0WOBcNLNdGCoG'];}()));}()));}());_0x1a65=function(){return _0x5e7822;};return _0x1a65();};function key(){const _0x19bf88=_0x1a13,{java:_0x30e978,source:_0x1f59b1}=this;let _0xdeb63f=_0x30e978[_0x19bf88(0x1c4,'SKl!')]();return _0xdeb63f;}var version_ = 'jsjiami.com.v7';\n\nua = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.2957.129';\n\nfunction getInfo(name, source) {\n\treturn source.getLoginInfoMap() && source.getLoginInfoMap().get(name);\n} \t\t\t\nfb='bGV0IHVybCA9ICdodHRwczovL3d3dy5jb29sYXBrLmNvbS9saW5rP3VybD1sZWdhZG86Ly9pbXBvcnQvcnNzU291cmNlP3NyYz1odHRwczovL2dpdGh1Yi5kcGlrLnRvcC9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vR0VkNTIwL3BzL3JlZnMvaGVhZHMvbWFpbi8lRTglQUUlQTIlRTklOTglODUlRTYlQkElOTAvJUU4JUFFJUEyJUU5JTk4JTg1JUU2JUJBJTkwLmpzb24nOwpqYXZhLnN0YXJ0QnJvd3Nlcih1cmwsICforqLpmIXmupDmm7TmlrAnKTsK'\n\nvar _0xodq='jsjiami.com.v7';function _0x3883(_0x50cf25,_0xd27d84){var _0x37c6a6=_0x37c6();return _0x3883=function(_0x3883c,_0x1b06d1){_0x3883c=_0x3883c-0x188;var _0x12417f=_0x37c6a6[_0x3883c];if(_0x3883['ONNUDD']===undefined){var _0x4a788a=function(_0x566750){var _0x5116ad='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x4abc61='',_0x4fb4af='';for(var _0x11971e=0x0,_0x490202,_0x3fcb81,_0x482a0a=0x0;_0x3fcb81=_0x566750['charAt'](_0x482a0a++);~_0x3fcb81&&(_0x490202=_0x11971e%0x4?_0x490202*0x40+_0x3fcb81:_0x3fcb81,_0x11971e++%0x4)?_0x4abc61+=String['fromCharCode'](0xff&_0x490202>>(-0x2*_0x11971e&0x6)):0x0){_0x3fcb81=_0x5116ad['indexOf'](_0x3fcb81);}for(var _0x286798=0x0,_0x308077=_0x4abc61['length'];_0x286798<_0x308077;_0x286798++){_0x4fb4af+='%'+('00'+_0x4abc61['charCodeAt'](_0x286798)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4fb4af);};var _0x5252d2=function(_0x5229da,_0x13612c){var _0x42751c=[],_0x159383=0x0,_0x213e6e,_0x11b858='';_0x5229da=_0x4a788a(_0x5229da);var _0xbf3618;for(_0xbf3618=0x0;_0xbf3618<0x100;_0xbf3618++){_0x42751c[_0xbf3618]=_0xbf3618;}for(_0xbf3618=0x0;_0xbf3618<0x100;_0xbf3618++){_0x159383=(_0x159383+_0x42751c[_0xbf3618]+_0x13612c['charCodeAt'](_0xbf3618%_0x13612c['length']))%0x100,_0x213e6e=_0x42751c[_0xbf3618],_0x42751c[_0xbf3618]=_0x42751c[_0x159383],_0x42751c[_0x159383]=_0x213e6e;}_0xbf3618=0x0,_0x159383=0x0;for(var _0xe686d9=0x0;_0xe686d9<_0x5229da['length'];_0xe686d9++){_0xbf3618=(_0xbf3618+0x1)%0x100,_0x159383=(_0x159383+_0x42751c[_0xbf3618])%0x100,_0x213e6e=_0x42751c[_0xbf3618],_0x42751c[_0xbf3618]=_0x42751c[_0x159383],_0x42751c[_0x159383]=_0x213e6e,_0x11b858+=String['fromCharCode'](_0x5229da['charCodeAt'](_0xe686d9)^_0x42751c[(_0x42751c[_0xbf3618]+_0x42751c[_0x159383])%0x100]);}return _0x11b858;};_0x3883['AUUcPx']=_0x5252d2,_0x50cf25=arguments,_0x3883['ONNUDD']=!![];}var _0x185ada=_0x37c6a6[0x0],_0x54ede9=_0x3883c+_0x185ada,_0x4d0839=_0x50cf25[_0x54ede9];return!_0x4d0839?(_0x3883['IuoUut']===undefined&&(_0x3883['IuoUut']=!![]),_0x12417f=_0x3883['AUUcPx'](_0x12417f,_0x1b06d1),_0x50cf25[_0x54ede9]=_0x12417f):_0x12417f=_0x4d0839,_0x12417f;},_0x3883(_0x50cf25,_0xd27d84);}(function(_0x3c89f3,_0x330852,_0x2b7bc9,_0x2fbf1c,_0x5dbfbf,_0x3968fa,_0x1f37b1){return _0x3c89f3=_0x3c89f3>>0x7,_0x3968fa='hs',_0x1f37b1='hs',function(_0x3bb880,_0x50c89a,_0xc838bc,_0x199f7c,_0x28423b){var _0x2933a2=_0x3883;_0x199f7c='tfi',_0x3968fa=_0x199f7c+_0x3968fa,_0x28423b='up',_0x1f37b1+=_0x28423b,_0x3968fa=_0xc838bc(_0x3968fa),_0x1f37b1=_0xc838bc(_0x1f37b1),_0xc838bc=0x0;var _0x3721ae=_0x3bb880();while(!![]&&--_0x2fbf1c+_0x50c89a){try{_0x199f7c=parseInt(_0x2933a2(0x195,'^%Ah'))/0x1*(-parseInt(_0x2933a2(0x19a,'3wEK'))/0x2)+parseInt(_0x2933a2(0x193,'ej02'))/0x3*(-parseInt(_0x2933a2(0x192,'!Jog'))/0x4)+-parseInt(_0x2933a2(0x190,'RYlB'))/0x5+parseInt(_0x2933a2(0x18b,'QkCN'))/0x6+-parseInt(_0x2933a2(0x188,'Y@^n'))/0x7*(-parseInt(_0x2933a2(0x194,'QrrH'))/0x8)+-parseInt(_0x2933a2(0x196,'mj5s'))/0x9+parseInt(_0x2933a2(0x18c,'MaOX'))/0xa*(parseInt(_0x2933a2(0x199,'UyLN'))/0xb);}catch(_0x383697){_0x199f7c=_0xc838bc;}finally{_0x28423b=_0x3721ae[_0x3968fa]();if(_0x3c89f3<=_0x2fbf1c)_0xc838bc?_0x5dbfbf?_0x199f7c=_0x28423b:_0x5dbfbf=_0x28423b:_0xc838bc=_0x28423b;else{if(_0xc838bc==_0x5dbfbf['replace'](/[XEedLyGHUhWQpFSBPY=]/g,'')){if(_0x199f7c===_0x50c89a){_0x3721ae['un'+_0x3968fa](_0x28423b);break;}_0x3721ae[_0x1f37b1](_0x28423b);}}}}}(_0x2b7bc9,_0x330852,function(_0x4f0a39,_0x5589d7,_0x588bc0,_0x4f56fa,_0x3a76f2,_0x30b782,_0x45df5e){return _0x5589d7='\\x73\\x70\\x6c\\x69\\x74',_0x4f0a39=arguments[0x0],_0x4f0a39=_0x4f0a39[_0x5589d7](''),_0x588bc0='\\x72\\x65\\x76\\x65\\x72\\x73\\x65',_0x4f0a39=_0x4f0a39[_0x588bc0]('\\x76'),_0x4f56fa='\\x6a\\x6f\\x69\\x6e',(0x1a03b9,_0x4f0a39[_0x4f56fa](''));});}(0x6680,0x64fe6,_0x37c6,0xcf),_0x37c6)&&(_0xodq=0x238f);function getSecretKey(){var _0x13afb5=_0x3883,_0x159383={'wAckK':_0x13afb5(0x189,'^%Ah')};return _0x159383[_0x13afb5(0x18a,'C&zk')];}function _0x37c6(){var _0x2c0006=(function(){return[_0xodq,'EEjSpsUjhEiGLFaYymHSXiBS.WFcoQmP.vhdG7Be==','WOv4BJmoWQnQoCoZCSkfWQXP','W6/cGmobWOaPWObfW4DUfa','WPbdWQTTC1tcHSouAmka','WQBcKCojWQG8smotxKhcUa','WROLmW7dR8kjtCk6hdhcPrC','tq7dSJ43WPNdLgz2WQ5+aW','t8oAWOKNFSk8haOsW4S'].concat((function(){return['v8kznaRdOHlcPSoKtCosB8okW44','nSk0W7xcSr50WROA','v8oPt1JcMe7dUa','WOuehMz0W7SZ','y3aBiM5PaN3dNKy','W6xcHSkCW7hcQ8ktW71wWR1YW5DL','m8kjyaVcRNHTWQ3cPJu','WQu9krtdT+I8PUAzOSo9xeJdVMW','W5f6W7tcHmoH'].concat((function(){return['WRu0WQmlWOdcJ8oBW7O3pmksWPyI','y3muiGK3E2VdHMBcG1pcJG','W77dOCo7DCohW5WbWPvwWRKLsW','ibLVlvZdTb/dOuma','WRSJmGFcMSoormkmob8','WRnZfdxcIbJcNfNdNmk9eCoHzG'];}()));}()));}());_0x37c6=function(){return _0x2c0006;};return _0x37c6();};var version_ = 'jsjiami.com.v7';\nfunction getUrl(_) {\n    var _0x1234 = this;\n    var _0x5678 = _0x1234.java;\n    var _0x9abc = _0x1234.source;\n    var _0xdef0 = _0x9abc['variableComment'];\n    var _0x4567 = _0x5678['aesBase64DecodeToString'](_0xdef0, getSecretKey(), 'AES/ECB/PKCS7Padding', '');\n    var _0x89ab = String(_0x4567);\n    return eval(_0x89ab);\n}\n\nfunction encodeToTemplate(base64String) {\n    return `tg='${base64String}'`;\n}\n\nvar _0xod5='jsjiami.com.v7';(function(_0x27fc53,_0x498560,_0x33096b,_0x353b39,_0x4f1ef9,_0x39c00e,_0x28fa2c){return _0x27fc53=_0x27fc53>>0x7,_0x39c00e='hs',_0x28fa2c='hs',function(_0x52f929,_0x47328c,_0x2022c6,_0x282a2a,_0x3c9bae){const _0x5d1479=_0x4a34;_0x282a2a='tfi',_0x39c00e=_0x282a2a+_0x39c00e,_0x3c9bae='up',_0x28fa2c+=_0x3c9bae,_0x39c00e=_0x2022c6(_0x39c00e),_0x28fa2c=_0x2022c6(_0x28fa2c),_0x2022c6=0x0;const _0x309603=_0x52f929();while(!![]&&--_0x353b39+_0x47328c){try{_0x282a2a=-parseInt(_0x5d1479(0xfe,'FICj'))/0x1*(parseInt(_0x5d1479(0xf1,'fSuR'))/0x2)+-parseInt(_0x5d1479(0xf5,'iZ%]'))/0x3*(-parseInt(_0x5d1479(0x118,'UTpQ'))/0x4)+parseInt(_0x5d1479(0xf2,'7qlk'))/0x5+-parseInt(_0x5d1479(0xfc,'^TYH'))/0x6*(parseInt(_0x5d1479(0x108,'$Lwr'))/0x7)+parseInt(_0x5d1479(0x10b,'M]vG'))/0x8*(parseInt(_0x5d1479(0x105,'^TYH'))/0x9)+-parseInt(_0x5d1479(0xfb,'h#EM'))/0xa*(-parseInt(_0x5d1479(0xfd,']1Zs'))/0xb)+parseInt(_0x5d1479(0x116,'oWqk'))/0xc*(-parseInt(_0x5d1479(0x117,'ShJW'))/0xd);}catch(_0x4b5cb1){_0x282a2a=_0x2022c6;}finally{_0x3c9bae=_0x309603[_0x39c00e]();if(_0x27fc53<=_0x353b39)_0x2022c6?_0x4f1ef9?_0x282a2a=_0x3c9bae:_0x4f1ef9=_0x3c9bae:_0x2022c6=_0x3c9bae;else{if(_0x2022c6==_0x4f1ef9['replace'](/[JgYpfledRWDUBQOIyMHP=]/g,'')){if(_0x282a2a===_0x47328c){_0x309603['un'+_0x39c00e](_0x3c9bae);break;}_0x309603[_0x28fa2c](_0x3c9bae);}}}}}(_0x33096b,_0x498560,function(_0x76cc70,_0x5d955f,_0x187c2b,_0x361e,_0x377859,_0x3e8b9e,_0x1e12ee){return _0x5d955f='\\x73\\x70\\x6c\\x69\\x74',_0x76cc70=arguments[0x0],_0x76cc70=_0x76cc70[_0x5d955f](''),_0x187c2b='\\x72\\x65\\x76\\x65\\x72\\x73\\x65',_0x76cc70=_0x76cc70[_0x187c2b]('\\x76'),_0x361e='\\x6a\\x6f\\x69\\x6e',(0x1e31bc,_0x76cc70[_0x361e](''));});}(0x6080,0x7a767,_0x5a55,0xc3),_0x5a55)&&(_0xod5=`\\x46f`);function _0x4a34(_0x1b64ed,_0x2b28c3){const _0x5a55c6=_0x5a55();return _0x4a34=function(_0x4a34e2,_0x3532d8){_0x4a34e2=_0x4a34e2-0xec;let _0x14b50f=_0x5a55c6[_0x4a34e2];if(_0x4a34['MdgrKv']===undefined){var _0x311059=function(_0x367b67){const _0x3db668='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x506600='',_0x27e4b0='';for(let _0x50e695=0x0,_0x5de6dc,_0x4a245a,_0x2e2ba8=0x0;_0x4a245a=_0x367b67['charAt'](_0x2e2ba8++);~_0x4a245a&&(_0x5de6dc=_0x50e695%0x4?_0x5de6dc*0x40+_0x4a245a:_0x4a245a,_0x50e695++%0x4)?_0x506600+=String['fromCharCode'](0xff&_0x5de6dc>>(-0x2*_0x50e695&0x6)):0x0){_0x4a245a=_0x3db668['indexOf'](_0x4a245a);}for(let _0x49ac1e=0x0,_0x1e094d=_0x506600['length'];_0x49ac1e<_0x1e094d;_0x49ac1e++){_0x27e4b0+='%'+('00'+_0x506600['charCodeAt'](_0x49ac1e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x27e4b0);};const _0xe282c6=function(_0x388cec,_0x13d150){let _0x4e5e1b=[],_0x24867d=0x0,_0x389326,_0x4246ca='';_0x388cec=_0x311059(_0x388cec);let _0x1de0ff;for(_0x1de0ff=0x0;_0x1de0ff<0x100;_0x1de0ff++){_0x4e5e1b[_0x1de0ff]=_0x1de0ff;}for(_0x1de0ff=0x0;_0x1de0ff<0x100;_0x1de0ff++){_0x24867d=(_0x24867d+_0x4e5e1b[_0x1de0ff]+_0x13d150['charCodeAt'](_0x1de0ff%_0x13d150['length']))%0x100,_0x389326=_0x4e5e1b[_0x1de0ff],_0x4e5e1b[_0x1de0ff]=_0x4e5e1b[_0x24867d],_0x4e5e1b[_0x24867d]=_0x389326;}_0x1de0ff=0x0,_0x24867d=0x0;for(let _0x2d2120=0x0;_0x2d2120<_0x388cec['length'];_0x2d2120++){_0x1de0ff=(_0x1de0ff+0x1)%0x100,_0x24867d=(_0x24867d+_0x4e5e1b[_0x1de0ff])%0x100,_0x389326=_0x4e5e1b[_0x1de0ff],_0x4e5e1b[_0x1de0ff]=_0x4e5e1b[_0x24867d],_0x4e5e1b[_0x24867d]=_0x389326,_0x4246ca+=String['fromCharCode'](_0x388cec['charCodeAt'](_0x2d2120)^_0x4e5e1b[(_0x4e5e1b[_0x1de0ff]+_0x4e5e1b[_0x24867d])%0x100]);}return _0x4246ca;};_0x4a34['kOQjdQ']=_0xe282c6,_0x1b64ed=arguments,_0x4a34['MdgrKv']=!![];}const _0x239ac5=_0x5a55c6[0x0],_0x4f1757=_0x4a34e2+_0x239ac5,_0x1835ee=_0x1b64ed[_0x4f1757];return!_0x1835ee?(_0x4a34['QrzyYD']===undefined&&(_0x4a34['QrzyYD']=!![]),_0x14b50f=_0x4a34['kOQjdQ'](_0x14b50f,_0x3532d8),_0x1b64ed[_0x4f1757]=_0x14b50f):_0x14b50f=_0x1835ee,_0x14b50f;},_0x4a34(_0x1b64ed,_0x2b28c3);}function TD(){const _0xca482c=_0x4a34,_0x13a06a={'vWiEN':function(_0x103774,_0x58762c){return _0x103774(_0x58762c);},'oyaPn':_0xca482c(0x11a,'[0KW'),'mkPoA':function(_0x4e426c,_0x32a8ed){return _0x4e426c!==_0x32a8ed;},'IPIXu':_0xca482c(0x11b,'F7vp'),'Gghjh':'密钥🔐已清'},{java:_0x40b4b2,source:_0x1c50be,cache:_0x5227c0}=this;try{let _0x484b9e=_0x40b4b2[_0xca482c(0x113,'$4FV')](_0xca482c(0xff,'Y6cq'),{'Content-Type':_0x13a06a['vWiEN'](String,_0xca482c(0xf0,'Idfq')),'Accept':_0x13a06a[_0xca482c(0xef,'FICj')](String,_0x13a06a['oyaPn'])})[_0xca482c(0xf4,'$Lwr')](),_0x309b37=JSON[_0xca482c(0x100,'M]vG')](_0x484b9e),_0x551cf1=String(_0x309b37[_0xca482c(0x111,'INh)')][_0xca482c(0x106,'qi1U')]),_0x12136=_0x13a06a['vWiEN'](String,_0x309b37[_0xca482c(0xf8,'M]vG')][_0xca482c(0x112,'iIu(')]);if(_0x13a06a[_0xca482c(0x104,'oWqk')](_0x551cf1,_0x13a06a[_0xca482c(0x10d,'n3hU')])){let _0x52b469=_0xca482c(0x10e,'3zeo')+_0x12136;this[_0xca482c(0x101,'lRhi')][_0xca482c(0xfa,'3Ebf')](_0xca482c(0x103,'6(qg'));let _0x516bc6={'密钥：':_0x13a06a[_0xca482c(0xee,'iIu(')]};_0x1c50be[_0xca482c(0xec,'PkIA')](JSON['stringify'](_0x516bc6)),_0x40b4b2['longToast'](_0x52b469);throw new Error(_0x52b469);return _0x52b469;}else return _0xca482c(0x10a,'*D3y');}catch(_0x3972eb){this[_0xca482c(0xf9,'iZ%]')][_0xca482c(0x109,'SVO6')](_0xca482c(0xf6,'b1*8'));let _0x1d6e13={'密钥：':_0x13a06a[_0xca482c(0x102,'8uqo')]};_0x1c50be[_0xca482c(0x11c,'7qlk')](JSON['stringify'](_0x1d6e13));let _0x53b206='💔访问出错💔';return _0x40b4b2[_0xca482c(0x114,'SYW5')](_0x53b206),_0x53b206;}}function _0x5a55(){const _0x3bb382=(function(){return[_0xod5,'WefjsUBOjWIiJyamyilYQ.DgcPHofmd.vlp7URWM==','sCoJsCkLW613kCkZW5ZdLCoHEG','WO9pW5TkWPhcRt85nmon','WOnBWRrMW6K','5Qck6AIz5AEQ6lsU77YaW4lKUPZMU4pLTj7OO4pLH7dPLy3MI6VOGBFKVllMLRhcJoISLoIbU+EYH+A6H+s9IUIcQ++9PSkL6lco6lg78y+yQG','W6dcKmoBW4pdTCoRu2ldQgC','W6ePhKVcPCo6W4xdKmkhWOdcRSonW6W','W7P8WRxdUa','W7FcIexdISk2W699WP0','W4HuW7u','W7ONwSoAbY/cL3pcRG','W6vRCxjqWQ4gfgldSSkZc1a','WOCwW7RcGSoPFCk/bmoqWO/cT0xcLq','W6ibWPPWWPVdIgTc','W4pdQGxcGLrNWO7cOr1d','WOBcP0DhCb8dFwZdRh3dJG','rmk/d2/dVshdJatcUmk5mCkLmG4igvhcJ390oqRdKIKrehxdIv3cPSoNEYO'].concat((function(){return['6lY25PQ66kYz6zIJ5RIrgW','W4ddOGC/keOZF13dS2NdIq','WP4cW7pdV3f1W4rd','uGmXWR9EmSobrmkGcSk8W6W','oIxdRgCUeSockCkp','W5pcGepdLmk7','sLjgWRiD','W5WoWPWuWOlcVdWzc8o3tf3dJdyOoW','W5VdGHm3hvFdTa','WOlcOebfDHHQAgxdRgNdI8oS','e8oEW5pdGmkkW6xcTmo9tCkdW6hcSW','W6ZdO8oLWPC','osddQYqTdCoxkSkVdq','WROLksey','W6SOhuNcRCo1W43dJCk6WONcRmoyW48','hmk2dmo9','AhdcV34Y','EL4Qs1P0'].concat((function(){return['W7CGW6tdQfNdJWGdW4q','W58htLlcNCoCW40zWR/dKN7cJmkD','nSkRWQ3dHSo7w8ktW45AvZer','dtuzW4fMpCocWQ4kW6VdUmot','sSkAWPhcHSkfW7ldGCoxE8kXW6RcJCkRWRu7WPRdICkWWPi+WOuXdCk5W7vMWQJcNCkaWQzYW4a1W6HJWQ5vq2HkWP5gW43dJMFdU8k/WQ7dPW','cmk2cSoVWR8','DMFdNaRcRW','emkRzCkwWR4','vCoxWQzuWQO','W5jeWPNdN8ky','W5r+eqRdK8kmWOG','WPHsst15lKm','W64DlsWxW7jd','WRNdJ8oyWRrFC8ot','W5/dMCkzWRL2WOm','hdFcMbO'];}()));}()));}());_0x5a55=function(){return _0x3bb382;};return _0x5a55();};var version_ = 'jsjiami.com.v7';",
    "lastUpdateTime": 1774466062092,
    "loadWithBaseUrl": true,
    "loginUi": "[ \n{ \"name\": \"密钥：\",\n\"type\": \"text\"\n},\n{\n\"name\": \"✨ 发布页✨ \",\n\"type\": \"button\",\n\"action\": \"M()\",\n\"style\": {\n\"layout_flexGrow\": 1,\n\"layout_flexBasisPercent\": 0.39\n}\n\n},\n{\n\"name\": \" ❗书源更新❗\",\n\"type\": \"button\",\n\"action\": \"H()\",\n\"style\": {\n\"layout_flexGrow\": 1,\n\"layout_flexBasisPercent\": 0.39\n}\n\n}\n,\n{\n\"name\": \"㊕仓库㊕\",\n\"type\": \"button\",\n\"action\": \"ck()\",\n\"style\": {\n\"layout_flexGrow\": 1,\n\"layout_flexBasisPercent\": 0.39\n}\n}\n,\n{\n\"name\": \" ✐密钥✐ \",\n\"type\": \"button\",\n\"action\": \"my()\",\n\"style\": {\n\"layout_flexGrow\": 1,\n\"layout_flexBasisPercent\": 0.39\n}\n}\n,\n{\n\"name\": \" 🔖点击试试🔖 \",\n\"type\": \"button\",\n\"action\": \"O()\",\n\"style\":\n{\n\"layout_flexGrow\": 1,\n\"layout_flexBasisPercent\": 0.39\n}\n}\n\n]",
    "loginUrl": "function login(){\n    let csh=this.setcsh();\n    return true;\n}\n\nO = () => {\n\tsource.removeLoginHeader();\n java.toast(\"这个按钮是用来看的\\n(((o(*ﾟ▽ﾟ*)o)))\")\n let cachedData = cache.get('mykey');\nif (cachedData) {\n    let p = JSON.parse(cachedData)\n    //java.log(JSON.stringify(p))\n}\n}\n\nH=()=>{\nupdate();\n   \t}\nM = () =>{\tjava.startBrowser('ged520.yeoi.me/','发布页')\n\t    }\nck =() =>{\njava.startBrowser('https://github.com/','发布页')\n}\nmy=()=>{\njava.startBrowser('http://ged520.yeoi.me/miyao.html','发布页')\n}",
    "preload": true,
    "ruleArticles": "@js:\nlet uri=getUrl();{{TD()}};{{setzt()}};\n{{eval(String(source.loginUrl))}};\nlet start=start();\nlet ml=getKey();\nlet setl=`http://${getUrl()}.yeoi.me/`;\nlet list = [\n{\n\t\"name\":\"首页\",\n\t\"url\":`${setl}`,\n\t\"img\":`${imd}`\n},\n{\n\t\"name\":\"主页\",\n\t\"url\":`${setl}index1.html`,\n\t\"img\":`${img}`\n},\n{\n\t\"name\":\"赞赏支持\",\n\t\"url\":`${setl}dsym.html`,\n\t\"img\":`${imo}`\n},\n{\n\t\"name\":\"书源发布页\",\n\t\"url\":`${setl}work/syfby.php`,\n\t\"ml\":`${ml}`,\n\t\"img\":`${imh}`\n},\n\n{\n\t\"name\":\"书源密钥\",\n\t\"url\":`${setl}miyao.html`,\n\t\"img\":`${imp}`\n\n}\n,\n{\n\t\"name\":\"导航链接\",\n\t\"url\":`${setl}ljhjm.html`,\n\t\"img\":`${iml}`\n\n}\n\n];\n\nlist",
    "ruleContent": "<js>\nvar po = `{{rssArticle.title}}`;\nlet key=getKey();\nif (po == '独立密钥') {\nhtml=`<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>一键复制功能</title>\n    <style>\n        body {\n            font-family: Arial, sans-serif;\n            margin: 20px;\n        }\n        #result {\n            margin-bottom: 10px;\n            padding: 10px;\n            border: 1px solid #ccc;\n            background-color: #f9f9f9;\n        }\n        button {\n            padding: 10px 20px;\n            font-size: 16px;\n            cursor: pointer;\n        }\n    </style>\n</head>\n<body>\n    <div id=\"result\">${key}</div>\n    \n    <script>\n        let result = \"${key}\";    document.getElementById(\"result\").innerText = result;\n        function copyResult() {\n            if (navigator.clipboard) {\n                navigator.clipboard.writeText(result).then(() => {\n                    alert(\"复制成功！\");\n                }).catch(err => {\n                    alert(\"复制失败！\");\n                });\n            } else {\n                alert(\"当前浏览器不支持复制功能！\");\n            }\n        }\n    </script>\n</body>\n</html>`\nhtml\n    } else {\n    result\n}\n</js>\n",
    "ruleImage": "img",
    "ruleLink": "url",
    "ruleTitle": "name",
    "searchUrl": "data:;base64,辞晨,{\"type\":\"\"}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "主页::http://{{getUrl()}}.yeoi.me/",
    "sourceComment": "//2026.3.16 by.◎辞晨◎\n//源作者：辞晨㊕✐\n//订阅源更新一定要打√\n//感觉各位支持(っ'-')╮=͟͟͞͞💌\n//d(ŐдŐ๑)\n//优化内置html",
    "sourceGroup": "书源",
    "sourceIcon": "http://ged520.yeoi.me/static/img/txs.png",
    "sourceName": " ˃̶͈ ꇴ ˂̶͈ ",
    "sourceUrl": "data:;base64,辞晨,{'type':''}",
    "type": 0,
    "variableComment": "9YXphE3n4n/sd/AhTbP5+wXIgeo4WnjEAwVktzASIguk889ChBb6dMjgoR8ZM5TdQAWmy4uVLRJqb7pNFfm8wydARzjXhfX2MCZ/hL+otsze8wfEmUYSEFuPXOusM9Bi+xLiG6Gv3R+E6U0gl1HzGu2DXU7cS7+HWrFgHzSUdo1YPrfo48qyiqxo5Pgjt9oDova2H7vUaKsi5uznfxVbd4S/baSmjLCn3dHYQTVpWGhDwXLCWh0i4hJpppcBTfYPova2H7vUaKsi5uznfxVbd50Mcs0D5NT1G56/P8a/8MNUIen7MMFpWuFI+ybG/PmAw6TwA8Gs+TSFawiqXnrKX6Y5W1SJyb9HDnp73+BAh1STHJ9HgodDaUsuNe01V1Lhp7FEwz1NcbA2G+masZndXxfdFul+ksSEt6ZaTxKBRtvl25fkeY3OHYG7BMxkvhd/5tOyywFLkGjN0rFbIEkofrltwpnw58WUpj39Uj87W7a3wal3sfoJI6JXtmVDw3f7pwKp5Zrg/61c7gx1qCxM4+y+tFLM1fJ+3E71KVBk1jt7kOBkMBUzI9zLuRSk7YIZ4nZhWeceBV62bpdEGXdt6e2JsYC0i6sT6BsQ7yS81T2nReMi9jZF9FEnQozECILG/63uOSUwXl+L8vkX9525iRgygtallWGYsuyuo7SV1mI/jj9sJ/UjZsnJAL3P/t6+c0FI53bh8jDPM9fla0J3OUMpPMLO/O+1V5/19TZbsLTDFqii04KRR56e5LuE7hOxIt7goSx6htldAkyYKjaIUdaCb0/cMUbbjlf9n6fi78NZ9/sCjgaAOcOv/Aldu27FKvIydO9gvrbi4luehcmg1U39vjxFsOTKMvkvCNszBiJuwn33pOj9tdc+41YNPH9sS/bth53WPfaZHv7BZGFatpcdtTZJ615U5Momc32dGAncZmIC4b5JpnrVQWqUO0oxKLzdRJ4L5RP/R6td/jz7P+tU6oICGHDIF03ntZXkWzzHjiQxbdE/By6Fg58SxsZLoD/4XgavB/guHd2dPrSdMsHGOraTqf59AzUsxHh86csdJWkzFhUezfMEWgkMPeQrKPALfQgk0LGd7vFWa7mQo66jM9gSKJdapv0InkU5OsYwqygFE8byAK+bfOOyFTcDK0kVECZDVhaRnduWHvtUttHnSE5F9rsnpcnXV67feP6XW3zYtARFtFPd+zB50600p2qnw/WEmAJlRgoY6DR6zHgs89gN8hwfQNrxGT9+oc/Z6OGO0xCBtXYF7JR57Tvo8QCSQBrLCUmkQymagbuK5fMDJnqLcmwBznJFd5uhbAAhVJSFhJWlW5XX0dlpRsSLPDpWJfxcUCIHX4nz/qz505zO0Q4T2WmOvSZxBy5OZXwYmoNPrLMSb9r9MoaeCEiwDrGCB8IvujFdNv3l4ZkcO4/uYddUUm1UHu06sq7QIYZLgWa5wWgq17lGdinh9+qHUwCnrECJT0w80dkqcuJqIRYE/lc28r+3Mk84AiBoXDAo9GAXlgDch9Ov43VyzODBcxt3cIf2armOPh/8+s8aOOWFuO3lzf6QO970Ifi+rD9lSENyn0Uye5YiPTJP4TMOo5FO3iviorhQRt7SXKO4CKkorizQVekHYRMkFH/WQSFNswNt5Z2NAoRoghyalVPjmgPQV69eyUDR2GBspc+nK0LtqALYCFNXMLk7fO40e95gxN/GnxgeOTUltyRtaOhAIc7PJjQYsnMPKe4ZDDXPfcpNEF3bpQafABPqiYqp9c4eo82xZ0/R1PKPg4WV7XGdKHMkWYtKa94UVrouKA5W5d5U4AvcTiLJBO08Vj9umvtoOvbzKl4j4ekCsFrXJUfe8klYwmmJa8v5zaVyNAZkGt8yTiujP06OyzsZB2vcuUYdb2NNtUZmCS5gCVSfQ5vyDp2oemdzv5H4UVhEdLl4dZJ3tnDQ3DznekyHf0KRk61CI3o9jlbPu+Xq8PG/5Yx/jYJ/U8mURFEMdxyvbKjvDXkjuZb14vEOtF3b41IyKnWae/0HoFZMCOEaLbgyUDlXGgMIrc8YTGrEa9Zfxhi6R4j17nqdfZ07BNJfkn8kmTDEAk6m+Mx6CuXSBSXLIm4s2Ll8JD4N3rIB5FFdYnubHhOTOylaSZZCo9jgSvPwwupds49jjx5zLUmtMRh9G6PjQEoXYuBBENqNy2bero4iEwnexcYfqEQkvfBIcE/5/NWT9tc0OGhA24ylU3oTldWErvp/dzR5Nr/zczrTYuEV1VjYeDvqV1yIQVfC0+m9lIRD7zJUiLx5IcDaYgPsXCrjB0IFG7clGJ6pYmL5ItBUmX5vHZSlFNSe/VjLThOIbp+WDylgNzsn2X/5zadZN5W8/I6G+vY01v2OQDyoiKq/ZLxBo/MBwJeirRQbQjT6EUGivcozoFgUaTaWghUjKGKxNZUSKGmsuet3zwyk2gBAbh0NfTI6Tvou9sx6aVeLFcrQ9NaIW00DAxlgNMy3VxkmgNf0AFNsE1NABZVPH8iwUy+EpFuFAd+2GemG/9VpT3YvqkFEiUlyJQWgbw340zK0sUrxSGmnRaF5Lzl8GzHuRew1vTh93yBQGKEUSy6hTRzO7HnB8l3q2qY6/tsvnJ3Z+D2vM3D500ovBSYGyBMTaA=="
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10100165,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "injectJs": "let cch=localStorage.getItem('importHistory');\nif (cch) window.run(`source.put('importHistory',\\`${cch}\\`)`);\nelse window.run(`source.get('importHistory')`).then(r=>{localStorage.setItem('importHistory',r);showHistory()});",
    "lastUpdateTime": 1775591855057,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleContent": "<!DOCTYPE html>\r\n<html lang=\"zh-CN\">\r\n\r\n    <head>\r\n        <meta charset=\"utf-8\">\r\n        <title>阅读导入</title>\r\n        <meta name=\"viewport\"\r\n            content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\r\n        <meta name=\"description\"\r\n            content=\"洛娅橙，开源阅读软件，书源、订阅源、字典、净化等json、txt文件导入，小说书籍地址导入,base64，链接净化,精华规则。\">\r\n        <style>\r\n        :root {\r\n            --back-color: #fffbf0;\r\n            --font-color: black;\r\n        }\r\n        \r\n        @media (prefers-color-scheme: dark) {\r\n            :root {\r\n                --back-color: #1a1a1a;\r\n                --font-color: white;\r\n            }\r\n        }\r\n        \r\n        html {\r\n            background-color: var(--back-color);\r\n            color: var(--font-color);\r\n        }\r\n        \r\n        .hidden {\r\n            display: none;\r\n        }\r\n        \r\n        body {\r\n            display: flex;\r\n            flex-direction: column;\r\n            align-items: center;\r\n            min-height: 80vh;\r\n        }\r\n        \r\n        textarea {\r\n            font-size: 12px;\r\n            color: var(--font-color);\r\n            width: 96%;\r\n            margin: 16px 2%;\r\n            padding: 8px;\r\n            background-color: rgba(80, 155, 84, 0.1);\r\n            border-radius: 10px;\r\n            border: 2px solid rgba(76, 175, 80, 0.3);\r\n        }\r\n        \r\n        textarea:focus {\r\n            border-color: rgb(76, 175, 80);\r\n            outline: none;\r\n            box-shadow: 0 0 8px rgba(255, 107, 107, 0.3);\r\n        }\r\n        \r\n        button {\r\n            user-select: none;\r\n            color: white;\r\n            border: none;\r\n            border-radius: 4px;\r\n            height: 40px;\r\n            width: 80px;\r\n            overflow: hidden;\r\n            transition: 0.3s;\r\n            font-size: 16px;\r\n        }\r\n        \r\n        .an-s {\r\n            transform: scale(0.8);\r\n        }\r\n        \r\n        button {\r\n            margin: 10px;\r\n        }\r\n        \r\n        #btn1 {\r\n            background-color: rgba(76, 175, 80, 0.9);\r\n        }\r\n        \r\n        #btn2 {\r\n            background-color: rgba(175, 76, 80, 0.9);\r\n        }\r\n        \r\n        #btn3 {\r\n            background-color: rgba(76, 80, 175, 0.9);\r\n        }\r\n        \r\n        #history {\r\n            width: 90%;\r\n            margin: 8px 2%;\r\n        }\r\n        \r\n        #history div {\r\n            font-size: 12px;\r\n            border-radius: 6px;\r\n            cursor: pointer;\r\n            padding: 4px 8px;\r\n            margin: 10px 0;\r\n            background-color: rgba(75, 175, 175, 0.3);\r\n            overflow-wrap: break-word;\r\n            word-break: break-word;\r\n        }\r\n        </style>\r\n    </head>\r\n\r\n    <body>\r\n        <h1 class=\"hidden\">在线导入-洛娅橙</h1>\r\n        <textarea id=\"copyt\" rows=\"9\" placeholder=\"在这里填写链接\r\n支持书源、订阅源、净化、字典等json或txt文件\r\n支持书籍网址（需要有对应的书源）\r\n支持data或base64加密链接\"></textarea>\r\n        <button id=\"btn1\" onclick=\"copy(1)\">导入</button>\r\n        <button id=\"btn2\" onclick=\"cleart()\">清空</button>\r\n        <button id=\"btn3\" onclick=\"copy(3)\">净化</button>\r\n        <div id=\"history\"></div>\r\n        <script>\r\n        function showHistory() {\r\n            const historyDiv = document.getElementById('history');\r\n            let history = JSON.parse(localStorage.getItem('importHistory') || '[]');\r\n            if (history.length === 0) {\r\n                historyDiv.innerHTML = '<span style=\"font-size:12px;color:gray;\">暂无导入历史</span>';\r\n                return;\r\n            }\r\n            historyDiv.innerHTML = history.map(item =>\r\n                `<div onclick=\"fillHistory('${encodeURIComponent(item)}')\">${item}</div>`\r\n            ).reverse().join('');\r\n        }\r\n        function fillHistory(val) {\r\n            document.getElementById('copyt').value = decodeURIComponent(val);\r\n        }\r\n        function copy(x) {\r\n            const btn = document.getElementById('btn' + x);\r\n            btn.classList.add('an-s');\r\n            const cpt = document.getElementById(\"copyt\");\r\n            let url = cpt.value;\r\n            if (/[删除去消].*(?:[删除去掉].*[中汉我]|汉.*字|中.*文|文.*字)/.test(url)) url = url.replace(/[abphm]站|[一-ꀀ]/g, '');\r\n            url = url.replace(/[\\s一-ꀀ，。？！；…“‘、’”]+$/, '').replace(/\\s+|(?:\\p{Emoji_Presentation}|\\p{Emoji}[\\uFE0F\\u200d]+)+|\\[(?:酷币|受虐滑稽|微笑|哈哈哈|呵呵|呲牙|可爱|可怜|皱眉|惊讶|微笑|坏笑|流泪|抱拳|色|强|doge笑哭|doge原谅ta|旺财|OK)\\]/giu, '').replace(/(\\/.+\\.(?:json|txt|zip))(?:[^\\/\\?\\-\\_\\.][\\S\\s]*)$/, '$1').replace(/^[\\S\\s]*?(?=https?:)/i, '').replace(/\\u0026/g, '%26');\r\n            if (url.startsWith('data:')) url = atob(url.match(/^[^,]+,([^\\s,]+)/)[1]);\r\n            else if (/^[\\da-z\\+\\/]{2,}=*$/i.test(url)) url = atob(url);\r\n            setTimeout(() => {\r\n                btn.classList.remove('an-s');\r\n            }, 500);\r\n            if (url == '') { alert('请输入内容'); return }\r\n            if (/^https?\\:/i.test(url) && x == 1) {\r\n                let history = JSON.parse(localStorage.getItem('importHistory') || '[]');\r\n                history = history.filter(item => item != url);\r\n                history.push(url);\r\n                if (history.length > 20) history = history.slice(-20);\r\n                localStorage.setItem('importHistory', JSON.stringify(history));\r\n                showHistory();\r\n                if (/\\/.+\\.(?:json|txt)/i.test(url)) {\r\n                    window.location.href = 'legado://import/Source?src=' + url;\r\n                }\r\n                else if (/\\/.+\\.(?:zip)/i.test(url)) {\r\n                    window.location.href = 'legado://import/bookSource?src=' + url;\r\n                }\r\n                else if(/(?:[\\/\\}]|html)$/.test(url)) {\r\n                    window.location.href = 'legado://import/addToBookshelf?src=' + url;\r\n                }\r\n                else {\r\n                    window.location.href = 'legado://import/Source?src=' + url;\r\n                }\r\n            }\r\n            else if (x == 3) { cpt.value = url; }\r\n            else alert('链接格式错误');\r\n        }\r\n        function cleart() {\r\n            const btn = document.getElementById('btn2');\r\n            btn.classList.add('an-s');\r\n            const cpt = document.getElementById(\"copyt\");\r\n            setTimeout(() => {\r\n                btn.classList.remove('an-s');\r\n            }, 300);\r\n            cpt.value = '';\r\n        }\r\n        \r\n        let clearTimer = null;\r\n        const btn2 = document.getElementById('btn2');\r\n        btn2.addEventListener('pointerdown', function () {\r\n            clearTimer = setTimeout(() => {\r\n                localStorage.removeItem('importHistory');\r\n                showHistory();\r\n                alert('已清空历史记录');\r\n            }, 800);\r\n        });\r\n        btn2.addEventListener('pointerup', function () {\r\n            clearTimeout(clearTimer);\r\n        });\r\n        btn2.addEventListener('pointercancel', function () {\r\n            clearTimeout(clearTimer);\r\n        });\r\n        \r\n        window.onload = showHistory;\r\n        </script>\r\n    </body>\r\n\r\n</html>",
    "showWebLog": true,
    "singleUrl": true,
    "sourceComment": "版本：1.1.8\n——洛娅橙",
    "sourceGroup": "工具",
    "sourceIcon": "https://gitee.com/lyc486/yuedu/raw/master/drtb.gif",
    "sourceName": "导入",
    "sourceUrl": "https://loyc.xyz/b/daoru",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10100163,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "jsLib": "let hosts = [\n  \"https://skybook.pages.dev\",\n  \"https://skybook.qzz.io\",\n  \"https://skybook.legado1.top\",\n  \"https://skybbk1001.github.io\",\n];\nconst TIMEOUT_MS = 5000;\n\nfunction probeHost(u, ctx) {\n  const { java } = ctx;\n  try {\n    let t = Date.now();\n    let resp = org.jsoup.Jsoup.connect(u + \"/content.json\")\n      .ignoreContentType(true)\n      .method(org.jsoup.Connection.Method.GET)\n      .timeout(TIMEOUT_MS)\n      .execute();\n\n    let body = resp.body();\n    if (!body) return null;\n\n    JSON.parse(body);\n    return { host: u, latency: Date.now() - t };\n  } catch (e) {\n    java.log(\"线路不可用: \" + u + \" | \" + e);\n    return null;\n  }\n}\n\nfunction checkLatency(urls, ctx) {\n  const { java } = ctx;\n  const results = [];\n  for (let i = 0; i < urls.length; i++) {\n    java.toast(\"检测可用线路：(\" + (i + 1) + \"/\" + urls.length + \")\");\n    let r = probeHost(urls[i], ctx);\n    if (r) results.push(r);\n  }\n  results.sort((a, b) => a.latency - b.latency);\n  java.longToast(\"检测完成：共(\" + results.length + \"/\" + urls.length + \")个可用线路\");\n  return results;\n}\n\nfunction bhost() {\n  const { source } = this;\n  const cache = source.getVariable();\n\n  try {\n    if (cache) {\n      let arr = JSON.parse(cache);\n      if (arr && arr.length && arr[0] && arr[0].host) {\n        if (probeHost(arr[0].host, this)) return arr[0].host;\n      }\n    }\n  } catch (e) {}\n\n  let arr = checkLatency(hosts, this);\n  let best = arr.length ? arr[0].host : hosts[0];\n  source.setVariable(JSON.stringify(arr.length ? arr : [{ host: best, latency: 99999 }], null, 2));\n  return best;\n}\n",
    "lastUpdateTime": 1774950947039,
    "loadWithBaseUrl": true,
    "loginUi": "[\n{\"name\":\"多线路优选\",\"type\":\"button\",\"action\":\"check()\"}\n]",
    "loginUrl": "function check() {\n\tresults = checkLatency(hosts, this)\n\tsource.setVariable(JSON.stringify(results, null, 4))\n}",
    "preload": false,
    "ruleArticles": "@js:\nlet item_list = [];\n\nif (baseUrl.includes(\"activities\")) {\n  let res = java.ajax(bhost() + \"/content.json\");\n  let posts = JSON.parse(res).posts || [];\n  let sixHours = 6 * 60 * 60 * 1000;\n\n  let activities = posts.map(function(post) {\n    let title = post.title || '无标题';\n    let permalink = post.path || '#';\n    let author = post.author || '明月';\n    let date = post.date;\n    let updated = post.updated;\n\n    if (!date) return null;\n    let publish = new Date(date);\n    if (isNaN(publish)) return null;\n\n    let effective = publish;\n    let type = 'publish';\n\n    if (updated) {\n      let upd = new Date(updated);\n      if (!isNaN(upd) && (upd - publish) > sixHours) {\n        type = 'update';\n        effective = upd;\n      }\n    }\n\n    return { type, date: effective, title, permalink, author };\n  }).filter(Boolean);\n\n  let sorted = activities\n    .filter(a => !isNaN(a.date))\n    .sort((a, b) => b.date - a.date)\n    .slice(0, 20);\n\n  sorted.forEach(function(a) {\n    let action = a.type === 'update' ? '更新了文章' : '发布了文章';\n    let d = a.date;\n    let dateStr = `${d.getFullYear()}年${d.getMonth() + 1}月${d.getDate()}日 ${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}`;\n    let title = `${a.author} ${action} ${a.title}`;\n    let url = bhost() + (a.permalink.startsWith('/') ? a.permalink : '/' + a.permalink) + \"#\" + d;\n    item_list.push({ title, url, date: dateStr });\n  });\n\n} else {\n  let list = java.getElements(\".post-item\");\n  list.forEach(function(item) {\n    let doc = org.jsoup.Jsoup.parse(item.html ? item.html() : item);\n    let title = doc.select(\".title\").text();\n    let date = doc.select(\".post-time\").text();\n    let url = doc.select(\"h2>a\").attr(\"href\");\n    item_list.push({ title, url: bhost() + url, date });\n  });\n}\n\nitem_list.map(x => JSON.stringify(x));",
    "ruleLink": "$.url",
    "ruleNextPage": "@js:\n(() => {\n  if (baseUrl.includes(\"activities\")) return\n  if (baseUrl.includes(\"page\")) {\n    page = baseUrl.match(/page\\/(\\d+)/)[1]\n    return java.log(baseUrl.replace(/(\\d+)\\/$/, +page + 1 + \"/\"))\n  } else {\n    return baseUrl + \"page/2/\"\n  }\n})()",
    "rulePubDate": "$.date",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "动态::{{bhost()}}/activities/\n书源::{{bhost()}}/categories/%E4%B9%A6%E6%BA%90/\n定时任务::{{bhost()}}/categories/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1/\n朗读引擎::{{bhost()}}/categories/%E6%9C%97%E8%AF%BB%E5%BC%95%E6%93%8E/\n好书推荐::{{bhost()}}/categories/%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/\n订阅源::{{bhost()}}/categories/%E8%AE%A2%E9%98%85%E6%BA%90/\n公告::{{bhost()}}/categories/%E5%85%AC%E5%91%8A/\n其他::{{bhost()}}/categories/%E5%85%B6%E4%BB%96%E8%B5%84%E6%BA%90/",
    "sourceGroup": "书源",
    "sourceIcon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoIAAAKCBAMAAAC33qUmAAAAGFBMVEUAAADkzKcJBQLGspQuJBiZiXBPQzJ0ZlGsDlWGAAAAAHRSTlM2uXDMAAA0NUlEQVR42u19a86DOrIt8gwiJmBZUf9HKNr/I5QeQIQygYgMYHfC9Dv4WWUbsIHkg2Dr3D7n9t7JRxb1XFWuyrJ00kknnXTSSSeddNJJJ5100kknnXTSSSeddNJJJ5100kknnXTSSSeddNJJJ5100kknnXTSSSeddNJJJ5100kknnXTSSSeddNJJJ51vHjr8jxhNECUE/+gwdRIUUxHshI8kBCeeDjkqJTGhMVWH6bCdJGyCZd0XgllCcBkfnfCYbAkTgp+PF9MJjgspctL4v0lHIkN7I+qQ0yFLya6RnYmgPkk2/QhW5+4/wOkXxnRs/KqhkxAcFz5+Lo3v3Lt/dO6FkCT82PGNkIKrtc+L/9cuiOCLdo2fkD2J3qPtOUYUfa6E7RdAo7gSqWftOzcji5WRxaS7TMoexq50D4RRyuJZCCEjKKjZh0EkAECutgPQeXAUKN6NNqOw8OflkiEALx1+dX0tY86JC2Onzb6ohu1G/ITv7eQP4Vccek6OMexsolJlJIQ7QVCGLo9Ofzkmh+CTS32+cb+iwxvN7LCdAHhR9u86KHj+o2yixFCrMuH/70eTZYIDQCl+Un8PsScvtSB2ugwjbKKqfvSXETxe3vZPwneYdpRVfGPYgDwFyPoPIkh0BPMGkPuP4jDzSAhNYEN/F0ErAqwXAVBB6HiUH0QQR4AigFkAQK7MJ2kNcWDzoyJ41Ao83QJ63HKHYdNgKfwxBAm0gGH45WMRNoRQWsPz7/KuREbRTSeBA+jlQ8lcMfQx6FB+MSCUFrCLYeoBKNz818qYhyHUxvD3+hCJjgE5IiPpWs8ZksNchtfKGP4WgsqHaBcypL8ng1hrE67XAVGU4L/FsPqhOqj4FUQB+Hj2cAg2bYVrIy1A8tqv0fLz7euumNeNM67dL2BGBN9RjABwyPhJwTPlOVS34zwiAtFrDbU/2br8UaTEWgJ7tNcw+C+rvGlh2AoY+2wil8JWUg2U/o4V1AAWXgE8CZv3gripCjv4/10MjHWPQc1lgiLZmt9xI0qFC6/6KtWF2KGq8LGSlKyCUfHafUmegvBnIukuEan9pl8KoLB55/FOIwmiCCv7rOobQhHUUPMeN+tOVCr8FhmvAJ40z1wFdmsdAbfjD4ze36o4w60jqMIYngoXvhBY4ncPkj+TWnMZrHsDbEC7KlWg27aBnI32Adj69dfiwywJvAg7OIBgDiCkmy48aQCtn6rZFFE2h/hRh85x8QMFqp4krzMPt5eAcMuFpx4nUmpG7wXbDhyS3uNDRH2UC+C1HEmTFYR0uwj2qLC/58AqFBGv8IkMDyUmxRBX81I0w08BqAzgC/W9MD8ha3kPmI+MsF3aFm6XZBB8lhtIy4jX8h/UhyAlWgKB9w2iC5Uit3cVFm7LGxMmAKwa24molME2gNQjwNT0h3i6k4JqUG9FVhCSjclfpghBXNLUHN69Gr7QoAEE0UtZxvfX1Ipl2Cij+rAC6dy4YAMfGbB/or1GBy9FdBmvS07u582ZQgbZBA/3ZIrj7g/jBD0AEBrAYkIlVKXIdEMKTGVdTgBoORHOwmv8PGyi5YM7X14HVj17vEnNeX+6IfnTjGBbO07EhGiWAHoRrFQwNL29QUTWbz2m29Ffyv/zeLHZhFw6YQUg9TPaDgUzt7uGe5Nq/a5E3K8Wly2JBrC0TRKQQAt6G8GjbK+Z3xvChXD9akzMrBPC+ytt4RE2HajwoBcS+fRzqLYcocindgNqTHBp7vKwAkEemr1MdxXpgZAgAJfpTirLW7MNBI0mV42jwjo9YINNVbpBqbe0p7/Q6bE59P3r5e1VbcOVdNVFpcMugCbLp2OcrOpPKuObk7zlwFNnCDcUyRwvD9sNi1T4PIIgM3WpAQBxX5LbEOIpgW7CEMrCEhfBh6PDteECqcuSEBTLHC+Pof6kHGBnGkQGe5PeCDYbQVAmI63tRbp4QvcDeagsCo2g9OP9/D3HD96XBc0M3vpdfupcyWYS4uNbBEtHhw2AnsKjQlAC+HDrUtD8meakl2px0O1Jfvp6OwgqEbo6cUxPJuKlFG0bYLcW3kBzje5wAKL41ExsgezgZhiZphNBh6M7S8qUDgfSqr+m8DdY1nhcgG4OOdp9NTViw/K3Lz7TjSDo+OESGMGsVwbNXbGeMNA0N8D2mrNnQshFl/M0hGW9kXiQKB0uewAk6u6gJx5HDUr+biJZXBlsbzhKFB+qsabo/mMrEbUUQQBALhlOaAJ9cghSOUeFc93e1ZjbDmOdNbIvRDqV020b4aDktIAOS0Lrjq4aWdEgolM9DUq56e7yNtdwQsMpDsjRA8Kn1PUWuBlZHsbpHChTwAvUPQj6+2sgfqi6l6HJZcRqtlEhzpM7722Q1I4bySWAIhvuy0uN6l18dCroDgHFKd3J4SKYmcs/UhBb8RI34kYgp1WCWiPLxhD01JYP4LaXgY+FqYMpNIuEfCsiWGMAFaE1QKnCQLC0S6MSwKaKm1SGa338JW7DjyBWELatDKUjIBC82qVRZQKRA4lCUCjzJsrFRIkgZvXvo3ctCc2UEXQAtAZRxLxP6FLObCtWELoRZASHfgDzlkYFhXVDDdbxhG+2mUmZitSqsQ6/7tWo6hlCy0qmuQQCFzL9wbaC4JGLIKQEoREc/o3VBX5WmUBzr2Z655COfraRECMrGGQETZfh1eZzkAuhU3vXyGhpa0VupEWRjOET6JAX8TfY6BZDQyqSabq4lXnLthvJOzbkPu4ABIJOg00JL2hKCKZbs42wWsiN6FaVMRXuYxRhcV58BflhBKmJZHBlKWDGJ+szgjfcoER+cnKy4aqUCBaOCJLh/mXSE8gAAGUjCWHb7cjv//UUpBQV5FW1CIqyiP3DqYeStasC8EocEWZw7vPS1SLY/TpeIS5gaYm7EcoJ/X4ENZ1TOKT22WJkye8hmMHbRxwGKERch3t+N3PpHC+A5vuz3zz6h0kYCkeHs5FxnsROZFQgeMc3uX52JigxIvhAIijdCB3THeVGoBH03e/f6tXgcASRCGodHkWQqEgGd5u6AxJ+G0HbGXRuRGjhaCTrNoiIVOY3pu1EE6sFKC41QZywK4K5SWVotptjpSNaBMcgoMSxgvge4V6OnY6ASGacdDo2D1xcllPHyI4QtLl9EUyPiqBk3zGjoNs06S7MnwFQNKzCjCxABAWl0OBcWoLPftv/ekQQOGKFAh37/YaTcb1IticEhSrWQARrLoKjwzWYtyrwEr0Ze9p6w1URiqDM57IABI+ImM5LmYs4XM5PO2aCRVArIg2BvnrAPjdTVrH8Nft1BCGtxZ1p0G1y64Py7iCuChC6DwQhs8pF8Bwsgj5KFq6M3QeCMJrO5TVeFqL8iIzAdI6D4O+ua7FoLRXPhYfhSARt9SfsxxEE178gDFIEyZgSY0q29KTD5PfX6xKb1oIpxQiCx8ZHyVpYEfrjYTXBNQ5xZ6MXQYKghx8EVQFmZc+/DB7lCDYolGkDiSmGPmi5Ear+wq/nw13qAFmZXItgSDAIb+100KuZRBQg+Nu5Hb95gFplOC8YNivRYRRrkY0gBH9vN4aDIJXuoAQ4BLW2EJtRVIWpN2TIF/84OSMJ0lIrMSzQ+T+Bw/ASiuDOiH2gi0oETUQ38AH9QUsE91db8gChqiNDKDBkBWEMdD/vED8rGJSqmIUAiEQwvDb6i0oMqVXhiEcQJFT32NhWcI8iCOkpmdDRcQQJRl5bQbpDABkKBnk0PfopanMKAQ7odxE8XrAfCbqEr7jpA4wFkxKraJqGfu6aYkGcmOmUOCgOR0pcyzA82yGCQJQUKzP2GWoTg/nptk8R5AUMOxgch0HROTUc5SQcMdkXhGKV+CUqGASfewA/omLB/SHIldGQCvUrcJIG4UpcmCK77JP5cTVmfo9qeK1TqB8R5tMhtX/fa3hz4taQ06c2MC/rlNgEgwp5ui8E5QUtrsQgrWDhSmxSYj7Yk1/b2RuCBAZ1eQCvBaJI2LIukN8bgjqcNsFgjB/BStzsJBZ06uBYicNFkHQFetDhsBtOwf6VDIbFgfmI+OARhNMqE6T7QxDTKyUfzxmKIFT+/SixjSBDV2HFyoAAHLpOLJAT56o4mu0NQaKqnECJWRiCKCfeb3mEMIvYqkODQSbC6egw/BcRBC1vgVfAlPkEnjiw4fpHETRTGqMyOshqSz+S7RNBs7ZAk9MkQImPhtjitb19WkGqlLFEIck4gvLqjhUM7lSLeUJSWhRpkPI/jScWpMJOETRmMKTCBFZfvT14dC79i8EhTEiEKGVBCPL6sgnDK7ZbBE1CEiJKZnnYEXninQaDFjUolZiOIyj4fdNsKMLw3SLYmmaP8ZxYI8hjmXDkf9oMGiUOyInNUB8Qy+w2oxMIQlZhnOHTCHaxjF0m3qkjAeTq7XWOoAZNLLNjT4x6DoI9Kr96AijFvZSJ/QjCqC78LiwByi9XaO5XiRuDRGCrAkewelwBpbhbJc5QofgUzO8z2KvwjmX2rcQmGowo0nWtXmWRzCAyg7kwZzQMwWPztOoCdK8I6uQ2sH1fx0BPyO/vOKUz0WBg26USXRgDNec9J8UPbAZpKIKAEXvt2Qwal5qHXoBgUvmvOJbZLbuqO4fyUyC/wkRSDFLBwJvwv2oGtUs9hc6HElEkKDDvW4lBPB1Y6WC48V8yYrsukYCNyuGu+Ano6T2ndEdzjym0ZUsi/y82n/vET3ZBK1m6BScW3ed0swI3n/xjdIciiEskgU1vNoJjwwR+GkDjEGRSHJ7TXREjtlsEsUMINYMiIymg+dwvgg8YT4fegIAtR7ngBneLYAWT4iacGwRxODefdK8IQoKF1ysDPTGPw2GJZLcIVqBmHnELRzggzcruVokzWxmDuUFIRwgHtE8ACbwD0dEDLBxB1Kp03qsSE9FBWQBlDEcQEzN7RvCKlDEUweoBa/Q7diRM920IZQyNpyGCXUayUwAzGE+Xw/E0GtwhZBfW6PeMYB1WZLIQPF4Mr71vM6gdgiwyZaEImmL7aae0AtPmrIADEvqllTphpKa2zrtFUGQWqIMyPBAHOd0+W1eZzIqNKAW3HKGWzTzChf8kgs0T8cw0GMHWBEE7jQa76efQnJXKIQTMG4PdXntHEFBUih7oR5DotX2mgToX2XS2VwRh46CiB8IQVHyEuH5C94vgAypjcFxMTCAuwki6wypnNxwQloqFMgbigALxLoyk+5xai4E4tTEIal5BDMvbJ4I0A1WmsZxuAMFu6CrdKbuFah2qaE5CP4h6/3fbOXgBpeLwojkB1yBU++8+4xkERNtEuGKmk0HZ90Z2qsQmKy4jcjqM4G5n9FhZcfAIfgf6236bVwVFhYrt2WQEdzvgA/SvhfcOMSC8+b4R7FpmIILBSmwonXzfWmw6ACO6rxhjgKEuI/qGfzAcNB2AEVmx2G/8QOzgjh0JiIurSARhOt0hSLfzu9nyCOaxCDbt1e68ptsBcCkIAUEd00DNYANwTLfSevBbym7jalF4vY0ABEvZrbQFASQZWCK/NDNTBregy4Baqf+WEIQALvPAgJkpo5qHEIK3LSHYxWHvsxSEmJm5xyCoXZAUXpaxjYjgsbo01UJ3yUnXOmiudEbUfDGCzXlDInismve5LzNTA96Li0KQOAiuHUBJXvKBx4+2fS20ERMgmEfNXoRXujeGYAfgs27bploMQTQlIQ7BCQb0jxHs7s609fvclhlZjBGMmb0IA8ktzYrqRLCbuV2elrlICRE8Rd0s3CiChCejHYKitrOAK64eV9P4FmEYYCheb2ZQD3CAUd0Fg9asNQhWe0BQOcBIneuXad0AXMb1klsIbiQcBF2jUQ3PwwiiTuiJCFbbiaeN+V5iqoHYMjfpbiZE8LZNBOsFJmugalEUgmSrCILOZR5CzJbBC6i3TUew2SaCXUS4AIKaoY6KMBOCEocjSM2iLsZtFkFwEZiTcgnBeK1ra2i35st0uycE6UcQvE4iWDaMIK5NzkbQXG6v253YQRy/0QUQLKKm124aQcKsCLiaj6BpWJiAYLk5GSRiOBHYYrMggre9IXhYCMHaIBiTZzsIss0gCKdr3BdFMK7yAgvN2xk8SEDLmeiXnI+gus50WgLB9asys3p2F0HwsAyCNCEYZ8wwgmIO9QbcCbE67+danzeCeJJ8VIKJPclWEZz3zOw/eMgHnYfgFiAE9d0FECTsshyCdDsI/vsZBF+7QfDyXAzBzhsUk2qdFoLqs5swhBpBfRWL/jmCMTfjV+BKLvAqFs1mNI4SjOA5GsEly4bf5LfEqxdDctaBoCgbboRcEJWS8g2gYrfoahDcSmrc3QcU/W9zOWrklmIRZDaCbDMIHpu2fkvhqW6bJRH85z4TwW3oME/ELl0X6xvA2Q6QX0taBsEtTbHtKMLHG8KuGX2m4nC+1iAYFxf5ZZBuAsH37360ohW9Q3BOOFg9JiNINosgLzfxGyXiIhZhf4ag2uy0MQS5EF7klZyFEcwmI7ipJWH8Xpi8WccXZ85C8DoHwU3dyMFCyI76hiyZk5PMQxDfacq2hSBbHMHYksGGEWSUAATnUDOLISint26GnqFACmeNPu3s4L/TEazwDW26IYJrSQQnF58JHBJSbwxBtiCC9SIInja1oolvKqx0PPN3CKJpKfdtIQiuuS+EYDkHwcPG5nkTOzFeBMHTBAR1E5QY2EW2VCp5POv6NvtSL/Ak0xBEfmg7Q484q1eXZT17wIaNIIt+kRaCdDsiWOs72vMQvMxCsLIRZD3R19pEsJLX3OUdbfaHCNaFPYcVfQcT4f/aEBSTFsweBzZdmm1fEBtTNU80wFVEV0IrYOKkP0RXgmAjL+WUglNaCME2EkGrAaXRCIqpJAQF/quykXybSAGu9U5EkEyP6IiiiMA05VeF6A71fxFMJK0GQUUqzUKQsgURrCGCQPBWiWBlaLlZCLLpCHJVRQi+H+XMxs5agpnL44oQpH+AoDyo+7BiwWdlCGZ/iqDpwg4Qwh9EEPvi0O9SQBzhYpNXc696zuoQbBdE8BGNIPANcEtbN43Oc+5eEFeF4PSnodkEBBEQlb6c/P58fWvd8xI4OhDSn0BwCjcDUThWF715+9Cl6e65aRgry0r+ghZPQRCIX3e65EgieCg956RBVOrsQ5BtHMFnGIK83ViKXocdP+1TPgm3hN5jZLHBKFK+vJL8gAw+g5gFJHwddt151m8RVAgeyv7TyWIt1fkO9flPuAaM4PnTCFILQYUfF60SANgrhUAaBYhAl/+E+iJo+tv5K1pMDH6XDr+38F0lLoeRY4niTZrEP3UqSyHIghEk2v698Xt08ifxKw7hR2EoxRDosuKwv4YlRHB6zxm34xDBnmonUyrM4ZP6G4seAJFj2KIQMZOC+K1qALEQzJZBMO+5rGxiv0763uqr5C8eQGkoT7UEUUMo3PLXZHAhBG0tVggSrwvu/If0vfH662AoDGKXR0Ov/E0ZNKOGZt5mQ13AEkGoykgAAX6H6SfXnhmJ4TfdCbqUuiSC/zgIagciBHAmdhaMJymGUg7BH90wgmeMoHEgSgCLw1Inlz6l0apMtdun30Cw+DyCSoGhATwsd3SM3TTaJ8vu3G0jSNQP0AB28hcc/ik/Mw638stvVVblAZp9xyCiEuNsBMHi3Q5BqkRAmcCmu39WRgKITjGMYXe7TRnDLyJYLIfgBSGoDJJs8uxcMBfAIiLvcM/gB7oblpBu+IIrZpfnUhN7vAgyYwGVBo+AZqQKsqvXEAwFhDA2RITGlhGUFnAsgUOKmp8A0f+UQI5DWHbxdWOs4fdkMJ+NINrEjhA8AgtYjCqsRlDVRTgBoXAENjEv/F8EIKSfN4MLImh1HZwZSkJ6LaBFQUMEQZVOYtiOazSfeNAq0mtTMmh1HZwZcMG9FtDwA4IiUNcT3/+kfjW6RnyRQEKV7vPOuZBC7xI++mkE6YIIViCI7s9BDFcqaCrVSca/opGVkCPG0cDYK4X80v79rIMB+jkEj5d/p15gGLKDYkuTvEA/4EGU6W9VPb3RGwM5griaByVSqLT/e/m3qtsJXWpEP8bUQARPyyIorgbwIQ7XPgDzEiS0QukqgGDb9LUfHWWBRb6b3PEpXJNfaugKkZzhZxCUlwnFzKO5fqmCExx5HVMA2Os/TpoflWCZtEaO0ew5pkbgdykdhDLFU0H9h3zxsgiCKaIdgkpMij7zV+v6+Rm0HxVgxjjrl8KqkRgKIfcYQwMh7yUmH0IQXmZbEMFbo7OQopeOcmu+hvE9yHXuxrQQ1MRaVZUplnr+SgkUmX0wmMEI0vnfpqcpv1QQ6NVhQYkKZ4vyvwswhOZqExV/ADdSCx8tGG/X0uZiFNb9owkyuAazwFR5C0Ee25Ve2RDpqyV8SrQeOiKUlyLM9/fAeGkk5124sbVu5fwCgp3VmfFF4tdoBLtowuNDclDXuGP8KP8fvq9NI/hSCAJVplbTnAg5nz5xz7vr8s0nkxNwmW3ufhILwYPM0DyaJcjklwWgqJgS2AirDKGv3uFC6E17Ov8odjN/JENGbafl0gh6YwxJJLeNo8ECJQ7Hw2QlrZp/RjwIOu0j7iuTCd6nhBC1PpcztwwpBGsdi/QBKB2Iwa/LuQh4JLW2hzv0DkHqeXCs0LIE+HQglN7kQ+MMUfv93AmONoKHvKfVpX01qFUIJVwEX4oQM20HNdB4Fe1QCjtuMundBxCslkbw2cd/qgzkBe45eEq6BFyKkNfzDIJEqTQzRAEBneyNrw7dRdbyb5KFjSFjDAx5mTloSCN4LUdKunZngSViGMHb/ewiiMkqArsRHyK6tmLPji48fx7BmVNEicxq/QjmqjMDdPupn+MgaGJqGc/QkLenG3IsCHMB4ScUWWQA6lZdPW/zKRmSwRJU0caKaHz2lJUaj4sOJbCiio0h9Cb0IwiqCPi+jBYX/QDiClo/XQTUmP9yGvEIbwgdf8Ih/EBUaCH4WgDBi/HFVgyDXMgYZfm84niGxqhB1bh8hvEmi1KtMgEo9Xa0M5upxHxkQ9FnAkMkUI/OMIZQD9gd9QM6qnm4tvBUt4EPEIvgEyAYN/4Y/KbuerZIcJ5eqvOmu6ooCXmqBkSEOi0J6KkE/sSSQjFwu/owgpH75UB0QHQ8Vrs5gao9huYF8IqiDLIYDUMwMxfMLF4oX96bEP22yymbqQh+FG2AsBLn0ofoFoKAb6aSI1TptRmDExTNKU1+2LF1ByHkGJaIDV0E6UQEiexLeNZ2MMuJhLgeDCKSw1Ivw1TeOOjjhKESYWF7k8UR1DP/4hG0Y3MBYGHnIW4f0PD3ohfL6SkwrJ2M21HUqAOfhzNd90VpGgII4djNVE6LudQbK6vvNDiqQZwwYQjbq+ONCRUCFkj2cqLh6urxkm1xgqE2CE61scaLYB1WBccq5sYWE70PgOoHQTUJewmG/EePxHew3KsF42oCUtDc0MEx0Gmz47xwVLEF83ZGv5MwSBlpbxwa0IA0WVX7PXqcLXMPGSIoCXUa+XkQx9gAHnixsYE3L4Pqtbz/GVD9iiQMd8fEghCawlqwNAsJIR7O8Zq0XEPnIm5VyZQohPzR0Io3kRU7LTitUeO4wpeMCy1/vFhQKANqVRh6TXo1EEC71sjbFkwUQ2LGp0B2obxFr04BED6xHpcyrqaLiCCPGgpAxE31IvwxnbqwTqOCkaNusqRJj0kIssoyL4bzp4sgWD2mI8g0q4pGTCAExdsOjl0ZeDTkjVuRL0XwKmrK2VHoRwEgXKzwRPhjmkHusZu/CQTw6msuUvaLRSNIkBpL1iNqBgB3XDTTYVaBjcsCCFKJYF2CggSd6EWe/v42UeSY0jJFrKC6FuF+l7DEh7yWNymlUZiLIBfy46WtZyw4Y8AIeotzWK5J1FcfIUko68ZZADnmMVX8CQsYFM5e6uW+59KkJDRKBD1GUPfiy8ENU1J4q3+mI2iEELIJtqrCeqyEkC6BYAOXjcZ+p5/RMqyc6MRhkxC01Vj6kgm9vFJNAIRcCO/n+UIIK2v5VAQrUeO2e7MOcMUDnfh0sA1OsKN0wssgblSoaC66BILy10sCJPArqeEEnUiwa826wls5vl9NQzWkBL6kOYN+3kh31zFv1xKnx7MtIUHcVhnDUFNDBfsArGt0p4RMlUGgxlwIVUd0NP3hlMBQojgZQIq5rZhwkGIvUliMamtayfle86kIoqDa/GYS9cMlp3jE/riEJcA5CAJu6xbJrypaHzMfXVWuNUV3MRx+crwPJjrmMjkWL4/2ULM9PLDxx1AI51pC1WZWHqYw1MwYF0x83PjFrivqg6ZTahJEeePCioNpHILYYhd2bjfTkcDZu69oBI8i1sd1CF7WBAhOXdgh2lkrUH4GDD3NQhG06A9sCbndmrVcDl5+OcUFM0zrBebQOZ0FunhvUxd2SAQbIzeKoen7viEEiTXlFV73mYdgg29iRiFoM2+gQUrfmo99MVCJKZOZXWklY70IenSS6OKA01DRuaZ5zoRAHjh267qO871Netb1RGoRL1GshZEbYwl7P0C9dQhVvbKdyW1qbkd02evyuE7bW8+5WYszMo2ieLS5RpBMQPBomjGBJYwiUDLNkAtngliuWQjCIkkeOXpQx9I4EFStCWi0eTUVQUpsXzIshIPMtwh/kTOR/SRsDoK6opiXt1hXfMEaAbq9IYIi3Z4WK0jjBV6UEsJYGpPqRgYQHs1ITAh1WOAybsQCQTcw7VuU4p8V+iGnG2uVlzjuOJpNVqQ/FOlJFax+RxKDIPeS/0XBFagM8y5e3Xk16968zrwLSwinUymwPc/ER1N0GLfMW1P0SQCCGn3jhmWPLQHXcubNbpCKB+anzOJGZWHI9HlPcU0YQbCJAV2MJQEv0/hI6UV4ZZiPMwDmYe4EFksI89lCiDgaWcGajCC8jn+bgGABb+NLL0KFDIIdD7f/necmTmhaPxBC2v8hf5bDd7wiSyjHadDIZ1LhERoJEfY7TaJuMjc0VIPP2z/Ca+rzpoQPCWEUgkTev0XuuFRb3WJ4dNOCcYRjSe7BCPJb1AhB7UWAhcUk6zwEofWfTtAT5lpCnRxPQRAPdglNX80lQLNiU3sR8y9VDR7cM68cBlOJXCXfdKovAVVUoMYRX0f1d5mcLq8DBYVABN/mRNxYb6075AQM0cun1KEdorUFaryAM3nCAX1TGRqCLuPfRshGxRwRcRVaLaUSF4bxHQNqjz6Ka8/ujwlhoc3qQ43pbZK5dmH19gS/EHDN9AgHQowosaF6u+v4HMKLuK9h7uCzDCF4hQHDTAStOFi9szHv2/t1Pt42NpSR1/8OsCA0lhdRBhe+C3awu+7VOC8R2tjuJc/hMU2ZyLnUAIfvh/4BooJ0WDyIUGNwpRfldAHJq+7G4wvfz6LpEtwVoVjAcV43K/lU1t/p2oB/MwZBaAlzdQc89PooVSoJ63Qh5CDTXUZ1zZu5eZUEjH+2EQR5XTOnUYqounQJIhp5OYnadEm4EF5hc08VHs8wEBhdDLU1HvWqe6e8sbu+CSF88LFZZoo7GIZvTE0Opu5MVmOcmAghrCZW2qyxSuqyRUwoIxA0OV3IoBnTby7il/ff5JeGGtQoDf51kHOfXrO6A4hsTEe1SnCpYVJMCCPMU3zvKRVD2mp0ezLYoJcqIuvuoOrbNg6CraEIZyIobkc0liVsJ9/TtHxJHt++IBAE3vIUMAtdl31ECMP917Hqu+5FQMPGXAQFP4prlXkZ3+Vuk1zAl8RGC+J6WmXSshAmnpc3ZX1YXbfs35tJTIu7rCDMa5PSFA3YB3ib2pKv0xyLXohEEFWZxnM63O2rIwA99slB8NjA5plq7j5DT2lr8j1NYoVH8V1IAsHGVCTHG9+s1p1ckUJ67pMnZwStH+INzbnP6wghMIXU6/bGQ0LQIBt5IY6bZqBlZr7aYFEFlHwggtRHyRJsZ19y2cssBKUZ9pnCOATdvOR0i2N7OII2gzeKIOzxgAj2iswDT0qg83Z3WS0gCsL7lEFGRLEVlhrH+BI8CmLcVzrJvejJIr090syqIZg+/Kle2RFCeUVuiimUbMW19FweDUbwAYviAQhWuA/5ZgYr9jTzHZ2y+zwEidMCKK+6VhNiJdwgm0erMZpsFXQdjLELbkNuVW9qL4JoKDLnfgiZg6DbOqS8yUQprBqwsDs282RmT2Kuft7gDwMSZW5zU8yX2U94wUXjd8iTzUUQ9ROaS/SIXAvcDib7SdQDnuIMIUFGSlxmGkOwQS07o92G8Noo5sAna7EO42wIG2sUEAlDkAHH5IwOD8EfW9Hh1Qmwrict+AiZI0114fZ3TuvHpLIn/2jf4VN9s0gKaZhZNVZVGvYInhXW0kS8O4ggalE4lOqm5ajdh7XA8xwEdXbsXINUvdtADElg1RGEhPI6TagpRLPVZLkvG9FJ1ORxCuiOxpMSTMGOTucYqLmKW1gjQl+wR52EowBJzHswgu7M7ABXDKrzkmOno3/FCLpI7IStnZPb+a6SyrFKKk8Pv8WHqqiqbsxCzSBovawDWtBRjlaGjTiDMfVhRiNmD0lpQ9hEr/iTdqZEM21oKPiQegogaAGCZZgIWpOflrjGptKxzh87EN7amNleJndX1ZeoxI54QrVgBPPgvhU7ImyWuBLtH+uAV4NFjBw14WUeHBEKytxOF8a1WNlB3aIwWMuCrxh1+MyCjypOwL5LdTC7JmLmeyFvrAxhAILyKlMJqbFsnFjoEMwlwV/1ZnJ4eTXg4MrTAvd5MwOheycXjTkMjKnBRbHcWoUy8AQEbx+Q9/jHZVDuk6r7234sBInHELJFEOwKrc6UVbVq8jyKoJ5lD+ej5aFd6fyuFWx7C2q9VJcSyvHWM+YPO/OlxmuoaZvOmC9jDE1yIR6TeCptcHSxCRfOgbP5UDQYNMVbNBqJtZAjboTZEaGh+ufPhuC/XV8rtYYECSk0GPaIomQemH1lCs4cDvHhcXEal9tWAjisjKw3ImwXQpCocYfuxFLHoTDrqYge4wd2QkXe9kG7uA5musIwBS/eetfkMcbGMUtyr/gB6Xw1ztCs38JZf3IDo8ONKKpVRdaCJ7xDIQRBNGMGcc1jRAFfutCI1xQ8k9dZUbAEggSOxSt9u4vFwlQLLeoieKwg1S9Iz7GsE2+xkdX6sBSIdw7Kdp9QBI94mupSoyd1E0/t268m9uCprbMDWyurCi6qDSJKrbs0uWJKwyyheqQYBAGTfoq7PgoD6R49tocF6TuSfJWvBHEAvobv4SjQnLUQBNFINdE4yMI0BwYKoSTQ07IzMxEkBkG+wOB59a5zEwtB5TrfyrPwU26rhLOkyrD7rTAhOZQRfV9ui8xoQYJYE2Mmbu+gnuqAXmDQelZAl9qliCXmCMOjXiPNV0iX6KZnAIIE8zIRI6hjJkpDVYO7Wtpmxr0INuCQy961jGaxtD56KXyNF8vnQewHsYeN30OHIJAsEkEiOtcbS42XQtA4ZP9uWjm+qla7zc156BXmGPswBFH3JrLtYaYwgmGWCMKAaxmaFZtmZ/i+Yw8VjOrU8pTWptSgLj3imdZOs88cgSAI+qcNKh3NkOUo8aJ3SbcURgScOngPUc/joYZ3cIF/yRjXL++UwXHNoWoSGxYqlsEDYl4OH2fmqRdBoXuwQgJaHZrz53ZL69wdDIyplyEJLQgvjdzlXvh3NWIk+/6lsldFMIJ4rOQHlTjzLA8rT+192XcGQuu67Nt2GXT4dk9vZIL+O2tC8XJp1gCCYMlD3KDNiD/B15Bf++UrCMAePNBKGYa6m6fmCHG/zuONGVnUmYz4k6AjyePKi6D538TyjEurVE8MjoLq2yJcv42g2S8zSZWFnRSDXj2BsPpTVk4ceRlqxo9DY6WXl3u4RkP45HKCAHYJzCgexJMhfFIGjRrjrvlFvZcImcAm97qM1GVJbcveGzryeyp0ieJ+/qgj0VIIrpSXkUvxIvL1zhbyBOUaJYQ6g9bc52AAb1p5J1yFmoygIarNkoflEeS0i9qhHWkBb2oxOh3j3Bu0NOXDSmzU+AGD6va+cF4CURQQXv1JR0/WdxIADlKfsrqHbkLxpe0fFUE5PdEZzN0sjiB0/JeGcwflGIgaPlUhHWOe3F/y4VhGhlA6njl82IGByLCRBMwQhLliHLo75mCxNx1lO3GK+lkR1D/MrNPSUxOXh9BsIb8oArXuTYRzXQl4cQ57qEQPEARKHDeGf5aS4TaTqWMsx6tPwHPpIoiSw8LDMtRaf4M2OjJMF0/biDPRTKFWp5kTBOHvGfLLHYYPjuHVT2wJ+wdWso7R71Z2tTRdPIYgu+ARObM3dfVO6DEQCnsoGekrhK4W4icM4DmwXc4ZU/MFT4wQbGvr7X0IQZPlyZKSRe0rxv8lC1DniH5NfCW5vX8HQfXHwRTjxemFXjFUKKrqUgvKThVoaQj0iGg++21hsni0nNHgETkaQfo5BDWKBkiAXdRCYNV/cXVWEH5NBpEQwj2/9DNvjHnbFCpfK82o22fubPE88D7DkpEauEiJBjt8AkHqgVFDeGYTENQ3uvEq1s8g6BTGqdgt2OVDMJwXb5DQz4t/z6GB70IheIEi+I2MDj+GINasgCbLso8rAvHpNCMRMx8oIfY8+nzxouOwURJKhexwqaaWEvo1S2xJX3CtBuT2lhn6mhkUQB5RTika4Mm3ECSu+kb8YUoYnpIgCyTfRJBkeHibsMR9K6s+JoUCzBgAdbsiTIm/UCDp59YCVy59JiCgM0T48qidlIDQ7yIIQ3q1nuabmkDmjILFr18OZSBflEIxpwrt/brFjYb4y+Ns6pGkAvs2gtber3Y+Q/M1APEsfxkMki8/vLP36/aqzpsQQme3gtop/91HJ44vWWgd/ZdEECyZkTkp+QMEcV5S3l4fJbkWfHA81F52y3wLQbMNxeKHlltHHylSdJoIFgdfB9+XxJD3jWlfUiy9jj42uJ9mBa11HDQD4fm3ECTYl/yREJJ5Ilgicpp9E0FzNwIJ4cq9sdqpA0VQcJt0ikmY9yjELvprISTrRdDe7KGH7citifTbT2NvfazX7o4tEczLP+C1LAgrz/OsV4+Ju2br9UVy2h9Vdw/k7BlhqxVBNPpVpwF/qRO4aDeyFXsFIujd80n/1KzAFjxjCdeEoLn+gKdWL9U1tUBwgJdWNX/8VvsRdGPBuv3z923x5WZp1RcD/BgE8erfcvJuu4XVGO3tPRnTshZ/QvUFJmvzr+Q0/1RhiL2qpZy2QvgLcqjTkWJdbJK6HYEjmtW5Y7XZCIvgKt61szktX6UQEjPx9Y+5pB5L+LSFcF1hNZF+GK6i+Cs+s5ftwEIIXNwKtJkwsBPItoJ0FQjikdI4zFoHgo4O64RuBeba83CqbrciRsZaQ5GvqazjF8JVORPmPGKuHpGu5Pm6G+nXJRanfUlNDmMzpP9ACEFHKBhyzdbzgF4toetSkivePecqCWF/U8ljeLWcfMPViggQd9mN3vqFH5F9/92qfBhtM9Jr3VYTsTqr2UWwoMIt8rcIMovaNxHrihJPZzV7jx7/EYLW6oRcWekVIUjkZPjSpbn+VlWIZwPKOpukxEZzbGuktf7rMoTawuMG06vjPjy7YO1tU9+oxTM3THBe7Rr79NyIhtvrP67cSevyRKHgaYXVMBPRPEtLj+96U9B3e0EYfKjau+N3ZQgaIbT98VnvHviDMMbmtA5gn8gaEfQtFlcQfh9B5lm/U8Ji4hoRPHpeeFNFT75e6GkMgGhrzOoK2uihXaOjvck3H5rBEXzIrijWaIX4GbuNIocOwrtetfQVb0LgthKkE2YzLV0lgioDtRYSq+jrexegzVSGxgbwtJbiSD+C7mJx45C756bfQ/AoQmmkw2tipvvsj70AUWzT/eZ1JwIAhEZQvMy133nx7IIVSzir7+kxQQDCd1lDN0JWiSPRAYRlCtXt42+0emsvYk3PtKo360SQX3OvMMMAE6nlNdlzl4sBQgYt28AVxJUiaO58YlNo0rtPI0j0th28FdloAl0rgvpilWI0C5gg6y2mdGkEvQA6S7OMHzYfoKtFUO5mxxDW7UdKyMS3rEhtl/AHVatFEEiBxQrLTbDtJ4ZZWAiaSBovD7Si0pUf5tVj4E7o0ggS7IUdFcgdI7juYxh/vPSHh4UhikyjXhd1nYi99W4LyYijSk4wIZOTezVe46Hj+SMAzeJjlBNBw25P6yUU+oXQE491P+RlaAbqhiMsEkEC9vHClRL43elsbisA6p3OTy+Ed8DUEK880hCfbwWEQALx3j/YSrYdBGGd21JkE1rLlhbqylfcD5XfgzIRa1617JLZDoB4hWThsYWmdrIAgoZLULuJnO29a74uOZTc2/ycImpeZvGApcPMp6ejbpjoCf58GXxpjZuvtzHGpZdgulp6rNaKe1cPxDSvay8Cduo8PQCqYhfdFIIZ6yFI5EJnPv7dI4QThseYjTpiQZtlNUzBdVs6rKXQccgmqrE2YHCfOhnBSjnhwt5Z8pFM6AtarBOExoVQpAgtGAKvpTHuZxoPzPceOPvtVPi0Pfwsb+JY94NeiH23x0lPVGC+esMH4K3VjW6EbhPBI4fQXsuil4rbEEbLn3Yh7urtUoZOKvbcHIIE1xxtC69XolWRY7mxBHYaLHZGe5xIrV7RFnUY7Vh0Ei21FugmPEoVKYZwtLwKAl0xNynkNgEEv1PtIy7c7a7Kozjj9WnAm1Hbhyw29WcAzKylc86vlNuprOVew6JorQPUeymHANwuhET18AnS07PeXm+IfNn2cPQcFX7efeU5AnC7QmhUThUfSx+EJ7Wjyrsso285Cd+TI3eHud8KANwyfEDxjr0LOHO56VVvWhoC8mg25JgFdp7tiTWicn8DQg/5jkRGbqwyW4POfvQuat2VXF5X+L4OLO78BQAV63+xWqmsnX0ntTNNLF+6V+656B1XAzsoc1Heb6rz5vBjY1LY407A2kO5t09o9N2Dn1w+abbVFZ7v4mzMZmrDYQjifrQeY4gxbBvnSOkzq3i9JlAUEjZpA4deOEE5cu9acZnsmT1++DzroeWnis3SvRGbs4Hji0YlhEOb2dEmSc8Z3GEsBPCnvLAjhpJHGV/kjNdyXvHC00EAzfLT7NfOYIbnM4k9Z+BzshDIfiSS7ktPzGb2InS5/fi/pPJDU37ZtAySUSlshz1C7MmVEwcAZr94YF1XhiXFUgBy7635VPKDOoyIf8Gr1EPmMOaUMg1RcXT2o4eoRnUT11yXEUJ5//H80wqs0xZ4ZUuVNyZLYl5qeqxx97fT7Jc1WYaGPM24TsRQB4wtbIEAF0boWLa5TU0maLf9Q6e60wCsRd3Z8sHEIPhrgSHJcKGyagDVXEQDWKuCqbWD/IcRtHVZgKjDw17Oypv0Sf1F6DHIE9FRxuMXzKEMD5+1BaKNpPPPBH/TQA/yq65jMMczVTfBXdX+HDi3wePwdTwsaCne3bEqvxxFWxYLG7+TJg9VKWCv8CEpZJDFfyoq8Opq9QkKn6lH7RRALIcCRknlPy1CVRPXQvpedudhtlcRpJm1kL3SIaI8gJxW/5VU3mk9h7+IYIZrwrKaDktL8rwF7/FqoPHbpwd2Ecz6y+qeI4xfEkAFHM1sPQadHf5zDu2R25tL9kjjyEnYIQRp5pXGoZOAA2SDvugP6EM6imcSwlBrmZlr2IQSc5EzITh4KGDDMkOSInuZUApBMPMgmMRvkq30OJ505rrudKaJIUm+eCE+J+EwSx6T/KWTTjrppJNOOumkk0466aSTTjrppJNOOumkk0466aSTTjrppJNOOumkk0466aSTTjrppJNOOumkk0466aSTTjrppJNOOumkk0466aSTTjrpfPz8HzUgV7VhzIu+AAAAAElFTkSuQmCC",
    "sourceName": "明月书阁",
    "sourceUrl": "明月书阁",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "6/1000",
    "customOrder": -10100162,
    "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": 1774532972353,
    "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": "书源",
    "sourceIcon": "https://gitee.com/lyc486/yuedu/raw/master/favicon.gif",
    "sourceName": "洛娅橙的订阅",
    "sourceUrl": "https://www.luoyacheng.ip-ddns.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10100160,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214266657,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://static.gcores.com/assets/52fcb59ad1e09abecec58d39da6731cb.jpg",
    "sourceName": "机核GCORES",
    "sourceUrl": "https://www.gcores.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": true,
    "customOrder": -10100160,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "@js:JSON.stringify({\n\t\t\"Content-Type\": \"application/x-www-form-urlencoded;charset=utf-8\",\n\t \"deviceid\": java.androidId(),\n\t \"if-modified-since\": String(new Date()).replace(/(.*?)\\s(.*?)\\s(.*?)\\s(.*?)GMT.*/,'$1, $3 $2 $4 GMT')\n})",
    "jsLib": "const baseApi = \"https://api.lofter.com\";\nconst ver = \"product=lofter-android-8.3.20\";\nconst ver2 = \"product=lofter-android-7.4.4\";\nfunction S(e,s){\n\tconst {java} = this;\n\treturn String(java.getString(e,s??null))\n\t}\n\nfunction getCollectionSort(name,id,blogid){\n\treturn JSON.stringify({\n                [\"📖《\"+name+\"》倒序\"]:`${baseApi}/v1.1/postCollection.api?${ver2},{\"method\": \"POST\",\"body\":\"targetblogid=${blogid}&method=getCollectionSimple&offset={{(page-1)*50}}&limit=50&blogid=${blogid}&collectionid=${id}&order=0\"}`,\n                \"正序\":`${baseApi}/v1.1/postCollection.api?${ver2},{\"method\": \"POST\",\"body\":\"targetblogid=${blogid}&method=getCollectionSimple&offset={{(page-1)*50}}&limit=50&blogid=${blogid}&collectionid=${id}&order=1\"}`\n            })\n\t}\n\n\nfunction getUserSort(name,id){\n\treturn JSON.stringify({\n                [\"👤\"+name+\"的作品\"]:`${baseApi}/v2.0/blogHomePage.api?${ver},{\"method\":\"POST\",\"body\":\"targetblogid=${id}&supportposttypes=1%2C2%2C3%2C4%2C5%2C6&offset=0&method=getPostLists&postdigestnew=1&returnData=1&limit=18&checkpwd=1&needgetpoststat=1\"}`,\n                \"合集\":`${baseApi}/v1.1/postCollection.api?${ver},{\"method\":\"POST\",\"body\":\"targetblogid=${id}&method=getCollectionList&needViewCount=1&blogid=${id}\"}`,\n                \"粮单\":`${baseApi}/api-grain/grain/list.json?offset=0&blogId=${id}`,\n                \"推荐\":`${baseApi}/v1.1/batchdata.api?${ver},{\"method\":\"POST\",\"body\":\"targetblogid=${id}&method=shares&offset=0&limit=18\"}`\n            })\n\t}\n\n\nfunction getSearchUrl(k,t){\n    const {java} = this;\t  \n    let baseUrl = baseApi+\"/newsearch/\";\n    let result = \"\";\n    \n    switch(t) {\n        //用户\n    case 0:\n        result = baseUrl+'blog.json?key=' + k+ '&limit=10&offset=0';\n        break;\n        \n        //合集\n    case 1:\n        result = baseUrl+'collection.json?key=' + k+ '&limit=20&offset=0';\n        break;\n        \n        //粮单\n    case 2:\n        result = baseUrl+'grain.json?key='+ k +'&limit=10&offset=0'\n        break;\n        \n        //文章\n    case 3:\n        result = baseUrl+'post.json?key=' + k + '&sortType=0&offset=0&limit=20'\n        break;\n        //综合\n     default:\n        result = baseUrl+\"v2/all.json?\"+ver+\"&sortType=0&limit=20&offset=0&version=1&key=\"+k\n        break;\n        }\n        \n        return result\n}\n\nfunction getSearchSort(searchText){\n    return JSON.stringify({\n                \"综合\":this.getSearchUrl(searchText),\n                \"文章\":this.getSearchUrl(searchText,3),\n                \"合集\":this.getSearchUrl(searchText,1),\n                \"用户\":this.getSearchUrl(searchText,0),\n                \"粮单\":this.getSearchUrl(searchText,2),\n            })\n}\n\nfunction getTagSort(id){\n    const {java} = this;\n   return JSON.stringify({\n                [\"🏷\"+id+\"的发现\"]:baseApi + \"/recommend/tagRecom.json?\"+ver+\"&offset=0&count=2&tag=\"+id+\"&source=\",\n                \"总榜\":`${baseApi}/oldapi/tagPosts.api?product=${ver2}&method=newTagSearch&offset=0&limit=22&firstpermalink=null&tag=${id}&type=total,{\"method\": \"POST\",\"body\":\"null\"}`,\n                \"日榜\":`${baseApi}/oldapi/tagPosts.api?${ver2}&method=newTagSearch&offset=0&limit=22&firstpermalink=null&tag=${id}&type=date,{\"method\": \"POST\",\"body\":\"null\"}`,\n                \"周榜\":`${baseApi}/oldapi/tagPosts.api?${ver2}&method=newTagSearch&offset=0&limit=22&firstpermalink=null&tag=${id}&type=week,{\"method\": \"POST\",\"body\":\"null\"}`,\n                \"月榜\":`${baseApi}/oldapi/tagPosts.api?${ver2}&method=newTagSearch&offset=0&limit=22&firstpermalink=null&tag=${id}&type=month,{\"method\": \"POST\",\"body\":\"null\"}`,\n                \"合集\":baseApi+\"/newapi/postCollection/tagPage.json?offset=0&tag=\"+id,\n                \"作者\":`${baseApi}/v1.1/batchdata.api?${ver},{\"method\": \"POST\",\"body\":\"method=exploreblogs&offset=0&limit=20&tag=${id}&type=tag\"}`,\n                \"💬图\":`${baseApi}/newapi/tagPosts.json,{\"method\": \"POST\",\"body\":\"abFlag=old&${ver}&offset=0&lastposttime={\\{Date.now()}}&postYm=&returnGiftCombination=&range=0&firstpermalink=null&type=newComment&postTypes=2&postYmdEt=0&recentDay=0&protectedFlag=1&style=0&postYmdSt=0&tag=${id}\"}`,\n                \"💬文\":`${baseApi}/newapi/tagPosts.json,{\"method\": \"POST\",\"body\":\"abFlag=old&${ver}&offset=0&lastposttime={\\{Date.now()}}&postYm=&returnGiftCombination=&range=0&firstpermalink=null&type=newComment&postTypes=1&postYmdEt=0&recentDay=0&protectedFlag=1&style=0&postYmdSt=0&tag=${id}\"}`,\n                \"💬视频\":`${baseApi}/newapi/tagPosts.json,{\"method\": \"POST\",\"body\":\"abFlag=old&${ver}&offset=0&lastposttime={\\{Date.now()}}&postYm=&returnGiftCombination=&range=0&firstpermalink=null&type=newComment&postTypes=4&postYmdEt=0&recentDay=0&protectedFlag=1&style=0&postYmdSt=0&tag=${id}\"}`,\n                \"💬最新评论\":`${baseApi}/newapi/tagPosts.json,{\"method\": \"POST\",\"body\":\"abFlag=old&${ver}&offset=0&postYm=&returnGiftCombination=&range=0&firstpermalink=null&type=newComment&postTypes=&postYmdEt=0&recentDay=0&protectedFlag=1&style=0&postYmdSt=0&tag=${id}\"}`,\n                \"🆕最新发布\":`${baseApi}/newapi/tagPosts.json,{\"method\": \"POST\",\"body\":\"abFlag=old&${ver}&offset=0&postYm=&returnGiftCombination=&range=0&firstpermalink=null&type=new&postTypes=&postYmdEt=0&recentDay=0&protectedFlag=1&style=0&postYmdSt=0&tag=${id}\"}`,\n                \"🆕图\":`${baseApi}/newapi/tagPosts.json,{\"method\": \"POST\",\"body\":\"abFlag=old&${ver}&offset=0&postYm=&returnGiftCombination=&range=0&firstpermalink=null&type=new&postTypes=2&postYmdEt=0&recentDay=0&protectedFlag=1&style=0&postYmdSt=0&tag=${id}\"}`,\n                \"🆕文\":`${baseApi}/newapi/tagPosts.json,{\"method\": \"POST\",\"body\":\"abFlag=old&${ver}&offset=0&postYm=&returnGiftCombination=&range=0&firstpermalink=null&type=new&postTypes=1&postYmdEt=0&recentDay=0&protectedFlag=1&style=0&postYmdSt=0&tag=${id}\"}`,\n                \"🆕视频\":`${baseApi}/newapi/tagPosts.json,{\"method\": \"POST\",\"body\":\"abFlag=old&${ver}&offset=0&postYm=&returnGiftCombination=&range=0&firstpermalink=null&type=new&postTypes=4&postYmdEt=0&recentDay=0&protectedFlag=1&style=0&postYmdSt=0&tag=${id}\"}`,\n                \"🔎搜索\":`{\\{let a=\"\";svg=String(java.base64Encode(\\`<svg width=\"1190\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/><text x=\"220\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"90\" fill=\"#333\" font-weight=\"bold\">输入要搜索的内容</text><text x=\"30\" y=\"200\" font-family=\"Arial, sans-serif\" font-size=\"50\" fill=\"#333\">下拉【🔍搜索】或刷新【🔍搜索】分类弹出输入框</text></svg>\\`));try{a=java.getVerificationCode('data:image/svg+xml;base64,'+svg);}catch(e){};source.put(\"keyword\",a)}}`,\n                \"搜索文章\":`${baseApi}/newsearch/tag/post2.json?tag=${id}&key={\\{source.get(\"keyword\")}}&excludeKey=&postTypes=&postYm=&offset=0`,\n                \"搜索合集\":`${baseApi}/newsearch/tag/collection.json?tag=${id}&key={\\{source.get(\"keyword\")}}&excludeKey=&postTypes=&postYm=&offset=0`,\n                \"搜索粮单\":`${baseApi}/newsearch/tag/grain.json?tag=${id}&key={\\{source.get(\"keyword\")}}&excludeKey=&postTypes=&postYm=&offset=0`,\n            });\n}\n\nfunction isL(){\n\tconst {source} = this;\n\ttry{\n\t\tsource.refreshJSLib();\n\t\treturn true\n\t\t}catch(e){\n\t\t\treturn false\n\t\t\t}\n\t}\n\nfunction getHtmlto(name,info,cover,type,url,id){\n    let yurl = url;\n    if(type==\"👤\")url=`http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-8.3.20,{\"method\": \"POST\",\"body\":\"targetblogid=${id}&method=getBlogInfoDetail&returnData=1&checkpwd=1&needgetpoststat=1\"}`;\nlet addUrl =  `legado://import/addToBookshelf?src=${encodeURIComponent(url)},{\"origin\":\"📖Lofter\"}`;\nlet c = `<button class=\"copy-btn\" onclick=\"handleSubscribe()\">\n                <span class=\"copy-icon\">👤</span>\n                <span class=\"copy-text\">订阅</span>\n            </button><button class=\"copy-btn\" onclick=\"toOpen()\">\n                <span class=\"copy-icon\">🔍</span>\n                <span class=\"copy-text\">查看</span>\n            </button>`;\t\nlet result = `\n    <title>${name}</title>\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n    <p><a href=\"legado://import/bookSource?src=${encodeURI(\"http://www.yckceo.com/yuedu/shuyuan/json/id/6873.json\")}\">导入lofter书源</a></p>\n    <div class=\"user-profile-card\">\n    <div class=\"user-header\">\n            <img src=\"${cover}\" class=\"user-avatar\">\n            <div class=\"user-meta\">\n                <h2 class=\"username\">${name}</h2>\n                <p class=\"user-bio\">${info}</p>\n            </div>\n        </div>\n        \n        <div class=\"copy-section\">\n            <div class=\"copy-content\" id=\"copyContent\">\n${type}${name}::${yurl}\n            </div>\n            <button class=\"copy-btn\" onclick=\"handleCopy()\">\n                <span class=\"copy-icon\">⎘</span>\n                <span class=\"copy-text\">一键复制后粘贴到分类URL</span>\n            </button>\n            ${this.isL()?'<div id=\"btns\">':\"\"}\n            <button class=\"copy-btn\" onclick=\"toAdd()\">\n                <span class=\"copy-icon\">📚</span>\n                <span class=\"copy-text\">加入</span>\n            </button>\n            ${this.isL()?c:\"\"}\n            ${this.isL()?'</div>':\"\"}\n            <div class=\"copy-feedback\" id=\"copyFeedback\"></div>\n        </div>\n        \n         \n    </div>\n\n    <style>\n    #btns{\n        display:flex;\n    }\n    \n        .user-profile-card{\n            max-width: 600px;\n            margin: 0 auto;\n            padding: 25px;\n            background: white;\n            border-radius: 12px;\n            box-shadow: 0 5px 15px rgba(0,0,0,0.08);\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n        }\n      \n        .user-header {\n            display: flex;\n            align-items: flex-start;\n            margin-bottom: 20px;\n        padding: 15px;\n        background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);\n        border-radius: 10px;\n        box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n        }\n        \n        .user-avatar {\n            width: 70px;\n            height: 70px;\n            border-radius: 50%;\n            object-fit: cover;\n            border: 3px solid white;\n            box-shadow: 0 3px 10px rgba(0,0,0,0.1);\n        }\n        \n        .user-meta {\n            margin-left: 18px;\n            flex: 1;\n        }\n        \n        .username {\n            margin: 0 0 5px;\n            color: #333;\n            font-size: 20px;\n            font-weight: 600;\n        }\n        \n        .user-bio {\n            margin: 0;\n            color: #666;\n            font-size: 15px;\n            line-height: 1.5;\n        }\n        \n        .copy-section {\n            margin-top: 25px;\n        }\n        \n        .copy-content {\n            padding: 15px;\n            background: #f8f9fa;\n            border-radius: 8px;\n            border: 1px solid #eaeaea;\n            font-family: 'Courier New', monospace;\n            font-size: 14px;\n            line-height: 1.5;\n            word-break: break-all;\n            white-space: pre-wrap;\n            margin-bottom: 15px;\n            max-height: 200px;\n            overflow-y: auto;\n        }\n        \n        .copy-btn {\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            padding: 12px 24px;\n            margin:10px 0px;\n            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);\n            border: none;\n            border-radius: 8px;\n            font-size: 15px;\n            font-weight: 500;\n            cursor: pointer;\n            transition: all 0.3s;\n            width: 100%;\n            box-shadow: 0 2px 5px rgba(0,0,0,0.1);\n        }\n        \n        .copy-btn:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 5px 10px rgba(0,0,0,0.15);\n        }\n        \n        .copy-icon {\n            font-size: 18px;\n            margin-right: 8px;\n        }\n        \n            #btns button{\n                padding:5px 5px;\n                margin:8px\n            }\n        \n        .copy-feedback {\n            height: 20px;\n            margin-top: 12px;\n            text-align: center;\n            font-size: 14px;\n            transition: all 0.3s;\n        }\n        \n        @media (max-width: 600px) {\n            .user-profile-card {\n                padding: 18px;\n                border-radius: 0;\n            }\n            \n            .user-header {\n                flex-direction: column;\n                align-items: center;\n                text-align: center;\n            }\n            \n            .user-meta {\n                margin-left: 0;\n                margin-top: 15px;\n            }\n            \n            .copy-content {\n                font-size: 13px;\n                padding: 12px;\n            }\n        }\n    </style>\n\n    <script>\n         const feedback = document.getElementById('copyFeedback');\n         function toAdd(){\n             window.location.href = '${addUrl}';\n         }\n         function toOpen(){\n             if(/📖/.test(\"${type}\")){\n                  run(\\`getCollectionSort(\"${name}\",\"${yurl.match(/collectionid=(\\d+)/)?.[1]}\",\"${yurl.match(/blogid=(\\d+)/)?.[1]}\")\\`).then(r=>java.open(\"sort\",r));\n              }else if(/👤/.test(\"${type}\")){\n               run(\\`getUserSort(\"${name}\",\"${id}\")\\`).then(r=>java.open(\"sort\",r));\n            }else if(/📗/.test(\"${type}\")){\n                java.open(\"sort\", '${yurl}',\"${type}${name} ${info.match(/^\\d+篇/)?.[0]??''}\");\n            }\n        }\n         \n         function handleSubscribe() {\n            try {\n                let id = \"${id||yurl.match(/(?:collectionid|grainId)=(\\d+)/)[1]}\"\n                let u = {\n                    \"id\":id,\n                    \"name\":\"${name}\",\n                    \"desc\":\\`${info.replace(/<hr>/g,'')}\\`,\n                    \"avatar\":\"${cover}\"\n                   };\n                   \n                   if(\"${type}\"===\"📖\"){\n                       let blogid = \"${yurl.match(/blogid=(\\d+)/)?.[1]}\";\n                       u.blogid = blogid\n                   }\n                 let type = \"${type}\";\n                 if(type === \"👤\") type = \"users\";\n                 if(type === \"📖\") type = \"collections\";\n                 if(type === \"📗\") type = \"grains\";\n                 let s = String(source.getVariable());\n                 s = /{/.test(s)?s:\"\";\n                let jsonData = JSON.parse(s || '{\"users\":[],\"collections\":[],\"grains\":[],\"tags\":[]}');\n               \n                let existingUser = jsonData[type].find(user => String(user.id) === id);\n    if (!existingUser) {\n        jsonData[type].push(u);\n        source.putVariable(JSON.stringify(jsonData));\n        java.toast(\"订阅成功\");\n        feedback.textContent = '订阅成功！';\n    }else{\n        java.toast(\"订阅已存在\");\n        feedback.textContent = '订阅已存在！';\n    }\n                feedback.style.color = '#4CAF50';\n                setTimeout(() => feedback.textContent = '', 2000);\n            } catch(err) {\n                feedback.textContent = '订阅失败';\n                feedback.style.color = '#F44336';\n                setTimeout(() => feedback.textContent = '', 2000);\n            }\n        }\n        \n        function handleCopy() {\n            const content = document.getElementById('copyContent');\n            \n            // 创建范围并选择文本\n            const range = document.createRange();\n            range.selectNode(content);\n            window.getSelection().removeAllRanges();\n            window.getSelection().addRange(range);\n            \n            try {\n                // 执行复制命令\n                const successful = document.execCommand('copy');\n                if(successful) {\n                    feedback.textContent = '复制成功！';\n                    feedback.style.color = '#4CAF50';\n                } else {\n                    feedback.textContent = '复制失败，请手动选择文本';\n                    feedback.style.color = '#F44336';\n                }\n            } catch(err) {\n                feedback.textContent = '复制错误: ' + err;\n                feedback.style.color = '#F44336';\n            }\n            \n            // 清除选择\n            window.getSelection().removeAllRanges();\n            \n            // 3秒后隐藏反馈\n            setTimeout(() => {\n                feedback.textContent = '';\n            }, 3000);\n        }\n    </script>\n    `;\n\t\nreturn result\t\n\t\n\t\n\t}\n",
    "lastUpdateTime": 1774782628331,
    "loadWithBaseUrl": true,
    "loginUrl": "https://www.lofter.com/front/login",
    "preload": false,
    "preloadJs": "window.java = java;\nwindow.source = source;\nwindow.run = run;",
    "ruleArticles": "<js>\nresult = result.replace(/:null/g,':\"\"').replace(/,\\s*null/g,'');\n\nlet a = JSON.parse(result);\na?.data && (a.data.topItem = (a.data.topItem&&a.data?.topItem?.itemType!==39) ? [a.data.topItem] : []);\na?.response && (a.response.topPost = a.response.topPost ? [a.response.topPost] : []);\nif(baseUrl.includes(\"ranklist.json\")){\n\tlet i = baseUrl.match(/t=(\\d+)/)?.[1];\n\ta = a.data.rankList[i];\n\t}\nresult = JSON.stringify(a);\n</js>\n$.data.topItem&&$.hotLists&&$.response.topPost&&$.response.items[*]&&$.response.posts[*]&&$.response.blogs[*]&&$.data.grains[*]&&$.data.posts[*]&&$.data.blogs[*]&&$.data.collections[*]&&$.data.grainList[*]&&$.response.collections[*]&&$.data.list[*]&&$.data.hot[*]&&$.data.recommend[*]<js>\na=result;\nbaseUrl.match(/newsearch/)?result=\"[{post:{title右上角三点，设置源变量确认搜索'}}]\":result=result;\n(source.getVariable()!=''||isL())?result=a:result=result;\n</js>\n$.[*]",
    "ruleContent": "<js>\nif(baseUrl.includes(\"data:hot\")){\n\tlet title = java.hexDecodeToString(result);\n\tif(baseUrl.includes(\"hotsearch\") || baseUrl.includes(\"hottag\")){\n\t\tresult = `<title>刷新跳转【搜索${title}】</title><script>\n    setTimeout(function() {\n        url = ${baseUrl.includes(\"hotsearch\")?getSearchSort(title):getTagSort(title)};\n        java.open(\"sort\",JSON.stringify(url));\n    window.close()\n},8);</script>`;\n\t\t}\n\t}else{\n\nif(/window.__initialize_data__/.test(result)){\n\tresult = result.match(/window.__initialize_data__ =([\\s\\S]+?)<\\/script>/)[1];\n\tjava.setContent(result);\n\t}\ncontent = String(java.getString(\"$..content||$..caption\"));\nimgs = eval(String(java.getString(\"$..photoLinks\")));\nlet tags = String(java.getString(\"$..tag\"));\nlet blogdomain = String(java.getString(\"$..blogInfo.blogName\"));\n\nlet author = String(java.getString(\"$..blogInfo.blogNickName\"));\nauthoru = `http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-7.4.4,{\"method\": \"POST\",\"body\":\"targetblogid=${java.getString(\"$..blogInfo.blogId\")}&method=getBlogInfoDetail&returnData=1&limit=2000&offset=0&&checkpwd=1&needgetpoststat=1\"}`;\nauthorurl= `legado://import/addToBookshelf?src=${encodeURIComponent(authoru)},{\"origin\":\"📖Lofter\"}`\n\nlet  postCollection =String(java.getString(\"$..postCollection.name\")); \nlet postNum = postCollection?\"（\"+String(java.getString(\"$..postCollection.postCount\"))+\"篇）\":\"\";\npostCollectionu = `https://api.lofter.com/v1.1/postCollection.api?product=lofter-android-7.4.4,{\"method\": \"POST\",\"body\":\"targetblogid=${java.getString(\"$..postCollection.blogId\")}&method=getCollectionSimple&offset=0&limit=500&blogid=${java.getString(\"$..postCollection.blogId\")}&collectionid=${java.getString(\"$..postCollection.id\")}&order=1\"}`;\n\npostCollectionurl= `legado://import/addToBookshelf?src=${encodeURIComponent(postCollectionu)},{\"origin\":\"📖Lofter\"}`\n\npostCollection = postCollection?`<p style=\"text-align:center\"><a class=\"toBook\" onclick='toOpen(\"📖\",\"${postCollection}\",\\`${postCollectionu}\\`,1)'>📖合集：</a><a href='${postCollectionurl}'>${postCollection}</a></p>`:\"\";\n\nauthor = `<p style=\"text-align:center\"><a class=\"toAuthor\" onclick='toOpen(\"👤\",\"${author}\",\\`${authoru}\\`,1)'>👤作者：</a><a href='${authorurl}'>${author}</a></p>${postCollection}`;\n\ntags = tags?tags.split(\",\").map(x=>{\n    let url = `https://api.lofter.com/oldapi/tagPosts.api?product=lofter-android-7.4.4&method=newTagSearch&offset={\\{(page-1) *18}}&limit=18&firstpermalink=null&tag=${x}&type=new,{\"method\": \"POST\",\"body\":\"null\"}`;\n\treturn `<label class=\"tag\" onclick='toOpen(\"🏷\",\"${x}\",\\`${url}\\`,1)'>${x}</label>`\n\t}).join(\"\"):null;\ntags = tags?`<div>${tags}</div>`:\"\";\nlet embed,img_height,img_width,video_first_img\ntry{\nembed = java.getString(\"$.response.posts[0].post.embed\")??\"{x:1}\";\nimg_height = java.getString(\"$.img_height\", embed);\nimg_width = java.getString(\"$.img_width\", embed);\nvideo_first_img = java.getString(\"$.video_first_img\", embed);\n}catch(e){\n\t//java.log(e)\n\t}\n// 获取视频URL\nlet videoUrl = /video_down_url\\\\\":\\\\\"(.*?)\\\\\"/.test(result) ? String(result).match(/video_down_url\\\\\":\\\\\"(.*?)\\\\\"/)[1] : \"\";\n\nvideo = videoUrl ? `<div style=\"display: flex; flex-direction: column; align-items: center; margin: 5px 0;\"> \n  \n  <div style=\"width: 100%; max-width: 100%; border: 2px solid #e0e0e0; border-radius: 8px; box-shadow: 0 8px 25px rgba(0,0,0,0.15); background: #000; overflow: hidden;\">\n    <video controls poster=\"${video_first_img}\" style=\"width: 100%; display: block;\">\n      <source src=\"${videoUrl}\" type=\"video/mp4\">\n    </video>\n  </div>\n</div>\n` : \"\";\n\nvideoUrl = videoUrl?`<div style=\"width: 100%; max-width: 90%; word-break: break-all; background: #f8f9fa; border: 1px solid #e9ecef; border-radius: 8px; padding: 12px 15px; font-family: 'Consolas', 'Monaco', monospace; font-size: 14px; color: #495057;\">\n    视频链接：${videoUrl}\n  </div>`:\"\";\n\nimg = \"\";\nif(imgs) {\n    imgs.forEach(x => {\n        if(x) {\n            img += `<div class=\"image-container\">\n                <img src=\"${x.orign.replace(/%7C.*/g, '')}\" loading=\"lazy\">\n            </div>\\n`;\n        }\n    });\n}\n\ncontent = content.replace(/<p[^>]*>\\s* * *<\\/p>/g, '')\n.replace(/\\s{2,}/g,'')\n.replace(/title=\"\"[^>]+|style=\"[^\"]+\"/g,'/')\n.replace(/(<img([^>]+)>)/g,'<div class=\"image-container\">$1</div>')\n.replace(/<a href=\"(.*?\\.lofter.com\\/post\\/.*?)\".*?>([^<]+)<\\/a>/g,'<a onclick=\\'openContent(\"$1\")\\' href=\\'javascript:;\\'>$2</a>')\n.replace(/<a loftermentionblogid=\"(\\d+)\" href=\"[^\"]+\".*?>@([^<]+)<\\/a>/g,`<a onclick='toOpen(\"👤\",\"$2\",\\`http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-7.4.4,{\"method\": \"POST\",\"body\":\"targetblogid=$1&method=getBlogInfoDetail&returnData=1&checkpwd=1&needgetpoststat=1\"}\\`,1)' href='javascript:;'>@$2</a>`);\n\ncontent = content.replace(/<p[^>]*>/g, '<p>'); // 移除p标签中的所有属性\n\nlet openUrlButton = `<button onclick=\"openUrl(1)\" \n                            style=\"\n                                background: #6c757d;\n                                color: white;\n                                border: none;\n                                padding: 8px 16px;\n                                border-radius: 4px;\n                                font-size: 14px;\n                                cursor: pointer;\n                                flex: 1;\n                                min-width: calc(33.33% - 7px);\n                                transition: background 0.2s ease;\n                            \"\n                            onmouseover=\"this.style.background='#5a6268';\"\n                            onmouseout=\"this.style.background='#6c757d';\">\n                        打开\n                    </button>`;\nlet addButton= `<button onclick=\"openUrl(0)\" \n                            style=\"\n                                background: #6c757d;\n                                color: white;\n                                border: none;\n                                padding: 8px 16px;\n                                border-radius: 4px;\n                                font-size: 14px;\n                                cursor: pointer;\n                                flex: 1;\n                                min-width: calc(33.33% - 7px);\n                                transition: background 0.2s ease;\n                            \"\n                            onmouseover=\"this.style.background='#5a6268';\"\n                            onmouseout=\"this.style.background='#6c757d';\">\n                        加入书架\n                    </button>`;\nlet starButton =  `<button onclick=\"handleSubscribe()\" \n                            style=\"\n                                background: #2c3e50;\n                                color: white;\n                                border: none;\n                                padding: 8px 16px;\n                                border-radius: 4px;\n                                font-size: 14px;\n                                cursor: pointer;\n                                flex: 1;\n                                min-width: calc(33.33% - 7px);\n                                transition: background 0.2s ease;\n                            \"\n                            onmouseover=\"this.style.background='#34495e';\"\n                            onmouseout=\"this.style.background='#2c3e50';\">\n                        订阅\n                    </button>`;\nlet postButton = ` <button id=\"postButton\" onclick=\"openPost()\" \n                            style=\"\n                                background: #2c3e50;\n                                color: white;\n                                border: none;\n                                padding: 8px 16px;\n                                border-radius: 4px;\n                                font-size: 14px;\n                                cursor: pointer;\n                                flex: 1;\n                                min-width: calc(33.33% - 7px);\n                                transition: background 0.2s ease;\n                            \"\n                            onmouseover=\"this.style.background='#34495e';\"\n                            onmouseout=\"this.style.background='#2c3e50';\">\n                        合集列表\n                    </button>`\n\nresult = `\n<title>${String(java.getString(\"$..title||$..content\")).replace(/<\\/?([a-z]+)[^>]*>|\\s/g,'')}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n${String(java.getString(\"$..title\"))?'<h3 class=\"title-card\">'+java.getString(\"$..title\")+'</h3>'+author+'<hr>':author+\"<hr>\"}\n\n<div id=\"modalOverlay\" style=\"position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); display: flex; justify-content: center; align-items: center; z-index: 1001; opacity: 0; visibility: hidden; transition: all 0.3s ease; padding: 0;\">\n    <div id=\"modalContainer\" style=\"background-color: white;margin:0; padding:0;border-radius: 16px; width: 90%; max-width: 400px; max-height: 85vh; overflow: hidden; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15); transform: translateY(30px); transition: transform 0.3s ease;\">\n        <div style=\"padding: 4px 14px; border-bottom: 1px solid #f0f0f0; display: flex; justify-content: space-between; align-items: center; background-color: white;\">\n            <div style=\"font-size: 1rem; font-weight: 700; color: #1a1a1a;\">合集列表<span id=\"postnum\"></span></div>\n            <button id=\"closeModalBtn\" style=\"background: none; border: none; font-size: 1.8rem; color: #999; cursor: pointer; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: all 0.2s;\" onmouseover=\"this.style.backgroundColor='#f5f5f5'; this.style.color='#666';\" onmouseout=\"this.style.backgroundColor='transparent'; this.style.color='#999';\">×</button>\n        </div>\n        <div style=\"padding: 0; overflow-y: auto; max-height: calc(85vh - 80px);\">\n            <div id=\"collectionList\"></div>\n        </div>\n    </div>\n</div>\n\n\n<div class=\"post-container\">\n    <div class=\"post-content\">\n        ${content}\n    </div>\n    ${img}\n    ${video}\n    ${tags}\n</div>\n${videoUrl}\n    <div id=\"apiPopupOverlay\" \n         style=\"\n            display: none;\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: rgba(0, 0, 0, 0.6);\n            z-index: 1000;\n            justify-content: center;\n            align-items: center;\n         \" \n         onclick=\"closeApiPopup()\">\n        \n        <div id=\"apiPopup\" \n             style=\"\n                background: white;\n                border-radius: 8px;\n                padding: 0;\n                width: 90%;\n                max-width: 700px;\n                max-height: 80vh;\n                box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2);\n                position: relative;\n                display: flex;\n                flex-direction: column;\n             \" \n             onclick=\"event.stopPropagation();\">\n            \n            <div style=\"\n                background: #f8f9fa;\n                padding: 20px;\n                border-bottom: 1px solid #e9ecef;\n                border-radius: 8px 8px 0 0;\n                display: flex;\n                justify-content: space-between;\n                align-items: center;\n            \">\n                <h3 style=\"margin: 0; font-size: 16px; font-weight: 600; color: #333;\">\n                    API接口信息\n                </h3>\n                <button onclick=\"closeApiPopup()\" \n                        style=\"\n                            background: none;\n                            border: none;\n                            color: #666;\n                            font-size: 24px;\n                            cursor: pointer;\n                            padding: 0;\n                            line-height: 1;\n                            width: 30px;\n                            height: 30px;\n                            display: flex;\n                            align-items: center;\n                            justify-content: center;\n                            border-radius: 4px;\n                        \"\n                        onmouseover=\"this.style.background='#e9ecef';\"\n                        onmouseout=\"this.style.background='transparent';\">\n                    &times;\n                </button>\n            </div>\n            \n            <div style=\"padding: 20px; flex: 1; overflow: auto;\">\n                <textarea id=\"apiTextArea\" \n                          readonly\n                          style=\"\n                            width: 100%;\n                            height: 150px;\n                            padding: 12px;\n                            border: 1px solid #ddd;\n                            border-radius: 4px;\n                            font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n                            font-size: 13px;\n                            line-height: 1.5;\n                            color: #333;\n                            background: #fafafa;\n                            resize: none;\n                            outline: none;\n                            box-sizing: border-box;\n                          \"\n                          onfocus=\"this.select();\"></textarea>\n                \n                \n                <div style=\"display: flex; gap: 10px; margin-top: 20px; flex-wrap: wrap;\">\n                    <button onclick=\"selectAndCopy()\" \n                            style=\"\n                                background: #2c3e50;\n                                color: white;\n                                border: none;\n                                padding: 8px 16px;\n                                border-radius: 4px;\n                                font-size: 14px;\n                                cursor: pointer;\n                                flex: 1;\n                                min-width: calc(33.33% - 7px);\n                                transition: background 0.2s ease;\n                            \"\n                            onmouseover=\"this.style.background='#34495e';\"\n                            onmouseout=\"this.style.background='#2c3e50';\">\n                        复制\n                    </button>\n                    \n              ${isL()?openUrlButton:\"\"}\n              ${isL()?starButton:\"\"}\n              ${addButton}\n              ${postButton}\n\n            </div>\n                \n                <!-- 提示信息 -->\n                <div id=\"copySuccess\" \n                     style=\"\n                        display: none;\n                        background: #d4edda;\n                        border: 1px solid #c3e6cb;\n                        color: #155724;\n                        padding: 10px 15px;\n                        border-radius: 4px;\n                        margin-top: 15px;\n                        text-align: center;\n                        font-size: 13px;\n                     \">\n                    文本已复制到剪贴板\n                </div>\n                \n                <!-- 使用说明 -->\n                <div style=\"\n                    margin-top: 20px;\n                    padding: 12px;\n                    background: #f8f9fa;\n                    border-left: 4px solid #6c757d;\n                    border-radius: 4px;\n                    font-size: 13px;\n                    color: #495057;\n                \">\n                    <div style=\"font-weight: 600; margin-bottom: 5px;\">使用说明：</div>\n                    复制上述文本后，可粘贴到分类URL中使用\n                </div>\n            </div>\n        </div>\n    </div>\n\n<script>\n\nfunction renderCollections(collectionsData) {\n    collectionsData = collectionsData.response.collections;\n    const collectionList = document.getElementById('collectionList');\n    document.querySelector(\"#postnum\").textContent = \"（\"+collectionsData.length+\"个）\";\n    collectionList.innerHTML = '';\n    collectionsData.forEach(collection => {\n        const collectionItem = document.createElement('div');\n        collectionItem.style.cssText = 'display: flex; padding: 8px 10px; border-bottom: 1px solid #f0f0f0; align-items: center; justify-content: center;';\n       collectionItem.setAttribute('data-id', collection.id);\n       collectionItem.className = \"collectionItem\";\n       collectionItem.innerHTML = \\`\n       <div style=\"width: 88px; height: 88px; flex-shrink: 0; border-radius: 8px; overflow: hidden; margin-right: 16px; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\">\n           <img src=\"$\\{collection.coverUrl}\" style=\"width:100%;height:100%\">\n      </div>\n      <div class=\"name\" style=\"flex: 1; display: flex; flex-direction: column; justify-content: space-between; min-height: 88px;font-weight: 500;color:#10a37f;font-size: 0.9rem;\">$\\{collection.name}\n          <div style=\"font-size: 0.8rem; color: #666; line-height: 1.1; margin-bottom: 5px;\">$\\{collection.description}</div>\n          <div style=\"display: flex; justify-content: space-between; align-items: center;\">\n              <div style=\"font-size: 0.7rem; color: #999; display: flex; align-items: center;\">\n              $\\{collection.postCount}篇•$\\{collection.viewCount}浏览 <br>🏷$\\{collection.tags}\n              </div>\n          </div>\n       </div>\n\\`;\ncollectionList.appendChild(collectionItem);\n});\n\ndocument.querySelectorAll('.collectionItem').forEach(btn => {\n    btn.addEventListener('click', function() {\n        const id = this.getAttribute('data-id');\n        const textarea = document.getElementById('apiTextArea').value.split(\"::\");\n        let name = this.querySelector(\".name\").textContent;\n        n = name.split(\"\\\\n\")[0];\n        let url = textarea[1];\n        let targetblogid= url.match(/blogid=(\\\\d+)/)[1];\n        url =  \"https://api.lofter.com/v1.1/postCollection.api?product=lofter-android-7.4.4,\";\n        let post = {\"method\": \"POST\",\"body\":\"targetblogid=\"+targetblogid+\"&method=getCollectionSimple&offset=0&limit=500&blogid=\"+targetblogid+\"&collectionid=\"+id+\"&order=1\"}\n        url +=JSON.stringify(post);\n        toOpen(\"📖\",n,url,1,\"（\"+name.match(/(\\\\d+篇)•/)[1]+\"）\")\n      });\n});\n}\n\n\nfunction showModal() {\n    const modalOverlay = document.getElementById('modalOverlay');\n    const modalContainer = document.getElementById('modalContainer');\n    document.getElementById('apiPopupOverlay').style.zIndex = \"1000\";\n    modalOverlay.style.zIndex = \"9999\";\n    modalOverlay.style.opacity = '1';\n    modalOverlay.style.visibility = 'visible';\n    modalContainer.style.transform = 'translateY(0)';\n    document.body.style.overflow = 'hidden';\n}\n\nfunction hideModal() {\n    const modalOverlay = document.getElementById('modalOverlay');\n    const modalContainer = document.getElementById('modalContainer');\n    modalOverlay.style.opacity = '0';\n    modalOverlay.style.visibility = 'hidden';\n    modalContainer.style.transform = 'translateY(30px)';\n    document.body.style.overflow = 'auto';\n}\n\ndocument.getElementById('closeModalBtn').addEventListener('click', hideModal);\ndocument.getElementById('modalOverlay').addEventListener('click', function(e) {\n    if (e.target === this) {\n        hideModal();\n    }\n});\n\n// 显示弹窗\nfunction openContent(url){\n     try{\n             java.open(\"rss\", url);\n        }catch(e){\n             window.open(url)\n        }\n}\n\nasync function openPost(){\n    const textarea = document.getElementById('apiTextArea').value.split(\"::\");\n    let url = textarea[1];\n    let targetblogid= url.match(/blogid=(\\\\d+)/)[1];\n    let postUrl = \"https://api.lofter.com/v1.1/postCollection.api?product=lofter-android-8.3.20\";\n    const response = await fetch(postUrl, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/x-www-form-urlencoded',\n      },\n      body: \"targetblogid=\"+targetblogid+\"&method=getCollectionList&needViewCount=1&blogid=\"+targetblogid\n    });\n    let jsonData = await response.json();\n    showModal();\n    renderCollections(jsonData)\n}\n\n        function showApiPopup() {\n            document.getElementById('apiPopupOverlay').style.zIndex = \"9999\";\n            document.getElementById('modalOverlay').style.zIndex = \"1000\";\n            document.getElementById('apiPopupOverlay').style.display = 'flex';\n            document.getElementById('copySuccess').style.display = 'none';\n        }\n        \n        function closeApiPopup() {\n            document.getElementById('apiPopupOverlay').style.display = 'none';\n        }\n        \n        //打开\n        function openUrl(t) {\n            try{\n            const textarea = document.getElementById('apiTextArea').value.split(\"::\");\n            let name = textarea[0].match(/^..(.*)/)[1];\n            let type = textarea[0].match(/^(..)/)[1];\n            \n            let num = null;\n            if(/📖/.test(type)){\n                num = \"（\"+document.querySelector('#apiPopup h3').textContent.match(/(\\\\d+篇)/)[1]+\"）\";\n            }\n            \n            let url = textarea[1];\n            if(t==1){\n                toOpen(type,name,url,0,num)\n            }else if(t==0){\n                if(/targetblogid=/.test(url) && !url.includes(\"postCollection\")){\n                url = \\`http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-7.4.4,{\"method\": \"POST\",\"body\":\"targetblogid=$\\{url.match(/targetblogid=(\\\\d+)/)[1]}&method=getBlogInfoDetail&returnData=1&limit=500&offset=0&checkpwd=1&needgetpoststat=1\"}\\`;\n                }\n                url = url.replace(/{\\{.*?}}/g,'0').replace(/limit=\\\\d+/g,'limit=500')\n                url = \\`legado://import/addToBookshelf?src=$\\{encodeURIComponent(url)},{\"origin\":\"📖Lofter\"}\\`;\n                window.open(url)\n            }\n            \n            }catch(e){\n            }\n        }\n        \n        // 复制文本\n        function selectAndCopy() {\n            const textarea = document.getElementById('apiTextArea');\n            textarea.select();\n            textarea.focus();\n            \n            try {\n                const successful = document.execCommand('copy');\n                if (successful) {\n                    showCopySuccess();\n                } else {\n                    fallbackCopy();\n                }\n            } catch (err) {\n                fallbackCopy();\n            }\n        }\n        \n        // 显示复制成功提示\n        function showCopySuccess() {\n            const successMsg = document.getElementById('copySuccess');\n            successMsg.style.display = 'block';\n            successMsg.textContent = '✅ 文本已复制到剪贴板';\n            \n            setTimeout(() => {\n                successMsg.style.display = 'none';\n            }, 3000);\n        }\n        \n        // 备用复制方法\n        function fallbackCopy() {\n            const textarea = document.getElementById('apiTextArea');\n            textarea.select();\n            textarea.focus();\n            \n            try {\n                navigator.clipboard.writeText(textarea.value)\n                    .then(() => {\n                        showCopySuccess();\n                    })\n                    .catch(() => {\n                        alert('复制失败，请手动复制文本');\n                    });\n            } catch (err) {\n                alert('请手动选择并复制文本');\n            }\n        }\n        \n        // 点击弹窗外关闭弹窗\n        document.getElementById('apiPopupOverlay').addEventListener('click', closeApiPopup);\n\n\nfunction toOpen(type,name,url,f,num){\n    let targetblogid = url.match(/targetblogid=(\\\\d+)/)?.[1];\n\tif(/👤/.test(type)){\n\t\t url = \\`http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-7.4.4,{\"method\":\"POST\",\"body\":\"supportposttypes=1%2C2%2C3%2C4%2C5%2C6&targetblogid=$\\{targetblogid}&offset={\\{(page-1)*18}}&method=getPostLists&postdigestnew=1&returnData=1&limit=18&checkpwd=1&needgetpoststat=1\"}\\`;\n\t\t}\n        \n        url = String(url).replace(/offset=\\\\d+/g,'offset={\\{(page-1)*18}}').replace(/limit=\\\\d+/g,'limit=18');\n       document.querySelector(\"#apiPopup h3\").textContent= type+name+(/📖/.test(type)?(num??\"${postNum}\"):\"\");\n       \n                document.querySelector(\"textarea\").value=type+ name+\"::\"+url;\n                if(/🏷/.test(type)){\n                    document.querySelector(\"#postButton\").style.display = \"none\"\n                }else{\n                    document.querySelector(\"#postButton\").style.display = \"block\"\n                }\n                \n               showApiPopup();\n               \n        try{\n          if(f!==1){\n              if(/📖/.test(type)){\n                  run(\\`getCollectionSort(\"$\\{name}\",\"$\\{url.match(/collectionid=(\\\\d+)/)[1]}\",\"$\\{targetblogid}\")\\`).then(r=>java.open(\"sort\",r));\n              }else if(/👤/.test(type)){\n               run(\\`getUserSort(\"$\\{name}\",\"$\\{targetblogid}\")\\`).then(r=>java.open(\"sort\",r));\n            }else if(/🏷/.test(type)){\n                    run(\\`getTagSort(\"$\\{name}\")\\`).then(r=>java.open(\"sort\",r));\n              }\n          }\n        }catch(e){\n            \n        }\n\t} \n    \n function handleSubscribe(){\n      const textarea = document.getElementById('apiTextArea').value.split(\"::\");\n      let name = textarea[0].match(/^..(.*)/)[1];\n      let type = textarea[0].match(/^(..)/)[1];\n      let url = textarea[1];\n      url = url.replace(/{\\{.*?}}/,'0');\n      let id = url.match(/collectionid=(\\\\d+)/)?.[1]??url.match(/blogid=(\\\\d+)/)?.[1];\n       let s = String(source.getVariable());\n       s = /{/.test(s)?s:\"\";\n       let jsonData = JSON.parse(s || '{\"users\":[],\"collections\":[],\"grains\":[],\"tags\":[]}');\n\n      let existingUser;\n            try {\n                let u = {\n                    \"id\": id,\n                    \"name\":name,\n                    desc:\"\"                \n                   };\n                   \n                   if(type===\"📖\"){\n                       type = \"collections\";\n                       existingUser = jsonData[type].find(user => String(user.id) === id);\n                       if(existingUser){\n                           java.toast(\"订阅已存在\");\n                           return\n                       }\n                       let blogid = url.match(/blogid=(\\\\d+)/)?.[1];\n                       u.blogid = blogid;\n                       let postCollectionUrl = \"https://api.lofter.com/v1.1/postCollection.api?product=lofter-android-8.3.20,\"+JSON.stringify({\"method\":\"POST\",\"body\":\"method=getCollectionDetail&offset=0&limit=15&targetblogid=\"+blogid+\"&collectionid=\"+id+\"&blogid=\"+blogid+\"&order=0\"});\n                       let data = java.ajax(postCollectionUrl);\n                       data = JSON.parse(data).response.collection;\n                       u.avatar = data.coverUrl;\n                       u.desc = data.postCount+\"篇 🏷\"+ data.tags.replace(/,/g,'🏷')+\" \"+data.description;\n                   }\n                   \n                 if(type === \"👤\"){\n                     type = \"users\";\n                     existingUser = jsonData[type].find(user => String(user.id) === id);\n                       if(existingUser){\n                           java.toast(\"订阅已存在\");\n                           return\n                       }\n                     let userUrl = \"https://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-8.3.20,\"+JSON.stringify({\"method\":\"POST\",\"body\":\"targetblogid=\"+id+\"&method=getBlogInfoDetail&returnData=1&checkpwd=1&needgetpoststat=1\"});\n                     let data = java.ajax(userUrl);\n                     data = JSON.parse(data).response.blogInfo;\n                     u.avatar = data.bigAvaImg;\n                     u.desc = ((data?.verifyBlog?.desc??\"\" )+\"<br>\"+ data.selfIntro).replace(/^<br>/,'')\n                 }\n                 \n                 \n                 if(type === \"users\" || type === \"collections\"){\n                    if (!existingUser) {\n                        jsonData[type].push(u);\n                        source.putVariable(JSON.stringify(jsonData));\n                        java.toast(\"订阅成功\");\n                       }\n                }else if(type === \"🏷\"){\n                    existingUser = jsonData[\"tags\"].find(user => String(user) === name);\n                    if(existingUser){\n                           java.toast(\"订阅已存在\");\n                           return\n                     }\n                    if (!existingUser) {\n                        jsonData[\"tags\"].push(name);\n                        source.putVariable(JSON.stringify(jsonData));\n                        java.toast(\"订阅成功\");\n                       }\n                }\n            } catch(err) {\n                console.log(err)\n                java.toast(\"订阅失败\");\n            }\n }\n</script>\n`;\n\nif(String(java.getString(\"$..blogInfo.blogNickName\"))==\"\"){\n\tresult = String(java.getString(\"$..msg\"))\n\t}\nresult = result.replace(/(<p><br\\s*\\/><\\/p>){1,}/g,'')\n}\nresult\n</js>\n##tbc\\.##<br>&lrm;<br>",
    "ruleDescription": "@js:\nif(/newsearch\\/blog.json/.test(baseUrl) || String(java.get(\"prefix\"))==\"@\" || S(\"$.itemType\") ===\"38\" || baseUrl.includes(\"&t=2\")||baseUrl.includes(\"exploreblogs\")){\n    let url = `http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-7.4.4,{\"method\":\"POST\",\"body\":\"supportposttypes=1%2C2%2C3%2C4%2C5%2C6&targetblogid=${S('$.blogId||$.blogInfo.blogId')}&offset={\\{(page-1)*18}}&method=getPostLists&postdigestnew=1&returnData=1&limit=18&checkpwd=1&needgetpoststat=1\"}`;\n    let info = `${S('$..authName')}<hr>${S('$..selfIntro')}`;\n    result = getHtmlto(S(\"$.blogNickName||$.blogInfo.blogNickName||$.title\"),info,S(\"$.bigAvaImg||$.blogInfo.bigAvaImg||$.img\"),\"👤\",url,S('$.blogId||$.blogInfo.blogId'));\n} else if(/newsearch[^']+grain.json/.test(baseUrl) || String(java.get(\"prefix\"))==\"%\"){\n    let grainurl = 'https://api.lofter.com/api-grain/grain/getDetail.json?grainId='+S(\"$.id\")+'&offset=0';\n    let info = `${S('$.postCount')}篇🏷${S('$.tags')}\\n<hr>${S(\"$.description\")}`;\n    result = getHtmlto(S(\"$.name\"),info,S(\"$.coverUrl\"),\"📗\",grainurl);\n    \n}else if(/newsearch[^']+collection.json|getCollectionList|postCollection\\/tagPage/.test(baseUrl) || String(java.get(\"prefix\"))==\"#\" ||String(java.get(\"prefix\")) == \"＃\"){\n        blogid = '{{$.blogId}}';\n        id = '{{$.id}}';\n         let curl = 'https://api.lofter.com/v1.1/postCollection.api?product=lofter-android-7.4.4,{\"method\": \"POST\",\"body\":\"targetblogid=' +blogid+'&method=getCollectionSimple&offset={\\{(page-1)*2000}}&limit=2000&blogid=' + blogid + '&collectionid=' + id + '&order=1\"}';\n         let info = `${S('$.postCount')}篇🏷${S('$.tags||$.tagList')}`\n         result = getHtmlto(S(\"$.name\"),info,S(\"$.coverUrl\"),\"📖\",curl)\n        curl = `legado://import/addToBookshelf?src=${encodeURIComponent(curl)},{\"origin\":\"📖Lofter\"}`;\n}else {\n    result = \"\";\n}\nresult\n",
    "ruleImage": "{{$..firstImageUrl##.*?(https.*?)\"##$1###}}{{$..postView.firstImage.orign||$.postData.blogInfo.bigAvaImg||$..blogInfo.bigAvaImg||$..bigAvaImg||$..coverUrl||$.img}}##(http.*?)https?.*##$1\n<js>\nif(/^http/.test(result)){\nresult = result+\",\"+JSON.stringify({'headers':{'referer':\"http://www.lofter.com\",\"if-modified-since\":\"\"}});\n}\nresult\n</js>",
    "ruleLink": "@js:\ntry{\nif (String(java.get(\"prefix\")) == \"@\" ){\n        id = S('$.blogId');\n        result = 'http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-7.4.4,{\"method\": \"POST\",\"body\":\"targetblogid=' + id + '&method=getBlogInfoDetail&returnData=1&checkpwd=1&needgetpoststat=1\"}'\n    } else if (String(java.get(\"prefix\")) == \"%\") {\n        result = `http://www.lofter.com@js:'data:grain;base64,${java.base64Encode(S(\"$.id\")+\"❌\"+S(\"$.userId\")+\"❌\"+S(\"$.name\"))},{\"type\":\"\"}'`;\n        result  = isL()?result:S(\"$.id\")+\"&\"+S(\"$.userId\");\n    } else if (String(java.get(\"prefix\")) == \"#\" || String(java.get(\"prefix\")) == \"＃\") {\n        blogid = S('$.blogId');\n        id = S('$.id}}');\n        blogName = S('$.blogName}}');\n        result = `http://www.lofter.com@js:'data:collections;base64,${java.base64Encode(blogid+\"❌\"+id+\"❌\"+blogName+\"❌\"+S(\"$.name\"))},{\"type\":\"\"}'`;\n       result  = isL()?result:id+\"&\"+blogid;\n    }else if(baseUrl.includes(\"ranklist.json\")){\n        let title = String(S(\"$.title\")).replace(/^#\\s*/g,'');\n        let blogid = S(\"$.blogId\");\n        if(baseUrl.includes(\"t=0\")){\n            //热搜词\n            result = `http://www.lofter.com@js:'data:hotsearch;base64,${java.base64Encode(title)},{\"type\":\"\"}'`;\n        }else if(baseUrl.includes(\"t=1\")){\n            //LOFTER热文榜\n            result = \"https://api.lofter.com/oldapi/post/detail.api?product=lofter-android-7.4.4\";\n            option = {\n                \"method\": \"POST\",\n                \"body\": \"targetblogid=\"+S(\"$.blogId\")+\"&postid=\" +  S(\"$.postId\")\n            }\n           result =  result + \",\" + JSON.stringify(option)\n           \n        }else if(baseUrl.includes(\"t=2\")){\n            //神仙太太榜\n            result = `http://www.lofter.com@js:'data:hotuser;base64,${java.base64Encode(blogid)},{\"type\":\"\"}'`;\n        }else{\n            //其他标签\n            result = `http://www.lofter.com@js:'data:hottag;base64,${java.base64Encode(title)},{\"type\":\"\"}'`;\n        }\n    }else{\n        url = S('$.post.blogId||$.blogId||$..postView.blogId');\n        id = S('$.post.id') || S('$.id') || S('$..postView.id');\n        \n        if (url.match(/_blogid_\\d+/)) {\n            main = url.match(/_blogid_(\\d+)/)[1];\n            body = \"targetblogid=\" + main + \"&postid=\" + id;\n            result = `https://api.lofter.com/oldapi/post/detail.api?product=lofter-android-7.4.4,{\"method\":\"POST\",\"body\":\"' + String(body) + '\"}`;\n        } else {\n          \n            result = \"https://api.lofter.com/oldapi/post/detail.api?product=lofter-android-7.4.4\";\n            option = {\n                \"method\": \"POST\",\n                \"body\": \"targetblogid=\"+url+\"&postid=\" + id\n            }\n           result =  result + \",\" + JSON.stringify(option)\n        }\n    };\nresult\n}catch(e){\n    java.log(e)\n}",
    "ruleNextPage": "<js>\nif(/offset={\\{\\(page-1\\)\\s*\\*\\d+}\\}/.test(baseUrl)){\n\tlet p = baseUrl.match(/\\*(\\d+)\\}/)[1];\n\tbaseUrl = baseUrl.replace(/offset={\\{\\(page-1\\)\\s*\\*\\d+}\\}/,'offset='+p);\n\t}else if(S(\"$.data.offset\")){\n\t\t  let offset = String(java.getString(\"$.data.offset\"));\n\t\t  if(offset!=-1){\n\t\t  \tbaseUrl = baseUrl.replace(/offset=\\d+/,'offset='+offset).replace(/v2\\/all/,'all/post');\n\t\t  \t}\n\t}else if(/offset=\\d+/.test(baseUrl)){\n\t\t offset =Number(baseUrl.match(/offset=(\\d+)/)[1]);\n    let limit = Number(baseUrl.match(/limit=(\\d+)/)[1]);\n    baseUrl = baseUrl.replace(/offset=\\d+/,'offset='+(offset+limit));\n\t\t}\n</js>",
    "rulePubDate": "$.post.publishTime||$.publishTime||$..postView.publishTime\n@js:\na=parseInt(result)>0?java.timeFormat(parseInt(result)):'';\nresult = S(\"$.score\")+(S(\"$.post.top\")===\"1\"?\"【🔝置顶】\":\"\")+ a+\" \"+ S(\"$.postCount\").replace(/^[^\\d]+.*/g,'')+\"篇•\"+S(\"$.post.tag||$.tagList||$..tags||$..tagList||$.commonUsedTags\").replace(/\\n|\"*,\"*|\\[\"/g,'🏷').replace(/\"\\]|\\[\\]/g,'')+\"📖\"+S(\"$.authName&&$.selfIntro&&$..$..postView.digest&&$.post.digest&&$.postDigest||$..selfIntro&&$..authName\");\nresult.replace(/\\s+篇•|•$|<\\/*[a-z]+.*?>|\\n|📖$/g,' ')",
    "ruleTitle": "{{$..longInfo.title}}•{{$.post.title||$.post.noticeLinkTitle||$..postView.title||$..postView.digest||$.name||$.title||$.post.digest||$.blogNiceName||$.blogNickName||$.noticeLinkTitle||$.digest||$.blogInfo.blogNiceName||$.blogNickName||$.blogInfo.blogNickName||$.post.blogInfo.blogNickName||$.post.blogInfo.blogId||$.post.blogPageUrl}}{{S(\"$.icon\")?\"🔥\":\"\"}}\n<js>\njava.log(src)\n\n\nif(/api-grain/.test(baseUrl)&&!baseUrl.includes(\"list.json\")){\n\tresult = S(\"$..postView.title||$..postView.digest\");\n\tif(S(\"$..viewRankPublic\")==\"false\"){\n\t\tresult = result+\"【❌作品被删除】\"\n\t\t}\n}\na=result.replace(/^(.{0,15})/,'$1').replace(/<.*?>/g,'').replace(/^•/,'');\njava.put('text',a);\na</js>",
    "searchUrl": "@js:\nlet prefix = key.charAt(0);\njava.put(\"prefix\",prefix);\nlet offset = '{\\{(page-1) *' + (prefix === '%' ? '10}' : (prefix === '@' ? '10}' : '20}')) + '}';\nlet baseUrl = \"https://api.lofter.com/newsearch/\"\nswitch(prefix) {\n    case '@':\n        result = baseUrl+'blog.json?key=' + key.slice(1)+ '&limit=10&offset=' + offset;\n        break;\n    case '#':\n    case '＃':\n        result = baseUrl+'collection.json?key=' + key.slice(1) + '&limit=20&offset=' + offset;\n        break;\n    case '%':\n        result = baseUrl+'grain.json?key='+key.slice(1)+'&limit=10&offset=' + offset;\n        break;\n    default:\n        let header = {\n            \"headers\": {\n                \"Content-Type\": \"application/x-www-form-urlencoded;charset=utf-8\",\n                \"deviceid\": java.androidId(),\n                \"if-modified-since\": String(new Date()).replace(/(.*?)\\s(.*?)\\s(.*?)\\s(.*?)GMT.*/,'$1, $3 $2 $4 GMT')\n            }\n        };\n        result = baseUrl+'post.json?key=' + key + '&sortType=0&offset=' + offset + '&limit=20,' + JSON.stringify(header);\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "🏷双女主::https://api.lofter.com/oldapi/tagPosts.api?product=lofter-android-7.4.4&method=newTagSearch&offset={{(page-1) *22}}&limit=22&firstpermalink=null&tag=双女主&type=new,{\"method\": \"POST\",\"body\":\"null\"}\n🏷橘气::https://api.lofter.com/oldapi/tagPosts.api?product=lofter-android-7.4.4&method=newTagSearch&offset={{(page-1) *18}}&limit=18&firstpermalink=null&tag=橘气&type=new,{\"method\": \"POST\",\"body\":\"null\"}\n🏷手机壁纸::https://api.lofter.com/oldapi/tagPosts.api?product=lofter-android-7.4.4&method=newTagSearch&offset={{(page-1) *22}}&limit=22&firstpermalink=null&tag=手机壁纸&type=new,{\"method\": \"POST\",\"body\":\"null\"}\n🏷百合文::https://api.lofter.com/oldapi/tagPosts.api?product=lofter-android-7.4.4&method=newTagSearch&offset={{(page-1) *18}}&limit=18&firstpermalink=null&tag=百合文&type=new,{\"method\": \"POST\",\"body\":\"null\"}\n🏷短视频::https://api.lofter.com/oldapi/tagPosts.api?product=lofter-android-7.4.4&method=newTagSearch&offset={{(page-1) *22}}&limit=22&firstpermalink=null&tag=短视频&type=new,{\"method\": \"POST\",\"body\":\"null\"}\n\n\n🔍搜索::{{let a=\"\";svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/><text x=\"220\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"50\" fill=\"#333\" font-weight=\"bold\">输入要搜索的内容，格式如下：</text><text x=\"150\" y=\"200\" font-family=\"Arial, sans-serif\" font-size=\"50\" fill=\"#333\" font-weight=\"bold\">文章名  @用户名  #合集名  %粮单名</text><text x=\"190\" y=\"290\" font-family=\"Arial, sans-serif\" font-size=\"30\" fill=\"#333\">下拉【🔍搜索】或刷新【🔍搜索】分类弹出输入框</text></svg>`));if(page==1){try{a=java.getVerificationCode('data:image/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()};source.setVariable(a);}else{a=source.getVariable()};key = String(a);let prefix = key.charAt(0);java.put(\"prefix\",prefix);let offset=0;let baseUrl = \"https://api.lofter.com/newsearch/\";switch(prefix) {case '@':result = baseUrl+'blog.json?key=' + key.slice(1)+ '&limit=10&offset=' + offset;break;case '#':case '＃':result = baseUrl+'collection.json?key=' + key.slice(1) + '&limit=10&offset=' + offset;break;case '%':result = baseUrl+'grain.json?key='+key.slice(1)+'&limit=10&offset=' + offset;break;default:let header = {\"headers\": {\"Content-Type\": \"application/x-www-form-urlencoded;charset=utf-8\",\"deviceid\": java.androidId(),\"if-modified-since\": String(new Date()).replace(/(.*?)\\s(.*?)\\s(.*?)\\s(.*?)GMT.*/,'$1, $3 $2 $4 GMT')} };result = baseUrl+'post.json?key=' + key + '&sortType=0&offset=' + offset + '&limit=10,' + JSON.stringify(header);};result}}\n\n👤砂上雪::http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-7.4.4,{\"method\":\"POST\",\"body\":\"supportposttypes=1%2C2%2C3%2C4%2C5%2C6&blogdomain=taste-s.lofter.com&offset={{(page-1)*18}}&method=getPostLists&postdigestnew=1&returnData=1&limit=18&checkpwd=1&needgetpoststat=1\"}",
    "sourceComment": "配合使用改版阅读sigma效果更佳【先更新软件，再导入书源】\nhttps://loyc.xyz/c/legado.html\n\n下拉【🔍搜索】或刷新【🔍搜索】分类搜索\n\n🏷标签名::https://api.lofter.com/oldapi/tagPosts.api?product=lofter-android-7.4.4&method=newTagSearch&offset={{(page-1) *22}}&limit=22&firstpermalink=null&tag=标签名&type=new,{\"method\": \"POST\",\"body\":\"null\"}",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/af/c2/00/afc200a4-978b-193a-a749-2151041ef09e/AppIcon-1x_U007ephone-0-0-0-85-220-0.png/492x0w.webp",
    "sourceName": "📖\nLofter",
    "sourceUrl": "Lofter",
    "startHtml": "<!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\">\n    <title>LOFTER订阅</title>\n</head>\n<body>\n    <div class=\"container\">\n        <div class=\"sub-options\">\n            <div class=\"category-tabs\">\n                <button class=\"category-tab active\" data-category=\"user\">博主</button>\n                <button class=\"category-tab\" data-category=\"collection\">合集</button>\n                <button class=\"category-tab\" data-category=\"grain\">粮单</button>\n                <button class=\"category-tab\" data-category=\"tag\">标签</button>\n            </div>\n            <div class=\"search-box\">\n                <input type=\"text\" placeholder=\"搜索当前列表（搜索空内容显示全部）\">\n                <button class=\"search-btn\">搜索</button>\n            </div>\n        </div>\n\n        <div class=\"content-area\">\n            <div class=\"subscribe-list\" id=\"subscribe-list\">\n                <!-- 订阅列表-->\n            </div>\n        </div>\n    </div>\n\n    <!-- 底部按钮区域 -->\n    <div class=\"bottom-buttons\">\n        <button class=\"bottom-button\" data-type=\"search\">\n            <span class=\"bottom-button-icon\">🔍</span>\n            <span class=\"bottom-button-text\">搜索</span>\n        </button>\n        <button class=\"bottom-button\" data-type=\"hot\">\n            <span class=\"bottom-button-icon\">🔥</span>\n            <span class=\"bottom-button-text\">榜单</span>\n        </button>\n        <button class=\"bottom-button\" data-type=\"hotlist\">\n            <span class=\"bottom-button-icon\">💡</span>\n            <span class=\"bottom-button-text\">发现</span>\n        </button>\n        <button class=\"bottom-button\" data-type=\"login\">\n            <span class=\"bottom-button-icon\">👤</span>\n            <span class=\"bottom-button-text\">支持</span>\n        </button>\n    </div>\n\n    <!-- 搜索弹窗 -->\n    <div class=\"search-modal\" id=\"search-modal\">\n        <div class=\"search-modal-content\">\n            <div class=\"search-modal-header\">\n                <h3 class=\"search-modal-title\">搜索</h3>\n                <button class=\"search-modal-close\" id=\"search-modal-close\">×</button>\n            </div>\n            <input type=\"text\" class=\"search-modal-input\" id=\"search-modal-input\" placeholder=\"输入搜索关键词\">\n            <div class=\"search-history\">\n                <div class=\"search-history-title\"><a>历史搜索</a> <span id=\"search-clear\" class=\"search-clear\">×清空历史</span></div>\n                \n                <div class=\"search-history-list\" id=\"search-history-list\">\n                    <!-- 历史搜索记录会通过JS动态生成 -->\n                </div>\n            </div>\n            <div class=\"search-modal-actions\">\n                <button class=\"search-modal-cancel\" id=\"search-modal-cancel\">取消</button>\n                <button class=\"search-modal-confirm\" id=\"search-modal-confirm\">确认</button>\n            </div>\n        </div>\n    </div>\n    \n    <!-- 登录弹窗 -->\n    <div class=\"login-modal\" id=\"login-modal\">\n        <div class=\"login-modal-content\">\n            <div class=\"login-modal-header\">\n                <h3 class=\"login-modal-title\">登录</h3>\n                <button class=\"login-modal-close\" id=\"login-modal-close\">×</button>\n            </div>\n            \n            <div class=\"login-modal-actions\">\n                <button class=\"login-modal-my\" id=\"login-modal-my\">我的关注</button>\n                <button class=\"login-modal-cancel\" id=\"login-modal-cancel\">跳转登录</button>\n                <button class=\"login-modal-confirm\" id=\"login-modal-confirm\">退出登录</button>\n            </div>\n        </div>\n    </div>\n\n    <!-- 备注弹窗 -->\n    <div class=\"remark-modal\" id=\"remark-modal\">\n        <div class=\"remark-modal-content\">\n            <div class=\"remark-modal-header\">\n                <h3 class=\"remark-modal-title\">设置备注</h3>\n                <button class=\"remark-modal-close\" id=\"remark-modal-close\">×</button>\n            </div>\n            <input type=\"text\" class=\"remark-modal-input\" id=\"remark-modal-input\" placeholder=\"输入备注\">\n            <div class=\"remark-modal-actions\">\n                <button class=\"remark-modal-cancel\" id=\"remark-modal-cancel\">取消</button>\n                <button class=\"remark-modal-confirm\" id=\"remark-modal-confirm\">确认</button>\n            </div>\n        </div>\n    </div>\n\n</body>\n</html>",
    "startJs": "const baseApi = \"https://api.lofter.com\";\nconst ver = \"product=lofter-android-8.3.20\";\nlet s = source.getVariable();\ns = /{/.test(s)?s:\"\";\nconst mockData = JSON.parse(s || '{\"users\":[],\"collections\":[],\"grains\":[],\"tags\":[]}');\n\n// 当前数据状态\nlet currentData = [...mockData.users];\nlet currentCategory = 'user';\nlet remarkItemId = null;\nlet searchHistory = JSON.parse(source.get('lofterSearchHistory') || '[]');\nlet selectedItemId = null;\nlet isSortMode = false;\n\nfunction saveDataToJson() {\n    switch(currentCategory) {\n        case 'user':\n            mockData.users = [...currentData];\n            break;\n        case 'collection':\n            mockData.collections = [...currentData];\n            break;\n        case 'grain':\n            mockData.grains = [...currentData];\n            break;\n        case 'tag':\n            mockData.tags = [...currentData];\n            break;\n    }\n    source.putVariable(JSON.stringify(mockData));\n}\n\n//点击列表跳转对应\nfunction handleItemClick(category, item) {\n    let url,name;\n    switch(category) {\n        case 'user':\n            run(`getUserSort(\"${item.name}\",\"${item.id}\");`).then(r=>java.open(\"sort\",r));\n            return;\n        case 'collection':\n            run(`getCollectionSort(\"${item.name}\",\"${item.id}\",\"${item.blogid}\");`).then(r=>java.open(\"sort\",r));\n            return;\n        case 'tag':\n            run(`getTagSort(\"${item}\");`).then(r=>java.open(\"sort\",r));\n            return;\n        case 'grain':\n           url = JSON.stringify({\n                [\"📗《\"+item.name+\"》\"]:\"https://api.lofter.com/api-grain/grain/getDetail.json?grainId=\"+item.id+\"&offset=0\"\n            })\n            java.open(\"sort\", url,item.name);\n            break;\n    }\n}\n\ndocument.addEventListener('DOMContentLoaded', function() {\n    renderSubscribeContent(currentCategory);\n    const categoryTabs = document.querySelectorAll('.category-tab');\n    categoryTabs.forEach(tab => {\n        tab.addEventListener('click', function() {\n            categoryTabs.forEach(t => t.classList.remove('active'));\n            this.classList.add('active');\n            const category = this.getAttribute('data-category');\n            currentCategory = category;\n            switch(category) {\n                case 'user':\n                    currentData = [...mockData.users];\n                    break;\n                case 'tag':\n                    currentData = [...mockData.tags];\n                    break;\n                case 'grain':\n                    currentData = [...mockData.grains];\n                    break;\n                case 'collection':\n                    currentData = [...mockData.collections];\n                    break;\n            }\n            renderSubscribeContent(category);\n        });\n    });\n    \n    const searchBtn = document.querySelector('.search-btn');\n    searchBtn.addEventListener('click', function() {\n        const searchInput = document.querySelector('.search-box input');\n        const searchText = searchInput.value.toLowerCase();\n        const filteredData = currentData.filter(item => \n            item.name.toLowerCase().includes(searchText) || \n            item.desc.toLowerCase().includes(searchText)\n        );\n        \n        renderSubscribeList(filteredData);\n    });\n    \n    const bottomButtons = document.querySelectorAll('.bottom-button');\n    bottomButtons.forEach(button => {\n        button.addEventListener('click', function() {\n            const type = this.getAttribute('data-type');\n            handleBottomButtonClick(type);\n        });\n    });\n    \n    const searchModal = document.getElementById('search-modal');\n    const searchModalClose = document.getElementById('search-modal-close');\n    const searchModalCancel = document.getElementById('search-modal-cancel');\n    const searchModalConfirm = document.getElementById('search-modal-confirm');\n    const searchModalInput = document.getElementById('search-modal-input');\n    const searchclear = document.getElementById(\"search-clear\")\n    \n    searchModalClose.addEventListener('click', closeModal);\n    searchModalCancel.addEventListener('click', closeModal);\n    \n    searchModalConfirm.addEventListener('click', function() {\n        const searchText = searchModalInput.value.trim();\n        if (searchText) {\n            addToSearchHistory(searchText);\n            run(`getSearchSort(\"${searchText}\")`).then(r=>java.open(\"sort\",r))\n            closeModal();\n        }\n    });\n    \n    \n    const remarkModal = document.getElementById('remark-modal');\n    const remarkModalClose = document.getElementById('remark-modal-close');\n    const remarkModalCancel = document.getElementById('remark-modal-cancel');\n    const remarkModalConfirm = document.getElementById('remark-modal-confirm');\n    const remarkModalInput = document.getElementById('remark-modal-input');\n    \n    remarkModalClose.addEventListener('click', closeRemarkModal);\n    remarkModalCancel.addEventListener('click', closeRemarkModal);\n    remarkModalConfirm.addEventListener('click', function() {\n        const remarkText = remarkModalInput.value.trim();\n        if (remarkItemId) {\n            updateRemarkName(remarkItemId, remarkText);\n            closeRemarkModal();\n        }\n    });\n    \n    const contentArea = document.querySelector('.content-area');\n    let startX = 0;\n    let endX = 0;\n    \n    contentArea.addEventListener('touchstart', function(e) {\n        startX = e.touches[0].clientX;\n    }, { passive: true });\n    \n    contentArea.addEventListener('touchmove', function(e) {\n        const currentX = e.touches[0].clientX;\n        const diffX = currentX - startX;\n    }, { passive: false });\n    \n    contentArea.addEventListener('touchend', function(e) {\n        const endX = e.changedTouches[0].clientX;\n        const diffX = endX - startX;\n        const threshold = 50; \n        \n        if (Math.abs(diffX) > threshold) {\n            const currentTab = document.querySelector('.category-tab.active');\n            const tabs = Array.from(document.querySelectorAll('.category-tab'));\n            const currentIndex = tabs.indexOf(currentTab);\n            \n            if (diffX > 0 && currentIndex > 0) {\n                tabs[currentIndex - 1].click();\n            } else if (diffX < 0 && currentIndex < tabs.length - 1) {\n                tabs[currentIndex + 1].click();\n            }\n        }\n    }, { passive: true });\n});\n\nfunction getHotUrl(type){\n    return `${m}/api/container/getIndex?containerid=${encodeURIComponent(\"106003type=25&t=3&disable_hot=1&filter_type=\"+type)}&title=微博热搜&show_cache_when_error=1&extparam=${encodeURIComponent(\"seat=1&lcate=1001&mi_cid=100103&filter_type=realtimehot&pos=0_0&c_type=30&region_relas_conf=0&dgr=0&cate=10103&display_time=\"+parseInt(Date.now()/1000)+\"&pre_seqid=\"+Date.now()+\"020423224\")}`;\n}\n\n\n// 渲染订阅内容\nfunction renderSubscribeContent(category) {\n    let data = [];\n    \n    if (category === 'user') {\n        data = [...mockData.users];\n    } else if (category === 'tag') {\n        data = [...mockData.tags];\n        renderSubscribeTagList(data);\n        return;\n    } else if (category === 'collection') {\n        data = [...mockData.collections];\n    } else if (category === 'grain') {\n        data = [...mockData.grains];\n    }\n    renderSubscribeList(data);\n}\n\n\n// 渲染标签列表\nfunction renderSubscribeTagList(data){\n     currentCategory = \"tag\";\n     const subscribeList = document.getElementById('subscribe-list');\n     subscribeList.innerHTML = '';\n     \n     data.forEach(x=>{\n         const subscribeItem = document.createElement('div');\n         subscribeItem.className = 'subscribe-tag';\n         subscribeItem.innerHTML = `<span class=\"subscribe-tagname\">${x}</span>`;\n         const subscribeIdel = document.createElement('span');\n         subscribeIdel.className = 'subscribe-del';\n         subscribeIdel.textContent = \"×\";\n         subscribeItem.appendChild(subscribeIdel);\n         subscribeList.appendChild(subscribeItem);\n     });\n     const subscribeAddTag = document.createElement('div');\n     subscribeAddTag.className = 'subscribe-tag';\n     subscribeAddTag.innerHTML = '<span class=\"addtagname\" contenteditable=\"true\">输入标签</span><span class=\"addtag\">+</span>';\n     subscribeList.appendChild(subscribeAddTag);\n     \nsubscribeAddTag.querySelector(\".addtagname\").addEventListener('blur', function() {\n  const text = this.textContent.trim();\n  if (!text) this.textContent = '输入标签';\n});\n\nsubscribeList.querySelectorAll(\".subscribe-tag\").forEach(tag=>{\n          tag.addEventListener('click', function(e) {\n              if(!e.target.classList.contains(\"addtag\") && !e.target.closest('.addtagname')){\n                  let tagname = this.closest(\".subscribe-tag\").textContent.replace(/×$/g,'');\n                  handleItemClick(currentCategory, tagname);\n              }\n      })\n});\n        \n        subscribeList.querySelectorAll(\".subscribe-del\").forEach(x=>{\n            x.addEventListener('click', function(e) {\n                e.stopPropagation();\n                let tagname = this.closest(\".subscribe-tag\").textContent.replace(/×$/g,'');\n                if(confirm(\"确定要删除【\"+tagname+\"】这个标签吗？\")){\n                    const index = data.findIndex(item =>item === tagname);\n                    if (index !== -1) {\n                        data.splice(index, 1);\n                        currentData = data; \n                        renderSubscribeTagList(currentData);\n                        saveDataToJson();\n                        java.toast(`已删除标签: ${tagname}`);\n                       } else {\n                           java.toast(`未找到标签: ${tagname}`);\n                       }\n                    }\n                 })\n        })\n        \n        \n        subscribeList.querySelector(\".addtag\").addEventListener('click', function(e) {\n            e.stopPropagation();\n            let name = document.querySelector(\".addtagname\").textContent;\n            if(name.trim()){\n                if(data.indexOf(name) === -1) {\n                    data.push(name);\n                    currentData = data; \n                    renderSubscribeTagList(currentData);\n                    saveDataToJson();\n                    java.toast(\"添加成功\");\n                 } else {\n                     java.toast(\"已存在相同标签\");\n                   }\n                 }\n              });\n}\n\n// 渲染订阅列表\nfunction renderSubscribeList(data) {\n    const subscribeList = document.getElementById('subscribe-list');\n    subscribeList.innerHTML = '';\n    \n    data.forEach((item, index) => {\n        const subscribeItem = document.createElement('div');\n        subscribeItem.className = 'subscribe-item';\n        subscribeItem.setAttribute('data-id', item.id);\n        subscribeItem.setAttribute('data-index', index);\n        const avatarContent = item.avatar ? \n            `<img src=\"${item.avatar}\" alt=\"${item.name}\">` : \n            item.name.charAt(0);\n        \n        const displayName = item.remarkName ?(item.name + \" (\"+item.remarkName+\")\"):item.name;\n        \n        subscribeItem.innerHTML = `\n            <div class=\"subscribe-avatar\">${avatarContent}</div>\n            <div class=\"subscribe-details\">\n                <div class=\"subscribe-title\">${displayName}</div>\n                <div class=\"subscribe-desc\">${item.desc}</div>\n            </div>\n            <div class=\"subscribe-actions\">\n                <button class=\"subscribe-action delete\" data-action=\"delete\" title=\"删除\">❎</button>\n                <button class=\"subscribe-action remark\" data-action=\"remark\" title=\"设置备注\">🆔</button>\n                <button class=\"subscribe-action sort\" data-action=\"sort\" title=\"排序\">↕️</button>\n            </div>\n        `;\n        \n        if (isSortMode) {\n            const swapButton = document.createElement('button');\n            swapButton.className = 'subscribe-action swap';\n            swapButton.setAttribute('data-action', 'swap');\n            swapButton.setAttribute('title', '交换位置');\n            swapButton.textContent = '⇄';\n            subscribeItem.querySelector('.subscribe-actions').appendChild(swapButton);\n            \n            if (item.id === selectedItemId) {\n                subscribeItem.classList.add('selected');\n            }\n        }\n        \n        subscribeList.appendChild(subscribeItem);\n    });\n    \n    bindSubscribeActions();\n    if (!isSortMode) {\n        bindItemClickEvents();\n    }\n}\n\nfunction bindItemClickEvents() {\n    const subscribeItems = document.querySelectorAll('.subscribe-item');\n    \n    subscribeItems.forEach(item => {\n        item.addEventListener('click', function(e) {\n            if (e.target.classList.contains('subscribe-action')) {\n                return;\n            }\n            \n            const itemId = this.getAttribute('data-id');\n            const currentItem = currentData.find(item => item.id === itemId);\n            \n            if (currentItem) {\n                handleItemClick(currentCategory, currentItem);\n            }\n        });\n    });\n}\n\nfunction bindSubscribeActions() {\n    const deleteButtons = document.querySelectorAll('.subscribe-action.delete');\n    const remarkButtons = document.querySelectorAll('.subscribe-action.remark');\n    const sortButtons = document.querySelectorAll('.subscribe-action.sort');\n    const swapButtons = document.querySelectorAll('.subscribe-action.swap');\n    const subscribeItems = document.querySelectorAll('.subscribe-item');\n    deleteButtons.forEach(button => {\n        button.addEventListener('click', function(e) {\n            e.stopPropagation();\n            const itemElement = this.closest('.subscribe-item');\n            const itemId = itemElement.getAttribute('data-id')\n            if (confirm('确定要删除这个订阅吗？')) {\n                deleteSubscribeItem(itemId);\n            }\n        });\n    });\n    \n    remarkButtons.forEach(button => {\n        button.addEventListener('click', function(e) {\n            e.stopPropagation();\n            const itemElement = this.closest('.subscribe-item');\n            const itemId = itemElement.getAttribute('data-id');\n            const currentName = itemElement.querySelector('.subscribe-title').textContent\n            \n            openRemarkModal(itemId, currentName);\n        });\n    });\n    \n    sortButtons.forEach(button => {\n        button.addEventListener('click', function(e) {\n            e.stopPropagation();\n            toggleSortMode();\n        });\n    });\n    \n    swapButtons.forEach(button => {\n        button.addEventListener('click', function(e) {\n            e.stopPropagation();\n            const itemElement = this.closest('.subscribe-item');\n            const itemId = itemElement.getAttribute('data-id');\n            \n            handleSwapItem(itemId);\n        });\n    });\n    \n    if (isSortMode) {\n        subscribeItems.forEach(item => {\n            item.addEventListener('click', function(e) {\n                if (e.target.classList.contains('subscribe-action')) return;\n                \n                const itemId = this.getAttribute('data-id');\n                handleSelectItem(itemId);\n            });\n        });\n    }\n}\n\nfunction toggleSortMode() {\n    isSortMode = !isSortMode;\n    selectedItemId = null;\n    \n    if (isSortMode) {\n        alert('已进入排序模式，请先点击要移动的项目，再点击目标项目的交换按钮');\n    } else {\n        alert('已退出排序模式');\n    }\n    \n    renderSubscribeList(currentData);\n}\n\nfunction handleSelectItem(itemId) {\n    if (!isSortMode) return;\n    \n    selectedItemId = itemId;\n    \n    renderSubscribeList(currentData);\n}\n\nfunction handleSwapItem(targetItemId) {\n    if (!isSortMode || !selectedItemId) {\n        alert('请先选择要移动的项目');\n        return;\n    }\n    \n    if (selectedItemId === targetItemId) {\n        alert('不能与自己交换位置');\n        return;\n    }\n    \n    const selectedIndex = currentData.findIndex(item => item.id === selectedItemId);\n    const targetIndex = currentData.findIndex(item => item.id === targetItemId);\n    \n    if (selectedIndex === -1 || targetIndex === -1) return;\n    \n    [currentData[selectedIndex], currentData[targetIndex]] = \n        [currentData[targetIndex], currentData[selectedIndex]];\n    \n    selectedItemId = null;\n    renderSubscribeList(currentData);\n    saveDataToJson();\n}\n\n\nfunction deleteSubscribeItem(itemId) {\n    currentData = currentData.filter(item => item.id !== itemId);\n    renderSubscribeList(currentData);\n    saveDataToJson();\n}\n\nfunction openRemarkModal(itemId, currentName) {\n    remarkItemId = itemId;\n    const remarkModal = document.getElementById('remark-modal');\n    const remarkModalInput = document.getElementById('remark-modal-input');\n    \n    remarkModalInput.value = currentName;\n    remarkModal.classList.add('active');\n    remarkModalInput.focus();\n}\n\nfunction closeRemarkModal() {\n    const remarkModal = document.getElementById('remark-modal');\n    const remarkModalInput = document.getElementById('remark-modal-input');\n    \n    remarkModal.classList.remove('active');\n    remarkModalInput.value = '';\n    remarkItemId = null;\n}\n\nfunction updateRemarkName(itemId, remarkName) {\n    const itemIndex = currentData.findIndex(item => item.id === itemId);\n    if (itemIndex !== -1) {\n        currentData[itemIndex].remarkName = remarkName;\n    }\n    \n    renderSubscribeList(currentData);\n    saveDataToJson();\n}\n\nfunction handleBottomButtonClick(type) {\n    switch (type) {\n        case 'search':\n            const searchModal = document.getElementById('search-modal');\n            searchModal.classList.add('active');\n            document.getElementById('search-modal-input').focus();\n            renderSearchHistory();\n            break;\n        case 'hot':\n            url = JSON.stringify({\n                \"热词榜\":\"https://api.lofter.com/newapi/hotsearch/ranklist.json?\"+ver+\"&t=0\",\n                \"LOFTER热文榜\":\"https://api.lofter.com/newapi/hotsearch/ranklist.json?\"+ver+\"&t=1\",\n                \"神仙太太榜\":\"https://api.lofter.com/newapi/hotsearch/ranklist.json?\"+ver+\"&t=2\",\n                \"游戏创作榜\":\"https://api.lofter.com/newapi/hotsearch/ranklist.json?\"+ver+\"&t=3\",\n                \"热门影视榜\":\"https://api.lofter.com/newapi/hotsearch/ranklist.json?\"+ver+\"&t=4\",\n                \"二次元创作榜单\":\"https://api.lofter.com/newapi/hotsearch/ranklist.json?\"+ver+\"&t=5\"\n            });\n            java.open(\"sort\", url)\n            break;\n        case 'hotlist':\n            url = JSON.stringify({\n                \"推荐\":`${baseApi}/recommend/exploreRecom.json?product=${ver},{\"method\":\"POST\",\"body\":\"offset=0&feedTime=0&count=0\"}`,\n                \"文学\":`${baseApi}/recommend/domainPosts.json?${ver},{\"method\":\"POST\",\"body\":\"domainId=1538118079721&offset=0&feedTime=0&count=0\"}`,\n                \"绘画\":`${baseApi}/recommend/domainPosts.json?${ver},{\"method\":\"POST\",\"body\":\"domainId=1370406202794&offset=0&feedTime=0&count=0\"}`,\n                \"影视\":`${baseApi}/recommend/domainPosts.json?${ver},{\"method\":\"POST\",\"body\":\"domainId=1442207751226&offset=0&feedTime=0&count=0\"}`,\n                \"二次元\":`${baseApi}/recommend/domainPosts.json?${ver},{\"method\":\"POST\",\"body\":\"domainId=1370406175120&offset=0&feedTime=0&count=0\"}`,\n                \"乙游\":`${baseApi}/recommend/domainPosts.json?${ver},{\"method\":\"POST\",\"body\":\"domainId=18244400&offset=0&feedTime=0&count=0\"}`,\n                \"娱乐\":`${baseApi}/recommend/domainPosts.json?${ver},{\"method\":\"POST\",\"body\":\"domainId=1430907486999&offset=0&feedTime=0&count=0\"}`,\n                \"视频\":`${baseApi}/recommend/videoFlow.json?offset=0&limit=10`,\n            })\n            java.open(\"sort\", url);\n            break;\n        case 'login':\n            java.showPhoto(\"https://gitee.com/guaner001125/booksource/raw/master/%E5%9B%BE%E7%89%87/guaner.webp\")\n            break;\n    }\n}\n\nfunction renderSearchHistory() {\n    const searchHistoryList = document.getElementById('search-history-list');\n    searchHistoryList.innerHTML = '';\n    \n    if (searchHistory.length === 0) {\n        searchHistoryList.innerHTML = '<div style=\"color: #999; font-size: 14px;\">暂无搜索历史</div>';\n        return;\n    }\n    \n    const recentHistory = searchHistory.slice(-10).reverse();\n    \n    recentHistory.forEach(item => {\n        const historyItem = document.createElement('div');\n        historyItem.className = 'search-history-item';\n        historyItem.textContent = item;\n        \n        historyItem.addEventListener('click', function() {\n            document.getElementById('search-modal-input').value = item;\n        });\n        \n        searchHistoryList.appendChild(historyItem);\n    });\n}\n\ndocument.addEventListener('DOMContentLoaded', function() {\n            const clearButton = document.querySelector('.search-clear');\n            if (clearButton) {\n                clearButton.addEventListener('click', function() {\n                    source.put('lofterSearchHistory', '');\n                    searchHistory = [];\n                    renderSearchHistory()\n                });\n            }\n        });\n\nfunction addToSearchHistory(searchText) {\n    \n    searchHistory = searchHistory.filter(item => item !== searchText);\n    searchHistory.push(searchText);\n    if (searchHistory.length > 50) {\n        searchHistory = searchHistory.slice(-50);\n    }\n    source.put('lofterSearchHistory', JSON.stringify(searchHistory));\n}\n\nfunction closeModal() {\n    document.getElementById('search-modal').classList.remove('active');\n    document.getElementById('search-modal-input').value = '';\n    document.getElementById('login-modal').classList.remove('active');\n}\n",
    "startStyle": ":root{\n\t --btn-active-color:#019D94;\n     --btn-text-color:#fff;\n     --btn-hover-color:#16C4BC\n}\n.subscribe-tag {\n    padding: 5px 15px;\n    margin: 4px;\n    background-color: #f9f9f9;\n    display: inline-block; \n    white-space: nowrap;\n     border-radius: 20px;\n     border:1px solid #ddd;\n     color:#000\n}\n.addtag{\n   \tpadding: 5px 10px;\n    margin-left: 8px;\n\t}\n\n.addtagname{\n  display: inline-block;\n  min-width: 20px; \n  outline: none;\n}\n\t\n.subscribe-tag:hover{\n\tbackground:var(--btn-active-color);\n\tcolor:var(--btn-text-color);\n\tborder:1px solid var(--btn-active-color);\n\t}\n\n\n.subscribe-del{\n\tpadding:3px;\n\tmargin-left:10px\n\t}\n\n* {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n            font-family: \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n        }\n\n        body {\n            background-color: #f5f5f5;\n            color: #333;\n            line-height: 1.5;\n            padding-bottom: 60px;\n        }\n\n        .container {\n            max-width: 480px;\n            margin: 0 auto;\n            background-color: #fff;\n            min-height: 100vh;\n            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n            display: flex;\n            flex-direction: column;\n        }\n\n        /* 子选项区域 - 固定在顶部 */\n        .sub-options {\n            background-color: #f9f9f9;\n            padding: 10px 15px;\n            border-bottom: 1px solid #e6e6e6;\n            position: sticky;\n            top: 0;\n            z-index: 10;\n            box-shadow: 0 2px 5px rgba(0,0,0,0.1);\n        }\n\n        .category-tabs {\n            display: flex;\n            justify-content: center;\n            margin-bottom: 10px;\n            gap: 10px;\n        }\n\n        .category-tab {\n            padding: 8px 15px;\n            font-size: 12px;\n            color: #666;\n            cursor: pointer;\n            border-radius: 15px;\n            background-color: #fff;\n            border: 1px solid #ddd;\n            transition: all 0.3s ease;\n        }\n\n        .category-tab.active {\n            background-color: var(--btn-active-color);\n            color: var(--btn-text-color);\n        }\n\n        .category-tab:hover {\n            transform: translateY(-1px);\n            box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n        }\n\n        .search-box {\n            display: flex;\n            max-width: 400px;\n            margin: 0 auto;\n        }\n\n        .search-box input {\n            flex: 1;\n            padding: 8px 10px;\n            border: 1px solid #ddd;\n            border-radius: 3px 0 0 3px;\n            font-size: 12px;\n            transition: border-color 0.3s;\n        }\n\n        .search-box input:focus {\n            outline: none;\n            border-color: var(--btn-active-color);\n        }\n\n        .search-btn {\n            background-color: var(--btn-active-color);\n            color: var(--btn-text-color);\n            border: none;\n            padding: 0 15px;\n            border-radius: 0 3px 3px 0;\n            cursor: pointer;\n            transition: background-color 0.3s;\n        }\n\n        .search-btn:hover {\n            background-color: var(--btn-hover-color);\n        }\n\n        /* 内容区域 */\n        .content-area {\n            padding: 15px;\n            flex: 1;\n            overflow-y: auto;\n        }\n        \n        /* 底部按钮区域 */\n        .bottom-buttons {\n            position: fixed;\n            bottom: 0;\n            left: 0;\n            right: 0;\n            display: flex;\n            background-color: #fff;\n            border-top: 1px solid #e6e6e6;\n            z-index: 100;\n            box-shadow: 0 -2px 10px rgba(0,0,0,0.05);\n        }\n        \n        .bottom-button {\n            flex: 1;\n            padding: 12px 5px;\n            border: none;\n            background: none;\n            font-size: 12px;\n            cursor: pointer;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            transition: all 0.3s;\n        }\n        \n        .bottom-button:hover {\n            background-color: #f5f5f5;\n        }\n        \n        .bottom-button-icon {\n            font-size: 14px;\n            margin-bottom: 4px;\n        }\n        \n        .bottom-button-text {\n            font-size: 12px;\n        }\n\n        /* 订阅列表 */\n        .subscribe-list {\n            margin-top: 15px;\n        }\n\n        .subscribe-item {\n            display: flex;\n            align-items: center;\n            padding: 12px;\n            background-color: #f9f9f9;\n            border-radius: 8px;\n            margin-bottom: 10px;\n            transition: all 0.3s;\n            box-shadow: 0 2px 3px rgba(0,0,0,0.1);\n        }\n\n        .subscribe-item:hover {\n            border-left: 4px solid var(--btn-active-color);  \n            margin-left: -4px; \n            padding-left: 4px; \n            box-shadow: 0 2px 10px rgba(0,0,0,0.15);\n        }\n\n        .subscribe-item.sort-mode {\n            background-color: #f0f0f0;\n        }\n\n        .subscribe-item.selected {\n            background-color: #ffe0b2;\n            border: 2px solid #ff8200;\n        }\n\n        .subscribe-avatar {\n            \n            box-shadow: 0 2px 5px rgba(0,0,0,0.15);\n            width: 40px;\n            height: 40px;\n            border-radius: 5px;\n            background-color: #e6e6e6;\n            margin-right: 12px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-size: 14px;\n            color: #999;\n            overflow: hidden;\n            flex-shrink: 0;\n        }\n\n        .subscribe-avatar img {\n            width: 100%;\n            height: 100%;\n            object-fit: cover;\n        }\n\n        .subscribe-details {\n            flex: 1;\n            min-width: 0;\n        }\n\n        .subscribe-title {\n            font-size: 12px;\n            font-weight: 500;\n            margin-bottom: 5px;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            white-space: nowrap;\n        }\n\n.subscribe-desc {\n    font-size: 10px;\n    color: #999;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    display: -webkit-box;\n    -webkit-line-clamp: 3; \n    -webkit-box-orient: vertical;\n    line-height: 1.2; \n}\n\n\n        /* 更新：功能按钮垂直排列 */\n        .subscribe-actions {\n            display: flex;\n            flex-direction: column;\n            gap: 5px;\n            flex-shrink: 0;\n            margin-left: 10px;\n        }\n\n        .subscribe-action {\n            background:none;\n            border:none;\n            padding: 4px;\n            font-size: 10px;\n            cursor: pointer;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            width: 12px;\n            height: 12px;\n            transition: all 0.3s;\n        }\n\n        .subscribe-action:hover {\n            transform: scale(1.1);\n        }\n\n        .subscribe-action.delete {\n            color: #ff3b30;\n            \n        }\n\n        .subscribe-action.remark {\n            color: #007aff;\n            \n        }\n\n        .subscribe-action.sort {\n            color: #34c759;\n          \n        }\n\n        .subscribe-action.swap {\n            color: #ff8200;\n           \n        }\n\n        /* 搜索弹窗 */\n        .search-modal,.login-modal {\n            display: none;\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background-color: rgba(0, 0, 0, 0.5);\n            z-index: 1000;\n            align-items: center;\n            justify-content: center;\n        }\n\n        .search-modal.active,.login-modal.active{\n            display: flex;\n        }\n\n        .search-modal-content,.login-modal-content {\n            background-color: #fff;\n            width: 90%;\n            max-width: 400px;\n            border-radius: 12px;\n            padding: 20px;\n            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n            animation: modalSlideIn 0.3s ease;\n        }\n\n        @keyframes modalSlideIn {\n            from { transform: translateY(-20px); opacity: 0; }\n            to { transform: translateY(0); opacity: 1; }\n        }\n\n        .search-modal-header,.login-modal-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 15px;\n            padding-bottom: 10px;\n            border-bottom: 1px solid #e6e6e6;\n        }\n\n        .search-modal-title,.login-modal-title {\n            font-size: 14px;\n            font-weight: 600;\n        }\n\n        .search-modal-close,.login-modal-close {\n            background: none;\n            border: none;\n            font-size: 16px;\n            cursor: pointer;\n            color: #999;\n            transition: color 0.3s;\n        }\n\n        .search-modal-close:hover {\n            color: #333;\n        }\n\n        .search-modal-input {\n            width: 100%;\n            padding: 12px;\n            border: 1px solid #ddd;\n            border-radius: 4px;\n            font-size: 12px;\n            margin-bottom: 15px;\n            transition: border-color 0.3s;\n        }\n\n        .search-modal-input:focus {\n            outline: none;\n            border-color: var(--btn-active-color);\n        }\n\n        .search-history {\n            margin-bottom: 20px;\n        }\n/*\n        .search-history-title {\n            font-size: 14px;\n            color: #666;\n            margin-bottom: 10px;\n        }\n  */      \n        .search-history-title {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 20px;\n            padding-bottom: 15px;\n            border-bottom: 1px solid #f0f0f0;\n        }\n        .search-clear {\n            background-color: #f0f0f0;\n            color: #666;\n            padding: 8px 15px;\n            border-radius: 20px;\n            cursor: pointer;\n            font-size: 12px;\n            transition: all 0.3s ease;\n            display: flex;\n            align-items: center;\n            gap: 5px;\n        }\n        .search-clear:hover {\n            background-color: #e0e0e0;\n            transform: translateY(-2px);\n            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n        }\n        .search-history-list {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 8px;\n        }\n\n        .search-history-item {\n            background-color: #f5f5f5;\n            padding: 6px 12px;\n            border-radius: 15px;\n            font-size: 12px;\n            cursor: pointer;\n            transition: all 0.3s;\n        }\n\n        .search-history-item:hover {\n            background-color: #e6e6e6;\n        }\n\n        .search-modal-actions {\n            display: flex;\n            justify-content: flex-end;\n            gap: 10px;\n        }\n        \n        .login-modal-actions{\n            justify-content: center;\n            display: flex;\n            gap: 10px;\n        }\n        \n        .search-modal-cancel,.login-modal-cancel {\n            background: none;\n            border: 1px solid #ddd;\n            padding: 10px 20px;\n            border-radius: 4px;\n            cursor: pointer;\n            font-size: 12px;\n            transition: all 0.3s;\n        }\n        \n        .login-modal-cancel{\n            background-color: var(--btn-active-color);\n            color: var(--btn-text-color);\n            border: none;\n        }\n        \n        .search-modal-cancel:hover {\n            background-color: #f5f5f5;\n        }\n\n        .search-modal-confirm,.login-modal-confirm,.login-modal-my{\n            background-color: var(--btn-active-color);\n            color: var(--btn-text-color);\n            border: none;\n            padding: 10px 20px;\n            border-radius: 4px;\n            cursor: pointer;\n            font-size: 12px;\n            transition: background-color 0.3s;\n        }\n        \n        .login-modal-confirm,.login-modal-my{\n            background: none;\n            border: 1px solid #ddd;\n            color:#000\n        }\n        \n        .search-modal-confirm:hover {\n            background-color: var(--btn-hover-color);\n        }\n\n        /* 备注弹窗 */\n        .remark-modal {\n            display: none;\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background-color: rgba(0, 0, 0, 0.5);\n            z-index: 1000;\n            align-items: center;\n            justify-content: center;\n        }\n\n        .remark-modal.active {\n            display: flex;\n        }\n\n        .remark-modal-content {\n            background-color: #fff;\n            width: 80%;\n            max-width: 400px;\n            border-radius: 12px;\n            padding: 20px;\n            animation: modalSlideIn 0.3s ease;\n        }\n\n        .remark-modal-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 15px;\n            padding-bottom: 10px;\n            border-bottom: 1px solid #e6e6e6;\n        }\n\n        .remark-modal-title {\n            font-size: 14px;\n            font-weight: 600;\n        }\n\n        .remark-modal-close {\n            background: none;\n            border: none;\n            font-size: 16px;\n            cursor: pointer;\n            color: #999;\n            transition: color 0.3s;\n        }\n\n        .remark-modal-close:hover {\n            color: #333;\n        }\n\n        .remark-modal-input {\n            width: 100%;\n            padding: 12px;\n            border: 1px solid #ddd;\n            border-radius: 4px;\n            font-size: 12px;\n            margin-bottom: 15px;\n            transition: border-color 0.3s;\n        }\n\n        .remark-modal-input:focus {\n            outline: none;\n            border-color: var(--btn-active-color);\n        }\n\n        .remark-modal-actions {\n            display: flex;\n            justify-content: flex-end;\n            gap: 10px;\n        }\n\n        .remark-modal-cancel {\n            background: none;\n            border: 1px solid #ddd;\n            padding: 10px 20px;\n            border-radius: 4px;\n            cursor: pointer;\n            font-size: 12px;\n            transition: all 0.3s;\n        }\n\n        .remark-modal-cancel:hover {\n            background-color: #f5f5f5;\n        }\n\n        .remark-modal-confirm {\n            background-color: var(--btn-active-color);\n            color: var(--btn-text-color);\n            border: none;\n            padding: 10px 20px;\n            border-radius: 4px;\n            cursor: pointer;\n            font-size: 12px;\n            transition: background-color 0.3s;\n        }\n\n        .remark-modal-confirm:hover {\n            background-color: var(--btn-hover-color);\n        }\n\n        /* 响应式设计 */\n        @media (max-width: 480px) {\n            .container {\n                max-width: 100%;\n            }\n            \n            .subscribe-action {\n                width: 12px;\n                height: 12px;\n                font-size: 10px;\n            }\n        }\n\n        @media (max-width: 360px) {\n            .subscribe-actions {\n                gap: 3px;\n            }\n            \n            .subscribe-action {\n                width: 12px;\n                height: 12px;\n                font-size: 10px;\n                padding: 4px;\n            }\n        }",
    "style": ".tag {display: inline-block;  background: #f1f1f1; color: #333333; border-radius: 15px; padding: 2px 10px; margin: 4px; box-shadow: 0 3px 6px rgba(0,0,0,0.1); transition: all 0.2s ease; cursor: pointer; } \n.post-container {\n        max-width: 800px;\n        margin: 0 auto;\n        padding: 20px;      \n        line-height: 1.6;\n        color: #333;\n    }\n    .title-card{    \t\n    border-radius: 8px;\n    text-align: center;\n    margin: 5px auto;\n    margin-bottom:20px;\n    max-width: 80%;\n    \t}\n    .post-content {\n        margin-bottom: 20px;\n    }\n    \n    .post-content p {\n        margin: 0 0 10px 0;\n        text-indent:1.7em;\n        word-break: break-word;\n    }\n    \n    .image-container {\n        margin: 15px 0;\n        text-align: center;\n    }\n    \n    .image-container img {\n        max-width: 100%;\n        height: auto;\n        border-radius: 8px;\n        box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n    }\n    ",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10100158,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"\"}",
    "injectJs": "(()=>{const h=location.href;if(h.endsWith('.json')){const u=`legado://import/Source?src=${encodeURIComponent(h)}`,b=document.createElement('button');b.style.cssText='position:fixed;bottom:30px;left:50%;transform:translateX(-50%);padding:12px 28px;border:none;border-radius:12px;background:#2563eb;color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:.2s;box-shadow:0 4px 14px rgba(37,99,235,0.45);outline:0;-webkit-tap-highlight-color:transparent;z-index:9999;user-select:none';b.textContent='导入到 Legado';b.onclick=()=>{(b.style.transform='translateX(-50%) scale(.93)',b.style.boxShadow='0 2px 8px rgba(37,99,235,0.3)'),setTimeout(()=>{(b.style.transform='translateX(-50%) scale(1)',b.style.boxShadow='0 4px 14px rgba(37,99,235,0.45)'),location.href=u},180)};document.body.appendChild(b);location.href=u}})();",
    "lastUpdateTime": 1774456874749,
    "loadWithBaseUrl": true,
    "preload": true,
    "ruleArticles": "<js>\nJSON.stringify(\n  baseUrl.slice(baseUrl.indexOf('#') + 1)\n    .split('★')\n    .map(item => {\n      const [link, title, date, img] = item.split('☆');\n      return { title, date, img, link };\n    })\n);\n</js>\n$.[*]",
    "ruleDescription": "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=0\">\n  <style>\n    @keyframes tip {\n      0% {\n        opacity: 0;\n        transform: translateY(-24px);\n      }\n      30%,\n      70% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n      100% { opacity: 0; }\n    }\n    \n    * {\n      line-height: 1em;\n      margin: 0;\n      padding: 0;\n      word-break: break-all;\n      -webkit-tap-highlight-color: transparent;\n      -webkit-touch-callout: none;\n      -webkit-user-select: none;\n      -khtml-user-select: none;\n      -moz-user-select: none;\n      -ms-user-select: none;\n      user-select: none;\n    }\n    \n    *:focus { outline: none; }\n    \n    input,\n    textarea { -webkit-user-select: auto; }\n    \n    body {\n      background: #f4f5f7;\n      display: flex;\n      flex-wrap: wrap;\n      place-content: center;\n      place-items: start;\n      padding: 15px;\n      color: #001944;\n    }\n    \n    label:has(#y)+div {\n      opacity: 0;\n      max-height: 0;\n      overflow: hidden;\n      transition: .3s;\n    }\n    \n    label:has(#y:checked)+div {\n      opacity: 1;\n      max-height: 50px;\n    }\n    \n    .card {\n      border-top: .5px solid rgba(255, 255, 255, .9);\n      border-radius: 24px;\n      background: rgba(255, 255, 255, .8);\n      box-shadow: 0 10px 20px rgba(0, 0, 0, .05);\n      padding: 30px;\n      margin: 12.5px;\n      width: 250px;\n      height: auto;\n    }\n    \n    .card details+div {\n      overflow: hidden;\n      max-height: 0;\n      opacity: 0;\n      transition: .6s;\n    }\n    \n    .card details[open]+div {\n      max-height: 666px;\n      opacity: 1;\n    }\n    \n    .card details summary {\n      font-size: 24px;\n      font-weight: 700;\n      user-select: none;\n      outline: 0;\n      opacity: .4;\n      transition: .6s;\n      display: block;\n      list-style: none;\n    }\n    \n    .card details[open] summary {\n      opacity: 1;\n      margin-bottom: 6px;\n      font-size: 20.5px;\n    }\n    \n    .flex {\n      display: flex;\n      flex-wrap: wrap;\n    }\n    \n    .tip {\n      position: fixed;\n      z-index: 9;\n      top: 45px;\n      border-radius: .75em;\n      padding: .9em;\n      background-color: rgba(99, 99, 99, .9);\n      box-shadow: 0 5px 20px rgba(0, 0, 0, .2);\n      color: #fff;\n      opacity: 0;\n      animation: tip 1s;\n      backdrop-filter: blur(15px);\n    }\n    \n    .txt-box { position: relative; }\n    \n    .txt-box button {\n      position: absolute;\n      top: 19px;\n      margin: 0;\n      padding: .3em;\n      border-radius: .3em;\n      background: rgba(0, 0, 0, .15);\n      color: #fff;\n      font-size: 12px;\n      z-index: 9;\n      display: none;\n    }\n    \n    .clear-btn { right: 9px; }\n    \n    .copy-btn { right: 44px; }\n    \n    .txt-box:hover .clear-btn,\n    .txt-box:hover .copy-btn { display: block; }\n    \n    span {\n      background: rgba(0, 0, 0, .04);\n      padding: .15em .3em;\n      border-radius: .5em;\n      margin-left: .5em;\n      font-family: serif;\n      font-size: 12px;\n      opacity: .75;\n    }\n    \n    button {\n      font-size: 13.5px;\n      font-weight: 700;\n      color: #4360b7;\n      background: #e7eeff;\n      padding: .65em .9em;\n      margin-top: 9px;\n      margin-right: 9px;\n      opacity: .81;\n      border-radius: 2em;\n      border: none;\n      transition: .3s;\n      cursor: pointer;\n    }\n    \n    button:active {\n      background: #d6ddee;\n      transform: scale(.95);\n    }\n    \n    textarea {\n      margin-top: 9px;\n      padding: 9px;\n      width: 100%;\n      box-sizing: border-box;\n      line-height: 1.2em;\n      font-size: 14px;\n      font-family: serif;\n      resize: none;\n      border-radius: 9px;\n      color: #333;\n      border: 2px solid rgba(0, 0, 0, .1);\n      background: rgba(0, 0, 0, .006);\n    }\n    \n    input[type=\"checkbox\"],\n    input[type=\"radio\"] {\n      vertical-align: bottom;\n      appearance: none;\n      margin: 0 .5em;\n      width: 1em;\n      height: 1em;\n      box-sizing: border-box;\n      background: rgba(0, 0, 0, .006);\n      border: 2px solid rgba(0, 0, 0, .1);\n      border-radius: 9px;\n      cursor: pointer;\n      transition: .15s;\n    }\n    \n    input:checked {\n      border-color: #4360b7;\n      background: #e7eeff;\n      opacity: .81;\n    }\n    \n    label {\n      display: inline-block;\n      margin-top: 9px;\n      margin-bottom: 0;\n      font-size: 14px;\n      font-family: serif;\n      cursor: pointer;\n    }\n  </style>\n  <title>写源助手</title>\n</head>\n\n<body>\n  <div class=\"card\">\n    <details>\n      <summary>格式化发现</summary>\n    </details>\n    <div>\n      <div class=\"txt-box\">\n        <button class=\"clear-btn\" onclick=\"clearText(this)\">清空</button>\n        <textarea id=\"text\" rows=\"4\" placeholder=\"请输入要处理的内容\"></textarea>\n        <button class=\"copy-btn\" onclick=\"copyText(this)\">复制</button>\n      </div>\n      <div class=\"flex\">\n        <button onclick=\"htmlToDisc()\">html转旧发现</button>\n        <button onclick=\"switchFormat()\">新旧发现互转</button>\n      </div>\n      <label>&nbsp;每行列数<span>仅新发现</span></label>\n      <div class=\"flex\">\n        <button onclick=\"setColumn(null)\">自动</button>\n        <button onclick=\"setColumn(1)\">1</button>\n        <button onclick=\"setColumn(.4)\">2</button>\n        <button onclick=\"setColumn(.25)\">3</button>\n        <button onclick=\"setColumn(.2)\">4</button>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"card\">\n    <details>\n      <summary>匹配 / 替换</summary>\n    </details>\n    <div>\n      <div class=\"txt-box\">\n        <button class=\"clear-btn\" onclick=\"clearText(this)\">清空</button>\n        <textarea id=\"text1\" rows=\"4\" placeholder=\"请输入要处理的内容\"></textarea>\n        <button class=\"copy-btn\" onclick=\"copyText(this)\">复制</button>\n      </div>\n      <div class=\"txt-box\">\n        <button class=\"clear-btn\" onclick=\"clearText(this)\">清空</button>\n        <textarea id=\"matchText\" rows=\"1\" placeholder=\"请输入正则表达式\"></textarea>\n        <button class=\"copy-btn\" onclick=\"copyText(this)\">复制</button>\n      </div>\n      <label><input id=\"g\" type=\"checkbox\" checked>全局匹配<span>g</span></label>\n      <label><input id=\"i\" type=\"checkbox\">忽略大小写<span>i</span></label>\n      <label><input id=\"m\" type=\"checkbox\">多行模式<span>m</span></label>\n      <label><input id=\"s\" type=\"checkbox\">点号通配<span>s</span></label>\n      <label><input id=\"u\" type=\"checkbox\">Unicode<span>u</span></label>\n      <label><input id=\"y\" type=\"checkbox\">粘连匹配<span>y</span></label>\n      <div class=\"txt-box\">\n        <button class=\"clear-btn\" onclick=\"clearText(this)\">清空</button>\n        <textarea id=\"lastIndex\" rows=\"1\" placeholder=\"lastIndex，用于粘连匹配\"></textarea>\n        <button class=\"copy-btn\" onclick=\"copyText(this)\">复制</button>\n      </div>\n      <div class=\"txt-box\">\n        <button class=\"clear-btn\" onclick=\"clearText(this)\">清空</button>\n        <textarea id=\"replaceText\" rows=\"1\" placeholder=\"想要替换成什么\"></textarea>\n        <button class=\"copy-btn\" onclick=\"copyText(this)\">复制</button>\n      </div>\n      <div class=\"flex\">\n        <button onclick=\"insertReplaceText('{\\{page}}')\">{&#123;page}}</button>\n        <button onclick=\"insertReplaceText('\\\\')\">\\</button>\n        <button onclick=\"insertReplaceText('<')\">&lt;</button>\n        <button onclick=\"insertReplaceText('>')\">&gt;</button>\n      </div>\n      <div class=\"flex\">\n        <button onclick=\"regexMatch()\">匹配</button>\n        <button onclick=\"regexReplace()\">替换</button>\n        <button onclick=\"resetAll()\">重置匹配替换</button>\n      </div>\n      <div class=\"txt-box\">\n        <button class=\"clear-btn\" onclick=\"clearText(this)\">清空</button>\n        <textarea id=\"matchResult\" rows=\"4\" placeholder=\"匹配结果\"></textarea>\n        <button class=\"copy-btn\" onclick=\"copyText(this)\">复制</button>\n      </div>\n      <div class=\"txt-box\">\n        <button class=\"clear-btn\" onclick=\"clearText(this)\">清空</button>\n        <textarea id=\"replaceResult\" rows=\"4\" placeholder=\"替换结果\"></textarea>\n        <button class=\"copy-btn\" onclick=\"copyText(this)\">复制</button>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"card\">\n    <details>\n      <summary>编码 / 转义</summary>\n    </details>\n    <div>\n      <div class=\"txt-box\">\n        <button class=\"clear-btn\" onclick=\"clearText(this)\">清空</button>\n        <textarea id=\"text2\" rows=\"4\" placeholder=\"请输入要处理的内容\"></textarea>\n        <button class=\"copy-btn\" onclick=\"copyText(this)\">复制</button>\n      </div>\n      <label><input id=\"more\" type=\"checkbox\">处理更多字符</label>\n      <div class=\"flex\">\n        <button onclick=\"encodeURL()\">url 编码</button>\n        <button onclick=\"decodeURL()\">url 解码</button>\n        <button onclick=\"encodeHTML()\">html 转义</button>\n        <button onclick=\"decodeHTML()\">html 反转义</button>\n      </div>\n      <div id=\"temp\" hidden></div>\n    </div>\n  </div>\n\n  <div class=\"card\">\n    <details>\n      <summary>工具 / 教程</summary>\n    </details>\n    <div>\n      <div class=\"flex\">\n        <button onclick=\"window.open('https://base64.guru/converter')\">base64</button>\n        <button onclick=\"window.open('https://tool.lu/zhconvert')\">简繁转换</button>\n        <button onclick=\"window.open('https://www.wetools.com/js-compress')\">js压缩</button>\n        <button onclick=\"window.open('https://www.yuque.com/legado/yuan')\">写源教程①</button>\n        <button onclick=\"window.open('https://www.yuque.com/120031xufengnian/yuedu')\">写源教程②</button>\n      </div>\n    </div>\n  </div>\n\n  <script>\n    const $ = (id) => document.getElementById(id);\n    \n    const textEl = $('text');\n    const text1El = $('text1');\n    const text2El = $('text2');\n    const matchTextEl = $('matchText');\n    const lastIndexEl = $('lastIndex');\n    const matchResultEl = $('matchResult');\n    const replaceTextEl = $('replaceText');\n    const replaceResultEl = $('replaceResult');\n    const more = $('more');\n    const temp = $('temp');\n    const flags = ['g', 'i', 'm', 's', 'u', 'y']\n      .reduce((acc, flag) => {\n        acc[flag] = $(flag);\n        return acc;\n      }, {});\n\n    const showTip = (text) => {\n      const tip = document.createElement('p');\n      tip.className = \"tip\";\n      tip.textContent = text;\n      document.body.appendChild(tip);\n      setTimeout(() => tip.remove(), 2000);\n    };\n\n    const htmlToDisc = () => {\n      const text = textEl.value;\n      if (!text) return textEl.focus();\n      try {\n        const links = Array.from(new DOMParser()\n          .parseFromString(text, 'text/html')\n          .querySelectorAll('a[href]'))\n          .filter(a => {\n            const url = a.getAttribute('href').trim().toLowerCase();\n            return !url.startsWith('javascript:') && !url.startsWith('#');\n          })\n          .map(a => a.textContent.trim() + \"::\" + a.getAttribute('href').trim());\n        const num = links.length;\n        if (num > 0) {\n          textEl.value = links.join('\\n');\n          showTip(`提取到 ${num} 条发现`);\n        } else showTip('未提取到发现');\n      } catch (error) {\n        showTip('html 解析失败');\n      }\n    };\n    \n    const switchFormat = () => {\n      const text = textEl.value\n      if (!text) return textEl.focus();\n      let result = \"\";\n      try {\n        result = JSON.parse(text)\n          .map(({ title = \"\", url = \"\" }) => title + \"::\" + url)\n          .join('\\n');\n      } catch (error) {\n        result = JSON.stringify(text\n          .replace(/&&/g, '\\n')\n          .split(/\\s*\\n+\\s*/)\n          .map(line => {\n            const [title, ...url] = line.split('::').map(s => s.trim());\n            return { title: title, url: url.join('::') };\n          }));\n      }\n      result ? textEl.value = result: showTip('格式转换失败');\n    };\n    \n    const setColumn = (n) => {\n      const text = textEl.value;\n      if (!text) return textEl.focus();\n      try {\n        const json = JSON.parse(text);\n        json.forEach(item => {\n          item.style = {\n            layout_flexGrow: 1,\n            layout_flexBasisPercent: n\n          };\n        });\n        textEl.value = JSON.stringify(json);\n      } catch (error) {\n        showTip('列数设置失败');\n      }\n    };\n    \n    const buildRegex = () => {\n      const text = text1El.value;\n      if (!text) return text1El.focus();\n      const matchText = matchTextEl.value;\n      if (!matchText) return matchTextEl.focus();\n      const options = Object.keys(flags).filter(flag => flags[flag].checked).join('');\n      try {\n        const regex = new RegExp(matchText, options);\n        regex.lastIndex = parseInt(lastIndexEl.value) || 0;;\n        return { text, regex };\n      } catch (error) {\n        showTip('构建正则表达式失败');\n      }\n    };\n    \n    const regexMatch = () => {\n      const result = buildRegex();\n      if (!result) return;\n      const { text, regex } = result;\n      const match = text.match(regex);\n      if (match) {\n        if (regex.flags.includes('g')) {\n          showTip(`找到 ${match.length} 个匹配项`);\n          matchResultEl.value = match.join('\\n');\n        } else {\n          showTip(`匹配位置：` + match.index);\n          matchResultEl.value = match[0];\n        }\n      } else {\n        matchResultEl.value = \"\";\n        showTip('未找到匹配项');\n      }\n    };\n    \n    const insertReplaceText = (text) => {\n      const start = replaceTextEl.selectionStart;\n      const lastValue = replaceTextEl.value;\n      replaceTextEl.value = lastValue.slice(0, start) + text + lastValue.slice(start + replaceTextEl.selectionEnd - start);\n      replaceTextEl.focus();\n      replaceTextEl.setSelectionRange(start + text.length, start + text.length);\n    };\n    \n    const regexReplace = () => {\n      const result = buildRegex();\n      if (!result) return;\n      const { text, regex } = result;\n      regexMatch();\n      replaceResultEl.value = text.replace(regex, replaceTextEl.value);\n    };\n    \n    const resetAll = () => {\n      const fields = ['matchText', 'matchResult', 'lastIndex', 'replaceText', 'replaceResult'];\n      fields.forEach(field => $(`${field}`).value = \"\");\n      showTip('重置匹配替换成功');\n    };\n    \n    const encodeURL = () => {\n      const text = text2El.value;\n      if (!text) return text2El.focus();\n      text2El.value = more.checked? encodeURIComponent(text) : encodeURI(text);\n      showTip('URLEncode 编码成功');\n    };\n    \n    const decodeURL = () => {\n      const text = text2El.value;\n      if (!text) return text2El.focus();\n      try {\n        text2El.value = decodeURIComponent(text);\n        showTip('URLDecode 解码成功');\n      } catch (error) {\n        showTip('URLDecode 解码失败');\n      }\n    };\n\n    const encodeHTML = () => {\n      const text = text2El.value;\n      if (!text) return text2El.focus();\n      if (more.checked) text2El.value = text.split('').map(c => `&#${c.charCodeAt(0)};`).join('');\n      else {\n        temp.textContent = text;\n        text2El.value = temp.innerHTML;\n      }\n      showTip('html 转义成功');\n    };\n      \n    const decodeHTML = () => {\n      const text = text2El.value;\n      if (!text) return text2El.focus();\n      try {\n        temp.innerHTML = text.replace(/<br\\s*\\/?>/gi, '\\n').replace(/</g, '&#60;').replace(/>/g, '&#62;');\n        text2El.value = temp.textContent;\n        showTip('html 反转义成功');\n      } catch (error) {\n        showTip('html 反转义失败');\n      }\n    };\n\n    const clearText = (button) => {\n      button.nextElementSibling.value = \"\";\n      showTip('清空成功');\n    };\n\n    const copyText = (button) => {\n      const text = button.previousElementSibling.value;\n      if (!text) return showTip('内容为空');\n      navigator.clipboard.writeText(text)\n        .then(() => showTip('复制成功'))\n        .catch(() => showTip('复制失败'));\n    };\n  </script>\n</body>\n\n</html>\n🔵<!DOCTYPE html>\n<html lang=\"zh-CN\">\n\n  <head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=0\">\n    <title>随心导入</title>\n    <style>\n    @keyframes tip {\n      0% {\n        opacity: 0;\n        transform: translateY(-24px);\n      }\n      30%,\n      70% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n      100% { opacity: 0; }\n    }\n    \n    * {\n      line-height: 1em;\n      margin: 0;\n      padding: 0;\n      word-break: break-all;\n      -webkit-tap-highlight-color: transparent;\n      -webkit-touch-callout: none;\n      -webkit-user-select: none;\n      -khtml-user-select: none;\n      -moz-user-select: none;\n      -ms-user-select: none;\n      user-select: none;\n    }\n    \n    *:focus { outline: none; }\n    \n    textarea { -webkit-user-select: auto; }\n    \n    body {\n      background: #f4f5f7;\n      display: flex;\n      flex-wrap: wrap;\n      place-content: center;\n      place-items: start;\n      padding: 15px;\n      color: #001944;\n    }\n    \n    .card {\n      border-top: .5px solid rgba(255, 255, 255, .9);\n      border-radius: 24px;\n      background: rgba(255, 255, 255, .8);\n      box-shadow: 0 10px 20px rgba(0, 0, 0, .05);\n      padding: 30px;\n      margin: 12.5px;\n      width: 250px;\n      height: auto;\n    }\n    \n    .card details+div {\n      overflow: hidden;\n      max-height: 0;\n      opacity: 0;\n      transition: .6s;\n    }\n    \n    .card details[open]+div {\n      max-height: 250px;\n      opacity: 1;\n    }\n    \n    .card details summary {\n      font-size: 24px;\n      font-weight: 700;\n      user-select: none;\n      outline: 0;\n      opacity: .4;\n      transition: .6s;\n      display: block;\n      list-style: none;\n    }\n    \n    .card details[open] summary {\n      opacity: 1;\n      margin-bottom: 6px;\n      font-size: 20.5px;\n    }\n    \n    .flex {\n      display: flex;\n      flex-wrap: wrap;\n      place-items: center;\n      place-content: center;\n    }\n    \n    .links { max-width: 300px; }\n    \n    .grid {\n      display: grid;\n      grid-template-columns: 1fr 2fr;\n      margin: 4.5px 0;\n      padding: 9px 0;\n      width: 275px;\n      font-size: 14px;\n      font-family: serif;\n      border-radius: 12px;\n      color: #333;\n      border: 2px solid rgba(0, 0, 0, .1);\n      background: rgba(255, 255, 255, .006);\n    }\n    \n    .grid .flex:first-child {\n      border-right: 1px solid rgba(0, 0, 0, .1);\n      padding: 9px;\n    }\n    \n    .grid button {\n      padding: 0;\n      margin: 4.5px 9px;\n      background: none;\n      font-weight: 400;\n      font-family: serif;\n    }\n    \n    .tip {\n      position: fixed;\n      z-index: 9;\n      top: 45px;\n      border-radius: .75em;\n      padding: .9em;\n      background-color: rgba(99, 99, 99, .9);\n      box-shadow: 0 5px 20px rgba(0, 0, 0, .2);\n      color: #fff;\n      opacity: 0;\n      animation: tip 1s;\n      backdrop-filter: blur(15px);\n    }\n    \n    .txt-box { position: relative; }\n    \n    .txt-box button {\n      position: absolute;\n      top: 19px;\n      margin: 0;\n      padding: .3em;\n      border-radius: .3em;\n      background: rgba(0, 0, 0, .15);\n      color: #fff;\n      font-size: 12px;\n      z-index: 9;\n      display: none;\n    }\n    \n    .clear-btn { right: 9px; }\n    \n    .copy-btn { right: 44px; }\n    \n    .txt-box:hover .clear-btn,\n    .txt-box:hover .copy-btn { display: block; }\n    \n    button {\n      font-size: 13.5px;\n      font-weight: 700;\n      color: #4360b7;\n      background: #e7eeff;\n      padding: .65em .9em;\n      margin-top: 9px;\n      margin-right: 9px;\n      opacity: .81;\n      border-radius: 2em;\n      border: none;\n      transition: .3s;\n      cursor: pointer;\n    }\n\n    button:active {\n      background: #d6ddee;\n      transform: scale(.95);\n    }\n    \n    textarea {\n      margin-top: 9px;\n      padding: 9px;\n      width: 100%;\n      box-sizing: border-box;\n      line-height: 1.2em;\n      font-size: 14px;\n      font-family: serif;\n      resize: none;\n      border-radius: 9px;\n      color: #333;\n      border: 2px solid rgba(0, 0, 0, .1);\n      background: rgba(0, 0, 0, .006);\n    }\n\n    .select-wrapper {\n      display: flex;\n      align-items: center;\n      margin-top: 9px;\n      border: 2px solid rgba(0, 0, 0, .1);\n      border-radius: 9px;\n      overflow: hidden;\n      font-size: 14px;\n      color: #333;\n    }\n\n    .import-select {\n        flex: 1;\n        padding: 9px;\n        border: none;\n        appearance: none;\n        font-family: serif;\n        font-size: 14px;\n        background: rgba(0, 0, 0, .006);\n        -webkit-appearance: none;\n        -moz-appearance: none;\n      }\n\n    .import-select::-ms-expand {\n      display: none;\n    }\n\n    #import {\n      margin: 0;\n      padding: 10px 12px;\n      flex-grow: 0;\n      border-radius: 0;\n      border-left: 1px solid rgba(0, 0, 0, .1);\n    }\n      \n    #import:active {\n      transform: none;\n    }\n    </style>\n  </head>\n\n  <body>\n    <div class=\"card\">\n      <details id=\"main\" open>\n        <summary>随心导入</summary>\n      </details>\n      <div>\n        <div class=\"txt-box\">\n          <button class=\"clear-btn\" onclick=\"clearText(this)\">清空</button>\n          <textarea id=\"url\" rows=\"4\" placeholder=\"请输入资源链接\"></textarea>\n          <button class=\"copy-btn\" onclick=\"copyText(this)\">复制</button>\n        </div>\n        <div class=\"select-wrapper\">\n          <select id=\"path\" class=\"import-select\" name=\"path\">\n            <option value=\"auto\" selected>自动识别</option>\n            <option value=\"bookSource\">书源</option>\n            <option value=\"rssSource\">订阅源</option>\n            <option value=\"replaceRule\">替换规则</option>\n            <option value=\"textTocRule\">TXT目录规则</option>\n            <option value=\"httpTTS\">TTS</option>\n            <option value=\"theme\">主题</option>\n            <option value=\"readConfig\">排版</option>\n            <option value=\"dictRule\">字典规则</option>\n          </select>\n          <button id=\"import\" onclick=\"importUrl()\">导入</button>\n        </div>\n      </div>\n    </div>\n    <div class=\"flex links\">\n        <div class=\"grid\">\n          <div class=\"flex\">书源</div>\n          <div class=\"flex\">\n            <button onclick=\"setUrl('https://gcore.jsdelivr.net/gh/shidahuilang/shuyuan@shuyuan/good.json★1')\">大灰狼</button>\n            <button onclick=\"setUrl('https://gcore.jsdelivr.net/gh/zmn001125/booksources@master/sources/guaner.txt★1')\">关耳</button>\n            <button onclick=\"setUrl('https://gcore.jsdelivr.net/gh/cyao2q/yuedu@master/shuyuan★1')\">漠星曜</button>\n            <button onclick=\"setUrl('https://gcore.jsdelivr.net/gh/PB-pobing/pobing@pb/sy.json★1')\">破冰</button>\n            <button onclick=\"setUrl('https://gcore.jsdelivr.net/gh/XIU2/Yuedu@master/shuyuan★1')\">XIU2</button>\n          </div>\n        </div>\n        <div class=\"grid\">\n          <div class=\"flex\">订阅源</div>\n          <div class=\"flex\">\n            <button onclick=\"setUrl('https://gcore.jsdelivr.net/gh/nrhsyd/yd/rss.json★2')\">NRHSYD</button>\n          </div>\n        </div>\n        <div class=\"grid\">\n          <div class=\"flex\">替换规则</div>\n          <div class=\"flex\">\n            <button onclick=\"setUrl('https://gcore.jsdelivr.net/gh/shidahuilang/shuyuan@shuyuan/jinghua.json★3')\">大灰狼</button>\n          </div>\n        </div>\n        <div class=\"grid\">\n          <div class=\"flex\">TTS</div>\n          <div class=\"flex\">\n            <button onclick=\"setUrl('https://gcore.jsdelivr.net/gh/shidahuilang/shuyuan@shuyuan/tts.json★5')\">大灰狼</button>\n          </div>\n        </div>\n        <div class=\"grid\">\n          <div class=\"flex\">主题</div>\n          <div class=\"flex\">\n            <button onclick=\"setUrl('https://gcore.jsdelivr.net/gh/nrhsyd/yd/theme.json★6')\">NRHSYD</button>\n          </div>\n        </div>\n        <div class=\"grid\">\n          <div class=\"flex\">字典规则</div>\n          <div class=\"flex\">\n            <button onclick=\"setUrl('https://gcore.jsdelivr.net/gh/nrhsyd/yd/dict.json★8')\">NRHSYD</button>\n          </div>\n        </div>\n      </div>\n    <script>\n      const $ = (id) => document.getElementById(id);\n\n      const urlEl = $('url');\n      const path = $('path');\n      const main = $('main');\n      const importEl = $('import');\n\n      const showTip = (text) => {\n        const tip = document.createElement(\"p\");\n        tip.className = \"tip\";\n        tip.textContent = text;\n        document.body.appendChild(tip);\n        setTimeout(() => tip.remove(), 2000);\n      };\n\n      const importUrl = () => {\n        const url = urlEl.value;\n        if (!url) return urlEl.focus();\n        window.open(`yuedu://import/${path.value}?src=` + encodeURIComponent(url));\n      };\n\n      const setUrl = (starSplit) => {\n        const splitEl = starSplit.split('★');\n        urlEl.value = splitEl[0];\n        path.selectedIndex = parseInt(splitEl[1]) || 0;\n        main.open = true;\n        importEl.focus();\n        showTip('请点击导入按钮');\n      };\n\n      const clearText = (button) => {\n        button.nextElementSibling.value = \"\";\n        path.selectedIndex = 0;\n        showTip('清空成功');\n      };\n\n      const copyText = (button) => {\n        const text = button.previousElementSibling.value;\n        if (!text) return showTip('内容为空');\n        navigator.clipboard.writeText(text)\n          .then(() => showTip('复制成功'))\n          .catch(() => showTip('复制失败'));\n      };\n    </script>\n  </body>\n\n</html>\n{{}}\n@js:\nconst u = \"{{$.link}}\";\nconst content = result.split('🔵');\n/^\\d+$/.test(u) && (u = +u) >= 0 && u < content.length ? content[u]: \"\";",
    "ruleImage": "$.img",
    "ruleLink": "$.link",
    "rulePubDate": "$.date",
    "ruleTitle": "$.title",
    "shouldOverrideUrlLoading": "url.includes('quark.sm.cn/s?q=')&&(java.searchBook(java.toURL(url).searchParams.get('q').split(' ')[0]),1)",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "方寸::https://qq.com#1☆随心导入☆Maybe★0☆写源助手☆会有用喔(大概)\n\n寻书::https://qq.com#https://quark.sm.cn/api/rest?method=Novelnew.home&format=html&schema=v2&cate=全部&rank=rank_hot&gender=male☆夸克热搜☆什么野榜★https://www.qidiantu.com☆起点图☆养书要从幼苗抓起\n\n找源::https://qq.com#https://yckceo.vip☆源仓库☆好源很多的仓库★https://ycoo.net☆源社区☆好人很多的论坛★https://shuyuan.yiove.com☆Yiove 书源仓库☆书源收集★https://legado.aoaostar.com☆「阅读」APP 源☆@AOAOSTAR★http://ged520.yesui.me☆辞之次元☆@辞晨★https://source.jwyihao.top☆吉的书源集☆@吉王义昊★https://loyc.xyz☆洛娅橙-阅读发布页☆@洛娅橙★http://yuedu.miaogongzi.net/gx.html☆阅读书源☆@喵公子★https://skybook.pages.dev☆明月书阁☆@明月照大江★https://qyyuapi.com☆xiaohan231阅读源发布页☆@xiaohan231★https://link3.cc/yuluoxci☆雨落星辰的书源 | Link3☆@雨落星辰★https://yolo52.github.io/Yuedu☆Legado | Yuedu☆@Yolo",
    "sourceGroup": "书源",
    "sourceIcon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGZpbGw9IiM0NDQiIGQ9Ik04LjQyMiAyMC42MThDMTAuMTc4IDIxLjU0IDExLjA1NiAyMiAxMiAyMlYxMkwyLjYzOCA3LjA3M2EzLjE5NiAzLjE5NiAwIDAgMC0uMDQuMDY3QzIgOC4xNTQgMiA5LjQxNyAyIDExLjk0MnYuMTE3YzAgMi41MjQgMCAzLjc4Ny41OTcgNC44MDFjLjU5OCAxLjAxNSAxLjY3NCAxLjU4IDMuODI1IDIuNzA5eiIvPjxwYXRoIGZpbGw9IiM0NDQiIGQ9Im0xNy41NzcgNC40MzJsLTItMS4wNUMxMy44MjIgMi40NjEgMTIuOTQ0IDIgMTIgMmMtLjk0NSAwLTEuODIyLjQ2LTMuNTc4IDEuMzgybC0yIDEuMDVDNC4zMTggNS41MzYgMy4yNDIgNi4xIDIuNjM4IDcuMDcyTDEyIDEybDkuMzYyLTQuOTI3Yy0uNjA2LS45NzMtMS42OC0xLjUzNy0zLjc4NS0yLjY0MSIgb3BhY2l0eT0iLjciLz48cGF0aCBmaWxsPSIjNDQ0IiBkPSJNMjEuNDAzIDcuMTRhMy4xNTMgMy4xNTMgMCAwIDAtLjA0MS0uMDY3TDEyIDEydjEwYy45NDQgMCAxLjgyMi0uNDYgMy41NzgtMS4zODJsMi0xLjA1YzIuMTUxLTEuMTI5IDMuMjI3LTEuNjkzIDMuODI1LTIuNzA4Yy41OTctMS4wMTQuNTk3LTIuMjc3LjU5Ny00Ljh2LS4xMTdjMC0yLjUyNSAwLTMuNzg4LS41OTctNC44MDIiIG9wYWNpdHk9Ii41Ii8+PC9zdmc+",
    "sourceName": "立方",
    "sourceUrl": "https://qq.com#立方",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": -10100155,
    "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": 1774474850215,
    "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": "美涩",
    "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": 0,
    "cacheFirst": false,
    "customOrder": -10100154,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774099964721,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "书源",
    "sourceIcon": "https://cdn.nlark.com/yuque/0/2025/png/32605701/1753784200915-72dc680b-83d9-4362-ae10-86d26e8527bb.png",
    "sourceName": "阅读频道资源合集",
    "sourceUrl": "https://www.yuque.com/legado/rehh95",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": true,
    "contentBlacklist": ".*(?:jads.co|googlesyndication|googletagmanager|creative|infinity.js.aspx|cdn.jsdelivr|creative.*widgets).*",
    "customOrder": -10100152,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "@js:\n(()=>{\nlet headerss={};\nheaderss['User-Agent']=java.getWebViewUA();\n return JSON.stringify(headerss);\n})();",
    "injectJs": "Artplayer.PLAYBACK_RATE = [0.6, 1, 2, 4, 6];\nArtplayer.FAST_FORWARD_TIME = 500;\nArtplayer.MOBILE_DBCLICK_PLAY = false;\nArtplayer.DBCLICK_FULLSCREEN = false;\nArtplayer.TOUCH_MOVE_RATIO = 0.1;\n// 生成唯一ID\nfunction generateUniqueId() {\n    return 'artplayer-' + Date.now() + '-' + Math.random().toString(36).slice(2, 9);\n}\n\n// 视频替换函数（带防抖）\nlet replaceTimeout;\n\nfunction replaceVideos() {\n    clearTimeout(replaceTimeout);\n    replaceTimeout = setTimeout(() => {\n        document.querySelectorAll('video').forEach(video => {\n            try {\n\n                // 获取视频源\n                const videoSrc = video.currentSrc || video.getAttribute('src');\n                if (!videoSrc) return;\n                        const posterSrc = video.poster || video.getAttribute('poster') || '';\n\n                // 创建容器（继承样式）\n                var container = document.createElement('div');\n                container.id = generateUniqueId();\n                container.style.width = '100%';\n                //container.className = video.className;\n                container.style.aspectRatio = '16/9';\n\n                // 替换元素\n                video.parentNode.replaceWith(container);\n\n                // 初始化播放器（继承配置）\n                var art = new Artplayer({\n                    container: '#' + container.id,\n                    url: videoSrc,\n                    poster:posterSrc,\n                    theme: '#ffad00',\n                    autoplay: false,\n                    muted: false,\n                    fullscreen: true,\n                    autoSize: true,\n                    autoMini: false,\n                    playbackRate: true,\n                    setting: true,\n                    lock: true,\n                    gesture: true,\n                    fastForward: true,\n                    autoPlayback: true,\n                    autoOrientation: true,\n                });\n\n                art.on('dblclick', (event) => {\n                    event.stopImmediatePropagation();\n                    event.stopPropagation();\n                    event.preventDefault();\n                    const tmz = +\"20\";\n                    const clix = event.clientX;\n                    const rwid = art.rect.width;\n                    if (clix < rwid / 3) art.backward = tmz;\n                    else if (clix > rwid * 2 / 3) art.forward = tmz;\n                    else art.toggle();\n                });\n\n            } catch (e) {\n                console.log('🌈🌈🌈ArtPlayer init error:' + e);\n            }\n        });\n    }, 100);\n}\n\n// 初始执行\nreplaceVideos();\n\n// 页面卸载时清理\nwindow.addEventListener('beforeunload', () => {\n    clearTimeout(replaceTimeout);\n});",
    "lastUpdateTime": 1773945742824,
    "loadWithBaseUrl": true,
    "preload": false,
    "preloadJs": "// 捕获阶段阻止所有dblclick事件（包括动态添加的元素）\ndocument.addEventListener('dblclick', e => {\n  e.stopImmediatePropagation();\n  e.preventDefault();\n}, true); // true表示捕获阶段\n    // 定义去广告的函数\n    function removeAds() {\n        // 例子：通过 class 名称移除广告\n        const adClasses = ['ad-banner', 'ad-container', 'ad-sidebar', 'popup-ad']; // 替换为实际广告的 class 名\n        adClasses.forEach(className => {\n            const ads = document.querySelectorAll(`.${className}`);\n            ads.forEach(ad => ad.remove());\n        });\n\n        // 例子：通过 id 移除广告\n        const adIds = ['watch-footer', 'mobile-ad', 'interstitial-ad']; // 替换为实际广告的 id 名\n        adIds.forEach(id => {\n            const ad = document.getElementById(id);\n            if (ad) ad.remove();\n        });\n\n        // 例子：移除某些广告标签（比如 iframe 广告）\n        const adTags = ['iframe', 'ins']; // 替换为常用的广告标签\n        adTags.forEach(tag => {\n            const ads = document.querySelectorAll(tag);\n            ads.forEach(ad => {\n                if (ad.src && ad.src.includes('ads')) { // 检查 URL 中是否包含 \"ads\"\n                    ad.remove();\n                }\n            });\n        });\n    }\n    \n\ndocument.addEventListener('DOMContentLoaded', function() {\n     // 初次加载时移除广告\n    removeAds();\n});\n// 处理单页应用或动态导航\n    window.addEventListener('popstate', removeAds); // 监听浏览器的前进/后退操作\n    window.addEventListener('hashchange', removeAds); // 监听 URL 的哈希变化（单页应用常用）\n    \n\n/*\n(function () {\n    // 创建 MutationObserver 监听 DOM 的变化\n    const observer = new MutationObserver(() => {\n        removeAds(); // 每次 DOM 发生变化时执行去广告\n    });\n    // 开始监听\n    observer.observe(document.body, {\n        childList: true, // 监听子节点变化\n        subtree: true // 监听整个子树\n    });\n    \n})();\n*/\n\n\n    // 加载 ArtPlayer\nconst script = document.createElement('script');\nconst SCRIPT_URL = 'https://unpkg.com/artplayer/dist/artplayer.js';\nconst cachedScript = localStorage.getItem(\"artplayer_dm\");\nif (cachedScript) {\n  loadScriptFromString(cachedScript);\n} else {\n  fetch(SCRIPT_URL)\n    .then(res => res.text())\n    .then(scriptText => {\n        localStorage.setItem(\"artplayer_dm\", scriptText);\n        loadScriptFromString(scriptText);\n    });\n}\n// 工具函数：加载脚本\nfunction loadScriptFromString(content) {\nscript.textContent = content;\ndocument.head.appendChild(script);}\n",
    "shouldOverrideUrlLoading": "/zh.stripchat.com/.test(url)",
    "showWebLog": true,
    "singleUrl": true,
    "sourceComment": "版本：0.0.1",
    "sourceGroup": "美涩",
    "sourceIcon": "https://vdownload.hembed.com/image/icon/tab_logo.png?secure=EJYLwnrDlidVi_wFp3DaGw==,4867726124",
    "sourceName": "hanime（黄漫视频）",
    "sourceUrl": "https://hanime1.me/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10100147,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774100495875,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "书源",
    "sourceIcon": "https://cdn.nlark.com/yuque/0/2025/webp/32605701/1753780331325-625a7fd6-d80a-43ac-a459-7557980c0a58.webp",
    "sourceName": "明月书阁",
    "sourceUrl": "https://skybook.pages.dev",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": -10100133,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1774474876972,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.list",
    "ruleDescription": "<br><h3>{{$.vod_name}}</h3>\n<h6>[{{$.vod_score}}分] [{{$.vod_class ##\\,##] [}}]<b>发布于 {{$.vod_time}}</b></h6>\n\n<video src=\"{{$.vod_play_url ##^.*?\\$}}\" poster=\"{{$.vod_pic}}\" controls></video>",
    "ruleImage": "$.vod_pic",
    "ruleLink": "/api.php/provide/vod/?ac=detail&ids={{$.vod_id}}",
    "ruleNextPage": "page",
    "rulePubDate": "⏱️ {{$.vod_duration}}　{{$.vod_score}}分　{{$.vod_time}}",
    "ruleTitle": "$.vod_name",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "🔎 视频搜索::/api.php/provide/vod/?ac=detail&pg={{page}}&wd=巨乳\n\n精品推荐::/index.php/provide/vod/?ac=detail&pg={{page}}&t=1\n国产视频::/index.php/provide/vod/?ac=detail&pg={{page}}&t=2\n主播直播::/index.php/provide/vod/?ac=detail&pg={{page}}&t=3\n日本无码::/index.php/provide/vod/?ac=detail&pg={{page}}&t=4\n日本有码::/index.php/provide/vod/?ac=detail&pg={{page}}&t=5\n中文字幕::/index.php/provide/vod/?ac=detail&pg={{page}}&t=6\n巨乳美乳::/index.php/provide/vod/?ac=detail&pg={{page}}&t=7\n制服丝袜::/index.php/provide/vod/?ac=detail&pg={{page}}&t=34\n角色扮演::/index.php/provide/vod/?ac=detail&pg={{page}}&t=35\n熟女人妻::/index.php/provide/vod/?ac=detail&pg={{page}}&t=8\n强奸乱伦::/index.php/provide/vod/?ac=detail&pg={{page}}&t=9\n欧美精品::/index.php/provide/vod/?ac=detail&pg={{page}}&t=10\n少女萝莉::/index.php/provide/vod/?ac=detail&pg={{page}}&t=11\n三级伦理::/index.php/provide/vod/?ac=detail&pg={{page}}&t=12\n成人动漫::/index.php/provide/vod/?ac=detail&pg={{page}}&t=13\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=14\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=15\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=16\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=17\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=18\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=19\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=20\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=21\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=22\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=23\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=24\n成人2动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=25\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=26\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=27\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=28\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=29\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=30\n成人动漫::/api.php/provide/vod/?ac=detail&pg={{page}}&t=31",
    "sourceComment": "★源URL的填写链接为【list】格式\n\t网站网址\n\t网站网址/api.php/provide/vod/?ac=【list】\n\n例：\nhttps://apittzy.com\nhttps://apittzy.com/api.php/provide/vod/?ac=list\n\nps：\n\t使用【list】格式查看分类和分类id以组成分类URL\n\n\n\n★分类URL的填写链接为【detail】格式\n\t视频搜索::网站网址/api.php/provide/vod/?ac=【detail】&pg={{page}}&wd=关键词\n\t分类名称::网站网址/api.php/provide/vod/?ac=【detail】&pg={{page}}&t=分类id\n\n例：\n\t视频搜索::https://apittzy.com/api.php/provide/vod/?ac=detail&pg={{page}}&wd=按摩\n\t精品推荐::https://apittzy.com/api.php/provide/vod/?ac=detail&pg={{page}}&t=1\n\nps：\n\t分类URL写成【list】格式也行，但是没有详细信息。需要通过正文链接跳转正文页再填写正文规则。而且没有封面！\n\n\n\n★正文规则\n\t因为分类URL使用了【detail】格式，需要的信息都显示了。(视频链接)\n\t所以我们在描述规则填写正文规则就行了，这样子就省的再跳转一次正文链接了。\n\t但是链接规则还是要写的，不然不会加载列表。\n\n\n\n☆【vod】和【art】\n视频分类链接为【vod】格式\n\t网站网址/api.php/provide/vod/?ac=list\n图文分类链接为【art】格式\n\t网站网址/api.php/provide/art/?ac=list\n通过【list】格式查看分类和分类id以组成分类URL\n\nps：\n\t图片和小说链接都是【art】格式，这样子不好分割，建议把小说分类相关链接移除\n\t因为【art】格式的【detail】链接并不会显示全部套图，所以需要填写正确的链接规则跳转正文页再填写正文规则而不是直接在描述规则处填写规则\n\n\n\n☆详情页链接规则\n\t详情页链接仅支持【detail】格式\n网站网址/api.php/provide/(vod/art)/?ac=detail&ids=(视频id/图文id)\n\n\t如果分类URL只填写了网址，那么链接规则补充剩下的链接就行了\n例：\n\t/api.php/provide/vod/?ac=detail&ids=视频id\n❗仅限【vod】/【art】单格式使用\n\n\t如果订阅同时写了【vod】和【art】两种格式，链接就需要使用js判定\n@js:\nif(baseUrl.match(/art/)){\n\t网站网址/api.php/provide/art/?ac=detail&ids={{$.art_id}}\n}else{\n\t网站网址/api.php/provide/vod/?ac=detail&ids={{$.vod_id}}\n}\nps：\n\t使用两种格式时，此js在正文规则也会需要用到。\n\n\n\n\n\n‼️以下网址加上【list】链接可更改为json格式，查看分类及分类id\n\n\t因为json链接格式固定？\n\t所以修改一下网站之间的分类URL差别即可使用此订阅格式套用，，，大概\n\nps：\n\t注意【list】和【detail】格式以及【vod】和【art】链接的差别\n\n\n共30个网址：\n\n\t★鲨鱼::https://shayuapi.com\n\t\tps：老朋友了\n\n\n\t老鸭资源::http://laoyazy50.cc\n\t\tps：网站有时效性？\n\n\n\t老鸭资源2::https://api.apilyzy.com\n\n\n\n\t水蜜桃::http://51smt4.xyz\n\n\n\t99资源::http://99zy.pw\n\n\n\t99资源吧::http://99zyba.com\n\n\n\t丝袜资源::http://siwazyw.net\n\n\n\t浪潮资源::http://langchaozy6.com\n\n\n\tCK资源::http://www.feifei67.com\n\n\n\t大雕资源::http://www.dd-01.com\n\n\n\t银龙资源::https://yinlong.tv\n\n\n\t苍天资源::http://cj.cangtiancj.com\n\n\n\t骚色资源::http://api.saosezy.icu\n\n\n\t芒果资源::https://mgzyz1.com\n\n\n\t酷豆资源::https://kudouzy.com\n\n\n\t酷伦理资源::https://api.kudian70.com\n\n\n\t速播资源::https://api.suboapi.com\n\n\n\t国产精品::https://zy.difi.life\n\n\n\t痴汉队长::https://javcaptain.com\n\n\n\t秀色资源::https://api.xiuseapi.com\n\n\n\t苹果资源::https://www.pg111222.com\n\n\n\t茄子资源::http://www.qiezizy8.com\n\n\n\t辣椒资源::https://www.lajiaozy18.com\n\n\n\t花椒资源::https://apihjzy.com/api.php/provide/vod/?ac=list\n\t\tps：网站无法打开，json链接可以\n\n\n\t桃色资源::https://api.taoseapi.com/api.php/provide/vod/?ac=list\n\t\tps：网站无法打开，json链接可以\n\n\n\t乐播资源::https://lbapi9.com/api.php/provide/vod/?ac=list\n\t\tps：网站无法打开，json链接可以\n\n\n\t佳丽资源::https://jializyzapi.com/api.php/provide/vod/?ac=list\n\t\tps：网站无法打开，json链接可以\n\n\n\t番号资源::http://fhapi9.com/api.php/provide/vod/?ac=list\n\t\tps：网站无法打开，json链接可以\n\n\n\tx8优酷::https://gov.gooder.bar\n\t\tps：没有vod格式？\n\n\n\t土狗采集::http://vip-04.tgzy.cc\n\t\tpa：vod格式好像是音乐？\n\n\n\n☆使用【vod】和【art】两种链接的正文规则参考\n<br><h3>{{$.list..vod_name||$.list..art_name}}</h3>\n<h6>[{{$.list..type_name}}]<b>发布于 {{$.list..vod_time||$.list..art_time}}</b></h6>\n\n<video src=\"{{$.list..vod_play_url ##^.*?\\$}}\" poster=\"{{$.list..vod_pic}}\" controls>视频加载失败</video>\n\n<div id=\"TúPiàn\">\n{{$.list..art_content ##</?(br|p)>}}\n</div>\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<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\n@js:\nif(baseUrl.match(/art/)){\n\tresult.replace(/<vid[\\s\\S]+deo>/,'')\n}else{\n\tresult.replace(/<div[\\s\\S]+ipt>/,'')\n}",
    "sourceGroup": "美涩",
    "sourceIcon": "https://i.postimg.cc/sXtXHZDM/IMG_20220716_190738.png",
    "sourceName": "探探测试",
    "sourceUrl": "https://shayuapi.com",
    "style": "h3{text-align:center}\nh6{margin-bottom:0}\nb{float:right}\n\nvideo{width:100%;max-height:285px;border-radius:5px}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10098512,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "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": 1774475138312,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.model.data",
    "ruleContent": "`<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>{{$.model.title}}</h3>\n            <div class=\"video-container\">\n                <video id=\"video\" src=\"{{$.model.url}}\" poster=\"{{$.model.coverUrl}}\" controls></video>\n            </div>\n        </div>\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        <script>\n            // 获取视频元素\n            const video = document.getElementById('video');\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 / 50); // 每滑动100px快进1秒\n                    video.currentTime = Math.min(Math.max(seekTime, 0), duration);\n                }\n                e.preventDefault(); // 防止默认行为（如页面滚动）\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        </script>\n    </body>\n    </html>`",
    "ruleImage": "$.coverUrl",
    "ruleLink": "https://www.uaa001.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={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('粉嫩');source.getVariable()}}&orderType=1&page={{page}}&searchType=1&size=40\n\n最新排行::/api/video/app/video/search?category=&orderType=1&page={{page}}&searchType=1&size=40\n\n观看排行::/api/video/app/video/search?category=&orderType=3&page={{page}}&searchType=1&size=40\n\n收藏排行::/api/video/app/video/search?category=&orderType=4&page={{page}}&searchType=1&size=40\n\n国产视频::/api/video/app/video/search?orderType=1&origin=1&page={{page}}&searchType=1&size=40\n\n日本AV::/api/video/app/video/search?orderType=1&origin=2&page={{page}}&searchType=1&size=40\n\nH动漫::/api/video/app/video/search?orderType=1&origin=3&page={{page}}&searchType=1&size=40\n\n自拍偷拍::/api/video/app/video/search?category=自拍偷拍&orderType=1&page={{page}}&searchType=1&size=40\n\n主播福利::/api/video/app/video/search?category=主播福利&orderType=1&page={{page}}&searchType=1&size=40\n\n制服诱惑\n丝袜网袜::/api/video/app/video/search?tag=丝袜网袜&page={{page}}&searchType=1&size=40\n\n泳装水着::/api/video/app/video/search?tag=泳装水着&page={{page}}&searchType=1&size=40\n\nJK制服::/api/video/app/video/search?tag=JK制服&page={{page}}&searchType=1&size=40\n\n女仆::/api/video/app/video/search?tag=女仆&page={{page}}&searchType=1&size=40\n\n吊带袜::/api/video/app/video/search?tag=吊带袜&page={{page}}&searchType=1&size=40\n\n兔女郎::/api/video/app/video/search?tag=兔女郎&page={{page}}&searchType=1&size=40\n\n身材样貌\n少女萝莉::/api/video/app/video/search?tag=少女萝莉&page={{page}}&searchType=1&size=40\n\n白虎::/api/video/app/video/search?tag=白虎&page={{page}}&searchType=1&size=40\n\n苗条::/api/video/app/video/search?tag=苗条&page={{page}}&searchType=1&size=40\n\n美腿美脚::/api/video/app/video/search?tag=美腿美脚&page={{page}}&searchType=1&size=40\n\n美臀::/api/video/app/video/search?tag=美臀&page={{page}}&searchType=1&size=40\n\n熟女::/api/video/app/video/search?tag=熟女&page={{page}}&searchType=1&size=40\n\n巨乳::/api/video/app/video/search?tag=巨乳&page={{page}}&searchType=1&size=40\n\n交合喜好\n颜射::/api/video/app/video/search?tag=颜射&page={{page}}&searchType=1&size=40\n\n肛交::/api/video/app/video/search?tag=肛交&page={{page}}&searchType=1&size=40\n\n潮吹::/api/video/app/video/search?tag=潮吹&page={{page}}&searchType=1&size=40\n\n口交::/api/video/app/video/search?tag=口交&page={{page}}&searchType=1&size=40\n\n69::/api/video/app/video/search?tag=69&page={{page}}&searchType=1&size=40\n\n乳交::/api/video/app/video/search?tag=乳交&page={{page}}&searchType=1&size=40\n\n内射中出::/api/video/app/video/search?tag=内射中出&page={{page}}&searchType=1&size=40\n\n刺激玩法\n捆绑调教::/api/video/app/video/search?tag=捆绑调教&page={{page}}&searchType=1&size=40\n\n痴女痴汉::/api/video/app/video/search?tag=痴女痴汉&page={{page}}&searchType=1&size=40\n\n强奸轮奸::/api/video/app/video/search?tag=强奸轮奸&page={{page}}&searchType=1&size=40\n\n3P群交::/api/video/app/video/search?tag=3P群交&page={{page}}&searchType=1&size=40\n\n奇异催眠::/api/video/app/video/search?tag=奇异催眠&page={{page}}&searchType=1&size=40\n\n出轨::/api/video/app/video/search?tag=出轨&page={{page}}&searchType=1&size=40\n\nNTR::/api/video/app/video/search?tag=NTR&page={{page}}&searchType=1&size=40\n\n角色扮演\n医生护士::/api/video/app/video/search?tag=医生护士&page={{page}}&searchType=1&size=40\n\n空中女郎::/api/video/app/video/search?tag=空中女郎&page={{page}}&searchType=1&size=40\n\n未亡人::/api/video/app/video/search?tag=未亡人&page={{page}}&searchType=1&size=40\n\n老师校园::/api/video/app/video/search?tag=老师校园&page={{page}}&searchType=1&size=40\n\n人妻主妇::/api/video/app/video/search?tag=人妻主妇&page={{page}}&searchType=1&size=40\n\nOL::/api/video/app/video/search?tag=OL&page={{page}}&searchType=1&size=40\n\n姐姐妹妹::/api/video/app/video/search?tag=姐姐妹妹&page={{page}}&searchType=1&size=40\n\n母亲女儿::/api/video/app/video/search?tag=母亲女儿&page={{page}}&searchType=1&size=40\n\nTS人妖::/api/video/app/video/search?tag=TS人妖&page={{page}}&searchType=1&size=40\n\n女高中生::/api/video/app/video/search?tag=女高中生&page={{page}}&searchType=1&size=40",
    "sourceGroup": "美涩",
    "sourceIcon": "https://z3.ax1x.com/2021/05/04/gnLfmD.png",
    "sourceName": "UAA·视频",
    "sourceUrl": "https://www.uaa001.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,
    "contentBlacklist": "https://statics.woozooo.com/",
    "customOrder": -10098462,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "+ `,{\"headers\":{\"User-Agent\": \"Mozilla/5.0 (Windows; U; Windows NT 5.2;. en-US) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Quark/4.6.2.161\"}}`",
    "injectJs": "// 是蓝奏云链接时\nif(/lanzou/.test(window.location.href)){\nArray.from(document.querySelectorAll(`\n\t.mt2:last-of-type,.appreport,.n_login,\n\tdiv[style*=\"color: #8a6d3b;\"]\n`),$=>$.style.display='none');\n}\n\n//选择需要删除的标签，以,分隔\nitems = document.querySelectorAll(`\n.stealth-scroll,\n\n#evaluate-box,\n.project-operation,\n.recommend-footer,\n\n.project-desc2,\n.side-widget,\n\n.header_nav,\n.under,\n\n.layui-container layui-hide-md\n`)\n\n//把选择的html值改成空\nArray.from(items,(item)=>{\n\titem.innerHTML = ``\n\titem.style.display = `#m-splitter`\n})",
    "lastUpdateTime": 1774771527747,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\ntry {$ = JSON.parse(src).text;\n       if ($ == \"no file\") $ = []; } \n\n//catch (err)💜💜💜💜💜💜\ncatch (err) {\n\n        //取消分享🧡🧡🧡🧡🧡🧡\n        if (String(java.getString('.off@text')).match(/取消分享/)) {\n            $ = [{\n                name_all: java.getString('.off@text'),\n                time: baseUrl.replace(/[#\\?].*/g, ''),\n                url: baseUrl.replace(/[#\\?].*/g, '')\n                  }]   }\n\n\n        //蓝奏云分组🧡🧡🧡🧡🧡🧡\n        else {\n            json = [];\n            name = java.getString('.user-radio@text||title@text')\n            java.getElements('#folder .mlink').forEach(a => {         java.setContent(a);\n                json.push({\n                    name_all: java.getString('.filename@textNodes'),\n                    url: java.getString('a@href'),\n                    time: '🗂️ folder　📑 ' + (String(java.getString('.filesize@text')) || name)                      })\n     })\n\n           java.setContent(src);\n\n            mat = baseUrl.match(/^(.*?\\.com)[^##]*\\/(.+)$/)\n            url = mat[1]\n            uri = mat[2]\n\n            function $(reg) {\n                return uri.match(reg) ? true : false }\n\n            //get【pwd】(链接提取码)\npwd =\n$(/##[^【]/) ? uri.match(/##(.*?)(【|$)/)[1] : \"\";\njava.put('pwd', String(pwd));\n\nhead = { method: \"POST\",\n                params: {\n                uri: uri,\nimg: $(/【[^】]/) ? uri.match(/【([^】]+)/)[1] : \"\" \n              }}\n\n            //get 【body】\neval(src.match(/var pgs;([\\s\\S]*?pgs.+;)/)[1]);\neval('$=' + src.match(/data :([\\s\\S]*?\\})/)[1]);\nhead.body = Object.keys($).map(key => key + \"=\" + $[key]).join('&');\n\n            //补全【url】\n            url += \"/filemoreajax.php,\" + JSON.stringify(head);\n\n            //ajax。获取蓝奏云盘文件列表。\n            $ = JSON.parse(java.ajax(url));\n            $ = json.concat($.text != 0 ? $.text :\n              //密码错误提示\n              [{ name_all: $.info,\n                time: uri.replace(/[#\\?].*/, '') +$.info,\n                url: baseUrl.replace(/[#\\?].*/, '') }]\n                                         )\n            baseUrl = url\n          }\n          //蓝奏云分组结束🧡🧡🧡🧡🧡🧡\n\n}\n//catch (err)结束💜💜💜💜💜💜\n\njava.put('url', baseUrl);\nJSON.stringify($);\n</js>$.[*]",
    "ruleContent": "@js:\nname=java.get('name');\n\n//判断txt文件直链💛💛💛💛💛💛\n if(String(name).match(/\\.txt/i)){\n$=JSON.parse(src).data;\n\n    //判断msg==解析成功🖤🖤🖤🖤🖤🖤\n    //if(java.getString(\"$..msg\")==\"解析成功\"){\n    if(result.match(/解析成功/) ){\n\nurlz=java.getString(\"$..url\");\n\n$ = java.head(urlz,{\n\t\"accept-language\": \"zh-CN,en-US;q=0.9\",\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\" }).headers();\n\nurlzz = $.Location || $.location;\n\npath=String(name).match(/净化/)?\n\"replaceRule\":\nString(name).match(/订阅[^失败]/)?\n\"rssSource\": \nString(name).match(/TTS|语音|引擎|tts/i)?\n\"httpTTS\":\n//String(name).match(/阅读主题/)?\"theme\":\n//String(name).match(/阅读排版/)?\"readConfig\":\n//String(name).match(/TXT目录/i)?\"textTocRule\":\n\"bookSource\";\n\nsrc = \"legado://import/\"+path+\"?src=\";\n\n//网页▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n`<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n<title>${name}</title>\n<br>\n<md3><b>${name}</b></md3>\n<br><md4>\n　　❤️点◎下载文件◎，底栏会弹出信息，<br>\n　　❤️再点右下角“下载”，才会开始下载。<br>\n　　❤️文件默认存放在 根目录/Download/<br></md4>\n<br>\n\n<a href=\"${urlz}\" class=\"button\">◎ 下载文件 ◎</a>\n\n<br>\n<br><md4>\n　　❤️书源仅txt文件可一键导入。<br>\n　　　（无须下载可直接导入）<br>\n　　💔zip文件只能下载到本地解压。<br>\n<br></md4>\n\n<a href=\"${src+encodeURIComponent(urlzz)}\" class=\"button\">◎ 一键导入 ◎</a>\n\n<br>\n<br><md4>\n　资源链接，点击复制▼</md4>\n<center><textarea id=\"copy\" onclick=\"copy()\">${urlzz}</textarea></center>\n<br>\n<md5>\nrssSource by.Thomas.　　 md轻改&收集整理<br>\n资源取自网络，仅作参考试用，请24小时内删除<br></md5>\n\n<script>\nfunction copy(){\n\tdocument.getElementById('copy').select()\n\tdocument.execCommand('copy')\n\talert(\"复制成功\") }\n</script>\n`\n//网页结束▔▔▔▔▔▔▔▔▔▔▔▔▔▔\n    }\n    //解析成功结束🖤🖤🖤🖤🖤🖤\n\n    //解析失败跳转蓝奏官网下载页面🖤🖤\n    //else if(result.match(/解析失败/))\n    else{\n    java.ajax(java.get('urltp'))\n    }\n    //解析失败结束🖤🖤🖤🖤🖤🖤\n\n}\n//判断txt文件结束💛💛💛💛💛💛\n\n//蓝奏分组非txt文件蓝奏官网下载页面💛💛\nelse{result}",
    "ruleImage": "@js:\nn=`{{$.name_all}}` ;\n//uri1=`{{$.uri1}}` ;\n//src =uri1 ? uri1 :\n\nsrc=\n//文件名判断使用对应图标\nn.match(/\\.zip/i)? \"zip.png\" :\nn.match(/md|迷迭/)? \"md.png\" :\nn.match(/legado|阅读Pro/i)? \"yuedu.jpg\" :\nn.match(/tts|语音|讯飞语记/)? \"tts.png\" :\nn.match(/书源[^限制]|book/)? \"sy.png\" :\nn.match(/rss|订阅/)? \"dy.png\" :\nn.match(/净化/)? \"jh.png\" :\nn.match(/漫画|comic/i)? \"mh.png\" :\nn.match(/lequ/)? \"sy.png\" :\n//文件名判断apk图标\nn.match(/apk/g)? \"apk.png\" :\n//蓝奏云盘设定的图片or为空时\nbaseUrl.match(/【[^】$]/)? \nbaseUrl.match(/【(.*?)(】|$)/)[1] : \"lan.png\";\n\n\n//md图片简写补全。\n\neval(String(source.sourceComment));\n\npic= \npic==`0` ? `/md-yd/pic@main/00rose/${src}`:\npic==`1` ? `/md-yd/pic@main/01pink/${src}` :\npic==`2` ? `/md-yd/pic@main/02blue/${src}` :\npic==`3` ? `/md-yd/pic@main/03green/${src}` :\npic==`4` ? `/md-yd/pic@main/04gear/${src}` :\npic==`5` ? `/md-yd/pic@main/05green/${src}` :\npic==`6` ? `/md-yd/pic@main/06red/${src}`:\npic==`7` ? `/md-yd/pic@main/07blackred/${src}` :\npic==`8` ? `/md-yd/pic@main/08black/${src}` :\npic==`9` ? `/md-yd/pic@main/09note/${src}` :\n\npic==`10`?`/md-yd/pic@main/03green2/${src}`:\npic==`11`?`/md-yd/pic@main/04gear2/${src}` :\n//pic==`12`?\n`/md-yd/pic@main/04gear3/${src}`;\n\n\npic=gitpic+pic;\n\npic= \nString (gitpic).match(/gitee/) ? \nString(pic).replace(/\\/md\\-yd\\/pic\\@main/,''):\nString (gitpic).match(/\\/gh$/) ? \n pic : \nString (pic).replace(/\\@/,'/');\n\nsrc=src.match(/^http/) ? src : pic ;\nsrc",
    "ruleLink": "$.id\n@js:\nurl=`{{$.url}}`;\n\n  //判断txt文件生成直链❤️❤️❤️❤️❤️❤️\n  if(String(java.get(\"name\")).match(/\\.txt/i) ){\n\nid=result.replace(/(.*)\\?.*/,\"$1\");\n\nurl= baseUrl.match(/^(.*?com)/)[1];\n\nurltp=url+`/tp/`+result;\njava.put('urltp', urltp);\n\nurlx=url+`/`+id;\n\npwd=String(java.get(`pwd`));\n\nkey= String(source.getVariable());\n\nurlo=`https://apis.jxcxin.cn/api/lanzou?apiKey=` +key+ `&url=` +urlx+ `&pwd=` +pwd;\n\nurlo;\n  }\n  //txt文件生成直链结束❤️❤️❤️❤️❤️❤️\n\n\n  //非txt文件 蓝奏官网下载页面❤️❤️❤️\n  else{\n  url+=`/tp/{{$.id}}`;\n  url\n  }\n  //非txt文件结束❤️❤️❤️❤️❤️❤️",
    "ruleNextPage": "@js:\ntry {\n    url = String(java.get('url'));\n    url = url.replace(/(pg=)(\\d+)/, (mat, $1, $2) => {\n        return $1 + (~~$2 + 1)\n    }).replace(url, '');\n} catch (err) {\n    url = \"\"\n}\nurl",
    "rulePubDate": "💾 {{$.icon}}　📥 {{$.size}}　⏱️ {{$.time}}\n##💾 　📥 　⏱️\\s*",
    "ruleTitle": "$.name_all\n<js>\njava.put('name', result)\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📚MD.2::https://wwdn.lanzoue.com/b0d5g0tba##iori\n\n📚关耳::https://wwa.lanzoux.com/b05fs5ccd##guaner【sy.png】\n📚T1.小说::https://wwr.lanzoui.com/b03p9ftpc##read【thomas.gif】\n📚T2.影视::https://wwr.lanzoui.com/b03q7n81e##read【thomas.gif】\n📚T3.有声::https://wwr.lanzoui.com/b03qhlncd##read【thomas.gif】\n📚T4.其他::https://wwr.lanzoui.com/b03qlyydc##read【thomas.gif】\n\n📚星空看书::https://yuntuxs.lanzouj.com/b02r56jch##hdvo【sy.png】\n\n📚歌行灯_::https://xiao233666.lanzoui.com/b02q6wfuh##投币【sy.png】\n\n📚海阔小刘::https://ls125781003.lanzoum.com/b066gazed##8u15【sy.png】\n📚YELLYOO::https://wwn.lanzoub.com/b01pihymd##yuedu【sy.png】\n\n📚烏雲/淨化::https://www.lanzoux.com/b0bw8jwoh##【jh.png】\n\n✏️七十六时/字体::https://lsy-again.lanzouf.com/b01dlfjej##5tfp【zt.png】\n\n📚一程::https://y-c.lanzoui.com/b00r1ko0d##sydy",
    "sourceComment": "/*▔▔▔▔▔▔▔▔\nmd.24.5.1.\n此订阅依赖apis直链解析。\n有部分人无须申请key可直接正常使用。\n若无法正常使用，请申请获取key。\n\nhttps://apis.jxcxin.cn/user/goods.html\n1、注册账号。\n2、进绑定的邮箱激活账号。\n3、打开网站登录账号，左上，个人中心 接口列表，购买 “蓝奏云直连下载”，获取key。\n（不需要花钱，点购买即可获取）\n（拉到最右边，点购买，月付，确认）\n（不需要花钱！不需要花钱！不需要花钱！）\n\nhttps://apis.jxcxin.cn/user/owned.html\n4、个人中心，在 “我的接口” 里，复制刚获取到的key（只复制 “?apiKey=” 之后的字符）。\n5、打开此订阅，右上，“设置源变量”，粘贴key，保存。至此本订阅即可正常使用。\n\n💔直链解析配置略有点问题，\n部分链接或会解析失败，无法一键导入。\n若解析失败则转到蓝奏官方页面下载。\n💔此订阅依赖服务器直链解析，若服务器失效，则蓝奏txt一键导入功能失效。\n💔当难受云官方服务器变更规则，会导致订阅失效。请耐心等待apis服务器大佬跟进修正直链解析功能。\n▁▁▁▁▁▁▁▁*/\n\n\npic=5\n/*▔▔▔▔▔▔▔▔\n⬆︎设置图片样式\n0  红+\n1  粉++\n2  蓝++\n3  绿+  10\n4  绿齿轮  11  12\n5  绿字印章+\n6  红字印章+\n7  红字 黑白背景\n8  蓝字黑底（夜间）-\n9  卡其色 记事板-\n▁▁▁▁▁▁▁▁*/\n\n\ngitpic=17\n/*▔▔▔▔▔▔▔▔\n⬆︎gitpic 设置图片镜像链接。\n——— Ⓖ github ——\t—\n1  raw.kkgithub.com\n2  github.moeyy.xyz\n3  mirror.ghproxy.com\n4  raw.cachefly.998111.xyz\n5  ghproxy.net\n6 521github.com\n7  slink.ltd\n8  gh.con.sh\n9  cors.isteed.cc\n10 hub.gitmirror.com\n11 sciproxy.com\n12 ghproxy.cc\n13 cf.ghproxy.cc\n14 gh.jiasu.in\n15 ghcy.eu.org\n16 raw.gitmirror.com\n17 gitee.com ✱\n▁▁▁▁▁▁▁▁*/\n\n\n/*▔▔▔▔▔▔▔▔\n订阅源图标可自己复制链接替换\n（拉到顶部第三项）\n★★ github 图标★★\nhttps://521github.com/md-yd/pic/raw/main/00rose/a002b.png\nhttps://raw.gitmirror.com/md-yd/pic/main/00rose/002.png\n★★gitee图标★★\nhttps://gitee.com/visita/yd/raw/master/00rose/a002b.png\nhttps://gitee.com/visita/yd/raw/master/00rose/002.png\n▁▁▁▁▁▁▁▁*/\n\n\n/*▔▔▔▔▔▔▔▔\nrss by.Thomas。  md小改&收集整理。\n\n小说交流群892966579\nA群637775313不加人。若群炸了查看此群群资料找新家。\n\n内容取自网络，仅作学习参考，请24小时内删除。找到感兴趣内容请去支持正版。\n▁▁▁▁▁▁▁▁*/\n\n\ngitpic=\ngitpic==1 ? \n`https://raw.kkgithub.com`:\ngitpic==2 ? \n`https://github.moeyy.xyz/https://raw.githubusercontent.com`:\ngitpic==3 ?\n`https://mirror.ghproxy.com/https://raw.githubusercontent.com`:\ngitpic==4 ? \n`https://raw.cachefly.998111.xyz`:\ngitpic==5 ?\n`https://ghproxy.net/https://raw.githubusercontent.com`:\ngitpic==6 ? \n`https://521github.com/extdomains/raw.githubusercontent.com` :\ngitpic==7 ? \n`https://slink.ltd/https://raw.githubusercontent.com` :\ngitpic==8 ? \n`https://gh.con.sh/https://raw.githubusercontent.com` :\ngitpic==9 ? \n`https://cors.isteed.cc/https://raw.githubusercontent.com` :\ngitpic==10 ? \n`https://hub.gitmirror.com/https://raw.githubusercontent.com` :\ngitpic==11 ?\n`https://sciproxy.com/https://raw.githubusercontent.com` :\ngitpic==12 ?\n`https://ghproxy.cc/https://raw.githubusercontent.com` :\ngitpic==13 ?\n`https://cf.ghproxy.cc/https://raw.githubusercontent.com` :\ngitpic==14 ?\n`https://gh.jiasu.in/https://raw.githubusercontent.com`:\ngitpic==15 ? \n`https://ghcy.eu.org/https://raw.githubusercontent.com`:\ngitpic==16 ? \n`https://raw.gitmirror.com`:\n//gitpic==17 ? \n`https://gitee.com/visita/yd/raw/master`;",
    "sourceGroup": "书源",
    "sourceIcon": "https://gitee.com/visita/yd/raw/master/00rose/a002b.png#",
    "sourceName": "书源难受2",
    "sourceUrl": "https://www.lanzoux.com/#2024md2",
    "style": "body {\r\n    font-family: 'Roboto', sans-serif;\r\n    display: flex;\r\n    flex-direction: column;\r\n    height: 100vh;\r\n    margin: 5;\r\n    background-color: #F8F8F8;\r\n}\r\n\nmd1 {\n    color: #444444;\n    font-size: 2em; \r\n    margin: 40px 0;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\r\nmd2 {\r\n    color: #444444;\n    font-size: 1.4em; \n    margin-bottom: 40px;\n    line-height: 1.8;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\r\nmd3 {\n    color: #212121;\n    font-size: 1.6em; \r\n    margin: 10px 0;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\nmd4 {\n    font-size: 1.1em; \r\n}\n\r\nmd5 {\r\n    font-size: 1em; \n    color: #222222;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\r\ntextarea {\n    width:98%;\r\n    height: auto;\r\n    min-height: 54px;\n    max-height: 500px;\r\n    overflow-y: auto;\n    border-radius:5px;\r\n    border: 1px solid #BDBDBD;\r\n}\r\n\r\n.button {\n    display: block; \r\n    margin-left: auto;\n    margin-right: auto;\r\n    padding: 6px 10px;\r\n    background-color: #FF5722;\r\n    border: none;\r\n    color: white;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n    text-decoration: none;\r\n    margin-top: 1px;\r\n    font-size: 18px;\r\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\r\n    transition: background-color 0.5s,\n    transform 0.4s;\r\n}\r\n\r\n.button:hover {\r\n    background-color: #FF5722;\r\n    transform: translateY(-2px);\r\n}\r\n\r\n.button:active {\r\n    box-shadow: 0 3px 5px rgba(0, 0, 0, 0.4);\r\n    transform: translateY(0);\r\n}\r\n\r\n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://lupic.cdn.bcebos.com/,\nhttps://cpro.baidu.com/,\nhttps://eclick.baidu.com/,\nhttps://sofire.baidu.com/,\nhttps://analytics.woozooo.com/,\nhttps://statics.woozooo.com/,\nhttps://hm.baidu.com/,\nhttps://wwads.cn/code/,\nhttps://cdn.wwads.cn/,\nhttps://pagead2.googlesyndication.com,\nhttps://www.qlspx.com,\nhttps://sdk.51.la,\nhttps://abk.lingsiqiwu.com,\n\nhttps://googleads4.g.doubleclick.net,\nhttps://static.googleadsserving.cn,\nhttps://s0.2mdn.net,\nhttps://tpc.googlesyndication.com,\nhttps://www.googletagservices.com,\nhttps://cm.g.doubleclick.net,,\nhttps://star.jsyunmy.com,\nhttps://p.qlogo.cn,\nhttps://partner.googleadservices.com,",
    "customOrder": -10098460,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36\"}",
    "injectJs": "// 是蓝奏云链接时\nif(/lanzou/.test(window.location.href)){\nArray.from(document.querySelectorAll(`\n\t.mt2:last-of-type,.appreport,.n_login,\n\tdiv[style*=\"color: #8a6d3b;\"]\n`),$=>$.style.display='none');\n}\n\n\n//选择需要删除的标签，以,分隔\nitems = document.querySelectorAll(`\n.stealth-scroll,\n\n#evaluate-box,\n.project-operation,\n.recommend-footer,\n\n.project-desc2,\n.side-widget,\n\n.header_nav,\n.under\n`)\n\n//把选择的html值改成空\nArray.from(items,(item)=>{\n\titem.innerHTML = ``\n\titem.style.display = `#m-splitter`\n})",
    "lastUpdateTime": 1774771534565,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "<js>\ntry {\n    $ = JSON.parse(src).text;\n    if ($ == \"no file\") $ = [];\n} \n\n//💙catch。。。\ncatch (err) {\n\n    //💚💚网站整合\n     if (baseUrl.match(/www\\.baidu\\.com\\?wd=/)) {\n        $ = [];\n        baseUrl.replace(/^.*?wd=\\s*/,'').replace(/\\,/g,',{\"headers\":{\"User-Agent\": \"Mozilla/5.0 (Windows; U; Windows NT 5.2;. en-US) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Quark/4.6.2.161\"}}').\n        split(/\\s*♞♞\\s*/).map($$ => $.push({\n            name_all: $$.match(/.*?《(.*?)》/)[1],\n            time: $$.match(/◎.*?◎/) ? $$.match(/.*?◎(.*?)◎/)[1].replace(/■/,'▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁').replace(/🦁/,'｜编程狮｜w3cschool.cn｜') : \"\",\n            uri1: $$.match(/【.*?】/) ? $$.match(/.*?【(.*?)】/)[1] : \"\",\n            url: $$.match(/^([^【《◎]*),?/)[1]\n        }));\n    }\n    //💚💚0 网站整合结束\n\n\n    //💚💚蓝奏云\n    else {\n\n        //🧡🧡🧡蓝奏云非分组链接\n        if (String(java.getString('text.侵权\\/违法投诉@href')).length) {\n            $ = [{\n                name_all: String(java.getString('class.md@textNodes')),\n                icon: String(java.getString('class.md@textNodes')).replace(/.*\\./, ''),\n                size: String(java.getString('class.mtt@text')).replace(/\\( /, '').replace(/ \\)/, ''),\n                time: String(java.getString('class.mf@textNodes')).replace(/.*\\n/, ''),\n                uri: baseUrl.replace(/^(.+com).*\\/(.+)$/, '$2'),\n                url: baseUrl.replace(/^(.+com).*\\/(.+)$/, '$1/tp/$2')\n            }]\n        }\n        //🧡🧡🧡蓝奏云非分组结束\n\n\n        //🧡🧡🧡取消分享\n        else if (String(java.getString('.off@text')).match(/取消分享/)) {\n            $ = [{\n                name_all: java.getString('.off@text'),\n                time: baseUrl.replace(/[#\\?].*/g, ''),\n                url: baseUrl.replace(/[#\\?].*/g, '')\n            }]\n        }\n        //🧡🧡🧡取消结束\n\n\n        //🧡🧡🧡蓝奏云分组链接\n        else {\n            json = [];\n            name = java.getString('.user-radio@text||title@text')\n            java.getElements('#folder .mlink').forEach(a => {java.setContent(a);\n      json.push({\n      \t    name_all: java.getString('.filename@textNodes'),\n          url: java.getString('a@href'),\n          time: '🗂️ folder　📑 ' + (String(java.getString('.filesize@text')) || name) })\n    })\njava.setContent(src);\n\n\n            mat = baseUrl.match(/^(.*?\\.com)[^##]*\\/(.+)$/)\n            url = mat[1]\n            uri = mat[2]\n\n            function $(reg) {\n                return uri.match(reg) ? true : false}\n\n\n            //get【pwd】(链接提取码)\n            pwd =\n$(/##[^【]/) ? uri.match(/##(.*?)(【|$)/)[1] :\"\";\n\n\n\nhead = {method: \"POST\", params: {uri: uri,\nimg: $(/【[^】]/)?uri.match(/【([^】]+)/)[1] :\"\"}}\n\n\n            //get 【body】\n            eval(src.match(/var pgs;([\\s\\S]*?pgs.+;)/)[1]);\n            eval('$=' + src.match(/data :([\\s\\S]*?\\})/)[1]);\n            head.body = Object.keys($).map(key => key + \"=\" + $[key]).join('&');\n\n\n            //补全【url】\nurl += \"/filemoreajax.php,\" + JSON.stringify(head);\n\n            //ajax\n            $ = JSON.parse(java.ajax(url));\n            $ = json.concat($.text != 0 ? $.text :\n             //密码错误提示\n             [{name_all: $.info,\n               time: uri.replace(/[#\\?].*/, '') + $.info,\n               url: baseUrl.replace(/[#\\?].*/, '') }]\n                                        )\n            baseUrl = url\n        }\n        //🧡🧡🧡蓝奏分组结束\n\n    }\n    //💚💚蓝奏结束\n\n}\n//💙catch(err)结束\n\njava.put('url', baseUrl);\nJSON.stringify($);\n</js>$.[*]",
    "ruleDescription": "❗️0、0、开始❗️\n❗️0、0、结束❗️\n\n\n\n\n{{}}@js:\nurl=String(java.getString('$.url')).trim();\n\n\n\n//【..导入】\nif(url.match(/^..导入|^📥/)){\nuri=url.replace(/导入.*/,'');\nurl=url.replace(/.*导入|📥/,'');\npath =\n(uri==\"一键\"||uri==\"自动\"||url==\"📥.*\")?\"auto\":\nuri==\"书源\"?\"bookSource\":\nuri==\"订阅\"?\"rssSource\":\nuri==\"净化\"?\"replaceRule\":\n\"\";\nurl=url.match(/^legado\\:\\/\\//)?url:`legado://import/${path}?src=`+url;\nurl = String(url).replace(/^(.*?src=)(.*)/,(mat, $1, $2)=>{\n  return $1+encodeURIComponent($2);\n});\n\n\nresult=`<title>{{$.name_all}}</title>\n<iframe src=\"${url}\" hidden></iframe>\n<br>\n<md3><b>{{$.name_all}}</b></md3>\n\n<br>\n<br><md4>\n　　❤️导入不成功？多导入几次试试。<br>\n<br></md4>\n\n<a href=\"${url}\" class=\"button\">◎ 一键导入 ◎</a>\n\n<br>\n<br><md4>\n　资源链接，点击复制▼</md4>\n<center><textarea id=\"copy\" onclick=\"copy()\">${decodeURIComponent(String(url).replace(/legado.*?src=/,''))}</textarea>\n{{$.time}}</center>\n<br>\n<md5>\nrssSource by.Thomas.　　 md轻改&收集整理<br>\n资源取自网络，仅作参考试用，请24小时内删除<br></md5>\n\n<script>\nfunction copy(){\n\tdocument.getElementById('copy').select()\n\tdocument.execCommand('copy')\n\talert(\"复制成功\")\n}\n</script>`}\n\n\n//【自定义html】\nelse if(url.match(/\\d+、\\d+、/)){\nreg=new RegExp('❗️'+url+'开始❗️\\\\s*([\\\\s\\\\S]+?)\\\\s*❗️'+url+'结束❗️');\n//默认禁止放大缩小\nresult=result.match(reg)?\n'<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">'+result.match(reg)[1]:'<br>未找到对应html'\n}\n\nelse{result=''}",
    "ruleImage": "@js:\nn=`{{$.name_all}}` ;\nuri1=`{{$.uri1}}` ;\nsrc =\n\turi1 ? uri1 :\n\n//文件名判断使用对应图标✱②\nbaseUrl.match(/【(.*?)[】$]/) ? baseUrl.match(/【(.*?)(】|$)/)[1] :\n\nbaseUrl.match(/423down/)? \"423down.png\" :\nbaseUrl.match(/lxapk/)? \"lxapk.png\" :\nbaseUrl.match(/yoyodadada/)? \"yoyo.png\" :\n\n!n.match(/\\.\\w\\w\\w$/)? \"0.png\" :\n\nn.match(/迷迭|md/i)? \"md.png\" :\nn.match(/单仓|215613905|taka|q版/)? \"dc1.png\" :\nn.match(/可视|影视仓|影音壳子|多仓/)? \"dc2.png\" :\nn.match(/本地/)? \"bd.png\" :\nn.match(/海阔|[^青钢承]影|视|剧|直播|tv[^b]/i)? \"ys.png\" :\n\nn.match(/\\.apk/g)? \"apk.png\" :\nn.match(/\\.zip|\\.7z|\\.rar/g)? \"zip.png\" :\n\n//为空时\n`lan.png` ;\n\n\n//md图片简写补全。\n\neval(String(source.sourceComment));\n\npic= \npic==`0` ? `/md-yd/pic@main/00rose/${src}`:\npic==`1` ? `/md-yd/pic@main/01pink/${src}` :\npic==`2` ? `/md-yd/pic@main/02blue/${src}` :\npic==`3` ? `/md-yd/pic@main/03green/${src}` :\npic==`4` ? `/md-yd/pic@main/04gear/${src}` :\npic==`5` ? `/md-yd/pic@main/05green/${src}` :\npic==`6` ? `/md-yd/pic@main/06red/${src}`:\npic==`7` ? `/md-yd/pic@main/07blackred/${src}` :\npic==`8` ? `/md-yd/pic@main/08black/${src}` :\npic==`9` ? `/md-yd/pic@main/09note/${src}` :\n\npic==`10`?`/md-yd/pic@main/03green2/${src}`:\npic==`11`?`/md-yd/pic@main/04gear2/${src}` :\n//pic==`12`?\n`/md-yd/pic@main/04gear3/${src}`;\n\n\npic=gitpic+pic;\n\npic= \nString (gitpic).match(/gitee/) ? \nString(pic).replace(/\\/md\\-yd\\/pic\\@main/,''):\nString (gitpic).match(/\\/gh$/) ? \n pic : \nString (pic).replace(/\\@/,'/');\n\nsrc=src.match(/^http/) ? src : pic ;\nsrc",
    "ruleLink": "$.id@js:\nurl=`{{$.url||$.sourceUrl}}`\n\nif(result){url+=`{{$.id}}`;\n}",
    "ruleNextPage": "@js:\ntry {\n    url = String(java.get('url'));\n    url = url.replace(/(pg=)(\\d+)/, (mat, $1, $2) => {\n        return $1 + (~~$2 + 1)\n    }).replace(url, '');\n} catch (err) {\n    url = \"\"\n}\nurl",
    "rulePubDate": "💾 {{$.icon}}　📥 {{$.size}}　⏱️ {{$.time}}\n##💾 　📥 　⏱️\\s*",
    "ruleTitle": "$.name_all",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "MD.4::https://mmxmm.lanzoue.com/b0d6c5kkh##iori\n\n不似苏::https://busisu.lanzoub.com/s/yixie##777\n\n🅨酷我音乐::https://yoyodadada.lanzouw.com/b07ryhlg\n🅨PC-酷我音乐::https://yoyodadada.lanzouw.com/b01ay4hkh\n\n\n//‼️423软件‼️\n④系统辅助::https://423down.lanzouv.com/b0f1944od\n④视频图像::https://423down.lanzouv.com/b0f1czyjc\n④Xposed框架::https://423down.lanzouv.com/b0f1fns7a\n④资讯软件::https://423down.lanzouv.com/b0f19mgrg\n④酷安mod::https://423down.lanzouv.com/b0f2uzq2b\n④WiFi万能钥匙::https://423down.lanzouv.com/b0f1f1t5c\n④抖音mod::https://423down.lanzouv.com/b0f199a5a\n④百度地图::https://423down.lanzouv.com/b0f1f64re\n④浏览器::https://423down.lanzouv.com/b0f24u4de\n\n\n//乐享/黑鹰\n🅻太极框架::https://lxapk.lanzouw.com/b05s8e7cf##e8sx\n\n\n🅨1DM::https://yoyodadada.lanzouw.com/b07q5ehe\n🅨PC-IDM::https://yoyodadada.lanzouw.com/b01c4az3g##4v3k\n🅨ADM下载::https://yoyodadada.lanzouw.com/b07pt0kb\n\n🅨小鸡模拟器::https://yoyodadada.lanzouw.com/b01d0c7uj##7j31【yx.png】\n🅨海星模拟器::https://yoyodadada.lanzouw.com/b07psppa##【yx.png】\n\n🅨百度输入法::https://yoyodadada.lanzouw.com/b01byu8bg\n\n🅨AdGuard::https://yoyodadada.lanzouw.com/b01dqpheh##5lr9\n\n\n//yoyo\n🅨PC激活工具::https://yoyodadada.lanzouw.com/b01by283a\n🅨PC驱动精灵::https://yoyodadada.lanzouw.com/b01bwkyqf\n🅨PC硬件检测::https://yoyodadada.lanzouw.com/b01bwkyod\n",
    "sourceComment": "pic=2\n/*▔▔▔▔▔▔▔▔\n⬆︎设置图片样式\n0  红+\n1  粉++\n2  蓝++\n3  绿+  10\n4  绿齿轮  11  12\n5  绿字印章+\n6  红字印章+\n7  红字 黑白背景\n8  蓝字黑底（夜间）-\n9  卡其色 记事板-\n▁▁▁▁▁▁▁▁*/\n\n\ngitpic=17\n/*▔▔▔▔▔▔▔▔\n⬆︎gitpic 设置图片镜像链接。\n——— Ⓖ github ——\t—\n1  raw.kkgithub.com\n2  github.moeyy.xyz\n3  mirror.ghproxy.com\n4  raw.cachefly.998111.xyz\n5  ghproxy.net\n6 521github.com\n7  slink.ltd\n8  gh.con.sh\n9  cors.isteed.cc\n10 hub.gitmirror.com\n11 sciproxy.com\n12 ghproxy.cc\n13 cf.ghproxy.cc\n14 gh.jiasu.in\n15 ghcy.eu.org\n16 raw.gitmirror.com\n17 gitee.com ✱\n▁▁▁▁▁▁▁▁*/\n\n\n/*▔▔▔▔▔▔▔▔\n订阅源图标可自己复制链接替换\n（拉到顶部第三项）\n★★ github 图标★★\nhttps://521github.com/md-yd/pic/raw/main/00rose/a004.png\nhttps://521github.com/md-yd/pic/raw/main/00rose/004.png\n★★gitee图标★★\nhttps://gitee.com/visita/yd/raw/master/00rose/a004.png\nhttps://gitee.com/visita/yd/raw/master/00rose/004.png\n▁▁▁▁▁▁▁▁*/\n\n\n/*▔▔▔▔▔▔▔▔\nrss by.Thomas。  md小改&收集整理。\n\n小说交流群892966579\nA群637775313不加人。若群炸了查看此群群资料找新家。\n\n内容取自网络，仅作学习参考，请24小时内删除。找到感兴趣内容请去支持正版。\n\nxbak.PC-挂机摸鱼修仙大陆::https://wwpr.lanzout.com/b0f4v9ndg##ehxj\n▁▁▁▁▁▁▁▁*/\n\n\ngitpic=\ngitpic==1 ? \n`https://raw.kkgithub.com`:\ngitpic==2 ? \n`https://github.moeyy.xyz/https://raw.githubusercontent.com`:\ngitpic==3 ?\n`https://mirror.ghproxy.com/https://raw.githubusercontent.com`:\ngitpic==4 ? \n`https://raw.cachefly.998111.xyz`:\ngitpic==5 ?\n`https://ghproxy.net/https://raw.githubusercontent.com`:\ngitpic==6 ? \n`https://521github.com/extdomains/raw.githubusercontent.com` :\ngitpic==7 ? \n`https://slink.ltd/https://raw.githubusercontent.com` :\ngitpic==8 ? \n`https://gh.con.sh/https://raw.githubusercontent.com` :\ngitpic==9 ? \n`https://cors.isteed.cc/https://raw.githubusercontent.com` :\ngitpic==10 ? \n`https://hub.gitmirror.com/https://raw.githubusercontent.com` :\ngitpic==11 ?\n`https://sciproxy.com/https://raw.githubusercontent.com` :\ngitpic==12 ?\n`https://ghproxy.cc/https://raw.githubusercontent.com` :\ngitpic==13 ?\n`https://cf.ghproxy.cc/https://raw.githubusercontent.com` :\ngitpic==14 ?\n`https://gh.jiasu.in/https://raw.githubusercontent.com`:\ngitpic==15 ? \n`https://ghcy.eu.org/https://raw.githubusercontent.com`:\ngitpic==16 ? \n`https://raw.gitmirror.com`:\n//gitpic==17 ? \n`https://gitee.com/visita/yd/raw/master`;",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://gitee.com/visita/yd/raw/master/00rose/a004b.png#",
    "sourceName": "软件难受4",
    "sourceUrl": "https://www.lanzoux.com/#2024md4",
    "style": "body {\r\n    font-family: 'Roboto', sans-serif;\r\n    display: flex;\r\n    flex-direction: column;\r\n    height: 100vh;\r\n    margin: 5;\r\n    background-color: #F8F8F8;\r\n}\r\n\nmd1 {\n    color: #444444;\n    font-size: 2em; \r\n    margin: 40px 0;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\r\nmd2 {\r\n    color: #444444;\n    font-size: 1.4em; \n    margin-bottom: 40px;\n    line-height: 1.8;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\r\nmd3 {\n    color: #212121;\n    font-size: 1.6em; \r\n    margin: 10px 0;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\nmd4 {\n    font-size: 1.1em; \r\n}\n\r\nmd5 {\r\n    font-size: 1em; \n    color: #222222;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\ntextarea {\n    width:98%;\r\n    height: auto;\r\n    min-height: 54px;\n    max-height: 500px;\r\n    overflow-y: auto;\n    border-radius:5px;\r\n    border: 1px solid #BDBDBD;\r\n}\r\n\r\n.button {\n    display: block; \r\n    margin-left: auto;\n    margin-right: auto;\r\n    padding: 6px 10px;\r\n    background-color: #FF5722;\r\n    border: none;\r\n    color: white;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n    text-decoration: none;\r\n    margin-top: 1px;\r\n    font-size: 18px;\r\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\r\n    transition: background-color 0.5s,\n    transform 0.4s;\r\n}\r\n\r\n.button:hover {\r\n    background-color: #FF5722;\r\n    transform: translateY(-2px);\r\n}\r\n\r\n.button:active {\r\n    box-shadow: 0 3px 5px rgba(0, 0, 0, 0.4);\r\n    transform: translateY(0);\r\n}\r\n\n\r\n.next-link a[title] {\n\r\n    background-color: #FF5722;\r\n    \r\n    \r\n    \r\n    font-size: 18px;\r\n}\r\n\r\n.previous-link a[title] {\n    \r\n    background-color: #FF5722;\r\n    \r\n    \r\n    \r\n    font-size: 18px;\r\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://lupic.cdn.bcebos.com/,\nhttps://cpro.baidu.com/,\nhttps://eclick.baidu.com/,\nhttps://sofire.baidu.com/,\nhttps://analytics.woozooo.com/,\nhttps://statics.woozooo.com/,\nhttps://hm.baidu.com/,\nhttps://wwads.cn/code/,\nhttps://cdn.wwads.cn/,\nhttps://pagead2.googlesyndication.com,\nhttps://www.qlspx.com,\nhttps://sdk.51.la,\nhttps://abk.lingsiqiwu.com,\n\nhttps://googleads4.g.doubleclick.net,\nhttps://static.googleadsserving.cn,\nhttps://s0.2mdn.net,\nhttps://tpc.googlesyndication.com,\nhttps://www.googletagservices.com,\nhttps://cm.g.doubleclick.net,,\nhttps://star.jsyunmy.com,\nhttps://p.qlogo.cn,\nhttps://partner.googleadservices.com,",
    "customOrder": -10098459,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"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\t\"upgrade-insecure-requests\": \"1\",\r\n\"accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\",\r\n\"accept-language\": \"zh-CN,en-US;q=0.9\",\r\n\"cookie\": \"down_ip=1\",\r\n\"x-requested-with\": \"cn.nr19.mbrowser\"\n}",
    "injectJs": "// 是蓝奏云链接时\nif(/lanzou/.test(window.location.href)){\nArray.from(document.querySelectorAll(`\n\t.mt2:last-of-type,.appreport,.n_login,\n\tdiv[style*=\"color: #8a6d3b;\"]\n`),$=>$.style.display='none');\n}\n\n\n//选择需要删除的标签，以,分隔\nitems = document.querySelectorAll(`\n.stealth-scroll,\n\n#evaluate-box,\n.project-operation,\n.recommend-footer,\n\n.project-desc2,\n.side-widget,\n\n.header_nav,\n.under\n`)\n\n//把选择的html值改成空\nArray.from(items,(item)=>{\n\titem.innerHTML = ``\n\titem.style.display = `#m-splitter`\n})",
    "lastUpdateTime": 1774771540716,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "<js>\ntry {\n    $ = JSON.parse(src).text;\n    if ($ == \"no file\") $ = [];\n} \n\n//💙catch。。。\ncatch (err) {\n\n    //💚💚网站整合\n     if (baseUrl.match(/www\\.baidu\\.com\\?wd=/)) {\n        $ = [];\n        baseUrl.replace(/^.*?wd=\\s*/,'').replace(/\\,/g,',{\"headers\":{\"User-Agent\": \"Mozilla/5.0 (Windows; U; Windows NT 5.2;. en-US) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Quark/4.6.2.161\"}}').\n        split(/\\s*♞♞\\s*/).map($$ => $.push({\n            name_all: $$.match(/.*?《(.*?)》/)[1],\n            time: $$.match(/◎.*?◎/) ? $$.match(/.*?◎(.*?)◎/)[1].replace(/■/,'▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁').replace(/🦁/,'｜编程狮｜w3cschool.cn｜') : \"\",\n            uri1: $$.match(/【.*?】/) ? $$.match(/.*?【(.*?)】/)[1] : \"004.png\",\n            url: $$.match(/^([^【《◎]*),?/)[1]\n        }));\n    }\n    //💚💚0 网站整合结束\n\n\n    //💚💚蓝奏云\n    else {\n\n        //🧡🧡🧡蓝奏云非分组链接\n        if (String(java.getString('text.举报文件@href')).length) {\n            $ = [{\n                name_all: String(java.getString('class.md@textNodes')),\n                icon: String(java.getString('class.md@textNodes')).replace(/.*\\./, ''),\n                size: String(java.getString('class.mtt@text')).replace(/\\( /, '').replace(/ \\)/, ''),\n                time: String(java.getString('class.mf@textNodes')).replace(/.*\\n/, ''),\n                uri: baseUrl.replace(/^(.+com).*\\/(.+)$/, '$2'),\n                url: baseUrl.replace(/^(.+com).*\\/(.+)$/, '$1/tp/$2')\n            }]\n        }\n        //🧡🧡🧡蓝奏云非分组结束\n\n\n        //🧡🧡🧡取消分享\n        else if (String(java.getString('.off@text')).match(/取消分享/)) {\n            $ = [{\n                name_all: java.getString('.off@text'),\n                time: baseUrl.replace(/[#\\?].*/g, ''),\n                url: baseUrl.replace(/[#\\?].*/g, ''),\n            }]\n        }\n        //🧡🧡🧡取消结束\n\n\n        //🧡🧡🧡蓝奏云分组链接\n        else {\n            json = [];\n            name = java.getString('.user-radio@text||title@text')\n            java.getElements('#folder .mlink').forEach(a => {java.setContent(a);\n      json.push({\n      \t    name_all: java.getString('.filename@textNodes'),\n          url: java.getString('a@href'),\n          time: '🗂️ folder　📑 ' + (String(java.getString('.filesize@text')) || name) })\n    })\njava.setContent(src);\n\n\n            mat = baseUrl.match(/^(.*?\\.com)[^##]*\\/(.+)$/)\n            url = mat[1]\n            uri = mat[2]\n            uri2=baseUrl.match(/【[^】]/)? baseUrl.match(/【(.*?)[】$]/)[1]: \"004.png\"\n\n            function $(reg) {\n                return uri.match(reg) ? true : false}\n\n\n            //get【pwd】(链接提取码)\n            pwd =\n$(/##[^【]/) ? uri.match(/##(.*?)(【|$)/)[1] :\"\";\n\n\n\nhead = {method: \"POST\", params: {uri: uri,\nimg: $(/【[^】]/)?uri.match(/【([^】]+)/)[1] :\"\"}}\n\n\n            //get 【body】\n            eval(src.match(/var pgs;([\\s\\S]*?pgs.+;)/)[1]);\n            eval('$=' + src.match(/data :([\\s\\S]*?\\})/)[1]);\n            head.body = Object.keys($).map(key => key + \"=\" + $[key]).join('&');\n\n\n            //补全【url】\nurl += \"/filemoreajax.php,\" + JSON.stringify(head);\n\n            //ajax\n            $ = JSON.parse(java.ajax(url));\n            $ = json.concat($.text != 0 ? $.text :\n             //密码错误提示\n             [{name_all: $.info,\n               time: uri.replace(/[#\\?].*/, '') + $.info,\n               url: baseUrl.replace(/[#\\?].*/, '') }]\n                                        )\n            baseUrl = url\n        }\n        //🧡🧡🧡蓝奏分组结束\n\n    }\n    //💚💚蓝奏结束\n\n}\n//💙catch(err)结束\n\njava.put('url', baseUrl);\nJSON.stringify($);\n</js>$.[*]",
    "ruleImage": "@js:\nn=`{{$.name_all}}` ;\nuri1=`{{$.uri1}}` ;\n\nsrc =uri1 ? uri1 :\n\n//文件名判断使用对应图标\nn.match(/\\.zip|\\.7z|\\.rar/i)? \"zip.png\" :\nn.match(/apk/g)? \"apk.png\" :\n\n!n.match(/\\.\\w\\w\\w$/)? \"0.png\" :\nn.match(/迷迭|md/i)? \"md.png\" :\nn.match(/单仓|215613905|taka|q版/)? \"dc1.png\" :\nn.match(/可视|影视仓|影音壳子|多仓/)? \"dc2.png\" :\nn.match(/本地/)? \"bd.png\" :\nn.match(/海阔|[^青钢承]影|视|剧|直播|tv[^b]/i)? \"ys.png\" :\n\nbaseUrl.match(/423down/)? \"423down.png\" :\nbaseUrl.match(/lxapk/)? \"lxapk.png\" :\nbaseUrl.match(/yoyodadada/)? \"yoyo.png\" :\n\n\n\nbaseUrl.match(/【(.*?)[】$]/) ? baseUrl.match(/【(.*?)(】|$)/)[1]:\n\n//为空时\n`lan.png` ;\n\n\n//md图片简写补全。\n\neval(String(source.sourceComment));\n\npic= \npic==`0` ? `/md-yd/pic@main/00rose/${src}`:\npic==`1` ? `/md-yd/pic@main/01pink/${src}` :\npic==`2` ? `/md-yd/pic@main/02blue/${src}` :\npic==`3` ? `/md-yd/pic@main/03green/${src}` :\npic==`4` ? `/md-yd/pic@main/04gear/${src}` :\npic==`5` ? `/md-yd/pic@main/05green/${src}` :\npic==`6` ? `/md-yd/pic@main/06red/${src}`:\npic==`7` ? `/md-yd/pic@main/07blackred/${src}` :\npic==`8` ? `/md-yd/pic@main/08black/${src}` :\npic==`9` ? `/md-yd/pic@main/09note/${src}` :\n\npic==`10`?`/md-yd/pic@main/03green2/${src}`:\npic==`11`?`/md-yd/pic@main/04gear2/${src}` :\n//pic==`12`?\n`/md-yd/pic@main/04gear3/${src}`;\n\n\npic=gitpic+pic;\n\npic= \nString (gitpic).match(/gitee/) ? \nString(pic).replace(/\\/md\\-yd\\/pic\\@main/,''):\nString (gitpic).match(/\\/gh$/) ? \n pic : \nString (pic).replace(/\\@/,'/');\n\nsrc=src.match(/^http/) ? src : pic ;\nsrc",
    "ruleLink": "$.id@js:\nurl=`{{$.url}}`\nif(result){url+=`/tp/{{$.id}}`;\nurl}",
    "ruleNextPage": "@js:\ntry {\n    url = String(java.get('url'));\n    url = url.replace(/(pg=)(\\d+)/, (mat, $1, $2) => {\n        return $1 + (~~$2 + 1)\n    }).replace(url, '');\n} catch (err) {\n    url = \"\"\n}\nurl",
    "rulePubDate": "💾 {{$.icon}}　📥 {{$.size}}　⏱️ {{$.time}}\n##💾 　📥 　⏱️\\s*",
    "ruleTitle": "$.name_all",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "‼️‼️注意‼️‼️::http://www.baidu.com?wd=https://0【md.png】《⬇︎本列表仅作警示 无须点入⬇︎》◎▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁◎♞♞https://1【md.png】《‼️本订阅内的软件，皆未测试。所有软件或游戏，》◎◎♞♞https://2【md.png】《如需分享推广群才能用，点分享然后取消，不发出去，》◎◎♞♞https://4【md.png】《也算分享成功。可重复假分享满足次数，即可正常使用。》◎不清楚这个小bug是否仍有效◎♞♞https://6【md.png】《‼️软件中如有广告、优惠活动、羊毛资讯，涉及资金，请勿相信！》◎▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁◎♞♞https://7【md.png】《‼️如有在线博彩、赌博，都是诈骗，请勿尝试！》◎▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁◎\n\n\n破解游戏::https://www.lanzoui.com/b053xt4vg\nHs团队破解游戏::https://pan.lanzoui.com/b888887\n兜兜软件::https://www.lanzoui.com/b133841/\n兜兜游戏::https://www.lanzoui.com/b897234\n霖淘购软件::https://www.lanzoui.com/b252370/\n霖淘购游戏::https://www.lanzoui.com/b01zs40va\n未归类::https://www.lanzoui.com/b01b01h9a\nBhVip::https://pan.lanzoui.com/u/彪煌qq1846055318\n大肥::https://pan.lanzoui.com/u/qianxun8\n淘购街::https://pan.lanzoui.com/b165784\n软件库::https://www.lanzoui.com/u/rjk\n安卓软件::https://www.lanzoui.com/u/langman666\n滚哥new::https://ypziyuanshare.lanzoul.com/b0epegxzi\n滚哥old::https://www.lanzoux.com/b838976\n小默::https://pan.lanzoui.com/b828085\n阿友::https://pan.lanzoui.com/u/aybaba\n软件分享::https://www.lanzoui.com/u/aiwange\n动漫::https://pan.lanzoui.com/b765262/",
    "sourceComment": "pic=9\n/*▔▔▔▔▔▔▔▔\n⬆︎设置图片样式\n0  红+\n1  粉++\n2  蓝++\n3  绿+  10\n4  绿齿轮  11  12\n5  绿字印章+\n6  红字印章+\n7  红字 黑白背景\n8  蓝字黑底（夜间）-\n9  卡其色 记事板-\nv240501\n▁▁▁▁▁▁▁▁*/\n\n\ngitpic=17\n/*▔▔▔▔▔▔▔▔\n⬆︎gitpic 设置图片镜像链接。\n——— Ⓖ github ——\t—\n1  raw.kkgithub.com\n2  github.moeyy.xyz\n3  mirror.ghproxy.com\n4  raw.cachefly.998111.xyz\n5  ghproxy.net\n6 521github.com\n7  slink.ltd\n8  gh.con.sh\n9  cors.isteed.cc\n10 hub.gitmirror.com\n11 sciproxy.com\n12 ghproxy.cc\n13 cf.ghproxy.cc\n14 gh.jiasu.in\n15 ghcy.eu.org\n16 raw.gitmirror.com\n17 gitee.com ✱\n▁▁▁▁▁▁▁▁*/\n\n\n/*▔▔▔▔▔▔▔▔\n订阅源图标可自己复制链接替换\n（拉到顶部第三项）\n★★ github 图标★★\nhttps://521github.com/md-yd/pic/raw/main/00rose/0purple.jpg\nhttps://521github.com/md-yd/pic/raw/main/00rose/004.png\n★★gitee图标★★\nhttps://gitee.com/visita/yd/raw/master/00rose/0purple.jpg\nhttps://gitee.com/visita/yd/raw/master/00rose/004.png\n▁▁▁▁▁▁▁▁*/\n\n\n/*▔▔▔▔▔▔▔▔\nrss by.Thomas。  md小改&收集整理。\n\n小说交流群892966579\nA群637775313不加人。若群炸了查看此群群资料找新家。\n\n内容取自网络，仅作学习参考，请24小时内删除。找到感兴趣内容请去支持正版。\n▁▁▁▁▁▁▁▁*/\n\n\ngitpic=\ngitpic==1 ? \n`https://raw.kkgithub.com`:\ngitpic==2 ? \n`https://github.moeyy.xyz/https://raw.githubusercontent.com`:\ngitpic==3 ?\n`https://mirror.ghproxy.com/https://raw.githubusercontent.com`:\ngitpic==4 ? \n`https://raw.cachefly.998111.xyz`:\ngitpic==5 ?\n`https://ghproxy.net/https://raw.githubusercontent.com`:\ngitpic==6 ? \n`https://521github.com/extdomains/raw.githubusercontent.com` :\ngitpic==7 ? \n`https://slink.ltd/https://raw.githubusercontent.com` :\ngitpic==8 ? \n`https://gh.con.sh/https://raw.githubusercontent.com` :\ngitpic==9 ? \n`https://cors.isteed.cc/https://raw.githubusercontent.com` :\ngitpic==10 ? \n`https://hub.gitmirror.com/https://raw.githubusercontent.com` :\ngitpic==11 ?\n`https://sciproxy.com/https://raw.githubusercontent.com` :\ngitpic==12 ?\n`https://ghproxy.cc/https://raw.githubusercontent.com` :\ngitpic==13 ?\n`https://cf.ghproxy.cc/https://raw.githubusercontent.com` :\ngitpic==14 ?\n`https://gh.jiasu.in/https://raw.githubusercontent.com`:\ngitpic==15 ? \n`https://ghcy.eu.org/https://raw.githubusercontent.com`:\ngitpic==16 ? \n`https://raw.gitmirror.com`:\n//gitpic==17 ? \n`https://gitee.com/visita/yd/raw/master`;",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://gitee.com/visita/yd/raw/master/00rose/a006b.png#",
    "sourceName": "未测难受6",
    "sourceUrl": "https://www.lanzoux.com/#2024md6",
    "style": "body {\r\n    font-family: 'Roboto', sans-serif;\r\n    display: flex;\r\n    flex-direction: column;\r\n    height: 100vh;\r\n    margin: 5;\r\n    background-color: #F8F8F8;\r\n}\r\n\nmd1 {\n    color: #444444;\n    font-size: 2em; \r\n    margin: 40px 0;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\r\nmd2 {\r\n    color: #444444;\n    font-size: 1.4em; \n    margin-bottom: 40px;\n    line-height: 1.8;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\r\nmd3 {\n    color: #212121;\n    font-size: 1.6em; \r\n    margin: 10px 0;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\nmd4 {\n    font-size: 1.1em; \r\n}\n\r\nmd5 {\r\n    font-size: 1em; \n    color: #222222;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\ntextarea {\n    width:98%;\r\n    height: auto;\r\n    min-height: 54px;\n    max-height: 500px;\r\n    overflow-y: auto;\n    border-radius:5px;\r\n    border: 1px solid #BDBDBD;\r\n}\r\n\r\n.button {\n    display: block; \r\n    margin-left: auto;\n    margin-right: auto;\r\n    padding: 6px 10px;\r\n    background-color: #FF5722;\r\n    border: none;\r\n    color: white;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n    text-decoration: none;\r\n    margin-top: 1px;\r\n    font-size: 18px;\r\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\r\n    transition: background-color 0.5s,\n    transform 0.4s;\r\n}\r\n\r\n.button:hover {\r\n    background-color: #FF5722;\r\n    transform: translateY(-2px);\r\n}\r\n\r\n.button:active {\r\n    box-shadow: 0 3px 5px rgba(0, 0, 0, 0.4);\r\n    transform: translateY(0);\r\n}\r\n\n\r\n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10098457,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774100368030,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "（自用）精品网站合集",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://gitee.com/guaner001125/booksource/raw/master/%E5%9B%BE%E7%89%87/%E5%B7%A5%E5%85%B7.jpg",
    "sourceName": "土豆游戏库",
    "sourceUrl": "http://tdtd.chat/inviter?id=63ce8841356847256c4a2743",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10098457,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775591385863,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "（自用）精品网站合集",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://imgsa.baidu.com/forum/pic/item/d0c8a786c9177f3e8ebb0cca7ecf3bc79e3d566e.jpg",
    "sourceName": "互联网资源",
    "sourceUrl": "https://www.lovejay.top/#",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10098453,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236196662,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "书源",
    "sourceIcon": "https://www.logosc.cn/uploads/icon/2021/01/07//c0409859-780a-4b5f-b918-d0ae879368e7.png",
    "sourceName": "爱推书源",
    "sourceUrl": "https://mzrjk.top",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -101053,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1 Edg/138.0.0.0\"}",
    "injectJs": "const host = document.location.host;\n\n// 获取书名信息 - 优化版本\nfunction getBookName(element) {\n    // 1. 首先尝试从图片alt属性获取（最直接）\n    const img = element.querySelector('img');\n    if (img && img.alt && img.alt.trim()) {\n        const altText = img.alt.trim();\n        // 可以进一步清理alt文本（如有需要）\n        // 例如：移除重复的\"-\"或特殊格式\n        return altText;\n    }\n    \n    // 2. 尝试从dt元素获取\n    const dtElement = element.querySelector('dt') || \n                     element.parentElement?.querySelector('dt');\n    if (dtElement && dtElement.textContent && dtElement.textContent.trim()) {\n        return dtElement.textContent.trim();\n    }\n    \n    // 3. 尝试其他选择器\n    const selectors = [\n        '.common-info dt',\n        '.book-title',\n        'h1, h2, h3, h4',\n        '[class*=\"title\"]',\n        '[class*=\"name\"]'\n    ];\n    \n    for (const selector of selectors) {\n        const titleElement = element.closest(selector) || \n                           element.querySelector(selector) || \n                           element.parentElement?.querySelector(selector);\n        \n        if (titleElement && titleElement.textContent && titleElement.textContent.trim()) {\n            return titleElement.textContent.trim();\n        }\n    }\n    \n    // 最后尝试从元素文本本身获取\n    return element.textContent?.trim() || \n           element.parentElement?.textContent?.trim() || \n           '未知书名';\n}\n// 拦截导航\nfunction interceptNavigation(event) {\n    event.preventDefault();\n    event.stopPropagation();\n    event.stopImmediatePropagation();\n    \n    let targetUrl = '';\n    const element = event.currentTarget;\n    \n    // 1. 处理a标签\n    if (element.tagName.toLowerCase() === 'a' && element.href) {\n        targetUrl = element.href;\n    }\n    // 2. 处理带onclick的元素\n    else if (element.onclick || element.getAttribute('onclick')) {\n        const onclickValue = element.onclick?.toString() || element.getAttribute('onclick');\n        const urlMatch = onclickValue.match(/window\\.location\\.href\\s*=\\s*['\"]([^'\"]+)['\"]/);\n        if (urlMatch) {\n            targetUrl = urlMatch[1];\n        }\n    }\n    \n    if (!targetUrl) {\n        console.warn('未找到跳转URL');\n        return true;\n    }\n    \n    // 构建最终URL\n    let finalUrl = targetUrl;\n    \n    // 检查是否为huanmengacg域名\n    if (host.includes('huanmengacg')) {\n        const bookName = getBookName(element);\n        \n        // 添加书名查询参数和##分隔符后的书名（不进行编码）\n        const separator = finalUrl.includes('?') ? '&' : '?';\n        finalUrl = `${finalUrl}${separator}book_name=${bookName}##${bookName}`;\n        \n        console.log('添加书名的URL:', finalUrl);\n    }\n    \n    // 跳转到处理后的URL\n    window.location.href = finalUrl;\n    \n    return false;\n}\n\n// 为现有元素添加拦截\nfunction addInterceptors() {\n    // 1. 拦截所有a标签\n    document.querySelectorAll('a[href]').forEach(link => {\n        // 避免重复绑定\n        if (!link.hasAttribute('data-intercept-bound')) {\n            link.addEventListener('click', interceptNavigation, true);\n            link.setAttribute('data-intercept-bound', 'true');\n        }\n    });\n    \n    // 2. 拦截特定卡片类型\n    const cardSelectors = [\n        '.book-card[onclick]', \n        'div[onclick*=\"window.location.href\"]', \n        'li[onclick*=\"window.location.href\"]',\n        'section[onclick*=\"window.location.href\"]',\n        '.details-part' // 添加您提供的示例中的类\n    ];\n    \n    cardSelectors.forEach(selector => {\n        document.querySelectorAll(selector).forEach(card => {\n            if (!card.hasAttribute('data-intercept-bound')) {\n                card.addEventListener('click', interceptNavigation, true);\n                card.setAttribute('data-intercept-bound', 'true');\n            }\n        });\n    });\n}\n\n// 使用MutationObserver监控DOM变化\nconst observer = new MutationObserver(function(mutations) {\n    mutations.forEach(() => {\n        addInterceptors(); // DOM变化时重新绑定拦截器\n    });\n});\n\n// 开始观察文档\nobserver.observe(document.body, {\n    childList: true,    // 监控子节点变化\n    subtree: true,      // 监控所有后代节点\n    attributes: true,   // 监控属性变化\n    attributeFilter: ['onclick', 'href', 'class'] // 只监控这些属性\n});\n\n// 初始执行一次拦截器绑定\naddInterceptors();\nshowNotification('拦截器成功启动！');\n\nfunction showNotification(message, type = 'success', duration = 2000) {\n    // 创建样式（如果不存在）\n    if (!document.getElementById('notification-styles')) {\n        const style = document.createElement('style');\n        style.id = 'notification-styles';\n        style.textContent = `\n            .notification {\n                position: fixed;\n                top: 20px;\n                right: 20px;\n                padding: 15px 25px;\n                color: white;\n                border-radius: 8px;\n                box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);\n                display: flex;\n                align-items: center;\n                transform: translateX(150%);\n                opacity: 0;\n                transition: all 0.3s ease;\n                z-index: 1000;\n                font-family: 'Arial', sans-serif;\n            }\n            \n            .notification.show {\n                transform: translateX(0);\n                opacity: 1;\n            }\n            \n            .notification.hide {\n                transform: translateX(150%);\n                opacity: 0;\n            }\n            \n            .notification-icon {\n                margin-right: 10px;\n                font-size: 20px;\n            }\n            \n            .notification-content {\n                font-size: 16px;\n            }\n            \n            .notification.success {\n                background-color: #4CAF50;\n            }\n            \n            .notification.error {\n                background-color: #f44336;\n            }\n            \n            .notification.warning {\n                background-color: #ff9800;\n            }\n            \n            .notification.info {\n                background-color: #2196F3;\n            }\n        `;\n        document.head.appendChild(style);\n    }\n\n    // 创建通知元素\n    const notification = document.createElement('div');\n    notification.className = `notification ${type}`;\n    \n    // 添加图标\n    const icon = document.createElement('span');\n    icon.className = 'notification-icon';\n    \n    // 根据类型设置不同图标\n    const icons = {\n        success: '✓',\n        error: '✕',\n        warning: '⚠',\n        info: 'ℹ'\n    };\n    icon.textContent = icons[type] || '✓';\n    \n    // 添加消息内容\n    const content = document.createElement('span');\n    content.className = 'notification-content';\n    content.textContent = message;\n    \n    // 组装通知\n    notification.appendChild(icon);\n    notification.appendChild(content);\n    \n    // 添加到body\n    document.body.appendChild(notification);\n    \n    // 显示通知\n    setTimeout(() => {\n        notification.classList.add('show');\n    }, 10);\n    \n    // 指定时间后隐藏并移除通知\n    setTimeout(() => {\n        notification.classList.remove('show');\n        notification.classList.add('hide');\n        \n        // 动画结束后移除元素\n        notification.addEventListener('transitionend', () => {\n            notification.remove();\n        });\n    }, duration);\n}\n\n// 初始化通知\nshowNotification('欢迎使用晴天订阅源！');\n\n\n\nconst path = document.location.pathname;\nconst params = new URLSearchParams(window.location.search);\nconst currentUrl = window.location.href;\nconst url = new URL(currentUrl);\n\n// 域名重定向\nif (host === 'changdunovel.com' && path.endsWith('share-v2.html')) {\n  const bookid = params.get('book_id');\n  if (bookid) {\n    document.location.href = `https://fanqienovel.com/page/${bookid}`;\n  }\n}\n\nconst adBlockSystem = setInterval(() => {\n  const shouldSkip = (el) => {\n    return el.closest('.horizontal-slip-modal-card') || \n           el.closest('.topic-comment-item.new-card-style');\n  };\n document.querySelectorAll('.page-reader-btn.download, .download-btn, .app-download-popup, .download-app')\n    .forEach(el => {\n      if (!shouldSkip(el) && el.textContent.match(/下载|APP|安装/)) {\n        el.remove();\n      }\n    });\n  document.querySelectorAll('.mask, .popup-layer, .modal-backdrop, .popup-container')\n    .forEach(el => {\n      if (!shouldSkip(el)) {\n        el.remove();\n      }\n    });\n  document.querySelectorAll('.float-ad, .bottom-ad, .fixed-ad')\n    .forEach(ad => {\n      if (!shouldSkip(ad)) {\n        ad.remove();\n      }\n    });\n}, 500);\n\nconst fixBookClick = setInterval(() => {\n  const shouldSkip = (el) => {\n    return el.closest('.horizontal-slip-modal-card') || \n           el.closest('.topic-comment-item.new-card-style');\n  };\n  \n  document.querySelectorAll('.horizontal-slip-books-item').forEach(item => {\n    if (shouldSkip(item)) return;\n    \n    item.style.pointerEvents = 'auto';\n    item.style.cursor = 'pointer';\n    \n    if (item.id && !item.hasAttribute('data-click-fixed')) {\n      item.setAttribute('data-click-fixed', 'true');\n      item.addEventListener('click', (e) => {\n        e.preventDefault();\n        window.location.href = `https://fanqienovel.com/page/${item.id}`;\n      });\n    }\n  });\n  \n  document.querySelectorAll('div.books-fold-card-book-item.marrow-book-item').forEach(item => {\n    if (shouldSkip(item)) return;\n    \n    item.style.pointerEvents = 'auto';\n    item.style.cursor = 'pointer';\n    \n    const bookId = item.getAttribute('data-book-id') || item.id;\n    if (bookId && !item.hasAttribute('data-click-fixed')) {\n      item.setAttribute('data-click-fixed', 'true');\n      item.addEventListener('click', (e) => {\n        e.preventDefault();\n        window.location.href = `https://fanqienovel.com/page/${bookId}`;\n      });\n    }\n  });\n}, 1000);\n\nconst paginationSystem = setInterval(() => {\n  const shareBottom = document.querySelector(\".share-bottom-button\");\n  const shouldSkip = (el) => {\n    return el && (el.closest('.horizontal-slip-modal-card') || \n                 el.closest('.topic-comment-item.new-card-style'));\n  };\n  \n  if (shareBottom && !shouldSkip(shareBottom)) {\n    shareBottom.remove();\n    const shareApp = document.querySelector(\".share-end-href-app\");\n    const offset = Number(url.searchParams.get('offset') || \"0\");\n    \n    if (shareApp && !shouldSkip(shareApp)) {\n      shareApp.parentNode.innerHTML = `\n        <div class=\"share-end-href-app\" style=\"display:flex;justify-content:center;gap:20px;padding:12px 0;\">\n          ${offset === 0 ? \"\" : `<a style=\"padding:8px 16px;border-radius:4px;background:#f0f0f0;color:#333;text-decoration:none;\" onclick=\"changePage(${offset-1}, url)\">上一页</a>`}\n          <span style=\"padding:8px 16px;color:#666;\">${offset+1}</span>\n          <a style=\"padding:8px 16px;border-radius:4px;background:#f0f0f0;color:#333;text-decoration:none;\" onclick=\"changePage(${offset+1}, url)\">下一页</a>\n        </div>\n      `;\n    }\n  }\n}, 1000);\n\nfunction changePage(value, url) {\n  url.searchParams.set('offset', value);\n  location.replace(url);\n}\n\nconst style = document.createElement('style');\nstyle.textContent = `\n  .page-reader-btn.download:not(.horizontal-slip-modal-card *):not(.topic-comment-item.new-card-style *),\n  .download-btn:not(.horizontal-slip-modal-card *):not(.topic-comment-item.new-card-style *),\n  .app-download-popup:not(.horizontal-slip-modal-card *):not(.topic-comment-item.new-card-style *) {\n    display: none !important;\n    visibility: hidden !important;\n    pointer-events: none !important;\n    opacity: 0 !important;\n  }\n  \n  .topic-comment-item:not(.new-card-style):not(.horizontal-slip-modal-card *) {\n    pointer-events: none !important;\n    user-select: none !important;\n  }\n  \n  .horizontal-slip-books-item:not(.horizontal-slip-modal-card *):not(.topic-comment-item.new-card-style *),\n  div.books-fold-card-book-item.marrow-book-item:not(.horizontal-slip-modal-card *):not(.topic-comment-item.new-card-style *) {\n    pointer-events: auto !important;\n    cursor: pointer !important;\n  }\n`;\ndocument.head.appendChild(style);\n\nsetTimeout(() => {\n  clearInterval(adBlockSystem);\n  clearInterval(fixBookClick);\n}, 30000);",
    "jsLib": "var  base_url = \t'http://v1.gyks.cf';\n\nfunction checkSum(s) {\n  return String(java.lang.String(s).hashCode())\n}\n\nfunction getKey(key) {\n  let parts = key.split(\";\");\n  for (let part of parts) {\n    if (part.includes(\"qttoken\")) {\n      return part.split(\"=\")[1];\n    }\n  }\n  return \"\";\n}\n\nfunction removeCookie() {\n    const { cookie } = this;\n    let domains = [base_url,'fanqienovel.com'];\n    domains.forEach((domain) => {\n      cookie.removeCookie(domain);\n    });\n  }\n\n\n\nfunction isIPv4Address(ip) {\n  ip = String(ip);\n  let parts = ip.split(\".\");\n  if (parts.length !== 4) return false;\n\n  for (let part of parts) {\n    if (!/^\\d+$/.test(part)) return false; // 必须是数字\n    if (part.length > 1 && part[0] === \"0\") return false; // 禁止前导零\n    let num = parseInt(part, 10);\n    if (num < 0 || num > 255) return false; // 范围检查\n  }\n  return true;\n}\n\nfunction isIPv6Address(ip) {\n  ip = String(ip);\n  // 处理双冒号（最多出现一次）\n  if (ip.includes(\":::\")) return false;\n  let doubleColonCount = (ip.match(/::/g) || []).length;\n  if (doubleColonCount > 1) return false;\n\n  // 分割成组\n  let groups = ip.split(\":\");\n  let validGroupCount = 8;\n  let actualGroupCount = groups.filter((g) => g !== \"\").length;\n\n  // 验证组数\n  if (doubleColonCount === 1) {\n    if (actualGroupCount > validGroupCount - 1) return false;\n  } else {\n    if (groups.length !== validGroupCount) return false;\n  }\n\n  // 验证每组内容\n  for (let group of groups) {\n    if (group === \"\") continue; // 跳过空组（双冒号部分）\n    if (!/^[0-9a-fA-F]{1,4}$/.test(group)) return false; // 1-4位十六进制\n  }\n  return true;\n}\n\nfunction isIPAddress(input) {\n  return isIPv4Address(input) || isIPv6Address(input);\n}\n\nfunction getSessionId(cookieString) {\n    const match = cookieString.match(/sessionid=([^;]+)/);\n    return match ? match[1] : null;\n}\n\n\n",
    "lastUpdateTime": 1774770740345,
    "loadWithBaseUrl": false,
    "loginUi": "[{\"name\": \"邮箱\", \"type\": \"text\"},\n        {\"name\": \"密码\", \"type\": \"password\"},\n        {\n            \"name\": \"♥UI登录书源\",\n            \"type\": \"button\",\n            \"action\": \"login(true)\",\n            \"style\": {\n                \"layout_flexGrow\": 1,\n                \"layout_flexBasisPercent\": 0.4\n            }\n        },\n        {\n            \"name\": \"♥网页登录书源\",\n            \"type\": \"button\",\n            \"action\": \"loginqt()\",\n            \"style\": {\n                \"layout_flexGrow\": 1,\n                \"layout_flexBasisPercent\": 0.4\n            }\n            }, {\n            \"name\": \"🍅番茄登录\",\n            \"type\": \"button\",\n            \"action\": \"fq_login()\",\n            \"style\": {\n                \"layout_flexGrow\": 1,\n                \"layout_flexBasisPercent\": 0.4\n            }\n        }, {\n            \"name\": \"🔮 检测登录\",\n            \"type\": \"button\",\n            \"action\": \"checkStatus()\",\n            \"style\": {\n                \"layout_flexGrow\": 1,\n                \"layout_flexBasisPercent\": 0.4\n            }\n\n        },\n        {\n            \"name\": \" 🔚 退出登录\",\n            \"type\": \"button\",\n            \"action\": \"logout()\",\n            \"style\": {\n                \"layout_flexGrow\": 1,\n                \"layout_flexBasisPercent\": 0.4\n            }\n        }, {\n            \"name\": \" 🗑 清除设备\",\n            \"type\": \"button\",\n            \"action\": \"clearDevice()\",\n            \"style\": {\n                \"layout_flexGrow\": 1,\n                \"layout_flexBasisPercent\": 0.4\n            }\n\n        },{\n            \"name\": \"♻️ 订阅源更新\",\n            \"type\": \"button\",\n            \"action\": \"renderVersionPage()\",\n            \"style\": {\n                \"layout_flexGrow\": 1,\n                \"layout_flexBasisPercent\": 0.4\n            }\n        },{\n            \"name\": \"☕打赏享福利\",\n            \"type\": \"button\",\n            \"action\": \"vip()\",\n            \"style\": {\n                \"layout_flexGrow\": 1,\n                \"layout_flexBasisPercent\": 0.4\n            }\n        },\n  {\n    \ttype: \"text\",\n    \tname: \"番茄Token\"\n  }\n]",
    "loginUrl": "const localVersion = '4.12.30';\n\n\nfunction login(flag) {\n\tif (flag == undefined) {\n\t\tresult = JSON.parse(source.getLoginInfo())\n\t} else {\n\t\tjava.longToast(\"\\n\\n💞正在登录中...\")\n\t\tputLoginInfo(JSON.stringify(result))\n\t}\n\t let register_email = String(result['邮箱'])\n\tlet password = String(result['密码'])\n\tlet key = String(result['密钥']||'')\n\t\n\t//java.log(cookie.getCookie(base_url))\n\t\n\tif ((register_email && password || key)&& !String(getKey(String(cookie.getCookie(base_url))))) {\n\t\tremoveCookie();\n\t\tlet deviceKey = '';\n\t\tif (String(deviceKey) == \"undefined\") {\n\t\t\ttry {\n\t\t\t\tdeviceKey = java.deviceID();\n\t\t\t} catch (e) {\n\t\t\t\tdeviceKey = java.androidId();\n\t\t\t}\n\t\t};\n\t\t\n\tlet deviceId = java.digestHex(deviceKey, \"SHA256\")\n\t\t  if (register_email && password){\n\t\t\tlet options = JSON.stringify({\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json'\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tregister_email: result['邮箱'],\n\t\t\t\t\tpassword: result['密码']\n\t\t\t\t})\n\t\t\t})\n\t\t\ttry {\n\t\t\t\tlet data = JSON.parse(java.ajax(`${base_url}/login_api,${options}`))\n\t\t\t\tif (data.code == 0) {\n\t\t\t\t\tjava.toast(\"\\n\\n✅️登录成功\")\n\t\t\t\t\tcookie.setCookie(base_url, `qttoken=${data.key};deviceId=${deviceId}`)\n\t\t\t\t\tresult['密钥']=data.key\n\t\t\t\t\tputLoginInfo(JSON.stringify(result))\n\t\t\t\t} else {\n\t\t\t\t\tjava.toast('\\n\\n💔'+data.msg || \"登录失败，请重试！\")\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tjava.toast(\"\\n\\n💔登录失败，请重试！\\n\" + e.message)\n\t\t\t}\n\t\t} else {\n\t\t\tcookie.setCookie(base_url, `qttoken=${key};deviceId=${deviceId}`)\n\t\t\tlet res=java.ajax(`${base_url}/user_api,{\"method\":\"POST\",\"headers\":{\"cookie\":\"${cookie.getCookie(base_url)}\"}}`)\t\t\t\n\t\t\ttry {\n\t\t\t\tres=JSON.parse(res)\n\t\t\t\tif (res.id!=undefined) {\n\t\t\t\t\tjava.toast('\\n\\n密钥登录成功')\n\t\t\t\t\tresult['邮箱'] = res.email\n\t\t\t\t\tputLoginInfo(JSON.stringify(result))\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t\tjava.log(e)\n\t\t\t\tjava.toast(\"\\n\\n💔登录失败\")\n\t\t\t}\n\t\t}\n\t} else if (flag&&String(getKey(String(cookie.getCookie(base_url))))) {\n\t\tjava.toast(\"\\n\\n当前✅️已登录，请🚫退出登录后重新登录\");\n\t\t//checkStatus();\n\t} else if (flag) {\n\t\tjava.toast(\"\\n\\n⛔️请先填写邮箱和密码\");\n\t\t}\n}\n\nfunction fq_login() {\n\ttry {\n\t\tjava.startBrowserAwait(\"https://fanqienovel.com/\", \"登录\")\n\t} catch (e) {\n\t\tjava.toast(e)\n\t}\n\ttry {\n\t\tcookie.removeCookie(\"snssdk.com\")\n\t} catch (e) {}\n\tvar cookies = cookie.getCookie(\"fanqienovel.com\")\n\tif (!cookies || cookies == \"\") {\n\t\tjava.toast(\"登录失败！\")\n\t\treturn false\n\t}\n\tjava.toast(\"登录成功！\")\n\treturn true\n}\n\nfunction checkStatus() {\n\tjava.longToast('\\n\\n♻️检测中...');\n\tlet res=java.ajax(`${base_url}/user_api,{\"method\":\"POST\",\"headers\":{\"cookie\":\"${cookie.getCookie(base_url)}\"}}`)\t\n\ttry {\n\t\t\t\tres=JSON.parse(res)\n\t\t\t\tif (res.id!=undefined) {\n\t\t\t\t\tresult['邮箱'] = res.email\n\t\t\t\t\tputLoginInfo(JSON.stringify(result))\n\t\t\t\t\tlet devices\n\t\t\t\t\ttry {\n\t\t\t\t\t\tdevices = JSON.parse(res.device).length;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tdevices = res.device ? 1 : 0;\n\t\t\t\t\t}\n\t\t\t\t\tlet isVip;\n\t\t\t\t\tif (res.is_vip==1) {\n\t\t\t\t\t\tisVip = 'VIP';\n\t\t\t\t\t} else if (res.is_vip>=2) {\n\t\t\t\t\t\tisVip = 'SVIP';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisVip = '普通会员';\n\t\t\t\t\t}\n\t\t\t\t\ttips= `\n┏┅┅┅┅┅┅┱┄┄┄┄┄┄┄┄┄┄┐\n　✉️邮箱　　　　${res.email.replace(/(.{3}).*?@/,\"$1***@\").padEnd(20,\"\\t\")}\n┣┅┅┅┅┅┅╉┄┄┄┄┄┄┄┄┄┄┤\n　🔑密钥　　　　${(`${res.user_key.substring(0,4)}***${res.user_key.slice(-4)}`).padEnd(20,\"\\t\")}\n┣┅┅┅┅┅┅╉┄┄┄┄┄┄┄┄┄┄┤\n　📅注册时间　　${java.timeFormat(res.register_time*1000).padEnd(20,\"\\t\")}\n┣┅┅┅┅┅┅╉┄┄┄┄┄┄┄┄┄┄┤\n　🗒️今日阅读　　${(java.timeFormat(new Date()).slice(0,10)==java.timeFormat(res.last_read_time * 1000).slice(0,10)?res.day_read_count:0).toString().padEnd(20,\"\\t\")}\n┣┅┅┅┅┅┅╉┄┄┄┄┄┄┄┄┄┄┤\n　📚累计阅读　　${res.all_read_count.toString().padEnd(20,\"\\t\")}\n┣┅┅┅┅┅┅╉┄┄┄┄┄┄┄┄┄┄┤\n　🕓最后阅读　　${(res.last_read_time != 0?java.timeFormat(res.last_read_time * 1000):'未阅读').padEnd(20,\"\\t\")}\n┣┅┅┅┅┅┅╉┄┄┄┄┄┄┄┄┄┄┤\n　📱关联设备　　${devices.toString().padEnd(20,\"\\t\")}\n┣┅┅┅┅┅┅╉┄┄┄┄┄┄┄┄┄┄┤\n　👑会员状态　　${isVip.padEnd(20,\"\\t\")}\n┣┅┅┅┅┅┅╉┄┄┄┄┄┄┄┄┄┄┤\n　🚫封禁状态　　${res.is_banned?'已封禁':'正常　'}　　　　　　　\n┗┅┅┅┅┅┅┹┄┄┄┄┄┄┄┄┄┄┘\n`\n\t\t\t\t\tjava.log(tips)\n\t\t\t\t\tjava.longToast(tips)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(res.msg)\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t\t//java.log(e)\n\t\t\t\tjava.toast(\"\\n检测登录失败\\n\"+e.message)\n\t\t\t}\n}\n\nfunction clearDevice() {\n  let res=java.ajax(`${base_url}/clear,{\"method\":\"POST\",\"headers\":{\"cookie\":\"${cookie.getCookie(base_url)}\"}}`)\n\t//java.toast(res.code === 0 ? \"\\n\\n📴设备清除成功\" : res.msg)\n\tPackages.java.lang.Thread.sleep(500)\n\tcheckStatus()\n}\n// 保存登录UI信息\nfunction putLoginInfo(info) {\n\ttry {\n\t\tlet key = java.androidId()\n\t\tlet encodeStr = Packages.android.util.Base64.encodeToString(java.createSymmetricCrypto(\"AES\", key).encrypt(info), 2)\n\t\tcache.put(`userInfo_${source.getKey()}`, encodeStr)\n\t\treturn true\n\t} catch (e) {\n\t\tjava.log(e)\n\t\treturn source.putLoginInfo(info)\n\t}\n}\n\n\n\nfunction api() {\njava.startBrowserAwait('http://vip.gyks.cf', \"首页\");\n}\n\n\n//打赏\nfunction vip() {\n\tjava.startBrowserAwait(base_url+ '/coffee', \"喝咖啡\");\n\t\n}\nfunction loginqt() {\n\tjava.startBrowserAwait(base_url + '/login', '登录晴天小说书源');\n}\n\n function logout() {\n\tcookie.removeCookie(\"fanqienovel.com\");\n\tcookie.removeCookie(\"snssdk.com\");\n\tcookie.removeCookie(base_url);\n\tcookie.removeCookie(\"gyks.cf\");\n\tcookie.removeCookie(\"113.45.175.112\");\n\tjava.toast(\"退出登录成功\");\n}\n\n// 书源更新\nfunction renderVersionPage() {\n    let yd = '';\n    let html = `\n<!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\" />\n  <title>书源更新</title>\n  <!-- Font Awesome 图标库 -->\n  <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css\" />\n  <style>\n    :root {\n      --primary-gradient: linear-gradient(135deg, #4e6ef2, #6b2dd8);\n      --latest-gradient: linear-gradient(135deg, #8e2de2 0%, #4a00e0 50%, #d4af37 100%);\n      --success-color: #28c76f;\n      --warning-color: #ff9f43;\n      --error-color: #ea5455;\n      --text-main: #1f2937;\n      --text-secondary: #6b7280;\n      --card-bg: #ffffff;\n      --border-color: #e5e7eb;\n      --light-bg: #f9fafb;\n      --shadow: 0 4px 12px rgba(78, 110, 242, 0.1);\n      --shadow-hover: 0 6px 18px rgba(78, 110, 242, 0.2);\n      --glow-shadow: 0 0 25px rgba(142, 45, 226, 0.5), 0 0 50px rgba(212, 175, 55, 0.3);\n      --modal-bg: rgba(31, 41, 55, 0.8);\n      --modal-content-bg: #ffffff;\n    }\n\n    * {\n      box-sizing: border-box;\n      margin: 0;\n      padding: 0;\n      font-family: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;\n    }\n\n    body {\n      background: linear-gradient(135deg, #eef2ff, #f5f7ff);\n      color: var(--text-main);\n      min-height: 100vh;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      padding: 16px;\n    }\n\n    /* 加载动画 */\n    .loading-wrapper {\n      text-align: center;\n      animation: fadeIn 0.3s ease;\n    }\n\n    .loading-spinner {\n      width: 50px;\n      height: 50px;\n      border: 4px solid rgba(78, 110, 242, 0.3);\n      border-top-color: #4e6ef2;\n      border-radius: 50%;\n      margin: 0 auto 20px;\n      animation: spin 1s linear infinite;\n    }\n\n    .loading-text {\n      color: var(--text-main);\n      font-size: 16px;\n      font-weight: 500;\n    }\n\n    @keyframes spin {\n      to { transform: rotate(360deg); }\n    }\n\n    @keyframes fadeIn {\n      from { opacity: 0; transform: translateY(20px); }\n      to { opacity: 1; transform: translateY(0); }\n    }\n\n    @keyframes slideIn {\n      from { opacity: 0; transform: translateY(30px); }\n      to { opacity: 1; transform: translateY(0); }\n    }\n\n    @keyframes pulse {\n      0%, 100% { opacity: 1; }\n      50% { opacity: 0.7; }\n    }\n\n    @keyframes gradientAnimation {\n      0% { background-position: 0% 50%; }\n      50% { background-position: 100% 50%; }\n      100% { background-position: 0% 50%; }\n    }\n\n    @keyframes breathe {\n      0%, 100% { \n        transform: scale(1);\n        box-shadow: var(--glow-shadow), var(--shadow);\n      }\n      50% { \n        transform: scale(1.02);\n        box-shadow: 0 0 30px rgba(142, 45, 226, 0.6), 0 0 60px rgba(212, 175, 55, 0.4), var(--shadow);\n      }\n    }\n\n    @keyframes shimmer {\n      0% {\n        background-position: -200% center;\n      }\n      100% {\n        background-position: 200% center;\n      }\n    }\n\n    /* 主容器 */\n    .container {\n      width: 100%;\n      max-width: 420px;\n      background: var(--card-bg);\n      border-radius: 24px;\n      overflow: hidden;\n      box-shadow: var(--shadow);\n      position: relative;\n      z-index: 1;\n      animation: slideIn 0.5s ease;\n      display: none;\n    }\n\n    /* 头部 */\n    .header {\n      background: var(--primary-gradient);\n      color: #ffffff;\n      padding: 24px 16px;\n      text-align: center;\n      position: relative;\n      overflow: hidden;\n    }\n\n    .header::before {\n      content: '';\n      position: absolute;\n      top: -30px;\n      left: -30px;\n      width: 80px;\n      height: 80px;\n      background: rgba(255, 255, 255, 0.15);\n      border-radius: 50%;\n    }\n\n    .header::after {\n      content: '';\n      position: absolute;\n      bottom: -60px;\n      right: -60px;\n      width: 150px;\n      height: 150px;\n      background: rgba(255, 255, 255, 0.1);\n      border-radius: 50%;\n    }\n\n    .header h1 {\n      font-size: 1.4rem;\n      font-weight: 700;\n      margin-bottom: 8px;\n      position: relative;\n      z-index: 2;\n    }\n\n    .header p {\n      font-size: 0.9rem;\n      opacity: 0.9;\n      line-height: 1.4;\n      position: relative;\n      z-index: 2;\n    }\n\n    .header-icon {\n      font-size: 48px;\n      margin-bottom: 10px;\n      display: inline-block;\n      animation: bounce 2s ease infinite;\n    }\n\n    @keyframes bounce {\n      0%, 100% { transform: translateY(0); }\n      50% { transform: translateY(-10px); }\n    }\n\n    /* 版本对比 */\n    .version-comparison {\n      display: flex;\n      flex-wrap: nowrap;\n      gap: 12px;\n      padding: 16px;\n      margin-top: 8px;\n      position: relative;\n      z-index: 10;\n    }\n\n    .version-card {\n      flex: 1;\n      min-width: 45%;\n      background: var(--card-bg);\n      border-radius: 16px;\n      padding: 28px 16px 16px;\n      box-shadow: var(--shadow);\n      text-align: center;\n      position: relative;\n      transition: transform 0.3s ease, box-shadow 0.3s ease;\n      overflow: hidden;\n      border: 1px solid rgba(120, 130, 240, 0.1);\n    }\n\n    .version-card:hover {\n      transform: translateY(-4px);\n      box-shadow: var(--shadow-hover);\n    }\n\n    .version-card.current-version {\n      background: linear-gradient(135deg, #ffffff 0%, #f8f9ff 100%);\n      border: 1px solid rgba(78, 110, 242, 0.15);\n    }\n\n    .version-card.current-version:hover {\n      box-shadow: 0 6px 20px rgba(78, 110, 242, 0.15);\n    }\n\n    .version-card.current-version h3,\n    .version-card.current-version .version-number,\n    .version-card.current-version .version-date {\n      color: var(--text-main);\n    }\n\n    .version-card.latest-version {\n      background: var(--latest-gradient);\n      background-size: 300% 300%;\n      box-shadow: var(--glow-shadow), var(--shadow);\n      color: #fff;\n      z-index: 2;\n      animation: gradientAnimation 6s ease infinite, breathe 3s ease-in-out infinite;\n      position: relative;\n      overflow: hidden;\n    }\n\n    .version-card.latest-version::before {\n      content: '';\n      position: absolute;\n      top: -50%;\n      left: -50%;\n      width: 200%;\n      height: 200%;\n      background: linear-gradient(\n        90deg,\n        transparent,\n        rgba(255, 255, 255, 0.3),\n        transparent\n      );\n      transform: rotate(45deg);\n      animation: shimmer 3s infinite;\n    }\n\n    .version-card.latest-version h3,\n    .version-card.latest-version .version-number,\n    .version-card.latest-version .version-date {\n      color: #fff;\n      text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n      position: relative;\n      z-index: 1;\n    }\n\n    .version-status {\n      position: absolute;\n      top: 6px;\n      right: 6px;\n      padding: 3px 7px;\n      font-size: 0.65rem;\n      font-weight: 600;\n      border-radius: 6px;\n      color: #fff;\n      line-height: 1.2;\n      white-space: nowrap;\n      z-index: 2;\n    }\n\n    .version-card.latest-version .version-status {\n      background: rgba(255, 255, 255, 0.25);\n      backdrop-filter: blur(5px);\n      border: 1px solid rgba(255, 255, 255, 0.3);\n      color: #fff;\n      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);\n    }\n\n    .status-outdated { background: var(--warning-color); }\n    .status-latest { background: var(--success-color); }\n    .status-invalid { background: var(--error-color); }\n\n    .version-card h3 {\n      font-size: 0.9rem;\n      color: var(--text-secondary);\n      margin-bottom: 8px;\n      font-weight: 500;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 6px;\n    }\n\n    .version-number {\n      font-size: 1.25rem;\n      font-weight: 700;\n      color: var(--text-main);\n      margin: 8px 0;\n      transition: all 0.3s ease;\n      font-family: 'Courier New', monospace;\n    }\n\n    .version-card.latest-version .version-number {\n      font-size: 1.4rem;\n      transform: scale(1.05);\n      text-shadow: \n        0 2px 4px rgba(0, 0, 0, 0.3),\n        0 0 10px rgba(212, 175, 55, 0.8),\n        0 0 20px rgba(212, 175, 55, 0.5);\n      animation: pulse-glow 2s ease-in-out infinite;\n    }\n\n    @keyframes pulse-glow {\n      0%, 100% {\n        text-shadow: \n          0 2px 4px rgba(0, 0, 0, 0.3),\n          0 0 10px rgba(212, 175, 55, 0.8),\n          0 0 20px rgba(212, 175, 55, 0.5);\n      }\n      50% {\n        text-shadow: \n          0 2px 4px rgba(0, 0, 0, 0.3),\n          0 0 15px rgba(212, 175, 55, 1),\n          0 0 30px rgba(212, 175, 55, 0.7);\n      }\n    }\n\n    .version-date {\n      font-size: 0.8rem;\n      color: var(--text-secondary);\n      margin-top: 4px;\n    }\n\n    /* 版本对比指示器 */\n    .version-indicator {\n      position: absolute;\n      left: 50%;\n      top: 50%;\n      transform: translate(-50%, -50%);\n      z-index: 5;\n      width: 32px;\n      height: 32px;\n      border-radius: 50%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);\n      color: white;\n    }\n\n    .version-indicator.update-needed {\n      background: var(--error-color);\n      box-shadow: 0 2px 8px rgba(234, 84, 85, 0.4);\n      animation: pulse-indicator 1.5s infinite;\n    }\n\n    .version-indicator.is-latest {\n      background: var(--success-color);\n      box-shadow: 0 2px 8px rgba(40, 199, 111, 0.4);\n    }\n\n    @keyframes pulse-indicator {\n      0% { transform: translate(-50%, -50%) scale(1); }\n      50% { transform: translate(-50%, -50%) scale(1.1); }\n      100% { transform: translate(-50%, -50%) scale(1); }\n    }\n\n    /* 内容区 */\n    .content-container {\n      padding: 16px;\n    }\n\n    /* 状态提示 */\n    .status-alert {\n      background: var(--card-bg);\n      border-radius: 16px;\n      box-shadow: var(--shadow);\n      margin-bottom: 16px;\n      overflow: hidden;\n      border: 1px solid rgba(120, 130, 240, 0.1);\n      padding: 12px 16px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 10px;\n      font-weight: 500;\n      font-size: 14px;\n      animation: slideIn 0.5s ease 0.3s backwards;\n    }\n\n    .status-alert i {\n      font-size: 20px;\n    }\n\n    .status-alert.update-available {\n      background: linear-gradient(135deg, #ffeaa7 0%, #fdcb6e 100%);\n      color: #d63031;\n      box-shadow: 0 4px 15px rgba(253, 203, 110, 0.4);\n    }\n\n    .status-alert.up-to-date {\n      background: linear-gradient(135deg, #55efc4 0%, #00b894 100%);\n      color: white;\n      box-shadow: 0 4px 15px rgba(0, 184, 148, 0.4);\n    }\n\n    /* 更新容器 */\n    .update-container {\n      background: var(--card-bg);\n      border-radius: 16px;\n      box-shadow: var(--shadow);\n      margin-bottom: 16px;\n      overflow: hidden;\n      border: 1px solid rgba(120, 130, 240, 0.1);\n      animation: slideIn 0.5s ease 0.4s backwards;\n    }\n\n    .update-header {\n      background: var(--light-bg);\n      padding: 12px 16px;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      border-bottom: 1px solid var(--border-color);\n    }\n\n    .update-header h2 {\n      font-size: 1rem;\n      font-weight: 600;\n      color: var(--text-main);\n      display: flex;\n      align-items: center;\n      gap: 8px;\n    }\n\n    .update-header h2 i {\n      color: #4e6ef2;\n    }\n\n    .update-tag {\n      background: rgba(78, 110, 242, 0.1);\n      color: #4e6ef2;\n      padding: 4px 8px;\n      border-radius: 8px;\n      font-size: 0.75rem;\n      font-weight: 600;\n    }\n\n    .update-content {\n      padding: 16px;\n    }\n\n    .update-date {\n      font-weight: 600;\n      color: #4e6ef2;\n      margin-bottom: 12px;\n      display: flex;\n      align-items: center;\n      gap: 6px;\n      padding: 8px 0;\n      border-bottom: 1px dashed #e0e0e0;\n    }\n\n    .update-text {\n      margin: 8px 0;\n      position: relative;\n      padding-left: 16px;\n      line-height: 1.5;\n      color: var(--text-main);\n      font-size: 0.95rem;\n      white-space: pre-wrap;\n      word-break: break-word;\n    }\n\n    .update-text::before {\n      content: '•';\n      position: absolute;\n      left: 0;\n      font-weight: bold;\n      color: #4e6ef2;\n      font-size: 1.2rem;\n      line-height: 1;\n    }\n\n    /* 历史日志 */\n    .history-container {\n      background: var(--card-bg);\n      border-radius: 16px;\n      box-shadow: var(--shadow);\n      margin-bottom: 16px;\n      border: 1px solid rgba(120, 130, 240, 0.1);\n      animation: slideIn 0.5s ease 0.5s backwards;\n    }\n\n    .history-header {\n      background: var(--light-bg);\n      padding: 12px 16px;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      border-bottom: 1px solid var(--border-color);\n      cursor: pointer;\n      user-select: none;\n    }\n\n    .history-header:hover {\n      opacity: 0.8;\n    }\n\n    .history-header h2 {\n      font-size: 1rem;\n      font-weight: 600;\n      color: var(--text-main);\n      display: flex;\n      align-items: center;\n      gap: 8px;\n    }\n\n    .history-header h2 i {\n      color: #4e6ef2;\n    }\n\n    .toggle-history {\n      background: none;\n      border: none;\n      color: var(--text-secondary);\n      cursor: pointer;\n      font-weight: 500;\n      display: flex;\n      align-items: center;\n      gap: 4px;\n      font-size: 0.85rem;\n      transition: color 0.2s ease;\n    }\n\n    .toggle-history:hover {\n      color: #4e6ef2;\n    }\n\n    .history-content {\n      padding: 0 16px;\n      max-height: 0;\n      overflow: hidden;\n      transition: max-height 0.4s ease, padding 0.4s ease;\n    }\n\n    .history-content.expanded {\n      max-height: 60vh;\n      overflow-y: auto;\n      padding: 16px;\n      scrollbar-width: thin;\n      scrollbar-color: #4e6ef2 #f0f0f0;\n    }\n\n    .history-content.expanded::-webkit-scrollbar {\n      width: 6px;\n    }\n\n    .history-content.expanded::-webkit-scrollbar-track {\n      background: #f0f0f0;\n      border-radius: 4px;\n    }\n\n    .history-content.expanded::-webkit-scrollbar-thumb {\n      background: #4e6ef2;\n      border-radius: 4px;\n    }\n\n    .history-content.expanded::-webkit-scrollbar-thumb:hover {\n      background: #3a56d0;\n    }\n\n    .history-item {\n      margin-bottom: 16px;\n      padding-bottom: 16px;\n      border-bottom: 1px dashed var(--border-color);\n    }\n\n    .history-item:last-child {\n      border-bottom: none;\n      margin-bottom: 0;\n      padding-bottom: 0;\n    }\n\n    .history-date {\n      font-weight: 600;\n      color: var(--text-main);\n      margin-bottom: 8px;\n      display: flex;\n      align-items: center;\n      gap: 4px;\n      font-size: 0.9rem;\n      background: rgba(78, 110, 242, 0.05);\n      padding: 6px 10px;\n      border-radius: 6px;\n    }\n\n    .history-text {\n      margin: 8px 0;\n      padding-left: 16px;\n      line-height: 1.4;\n      color: var(--text-secondary);\n      position: relative;\n      font-size: 0.9rem;\n      white-space: pre-wrap;\n      word-break: break-word;\n    }\n\n    .history-text::before {\n      content: '•';\n      position: absolute;\n      left: 0;\n      color: #4e6ef2;\n      font-weight: bold;\n      font-size: 1.2rem;\n      line-height: 1;\n    }\n\n    /* 按钮组 */\n    .button-group {\n      display: flex;\n      flex-direction: column;\n      gap: 10px;\n      margin-bottom: 16px;\n    }\n\n    .button {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 10px;\n      padding: 14px 28px;\n      text-align: center;\n      font-size: 1rem;\n      border: none;\n      border-radius: 12px;\n      text-decoration: none;\n      background: var(--primary-gradient);\n      color: white;\n      font-weight: 600;\n      transition: all 0.3s ease;\n      box-shadow: var(--shadow);\n      position: relative;\n      overflow: hidden;\n      cursor: pointer;\n    }\n\n    .button i {\n      font-size: 1rem;\n    }\n\n    .button::after {\n      content: '';\n      position: absolute;\n      top: -50%;\n      left: -50%;\n      width: 200%;\n      height: 200%;\n      background: rgba(255, 255, 255, 0.1);\n      transform: rotate(30deg);\n      transition: all 0.6s ease;\n      pointer-events: none;\n    }\n\n    .button:hover {\n      transform: translateY(-3px);\n      box-shadow: var(--shadow-hover);\n    }\n\n    .button:hover::after {\n      transform: rotate(30deg) translate(20%, 20%);\n    }\n\n    .button:active {\n      transform: scale(0.95);\n    }\n\n    /* 错误状态 */\n    .error-state {\n      text-align: center;\n      padding: 40px 20px;\n      color: var(--text-main);\n    }\n\n    .error-icon {\n      font-size: 64px;\n      margin-bottom: 20px;\n      color: var(--error-color);\n    }\n\n    .error-text {\n      font-size: 16px;\n      line-height: 1.6;\n      margin-bottom: 20px;\n    }\n\n    .retry-button {\n      background: var(--primary-gradient);\n      color: white;\n      padding: 12px 30px;\n      border-radius: 12px;\n      border: none;\n      font-weight: 600;\n      cursor: pointer;\n      transition: all 0.3s ease;\n      font-size: 14px;\n      box-shadow: var(--shadow);\n    }\n\n    .retry-button:hover {\n      transform: translateY(-2px);\n      box-shadow: var(--shadow-hover);\n    }\n\n    .retry-button:active {\n      transform: scale(0.95);\n    }\n\n    /* 装饰元素 */\n    .decoration {\n      position: absolute;\n      z-index: 0;\n      pointer-events: none;\n    }\n\n    .decoration.circle {\n      width: 120px;\n      height: 120px;\n      border-radius: 50%;\n      background: rgba(107, 45, 216, 0.05);\n      top: 10%;\n      left: 10%;\n    }\n\n    .decoration.square {\n      width: 80px;\n      height: 80px;\n      transform: rotate(45deg);\n      background: rgba(78, 110, 242, 0.05);\n      bottom: 10%;\n      right: 10%;\n    }\n\n    /* 响应式 */\n    @media (max-width: 768px) {\n      body {\n        padding: 12px;\n      }\n\n      .container {\n        max-width: 100%;\n        border-radius: 20px;\n      }\n\n      .header {\n        padding: 20px 15px;\n      }\n\n      .header h1 {\n        font-size: 1.3rem;\n      }\n\n      .header-icon {\n        font-size: 40px;\n      }\n\n      .version-comparison {\n        flex-direction: row;\n        flex-wrap: nowrap;\n        gap: 10px;\n        padding: 12px;\n        margin-top: 6px;\n        overflow-x: auto;\n      }\n\n      .version-card {\n        min-width: 45%;\n        padding: 26px 12px 12px;\n      }\n\n      /* 移动端减弱呼吸动效 */\n      .version-card.latest-version {\n        animation: gradientAnimation 6s ease infinite;\n      }\n\n      .version-status {\n        top: 5px;\n        right: 5px;\n        padding: 2px 5px;\n        font-size: 0.6rem;\n      }\n\n      .version-number {\n        font-size: 1.1rem;\n      }\n\n      .version-card.latest-version .version-number {\n        font-size: 1.2rem;\n      }\n\n      .update-header h2, .history-header h2 {\n        font-size: 0.9rem;\n      }\n\n      .button {\n        padding: 12px 24px;\n        font-size: 0.95rem;\n      }\n\n      .history-content.expanded {\n        max-height: 50vh;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n\n    @media (max-width: 380px) {\n      .header h1 {\n        font-size: 1.2rem;\n      }\n\n      .version-number {\n        font-size: 1rem;\n      }\n\n      .version-card.latest-version .version-number {\n        font-size: 1.1rem;\n      }\n\n      .button {\n        padding: 11px;\n        font-size: 0.9rem;\n      }\n    }\n  </style>\n</head>\n<body>\n  <div class=\"decoration circle\"></div>\n  <div class=\"decoration square\"></div>\n\n  <div id=\"loading\" class=\"loading-wrapper\">\n    <div class=\"loading-spinner\"></div>\n    <div class=\"loading-text\"><i class=\"fas fa-search\"></i> 正在检查更新...</div>\n  </div>\n\n  <div class=\"container\" id=\"container\">\n    <div class=\"header\">\n      <div class=\"header-icon\"><i class=\"fas fa-book\"></i></div>\n      <h1>晴天订阅源更新</h1>\n      <p>推荐使用阅读测试版<br>正式版可能存在兼容性问题</p>\n    </div>\n\n    <div class=\"version-comparison\">\n      <div class=\"version-card current-version\">\n        <div class=\"version-status status-outdated\" id=\"currentStatus\">待检查</div>\n        <h3><i class=\"fas fa-cube\"></i> 当前版本</h3>\n        <div class=\"version-number\" id=\"currentVersion\">-</div>\n        <div class=\"version-date\">您的当前版本</div>\n      </div>\n\n      <div class=\"version-indicator update-needed\" id=\"versionIndicator\" style=\"display: none;\">\n        <i class=\"fas fa-arrow-right\"></i>\n      </div>\n\n      <div class=\"version-card latest-version\">\n        <div class=\"version-status status-latest\" id=\"latestStatus\">最新版本</div>\n        <h3><i class=\"fas fa-star\"></i> 最新版本</h3>\n        <div class=\"version-number\" id=\"latestVersion\">-</div>\n        <div class=\"version-date\">可用最新版本</div>\n      </div>\n    </div>\n\n    <div class=\"content-container\">\n      <div class=\"status-alert\" id=\"statusAlert\" style=\"display: none;\"></div>\n\n      <div id=\"latestLogContainer\" style=\"display: none;\">\n        <div class=\"update-container\">\n          <div class=\"update-header\">\n            <h2><i class=\"fas fa-bolt\"></i> 最新更新</h2>\n            <div class=\"update-tag\">最新发布</div>\n          </div>\n          <div class=\"update-content\">\n            <div class=\"update-date\" id=\"latestLogDate\"></div>\n            <div class=\"update-text\" id=\"latestLogContent\"></div>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"button-group\" id=\"buttonGroup\" style=\"display: none;\"></div>\n\n      <div class=\"history-container\" id=\"logs\" style=\"display: none;\">\n        <div class=\"history-header\" onclick=\"toggleLogs()\">\n          <h2><i class=\"fas fa-history\"></i> 历史更新 <span id=\"historyCount\"></span></h2>\n          <button class=\"toggle-history\" id=\"toggleButton\">\n            <span id=\"toggleText\">展开历史</span>\n            <i class=\"fas fa-chevron-down\" id=\"toggleIcon\"></i>\n          </button>\n        </div>\n        <div class=\"history-content\" id=\"logList\"></div>\n      </div>\n    </div>\n  </div>\n\n  <script>\n  let logsCollapsed = true;\n\n  function toggleLogs() {\n    logsCollapsed = !logsCollapsed;\n    const logList = document.getElementById('logList');\n    const toggleText = document.getElementById('toggleText');\n    const toggleIcon = document.getElementById('toggleIcon');\n    \n    if (logsCollapsed) {\n      logList.classList.remove('expanded');\n      toggleText.textContent = '展开历史';\n      toggleIcon.className = 'fas fa-chevron-down';\n    } else {\n      logList.classList.add('expanded');\n      toggleText.textContent = '收起历史';\n      toggleIcon.className = 'fas fa-chevron-up';\n    }\n  }\n\n  (async function() {\n    const loading = document.getElementById('loading');\n    const container = document.getElementById('container');\n    const currentVersion = document.getElementById('currentVersion');\n    const latestVersion = document.getElementById('latestVersion');\n    const currentStatus = document.getElementById('currentStatus');\n    const latestStatus = document.getElementById('latestStatus');\n    const versionIndicator = document.getElementById('versionIndicator');\n    const statusAlert = document.getElementById('statusAlert');\n    const buttonGroup = document.getElementById('buttonGroup');\n    const latestLogContainer = document.getElementById('latestLogContainer');\n    const latestLogDate = document.getElementById('latestLogDate');\n    const latestLogContent = document.getElementById('latestLogContent');\n    const logsContainer = document.getElementById('logs');\n    const logList = document.getElementById('logList');\n    const historyCount = document.getElementById('historyCount');\n\n    const localVer = '${String(localVersion)}';\n\n    // 统一的服务器配置 - 方便维护\n    const serverConfig = {\n      main: {\n        name: '主线路',\n        icon: 'rocket',\n        baseUrl: 'https://sy.gyks.cf',\n        downloadPath: '/download/晴天订阅源.json'\n      },\n      backup1: {\n        name: '备用线路1',\n        icon: 'box',\n        baseUrl: 'http://v1.gyks.cf',\n        downloadPath: '/sy/download/晴天订阅源.json'\n      },\n      backup2: {\n        name: '备用线路2',\n        icon: 'satellite',\n        baseUrl: 'http://v2.gyks.cf',\n        downloadPath: '/sy/download/晴天订阅源.json'\n      },\n      backup3: {\n        name: '备用线路3',\n        icon: 'link',\n        baseUrl: 'http://v3.gyks.cf',\n        downloadPath: '/sy/download/晴天订阅源.json'\n      },\n      backup4: {\n        name: '备用线路4',\n        icon: 'bolt',\n        baseUrl: 'http://v4.gyks.cf',\n        downloadPath: '/sy/download/晴天订阅源.json'\n      },\n      backup5: {\n        name: '备用线路5',\n        icon: 'globe',\n        baseUrl: 'http://v5.gyks.cf',\n        downloadPath: '/sy/download/晴天订阅源.json'\n      },\n      backup6: {\n        name: '备用线路6',\n        icon: 'broadcast-tower',\n        baseUrl: 'http://101.35.133.34:8888',\n        downloadPath: '/sy/download/晴天订阅源.json'\n      }\n    };\n\n    // 版本比较函数\n    function compareVersions(vs) {\n      const normalize = (v) => {\n        return v.split('.').map(n => {\n          const num = parseInt(n, 10);\n          return isNaN(num) ? 0 : num;\n        });\n      };\n\n      const parts1 = normalize(localVer);\n      const parts2 = normalize(vs);\n      const maxLength = Math.max(parts1.length, parts2.length);\n      \n      for (let i = 0; i < maxLength; i++) {\n        const num1 = parts1[i] || 0;\n        const num2 = parts2[i] || 0;\n        if (num1 > num2) return 1;\n        if (num1 < num2) return -1;\n      }\n      return 0;\n    }\n\n    async function fetchVersionData() {\n      // 使用统一配置中除主线路外的备用线路进行版本检查\n      const serversToCheck = Object.values(serverConfig).filter(s => s.baseUrl.includes('gyks.cf') || s.baseUrl.includes('101.35'));\n      \n      for (const server of serversToCheck) {\n        try {\n          const response = await fetch(server.baseUrl + '/version', { timeout: 2000 });\n          if (response.ok) {\n            return await response.json();\n          }\n        } catch (e) {\n          console.warn(\\`接口失败：\\${server.baseUrl}\\`, e);\n        }\n      }\n      throw new Error('所有更新接口都请求失败');\n    }\n\n    function showError(message) {\n      loading.innerHTML = \\`\n        <div class=\"error-state\">\n          <div class=\"error-icon\"><i class=\"fas fa-exclamation-triangle\"></i></div>\n          <div class=\"error-text\">\\${message}</div>\n          <button class=\"retry-button\" onclick=\"location.reload()\"><i class=\"fas fa-redo\"></i> 重试</button>\n        </div>\n      \\`;\n    }\n\n    try {\n      const data = await fetchVersionData();\n      const cloudVersion = String(data.rssVersion3);\n      const updateLog = data.update_rss_log || {};\n\n      // 显示版本信息\n      currentVersion.textContent = \\`v\\${localVer}\\`;\n      latestVersion.textContent = \\`v\\${cloudVersion}\\`;\n\n      // 处理日志\n      const logEntries = Object.entries(updateLog);\n      if (logEntries.length > 0) {\n        // 显示最新日志\n        const [latestDate, latestContent] = logEntries[0];\n        latestLogDate.innerHTML = \\`<i class=\"fas fa-calendar-alt\"></i> \\${latestDate}\\`;\n        latestLogContent.textContent = latestContent;\n        latestLogContainer.style.display = 'block';\n\n        // 显示历史日志\n        if (logEntries.length > 1) {\n          const historyLogs = logEntries.slice(1);\n          historyCount.textContent = \\`(\\${historyLogs.length}条)\\`;\n          logList.innerHTML = historyLogs.map(([date, content]) => \\`\n            <div class=\"history-item\">\n              <div class=\"history-date\">\n                <i class=\"fas fa-calendar-day\"></i>\n                <span>\\${date}</span>\n              </div>\n              <div class=\"history-text\">\\${content}</div>\n            </div>\n          \\`).join('');\n          logsContainer.style.display = 'block';\n        }\n      }\n\n      // 检查更新状态\n      const compareResult = compareVersions(cloudVersion);\n      \n      // 显示版本指示器\n      versionIndicator.style.display = 'flex';\n      \n      if (compareResult === -1) {\n        // 需要更新\n        currentStatus.textContent = '待更新';\n        currentStatus.className = 'version-status status-outdated';\n        versionIndicator.className = 'version-indicator update-needed';\n        versionIndicator.innerHTML = '<i class=\"fas fa-arrow-right\"></i>';\n\n        // 使用统一配置生成下载按钮\n        buttonGroup.innerHTML = Object.values(serverConfig).map(server => {\n          const fullUrl = server.baseUrl + server.downloadPath;\n          return \\`\n            <a href=\"legado://import/auto?src=\\${encodeURIComponent(fullUrl)}\" class=\"button\">\n              <i class=\"fas fa-\\${server.icon}\"></i>\n              <span>\\${server.name}</span>\n            </a>\n          \\`;\n        }).join('');\n        buttonGroup.style.display = 'flex';\n      } else {\n        // 已是最新版本\n        currentStatus.textContent = '最新';\n        currentStatus.className = 'version-status status-latest';\n        versionIndicator.className = 'version-indicator is-latest';\n        versionIndicator.innerHTML = '<i class=\"fas fa-check\"></i>';\n        \n        statusAlert.className = 'status-alert up-to-date';\n        statusAlert.innerHTML = '<i class=\"fas fa-check-circle\"></i> <div>您已是最新版本</div>';\n        statusAlert.style.display = 'flex';\n      }\n\n      // 显示主容器，隐藏加载\n      loading.style.display = 'none';\n      container.style.display = 'block';\n\n    } catch (err) {\n      console.error('版本检查失败：', err);\n      showError('<i class=\"fas fa-exclamation-circle\"></i> 检查更新失败，请稍后重试<br><small>' + err.message + '</small>');\n    }\n  })();\n  </script>\n</body>\n</html>\n`;\n    java.startBrowser(`data:text/html;base64,${java.base64Encode(html)}`, '晴天订阅源更新');\n}",
    "preload": false,
    "ruleArticles": "<js>\nif (baseUrl.includes('番茄')) {\nlet ck = (String(cookie.getKey(\"fanqienovel.com\", \"sessionid\")) ? String(cookie.getKey(\"fanqienovel.com\", \"sessionid\")) : (source.getLoginInfoMap() || {})['番茄Token']) || \"\";\nfunction getCellId() {\n  let sInfo = java.ajax(java.log(base_url + \"/book_mall_tab?ssionid=\" + ck));\n  let cell_id = \"cell_id%253D6914906572011339784%2526\"\n  let body = JSON.parse(sInfo).data.tab_item[0].cell_data[1].cell_data\n  for (let i of body) {\n    /*java.log(JSON.stringify(i))*/\n     if (typeof i.cell_url !== 'undefined') {\n       // java.log(i.cell_url)\n       cell_id = i.cell_url\n       break\n     }\n  }\n  java.log(cell_id)\n  cell_id = cell_id.split(\"cell_id%253D\")[1].split(\"%2526\")[0]\n  java.log(cell_id)\n  return cell_id\n}\nlet cell_id = getCellId();\njava.ajax(java.log(base_url + '/book_mall_y?cell_id=' + cell_id + '&ssionid='+ck));\n} else if (baseUrl.includes('晴天')) {\n\tlet other = {\n\t\t'data':{'cell_view':{'topic_data':\n\t\t[{'topic_desc':{\n\t\t\t'topic_title':'晴天多来源发现平台',\n\t\t\t 'topic_id':'http://v1.gyks.cf/online_search'\n\t\t\t}},{'topic_desc':{\n\t\t\t'topic_title':'晴天推书',\n\t\t\t 'topic_id':'http://v1.gyks.cf/put_book'\n\t\t\t}},{'topic_desc':{\n\t\t\t'topic_title':'晴天后台',\n\t\t\t 'topic_id':'http://v1.gyks.cf/login'\n\t\t\t}},{'topic_desc':{\n\t\t\t'topic_title':'求打赏~',\n\t\t\t 'topic_id':'http://v1.gyks.cf/coffee'\n\t\t\t}}]}\n\t\t}}\n\t\tother = JSON.stringify(other);\n\n\t} else {\n\t//java.toast(baseUrl);\n\tlet other = {\n\t\t'data':{'cell_view':{'topic_data':\n\t\t[{'topic_desc':{\n\t\t\t'topic_title':'进入官网，支持点击书籍跳转阅读书架哦～',\n\t\t\t 'topic_id':baseUrl\n\t\t\t}}]}\n\t\t}}\n\t\tother = JSON.stringify(other);\n\t\t//java.toast(other)\n\t};\n\t</js>\n$.data.cell_view.topic_data[*]",
    "ruleImage": "$.topic_desc.topic_cover",
    "ruleLink": "<js>\nlet ruleUrl;\nif (baseUrl.includes('番茄')) { \n\truleUrl = `https://reading.snssdk.com/wap/topic-share.html?topic_id={{$.topic_desc.topic_id}}&sort=smart_hot&service_id=6&session_id=0&aid=1967`\n\t} else {\n\t\truleUrl = '{{$.topic_desc.topic_id}}';\n\t\t//java.toast(ruleUrl)\n\t\t}\n\truleUrl\n</js>",
    "rulePubDate": "$.topic_desc.topic_content\n@js:\nif (baseUrl.includes('番茄')) {\n\tlet data = JSON.parse(result).skeleton.data.replace(/<\\/?search_link>/g, \" \")\nlet select = Packages.org.jsoup.Jsoup.parse(data).select(\"p, span\")\nlet final = Array.from(select).map(p => p.text()).join(\" \")\njava.timeFormat(java.getString('topic_desc.create_time')*1000) + (!Packages.android.text.TextUtils.isEmpty(final) ? (' | ' + final) : '')\n}",
    "ruleTitle": "$.topic_desc.topic_title",
    "shouldOverrideUrlLoading": "function extractBookId(url) {\n    let match = url.match(/[?&]book_id=([^&]+)/) || url.match(/page\\/(\\d+)/) || url.match(/shuku\\/(\\d+_\\d+|\\d+)(?:-\\d+)?/) || url.match(/query\\/(\\d+)/) || url.match(/book\\/(\\d+)/) || url.match(/album\\/(\\d+)/) || url.match(/reader\\/(\\d+)/) || url.match(/book-detail\\/(\\d+)/) || url.match(/info\\/(\\d+)/);    \n   if (!match) {\n    \t     return null;\n   }\n    let bookId = match[1];\n    if (url.includes('huanmengacg')) {\n    \t  let name = url.split('##')[1];\n    \t   bookId = `{\"name\":\"${decodeURIComponent(name)}\",\"t\":\"search\",\"url\":\"https://hm.gyks.cf/api/v1/books/${bookId}\",\"variable\":\"\"}`;\n    \t  bookId = bookId.replace('=','')\n    \t}\n    return bookId;\n}\n\n// java.toast(url.startsWith('legadosearch://'))\nif (url.startsWith('legadosearch://')) { \n  // java.toast('ab')\n  java.searchBook(\n    decodeURIComponent(\n      url.replace('legadosearch://', '')\n    )\n  )\n}\nlet needBreak = false\n\n\t  if (url.match(/book_id=\\d+/) || url.match(/\\/page\\/\\d+/) || url.match(/shuku\\/(\\d+_\\d+|\\d+)(?:-\\d+)?/) || url.match(/query\\/(\\d+)/) || url.match(/book\\/(\\d+)/) || url.match(/album\\/(\\d+)/) || url.match(/reader\\/(\\d+)/) || url.match(/book-detail\\/(\\d+)/) || url.includes('online_detail') || url.includes('book/info')) {\n  \t//java.toast(url);\n  \t const bookId = java.encodeURI(java.base64Encode(extractBookId(url)));\n  \t //java.toast(bookId);\n  \t let url2 = `${base_url}/detail?book_id=${bookId}&source=番茄`\n  \t if (url.includes('shuku')) {\n  \t \turl2 = `${base_url}/detail?book_id=${bookId}&source=七猫`\n  \t \t}\n  \t \tif (url.includes('tadu')) {\n  \t \turl2 = `${base_url}/detail?book_id=${bookId}&source=塔读`\n  \t \t}\n  \t \tif (url.includes('shuqi')) {\n  \t \turl2 = `${base_url}/detail?book_id=${bookId}&source=书旗`\n  \t \t}\n  \t \tif (url.includes('lrts')) {\n  \t \turl2 = `${base_url}/detail?book_id=${bookId}&source=懒人听书&tab=听书`\n  \t \t}\n  \t \tif (url.includes('qq')) {\n  \t \turl2 = `${base_url}/detail?book_id=${bookId}&source=QQ`\n  \t \t}\n  \t \tif (url.includes('huanmengacg')) {\n  \t \turl2 = `${base_url}/detail?book_id=${bookId}&source=幻梦轻小说&tab=小说`\n   \t \t}\n  \t \tif (url.includes('online_detail')) {\n  \t \turl2 = url.replace('online_detail','detail')\n  \t \t}\n  \t //java.toast(url2.replace('%3D',''));\n  \t java.addBook(url2.replace('%3D',''));\n    needBreak = true;\n  }\n\n!(url.startsWith('http') || url.startsWith('legado')) || url.match(/\\/chapter-list\\/\\d+/) || needBreak",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "晴天发现::晴天\n番茄::番茄\n塔读::https://m.tadu.com/\n书旗::https://t.shuqi.com/\n七猫::https://www.qimao.com/\n轻小说::https://www.huanmengacg.com/",
    "sourceComment": "原作者 未知\n二改:\n  世界有多大 (翻页)\n  梓澄qwq (个人推荐, js注入, 拦截跳转)\n  Folltoshe (js注入)\n  柚屿 (完善登录)\n  清词 (失效修复,修复有书籍无法点击跳转的情况,加强过滤)\n  期待完美的自己(兼容晴天完全版书源)\n  晴天(完善晴天订阅源)",
    "sourceGroup": "书源",
    "sourceIcon": "http://v1.gyks.cf/favicon.ico",
    "sourceName": "晴天书荒广场",
    "sourceUrl": "https://www.baidu.com/晴天番茄书荒广场",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n  \"User-Agent\": \"Mozilla/5.0 (Linux; Android 10; TAS-AN00 Build/HUAWEITAS-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/114.0.5735.61 Mobile Safari/537.36 Super 4.6.5\",\n  \"Referer\": \"https://www.yinghua228.com/\",\n  \"Cookie\": \"ad_dismiss=1\"\n}",
    "lastUpdateTime": 1774455821256,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".stui-vodlist li",
    "ruleContent": "\n<html lang=\"en\">\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\" href = \"https://cdn.jsdelivr.net/npm/dplayer@1.25.0/dist/DPlayer.min.css\">\n    <title>{{@css:h1@ownText}}</title>\n\n</head>\n<body>\n    <div class =\"dz\" width=\"100%\"></div>\n\n    <div class=\"dplayer\" id=\"dplayer\" style=\"width:100%;height:300\"></div>\n\n\n    <h2>{{@css:h1@ownText}}</h2>\n    <div id=\"tab\">\n        <ul>{{@@class.stui-pannel-box[1]@h3@html}}</ul>\n    </div>\n    {{@@class.stui-content__playlist@ul@html}}\n\n\n    <script src=\"https://pss.bdstatic.com/static/superman/js/lib/jquery-1-edb203c114.10.2.js\"></script>\n    <script src=\"https://cdn.jsdelivr.net/npm/hls.js@1.5.17/dist/hls.min.js\"></script>\n    <script src=\"https://cdn.jsdelivr.net/npm/dplayer@1.25.0/dist/DPlayer.min.js\"></script>\n\n    <script>\n        const {java} = this;\n        function video(url) {\n            //使用jquery发送单个播放页面get请求，提取播放直链\n            $.get(url, function(result) {\n                let json = result.match(/var player_aaaa.*?=(\\{.*\\})/)[1];\n                let src = JSON.parse(json).url.replaceAll('\\\\', '');\n                let loadding='https://ftp.bmp.ovh/imgs/2021/05/5c31747aeb7bff4e.gif'\n\n                //假如提取到的视频带 mp4|m3u8 就采用dp播放器播放\n                if ( src.match(/mp4|m3u8/) ) {\n                    //创建dplayer播放器\n                    var dplayer = new DPlayer({\n                        element: document.getElementById(\"dplayer\"),autoplay: true,\n                        lang: 'zh-cn',\n                        video:{\n                            url: src, \n                            pic: loadding,\n                            screenshot: true,\n                            volume: 0,\n                            \n                        }\n                    });\n                }else{\n                    //直接提取的前面带https://jx.quanmingjiexi.com/?url= 进行播放\n                    src = \"https://jx.quanmingjiexi.com/?url=\" + src;\n                    let iframe ='<iframe src=\"' + src + '\" width=\"350\" height=\"280\" id=\"cciframe\" scrolling=\"no\"allowfullscreen=\"true\" webkitallowfullscreen=\"true\" autoplay=\"true\" mozallowfullscreen=\"true\"></iframe>'\n\n                    $(\".dplayer\").html(iframe)\n                }\n                //将播放直链显示在顶端\n                java.log(src);\n                $(\".dz\").html(src);\n            });\n        }\n        \n        ( function() {\n            //隐藏播放列表所有剧集，显示第一个，添加类\n            $(\".stui-content__playlist\").hide();\n            $(\".stui-content__playlist:eq(0)\").show();\n            $(\"li:eq(0)\").addClass(\"active\");\n        })();\n\n        $(\"button\").click( function(){\n            $(\"button\").removeClass(\"upBtn\");\n            $(this).addClass(\"upBtn\");\n            let url = 'https://www.yinghua228.com' + $(this).val();\n            video(url)\n        });\n\n        $(\"button\").click(function(){\n            $(\"button\").removeClass(\"upBtn\");\n            $(this).addClass(\"upBtn\");\n            let url = 'https://www.yinghua228.com' + $(this).val();\n            video(url);\n        });\n\n        $(\"li\").click( function() {\n            $(\"li\").removeClass(\"active\");\n            $(this).addClass(\"active\");\n            index = $(this).index();\n            $(\".stui-content__playlist\").hide();\n            $(\".stui-content__playlist:eq(\" + index + \")\").show();\n        });\n    </script>\n</body>\n</html> \n\n@js:\nresult = result.replace(/.*href=\"([^\"]+)\">([^<]+).*/g,'<button value=\"$1\">$2</button>').replace(/<a/g,'<li').replace(/<\\/a>/g,'</li>')\njava.log(result)",
    "ruleImage": "a[0]@data-original",
    "ruleLink": "a[0]@href",
    "ruleNextPage": "text.下一页@href",
    "ruleTitle": "h4 a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "日本动漫::https://www.yinghua228.com/index.php/vod/type/id/20/page/{{page}}.html\n国产动漫::https://www.yinghua228.com/index.php/vod/type/id/21/page/{{page}}.html\n欧美动漫::https://www.yinghua228.com/index.php/vod/type/id/22/page/{{page}}.html\n动漫电影::https://www.yinghua228.com/index.php/vod/type/id/23/page/{{page}}.htm\n其他动漫::https://www.yinghua228.com/index.php/vod/type/id/24/page/{{page}}.html",
    "sourceComment": "内容添加了播放器，点击剧集可播放。\n播放器不知道哪个大佬写的，借用一下\n视频加载稍慢，播放会有卡顿\nmd，plus，T，beta版都可以播放",
    "sourceGroup": "动漫漫画",
    "sourceIcon": "https://tse2.mm.bing.net/th/id/OIP.0w67-qvgh_VqOurfrC377AHaEK?dpr=3.5&pid=ImgDetMain&o=7&rm=3",
    "sourceName": "樱花动漫-修复内容",
    "sourceUrl": "https://www.yinghua228.com",
    "style": "    <style>\n        #tab{\n            height:40px;\n            margin-bottom:8px;\n        }\n\n        .dz {\n            padding:5px 0;\n            overflow:scroll;\n            background:#1C1B1E;color:#D3D3D3;;\n        }\n\n        ul{\n            margin:0;\n            padding:0;\n        }\n\n        #tab li {\n            font-size:15px;\n            list-style:none;\n            float:left;\n            height:30px;\n            margin-right:5px;\n            color:#D3D3D3;\n            line-height:25px;\n        }\n\n        #tab li.active {\n            color:#FF8C00;\n            border-bottom:3px solid #FF8C00;\n        }\n\n        button{\n            outline:none;\n            height:35px; \n            border:3px solid #1C1B1E ;\n            border-radius:8px;\n            margin-bottom:8px;\n            background:#1C1B1E;color:#A9A9A9;\n            vertical-align:middle; \n            width:24%;\n            overflow:scroll\n        }\n\n        button.upBtn{\n            border:1px solid #FF8C00 ;\n            background-color:#555555; \n        }\n\n        body{\n            margin:0;\n            background-color: #333333; \n        }\n    </style>",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 0,
    "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://www.yinghua228.com/\",\n  \"Cookie\": \"ad_dismiss=1\"\n}",
    "injectJs": "##<div[^>]*?style[^>]*?fixed[^>]*?bottom[^>]*?>[\\s\\S]*?<\\/div>\n##<div[^>]*?z-index: 2147483647[\\s\\S]*?<\\/div>\n##<a[^>]*?href[^>]*?\\.com[^>]*?><img[^>]*?src[^>]*?>[\\s\\S]*?<\\/a>\n##<div[^>]*?>实时更新[\\s\\S]*?免费看片[\\s\\S]*?<\\/div>\n",
    "lastUpdateTime": 1774455828363,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".col-md-6||ul.col-pd@li",
    "ruleImage": "a@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href||page",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "日本动漫::/index.php/vod/type/id/20.html\n国产动漫::/index.php/vod/type/id/21.html\n欧美动漫::/index.php/vod/type/id/22.html\n动漫电影::/index.php/vod/type/id/23.html\n其他动漫::/index.php/vod/type/id/24.html\n里番::/index.php/vod/show/by/hits/id/26.html\n搜索::/index.php/vod/search/wd/{{source.getVariable()}}",
    "sourceGroup": "动漫漫画",
    "sourceIcon": "https://tse2.mm.bing.net/th/id/OIP.0w67-qvgh_VqOurfrC377AHaEK?dpr=3.5&pid=ImgDetMain&o=7&rm=3",
    "sourceName": "樱花动漫",
    "sourceUrl": "https://www.yinghua228.com/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n  \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\"\n}",
    "lastUpdateTime": 1774455859569,
    "loadWithBaseUrl": true,
    "preload": false,
    "preloadJs": "window.source = source;\nwindow.java = java;\nwindow.cache = cache;",
    "showWebLog": false,
    "singleUrl": false,
    "sourceComment": "GitHub 订阅源\n预设本地仓库，可在代码里按照格式手动添加更多本地仓库（本地仓库不会被清理）。\n页面手动添加的订阅，清除webview缓存后会消失，建议修改代码添加本地仓库\n每个仓库自动获取最新 Release 信息（版本号、日期、完整格式更新内容），支持图片、代码块、列表等富文本显示。点击版本号跳转对应 Release 页面。",
    "sourceGroup": "工具",
    "sourceIcon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiByeD0iNiIgZmlsbD0iIzNFM0UzRSIgc3Ryb2tlPSIjM0UzRTNFIiBzdHJva2Utd2lkdGg9IjEiLz4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNCw0KSBzY2FsZSgwLjc1KSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTYgMEM3LjE2IDAgMCA3LjE2IDAgMTZDMCAyMy4wOCA0LjU4IDI5LjA2IDEwLjk0IDMxLjE4QzExLjc0IDMxLjMyIDEyLjA0IDMwLjg0IDEyLjA0IDMwLjQyQzEyLjA0IDMwLjA0IDEyLjAyIDI4Ljc4IDEyLjAyIDI3LjQ0QzggMjguMTggNi45NiAyNi40NiA2LjY0IDI1LjU2QzYuNDYgMjUuMSA1LjY4IDIzLjY4IDUgMjMuM0M0LjQ0IDIzIDMuNjQgMjIuMjYgNC45OCAyMi4yNEM2LjI0IDIyLjIyIDcuMTQgMjMuNCA3LjQ0IDIzLjg4QzguODggMjYuMyAxMS4xOCAyNS42MiAxMi4xIDI1LjJDMTIuMjQgMjQuMTYgMTIuNjYgMjMuNDYgMTMuMTIgMjMuMDZDOS41NiAyMi42NiA1Ljg0IDIxLjI4IDUuODQgMTUuMTZDNS44NCAxMy40MiA2LjQ2IDExLjk4IDcuNDggMTAuODZDNy4zMiAxMC40NiA2Ljc2IDguODIgNy42NCA2LjYyQzcuNjQgNi42MiA4Ljk4IDYuMiAxMi4wNCA4LjI2QzEzLjMyIDcuOSAxNC42OCA3LjcyIDE2LjA0IDcuNzJDMTcuNCA3LjcyIDE4Ljc2IDcuOSAyMC4wNCA4LjI2QzIzLjEgNi4xOCAyNC40NCA2LjYyIDI0LjQ0IDYuNjJDMjUuMzIgOC44MiAyNC43NiAxMC40NiAyNC42IDEwLjg2QzI1LjYyIDExLjk4IDI2LjI0IDEzLjQgMjYuMjQgMTUuMTZDMjYuMjQgMjEuMyAyMi41IDIyLjY2IDE4Ljk0IDIzLjA2QzE5LjUyIDIzLjU2IDIwLjAyIDI0LjUyIDIwLjAyIDI2LjAyQzIwLjAyIDI4LjE2IDIwIDI5Ljg4IDIwIDMwLjQyQzIwIDMwLjg0IDIwLjMgMzEuMzQgMjEuMSAzMS4xOEMyNy40MiAyOS4wNiAzMiAyMy4wNiAzMiAxNkMzMiA3LjE2IDI0Ljg0IDAgMTYgMFYwWiIgZmlsbD0id2hpdGUiLz4KPC9nPgo8L3N2Zz4K",
    "sourceName": "GitHub订阅",
    "sourceUrl": "https://github.com/",
    "startHtml": "<!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=yes\">\n    <title>GitHub 订阅</title>\n    <style>\n        * { margin: 0; padding: 0; box-sizing: border-box; }\n        body {\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif;\n            background-color: #f6f8fa;\n            padding: 16px;\n            padding-bottom: 80px;\n            color: #24292f;\n        }\n        .container { max-width: 800px; margin: 0 auto; }\n        .add-repo-section {\n            background: white;\n            border-radius: 12px;\n            padding: 24px;\n            margin-bottom: 20px;\n            box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n            border: 1px solid #e1e4e8;\n        }\n        .add-repo-title { font-size: 20px; font-weight: 600; margin-bottom: 20px; display: flex; align-items: center; gap: 8px; }\n        .add-repo-input-group { display: flex; gap: 8px; margin-bottom: 15px; }\n        .add-repo-input {\n            flex: 1; padding: 8px 12px; border: 1px solid #d0d7de; border-radius: 6px;\n            font-size: 12px; background: #fff;\n        }\n        .add-repo-input:focus { outline: none; border-color: #0969da; box-shadow: 0 0 0 3px rgba(9,105,218,0.3); }\n        .add-repo-btn {\n            background: #2da44e; color: white; border: none; padding: 8px 16px;\n            border-radius: 6px; font-weight: 500; cursor: pointer; transition: 0.2s;\n        }\n        .add-repo-btn:hover { background: #2c974b; }\n        .input-hint { font-size: 10px; color: #57606a; margin-top: 20px; }\n        .input-hint code { background: #eaeef2; padding: 2px 6px; border-radius: 12px; font-size: 11px; }\n        .repo-list-header {\n            display: flex; justify-content: space-between; align-items: baseline;\n            margin-bottom: 12px; padding: 0 4px;\n        }\n        .repo-count { font-size: 13px; color: #57606a; }\n        .repo-list { display: flex; flex-direction: column; gap: 12px; }\n        .repo-card {\n            background: white;\n            border-radius: 12px;\n            padding: 16px;\n            border: 1px solid #e1e4e8;\n            transition: all 0.2s;\n            position: relative;\n        }\n        .repo-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.08); transform: translateY(-1px); }\n        .repo-header {\n            display: flex;\n            align-items: flex-start;\n            justify-content: space-between;\n            margin-bottom: 10px;\n            flex-wrap: wrap;\n            gap: 8px;\n        }\n        .repo-name-link {\n            font-size: 17px;\n            font-weight: 600;\n            color: #0969da;\n            text-decoration: none;\n            word-break: break-all;\n            display: flex;\n            align-items: center;\n            gap: 8px;\n            flex-wrap: wrap;\n            flex: 1;\n            min-width: 0;\n        }\n        .repo-name-link:hover { text-decoration: underline; }\n        .local-badge {\n            background: #e9ecef;\n            color: #495057;\n            font-size: 11px;\n            padding: 2px 8px;\n            border-radius: 20px;\n            font-weight: normal;\n            white-space: nowrap;\n        }\n        .delete-repo {\n            background: none;\n            border: none;\n            font-size: 18px;\n            cursor: pointer;\n            color: #cf222e;\n            padding: 4px 8px;\n            border-radius: 6px;\n            transition: 0.2s;\n            white-space: nowrap;\n        }\n        .delete-repo:hover { background: #ffebe9; }\n        .release-info {\n            margin-top: 12px;\n            padding-top: 8px;\n            border-top: 1px solid #eaeef2;\n        }\n        .latest-release {\n            display: flex;\n            align-items: center;\n            flex-wrap: wrap;\n            gap: 8px;\n            margin-bottom: 8px;\n        }\n        .release-tag-link {\n            background: #f1f8ff;\n            color: #0969da;\n            padding: 4px 10px;\n            border-radius: 16px;\n            font-size: 11px;\n            font-weight: 500;\n            text-decoration: none;\n            font-family: monospace;\n            display: inline-block;\n        }\n        .release-tag-link:hover {\n            background: #ddf4ff;\n            text-decoration: none;\n        }\n        .release-date {\n            background: #e9ecef;\n            color: #495057;\n            padding: 4px 10px;\n            border-radius: 16px;\n            font-size: 11px;\n            font-family: monospace;\n            display: inline-block;\n        }\n        .release-notes {\n            font-size: 12px;\n            color: #24292f;\n            max-height: 80px;\n            overflow-y: auto;\n            line-height: 1.5;\n            margin-top: 8px;\n            padding: 10px 12px;\n            background: #f8f9fa;\n            border-radius: 8px;\n            word-break: break-word;\n        }\n        .release-notes p {\n            margin: 0 0 8px 0;\n        }\n        .release-notes p:last-child {\n            margin-bottom: 0;\n        }\n        .release-notes ul, .release-notes ol {\n            margin: 4px 0 8px 20px;\n            padding-left: 0;\n        }\n        .release-notes li {\n            margin: 2px 0;\n        }\n        .release-notes code {\n            background: #e9ecef;\n            padding: 2px 6px;\n            border-radius: 4px;\n            font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n            font-size: 11px;\n            color: #d73a49;\n        }\n        .release-notes pre {\n            background: #1e1e1e;\n            color: #d4d4d4;\n            padding: 10px;\n            border-radius: 6px;\n            overflow-x: auto;\n            font-family: 'SF Mono', Monaco, monospace;\n            font-size: 11px;\n            margin: 8px 0;\n        }\n        .release-notes pre code {\n            background: none;\n            color: inherit;\n            padding: 0;\n        }\n        .release-notes a {\n            color: #0969da;\n            text-decoration: none;\n        }\n        .release-notes a:hover {\n            text-decoration: underline;\n        }\n        .release-notes img {\n            max-width: 100%;\n            height: auto;\n            border-radius: 6px;\n            margin: 8px 0;\n        }\n        .release-notes blockquote {\n            border-left: 3px solid #d0d7de;\n            padding-left: 12px;\n            margin: 8px 0;\n            color: #57606a;\n        }\n        .release-notes table {\n            border-collapse: collapse;\n            width: 100%;\n            margin: 8px 0;\n        }\n        .release-notes th, .release-notes td {\n            border: 1px solid #d0d7de;\n            padding: 6px 10px;\n            text-align: left;\n        }\n        .release-notes th {\n            background: #f6f8fa;\n        }\n        .release-notes h1, .release-notes h2, .release-notes h3, .release-notes h4 {\n            margin: 12px 0 8px 0;\n            font-weight: 600;\n        }\n        .release-notes h1 { font-size: 18px; }\n        .release-notes h2 { font-size: 16px; }\n        .release-notes h3 { font-size: 14px; }\n        .release-notes hr {\n            border: none;\n            border-top: 1px solid #e1e4e8;\n            margin: 12px 0;\n        }\n        .release-notes-loading {\n            font-size: 11px;\n            color: #8b949e;\n            padding: 8px 0;\n        }\n        .releases-link {\n            display: inline-block;\n            background: #e9ecef;\n            color: #495057;\n            padding: 4px 10px;\n            border-radius: 16px;\n            font-size: 11px;\n            text-decoration: none;\n            transition: 0.2s;\n        }\n        .releases-link:hover {\n            background: #dee2e6;\n            text-decoration: none;\n        }\n        .empty-state {\n            text-align: center; padding: 40px 20px; background: white;\n            border-radius: 12px; border: 1px dashed #d0d7de; color: #57606a;\n        }\n        .footer-note {\n            margin-top: 20px; \n            font-size: 11px; text-align: center;\n            color: #8b949e; \n            padding-top: 16px;\n        }\n        .toast-msg {\n            position: fixed;\n            bottom: 20px;\n            left: 50%;\n            transform: translateX(-50%);\n            background: rgba(0,0,0,0.8);\n            color: white;\n            padding: 8px 16px;\n            border-radius: 20px;\n            font-size: 12px;\n            z-index: 1000;\n            animation: fadeOut 2s ease forwards;\n        }\n        @keyframes fadeOut {\n            0% { opacity: 1; }\n            70% { opacity: 1; }\n            100% { opacity: 0; visibility: hidden; }\n        }\n        .release-notes::-webkit-scrollbar {\n            width: 6px;\n        }\n        .release-notes::-webkit-scrollbar-track {\n            background: #e9ecef;\n            border-radius: 4px;\n        }\n        .release-notes::-webkit-scrollbar-thumb {\n            background: #cbd5e1;\n            border-radius: 4px;\n        }\n        /* 主页标题链接样式 */\n        .main-title-link {\n            text-decoration: none;\n            color: inherit;\n            display: inline-flex;\n            align-items: center;\n            gap: 8px;\n        }\n        .main-title-link:hover {\n            opacity: 0.8;\n        }\n    </style>\n</head>\n<body>\n<div class=\"container\">\n    <div class=\"add-repo-section\">\n        <div class=\"add-repo-title\">\n            <a href=\"https://github.com\" class=\"main-title-link\" target=\"_blank\" rel=\"noopener noreferrer\">\n                <span>📦 GitHub 仓库订阅</span>\n            </a>\n        </div>\n        <div class=\"add-repo-input-group\">\n            <input type=\"text\" class=\"add-repo-input\" id=\"repoInput\" placeholder=\"用户名/仓库名  或  GitHub 链接\">\n            <button class=\"add-repo-btn\" id=\"addRepoBtn\">订阅</button>\n        </div>\n        <div class=\"input-hint\">&nbsp;注意：清空 WebView 缓存后，手动订阅会消失</div>\n    </div>\n    <div class=\"repo-list-header\">\n        <span class=\"repo-count\" id=\"repoCount\">已订阅 0 个仓库</span>\n    </div>\n    <div id=\"repoListContainer\" class=\"repo-list\">\n        <div class=\"empty-state\">📭 加载中...</div>\n    </div>\n    <div class=\"footer-note\">数据来自 GitHub 官方</div>\n</div>\n \n<script>\n    (function() {\n        const STORAGE_KEY = 'github_repos';\n        \n        // 🔥🔥🔥预设GitHub仓库🔥🔥🔥\n        const PRESET_REPOS = [\n            { fullName: \"gedoor/legado\", name: \"gedoor/legado\", isPreset: true },\n            { fullName: \"mgz0227/legado-Harmony\", name: \"mgz0227/legado-Harmony\", isPreset: true }\n        ];\n        // 🔥🔥🔥预设GitHub仓库🔥🔥🔥\n        \n        let userRepos = [];\n        let releaseCache = new Map();\n        \n        function showToast(msg) {\n            let toast = document.createElement('div');\n            toast.className = 'toast-msg';\n            toast.textContent = msg;\n            document.body.appendChild(toast);\n            setTimeout(() => {\n                if (toast.parentNode) toast.parentNode.removeChild(toast);\n            }, 2000);\n        }\n        \n        function getAllRepos() {\n            return [...PRESET_REPOS, ...userRepos];\n        }\n        \n        function loadUserReposFromLocal() {\n            try {\n                let stored = localStorage.getItem(STORAGE_KEY);\n                if (stored && stored !== 'null' && stored !== 'undefined' && stored !== '') {\n                    let parsed = JSON.parse(stored);\n                    if (Array.isArray(parsed)) {\n                        userRepos = parsed;\n                        return;\n                    }\n                }\n            } catch(e) {\n                console.error('加载本地数据失败:', e);\n            }\n            userRepos = [];\n            saveUserReposToLocal();\n        }\n        \n        function saveUserReposToLocal() {\n            try {\n                localStorage.setItem(STORAGE_KEY, JSON.stringify(userRepos));\n                syncToSource();\n            } catch(e) {\n                console.error('保存本地数据失败:', e);\n            }\n        }\n        \n        function syncToSource() {\n            try {\n                if (typeof source !== 'undefined' && source.setVariable) {\n                    source.setVariable(JSON.stringify(userRepos));\n                }\n            } catch(e) {\n                console.error('同步到源变量失败', e);\n            }\n        }\n        \n        function loadUserReposFromSource() {\n            try {\n                if (typeof source !== 'undefined' && source.getVariable) {\n                    let stored = source.getVariable();\n                    if (stored && stored !== 'null' && stored !== 'undefined' && stored !== '') {\n                        let parsed = JSON.parse(stored);\n                        if (Array.isArray(parsed)) {\n                            userRepos = parsed;\n                            saveUserReposToLocal();\n                            return true;\n                        }\n                    }\n                }\n            } catch(e) {}\n            return false;\n        }\n        \n        function addRepository(input) {\n            let raw = input.trim();\n            if (!raw) return false;\n            let fullName = \"\";\n            if (raw.includes(\"github.com/\")) {\n                let match = raw.match(/github\\.com\\/([^\\/]+\\/[^\\/\\?#]+)/);\n                if (match) fullName = match[1];\n            } else if (raw.match(/^[\\w\\-\\.]+\\/[\\w\\-\\.]+$/)) {\n                fullName = raw;\n            }\n            if (!fullName) return false;\n            let allRepos = getAllRepos();\n            if (allRepos.some(r => r.fullName === fullName)) return false;\n            userRepos.push({ fullName: fullName, name: fullName, isPreset: false });\n            saveUserReposToLocal();\n            return true;\n        }\n        \n        function deleteRepository(fullName) {\n            userRepos = userRepos.filter(r => r.fullName !== fullName);\n            releaseCache.delete(fullName);\n            saveUserReposToLocal();\n            renderRepoList();\n        }\n        \n        // 处理 HTML 内容，保留格式\n        function processHtmlContent(htmlContent) {\n            if (!htmlContent) return '<div class=\"release-notes-loading\">暂无更新内容</div>';\n            \n            // 修复 GitHub 的相对链接\n            let processed = htmlContent\n                .replace(/href=\"\\/([^\\/]+\\/[^\\/]+)\\/issues\\/(\\d+)\"/g, 'href=\"https://github.com/$1/issues/$2\"')\n                .replace(/href=\"\\/([^\\/]+\\/[^\\/]+)\\/pull\\/(\\d+)\"/g, 'href=\"https://github.com/$1/pull/$2\"')\n                .replace(/href=\"\\/([^\\/]+)\\/\"/g, 'href=\"https://github.com/$1/\"')\n                .replace(/data-hovercard-type=\"[^\"]*\"/g, '')\n                .replace(/data-hovercard-url=\"[^\"]*\"/g, '')\n                .replace(/data-octo-click=\"[^\"]*\"/g, '')\n                .replace(/data-octo-dimensions=\"[^\"]*\"/g, '');\n            \n            // 处理图片链接\n            processed = processed.replace(/<img[^>]+src=\"([^\"]+)\"[^>]*>/g, function(match, src) {\n                if (src && !src.startsWith('http')) {\n                    src = 'https://github.com' + src;\n                }\n                return `<img src=\"${src}\" loading=\"lazy\" style=\"max-width:100%;height:auto;border-radius:6px;margin:8px 0;\">`;\n            });\n            \n            return processed;\n        }\n        \n        // 获取最新 release 信息\n        async function fetchLatestRelease(fullName) {\n            const atomUrl = `https://github.com/${fullName}/releases.atom`;\n            try {\n                let response = await fetch(atomUrl, {\n                    headers: { \"User-Agent\": \"Mozilla/5.0\" }\n                });\n                if (!response.ok) return null;\n                let text = await response.text();\n                \n                // 解析第一个 entry\n                let entryMatch = text.match(/<entry>([\\s\\S]*?)<\\/entry>/);\n                if (!entryMatch) return null;\n                let entry = entryMatch[1];\n                \n                // 提取 tag/版本号\n                let tagMatch = entry.match(/<title>([^<]+)<\\/title>/);\n                let tag = tagMatch ? tagMatch[1].trim() : 'unknown';\n                \n                // 提取更新时间\n                let updatedMatch = entry.match(/<updated>([^<]+)<\\/updated>/);\n                let updated = updatedMatch ? updatedMatch[1].replace('T', ' ').replace(/Z$/, '') : '';\n                if (updated) {\n                    let date = new Date(updated);\n                    updated = `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()}`;\n                }\n                \n                // 提取链接\n                let linkMatch = entry.match(/<link[^>]*href=\"([^\"]+)\"[^>]*>/);\n                let link = linkMatch ? linkMatch[1] : `https://github.com/${fullName}/releases/latest`;\n                \n                // 提取内容 - 保留 HTML 格式\n                let contentMatch = entry.match(/<content[^>]*>([\\s\\S]*?)<\\/content>/);\n                let content = contentMatch ? contentMatch[1] : '';\n                \n                // 解码 HTML 实体\n                content = content\n                    .replace(/&lt;/g, '<')\n                    .replace(/&gt;/g, '>')\n                    .replace(/&amp;/g, '&')\n                    .replace(/&quot;/g, '\"')\n                    .replace(/&apos;/g, \"'\");\n                \n                return { tag, updated, link, content };\n            } catch(e) {\n                console.error(`获取 ${fullName} 失败:`, e);\n                return null;\n            }\n        }\n        \n        // 异步加载单个仓库的 release\n        async function loadReleaseForRepo(repo, cardElement) {\n            let releaseInfo = releaseCache.get(repo.fullName);\n            if (releaseInfo === undefined) {\n                // 显示加载中\n                const releaseDiv = cardElement.querySelector('.release-dynamic');\n                if (releaseDiv) releaseDiv.innerHTML = '<div class=\"release-notes-loading\">⏳ 加载最新版本...</div>';\n                \n                releaseInfo = await fetchLatestRelease(repo.fullName);\n                releaseCache.set(repo.fullName, releaseInfo);\n            }\n            \n            const releaseDiv = cardElement.querySelector('.release-dynamic');\n            if (!releaseDiv) return;\n            \n            if (releaseInfo && releaseInfo.tag !== 'unknown') {\n                let processedContent = releaseInfo.content ? processHtmlContent(releaseInfo.content) : '';\n                let contentHtml = processedContent ? `<div class=\"release-notes\">${processedContent}</div>` : '<div class=\"release-notes-loading\">暂无更新内容</div>';\n                \n                releaseDiv.innerHTML = `\n                    <div class=\"latest-release\">\n                        <a href=\"${escapeHtml(releaseInfo.link)}\" class=\"release-tag-link\" target=\"_blank\" rel=\"noopener noreferrer\">🏷️ ${escapeHtml(releaseInfo.tag)}</a>\n                        ${releaseInfo.updated ? `<span class=\"release-date\">🗓️ ${escapeHtml(releaseInfo.updated)}</span>` : ''}\n                        <a href=\"https://github.com/${repo.fullName}/releases\" class=\"releases-link\" target=\"_blank\" rel=\"noopener noreferrer\">📋 所有版本</a>\n                    </div>\n                    ${contentHtml}\n                `;\n            } else {\n                releaseDiv.innerHTML = `\n                    <div class=\"latest-release\">\n                        <span class=\"release-tag-link\" style=\"background:#f0f0f0;color:#8b949e;\">⚠️ 加载失败</span>\n                        <a href=\"https://github.com/${repo.fullName}/releases\" class=\"releases-link\" target=\"_blank\" rel=\"noopener noreferrer\">📋 查看 Releases</a>\n                    </div>\n                `;\n            }\n        }\n        \n        function renderRepoList() {\n            const container = document.getElementById('repoListContainer');\n            const countSpan = document.getElementById('repoCount');\n            if (!container) return;\n            const allRepos = getAllRepos();\n            countSpan.innerText = `已订阅 ${allRepos.length} 个仓库`;\n            \n            if (allRepos.length === 0) {\n                container.innerHTML = '<div class=\"empty-state\">📭 暂无订阅仓库</div>';\n                return;\n            }\n            \n            let html = '';\n            for (let repo of allRepos) {\n                let repoUrl = `https://github.com/${repo.fullName}`;\n                let isPreset = repo.isPreset === true;\n                \n                html += `\n                    <div class=\"repo-card\" data-fullname=\"${escapeHtml(repo.fullName)}\">\n                        <div class=\"repo-header\">\n                            <a href=\"${escapeHtml(repoUrl)}\" class=\"repo-name-link\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                📦 ${escapeHtml(repo.fullName)}\n                            </a>\n                            <div style=\"display: flex; align-items: center; gap: 8px; flex-shrink: 0;\">\n                                ${isPreset ? '<span class=\"local-badge\">本地</span>' : `<button class=\"delete-repo\" data-fullname=\"${escapeHtml(repo.fullName)}\" title=\"删除订阅\">🗑️</button>`}\n                            </div>\n                        </div>\n                        <div class=\"release-info\">\n                            <div class=\"release-dynamic\">\n                                <div class=\"release-notes-loading\">⏳ 加载最新版本...</div>\n                            </div>\n                        </div>\n                    </div>\n                `;\n            }\n            container.innerHTML = html;\n            \n            // 为每个卡片异步加载 release 信息\n            const cards = document.querySelectorAll('.repo-card');\n            cards.forEach(card => {\n                const fullName = card.getAttribute('data-fullname');\n                const repo = allRepos.find(r => r.fullName === fullName);\n                if (repo) {\n                    loadReleaseForRepo(repo, card);\n                }\n            });\n            \n            // 删除按钮绑定\n            document.querySelectorAll('.delete-repo').forEach(btn => {\n                btn.addEventListener('click', (e) => {\n                    e.stopPropagation();\n                    let fullName = btn.getAttribute('data-fullname');\n                    if (confirm(`确定要删除仓库 ${fullName} 的订阅吗？`)) {\n                        deleteRepository(fullName);\n                        showToast(`已删除 ${fullName}`);\n                    }\n                });\n            });\n        }\n        \n        function escapeHtml(str) {\n            if (!str) return '';\n            return str.replace(/[&<>]/g, function(m) {\n                if (m === '&') return '&amp;';\n                if (m === '<') return '&lt;';\n                if (m === '>') return '&gt;';\n                return m;\n            });\n        }\n        \n        function init() {\n            if (!loadUserReposFromSource()) {\n                loadUserReposFromLocal();\n            }\n            renderRepoList();\n        }\n        \n        init();\n        \n        document.getElementById('addRepoBtn').addEventListener('click', () => {\n            let input = document.getElementById('repoInput');\n            let val = input.value;\n            if (!val) {\n                alert('请输入仓库地址，例如: gedoor/legado');\n                return;\n            }\n            let success = addRepository(val);\n            if (!success) {\n                alert('添加失败，格式错误或已存在');\n                return;\n            }\n            input.value = '';\n            renderRepoList();\n            showToast(`已添加 ${val}`);\n        });\n    })();\n</script>\n</body>\n</html>",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774456432455,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "粉白社改名啦，现在请叫我粉白妙妙屋喲～\n\n粉白妙妙屋博客 ：https://383842.xyz\n博客备用域名：https://www.383842.xyz\n粉白妙妙屋网盘：https://xirang.383842.xyz\n粉白妙妙屋发布页：https://fenbai.383842.xyz\n\n欢迎家人们上传分享书源+各种（手机电脑）资源，欢迎捐赠支持我们的网站运营，欢迎家人们加入收集资源团伙这个大家庭喲。\n\n本站还支持用来备份分享自己的资源哦，这样我们就可以拥有方便的直链下载啦，再也不用忍受速度跟蜗牛一样慢的百度网盘，和被拉人头的夸克，还有限制类型的蓝奏云等等网盘了。（话说为啥大家不用阅读内置的直链分享啊，好奇🤔）\n\n本站除了提供书源备份外，我们还有小说txt下载，影视资源观看，手机软件APP，破解资源，电脑破解资源，root模块，音乐mp3下载等等。\n\n本站上传需要申请账号哦，博客上有联系方式。这是为了过滤一些不靠谱和不安全来源的资源，希望大家能理解一下。\n",
    "sourceGroup": "书源",
    "sourceIcon": "https://dlink.host/1drv/aHR0cHM6Ly8xZHJ2Lm1zL2kvcyFBa1pRN2dYUGY1VzlnWmxPa1VVWlljaDZxVDM3Unc.gif",
    "sourceName": "粉白妙妙屋",
    "sourceUrl": "https://rangxi.383842.xyz",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 0,
    "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": 1774456463230,
    "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🎬 影视大全2::https://goradioai.com/share/",
    "sourceGroup": "影视",
    "sourceIcon": "https://hksexdoll.com/favicon.ico",
    "sourceName": "1:1 娃娃美图秀",
    "sourceUrl": "https://hksexdoll.com",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\"User-Agent\": \"Mozilla/5.0 (Android)\"\n}",
    "lastUpdateTime": 1774456578278,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.blocks..models[*]&&$.models[*]",
    "ruleContent": "<js>\nconst parts = baseUrl.split(',').map(item => item.trim());\nconst domain = parts[0].split('/').slice(0, 3).join('/');\nconst username = parts[0].split('/').pop() || parts[0];\n\nconst camAjax = java.ajax(domain + '/api/front/v2/models/username/' + username + '/cam?uniq=0');\nconst configAjax = java.ajax(domain + '/api/front/v3/config/initial');\nconst membersAjax = java.ajax(domain + '/api/front/v2/models/username/' + username + '/members?uniq=0');\n\nlet responseData = { status: \"offline\", avatarUrl: \"\", startTime: \"\", coverImg: \"\", userDescription: \"\", goalDescription: \"\", fanClubDescription: \"\", topic: \"\", username: username, stream: \"\", topBestPlace: \"\", hlsLines: [], cdn: \"\", pixelatedResolutions: [], membersCount: 0, tipMenuPriceList: [], isLive: false, tipMenuCreatedAt: \"\", websocketUrl: \"\", websocketToken: \"\", modelId: \"\" };\n\nif (camAjax) {\n    const camData = JSON.parse(camAjax);\n    const user = camData.user?.user || {};\n    const cam = camData.cam || {};\n    \n    responseData.status = user.status || \"offline\";\n    responseData.avatarUrl = user.avatarUrl || \"\";\n    responseData.startTime = user.statusChangedAt || \"\";\n    responseData.userDescription = user.description || \"\";\n    responseData.goalDescription = cam.goal?.description || \"\";\n    responseData.fanClubDescription = cam.userFanClub?.description || \"\";\n    responseData.topic = cam.topic || \"\";\n    responseData.stream = cam.streamName || \"\";\n    responseData.topBestPlace = user.topBestPlace || \"\";\n    responseData.modelId = user.id || \"\";\n    \n    if (user.snapshotTimestamp && responseData.modelId) {\n        responseData.coverImg = \"https://img.doppiocdn.live/thumbs/\" + user.snapshotTimestamp + \"/\" + responseData.modelId;\n    }\n    if (cam.broadcastSettings?.presets?.pixelated) {\n        responseData.pixelatedResolutions = cam.broadcastSettings.presets.pixelated;\n    }\n    \n    responseData.isLive = user.isOnline === true;\n    responseData.tipMenuCreatedAt = cam.tipMenu?.createdAt || \"\";\n    \n    if (cam.tipMenu?.settings) {\n        responseData.tipMenuPriceList = cam.tipMenu.settings.map(item => ({\n            activity: item.activity || \"\",\n            price: item.price || 0\n        }));\n    }\n}\n\nif (configAjax) {\n    const configData = JSON.parse(configAjax);\n    const hosts = configData.initial?.common?.hlsStreamHosts || {};\n    responseData.hlsLines = [hosts.A, hosts.B, hosts.C, hosts.D, hosts.E, hosts.F].filter(h => h);\n    responseData.cdn = responseData.hlsLines[0] || \"\";\n    \n    const client = configData.initial?.client || {};\n    responseData.websocketUrl = client.websocket?.url || \"\";\n    responseData.websocketToken = client.websocket?.token || \"\";\n}\n\nif (membersAjax) {\n    try {\n        const membersData = JSON.parse(membersAjax);\n        responseData.membersCount = \n            (membersData?.guests || 0) + \n            (membersData?.spies || 0) + \n            (membersData?.invisibles || 0) + \n            (membersData?.greens || 0) + \n            (membersData?.golds || 0) + \n            (membersData?.regulars || 0);\n    } catch (error) {\n        responseData.membersCount = 0;\n    }\n}\n\nJSON.stringify(responseData);\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title></title>\n</head>\n    <style>\n        * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Microsoft Yahei', sans-serif; }\n        body { color: #333; padding: 0.1rem; min-height: 100vh; background: #f5f5f5; }\n        .app-container { display: grid; grid-template-columns: 1fr; gap: 1rem; max-width: 1200px; margin: 0 auto; }\n        .live-section { border-radius: 12px; overflow: hidden; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); border: 1px solid #eaeaea; background: #fff; }\n        .topic-section { padding: 14px 20px; border-bottom: 1px solid #eaeaea; background: #fff; display: none; }\n        .topic-label { font-size: 12px; color: #666; margin-bottom: 6px; display: flex; align-items: center; gap: 8px; font-weight: 500; }\n        .topic-content { font-size: 15px; color: #333; font-weight: 500; line-height: 1.4; }\n        .chat-section { border-radius: 12px; padding: 1rem; display: flex; flex-direction: column; height: 500px; border: 1px solid #eaeaea; background: #fff; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); }\n        .chat-messages { flex: 1; overflow-y: auto; padding-right: 0.5rem; width: 100%; }\n        .chat-messages::-webkit-scrollbar { width: 6px; }\n        .chat-messages::-webkit-scrollbar-track { background: #f0f0f0; border-radius: 3px; }\n        .chat-messages::-webkit-scrollbar-thumb { background: #c0c0c0; border-radius: 3px; }\n        .message-wrapper { display: block; margin-bottom: 0.3rem; width: 100%; }\n        .message-item { padding: 0.3rem 0.6rem; border-radius: 16px; font-size: 0.85rem; line-height: 1.3; border: 1px solid rgba(224, 224, 224, 0.6); display: block; background: #f8f8f8; color: #333; width: 100%; word-break: break-word; box-sizing: border-box; }\n        .lovense-item { border-color: #e0e0e0; background: #f8f8f8; }\n        .tip-item { border-color: #e0e0e0; background: #f8f8f8; }\n        .system-message { border-color: #e0e0e0; color: #666; font-size: 0.85rem; margin: 0 auto 0.3rem auto; background: #f8f8f8; }\n        .user-name { font-weight: 600; color: #222; margin-left: 0.4rem; }\n        .level-tag { font-size: 0.75rem; color: #666; background: #f0f0f0; padding: 0.1rem 0.4rem; border-radius: 8px; }\n        .tip-amount { color: #e74c3c; font-weight: 600; }\n        .live-header { padding: 16px 20px; border-bottom: 1px solid #eaeaea; display: flex; align-items: center; gap: 15px; background: #fff; }\n        .avatar-container { width: 56px; height: 56px; flex-shrink: 0; }\n        .avatar { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; border: 3px solid #007aff; }\n        .host-info { flex: 1; min-width: 0; }\n        .host-info h2 { font-size: 18px; margin-bottom: 6px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #333; }\n        .status-container { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }\n        .live-badge { display: inline-flex; align-items: center; background: #ff3b30; color: white; padding: 4px 10px; border-radius: 4px; font-size: 12px; font-weight: 600; letter-spacing: 0.3px; }\n        .live-badge::before { content: ''; display: inline-block; width: 6px; height: 6px; background-color: white; border-radius: 50%; margin-right: 6px; animation: blink 1.5s infinite; }\n        @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }\n        .viewer-count { font-size: 13px; color: #666; display: flex; align-items: center; gap: 5px; }\n        .player-container { position: relative; background: #000000; overflow: hidden; }\n        .player-container:fullscreen { display: flex; align-items: center; justify-content: center; }\n        .player-container:-webkit-full-screen { display: flex; align-items: center; justify-content: center; }\n        #dplayer { width: 100% !important; height: 100% !important; display: flex; align-items: center; }\n        #dplayer video { object-fit: contain !important; }\n        .dplayer-controller { display: none !important; }\n        .dplayer-notice { display: none !important; }\n        .custom-controls { position: absolute; bottom: 0; left: 0; right: 0; padding: 12px 15px 6px; display: flex; align-items: center; justify-content: space-between; opacity: 0; transition: opacity 0.2s; z-index: 1000; pointer-events: none; }\n        .player-container.controls-visible .custom-controls { opacity: 1; pointer-events: auto; }\n        .player-container.controls-hidden .custom-controls { opacity: 0; pointer-events: none; }\n        .left-controls, .right-controls { display: flex; align-items: center; gap: 8px; pointer-events: auto; }\n        .rotate-btn { background: rgba(255, 255, 255, 0.15); border: 1px solid rgba(255, 255, 255, 0.25); color: rgba(255, 255, 255, 0.9); padding: 6px 10px; border-radius: 6px; cursor: pointer; font-size: 13px; font-weight: 500; white-space: nowrap; display: flex; align-items: center; justify-content: center; transition: all 0.15s; min-width: 52px; pointer-events: auto; }\n        .rotate-btn:hover { background: rgba(255, 255, 255, 0.25); color: white; }\n        .control-btn { background: rgba(255, 255, 255, 0.15); border: 1px solid rgba(255, 255, 255, 0.25); color: #ffffff; width: 36px; height: 36px; border-radius: 6px; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 16px; transition: all 0.15s; pointer-events: auto; }\n        .control-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n        .selector-btn { background: rgba(255, 255, 255, 0.15); border: 1px solid rgba(255, 255, 255, 0.25); color: #ffffff; padding: 6px 10px; border-radius: 6px; cursor: pointer; font-size: 13px; font-weight: 500; white-space: nowrap; display: flex; align-items: center; gap: 5px; transition: all 0.15s; min-width: 65px; justify-content: center; pointer-events: auto; }\n        .selector-menu { position: absolute; bottom: 42px; background: #ffffff; border-radius: 8px; min-width: 90px; display: none; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.16); border: 1px solid #d1d1d6; overflow: hidden; z-index: 1001; pointer-events: auto; }\n        .menu-item { padding: 8px 12px; color: #333; cursor: pointer; font-size: 13px; transition: all 0.15s; border-bottom: 1px solid #eaeaea; display: flex; align-items: center; justify-content: space-between; pointer-events: auto; }\n        .menu-item:last-child { border-bottom: none; }\n        .menu-item:hover:not(:disabled) { background: #007aff; color: white; }\n        .menu-item.active { background: rgba(10, 132, 255, 0.1); color: #007aff; }\n        .menu-item.active:after { content: \"✓\"; font-size: 12px; color: #007aff; }\n        .loading-indicator { position: absolute; top: 15px; left: 15px; background: rgba(0, 0, 0, 0.8); color: white; padding: 6px 12px; border-radius: 4px; font-size: 12px; z-index: 1002; display: none; border: 1px solid rgba(255, 255, 255, 0.1); }\n        .floating-button { position: fixed; bottom: 20px; right: 20px; width: 60px; height: 60px; border-radius: 50%; background: #007aff; color: white; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 4px 12px rgba(0, 122, 255, 0.3); z-index: 10000; border: none; font-size: 24px; }\n        .floating-panel { position: fixed; bottom: 90px; right: 20px; width: 400px; background: #ffffff; border-radius: 12px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15); padding: 20px; z-index: 9999; border: 1px solid #eaeaea; display: none; max-height: 80vh; overflow-y: auto; }\n        .floating-panel::-webkit-scrollbar { width: 6px; }\n        .floating-panel::-webkit-scrollbar-track { background: #f0f0f0; border-radius: 3px; }\n        .floating-panel::-webkit-scrollbar-thumb { background: #c0c0c0; border-radius: 3px; }\n        .floating-panel-title { font-size: 18px; font-weight: 600; margin-bottom: 15px; color: #333; padding-bottom: 10px; border-bottom: 1px solid #eaeaea; }\n        .floating-info-section { margin-bottom: 20px; }\n        .floating-info-section-title { font-size: 15px; color: #007aff; margin-bottom: 12px; font-weight: 600; display: flex; align-items: center; gap: 8px; }\n        .floating-info-item { margin-bottom: 12px; display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #f5f5f5; }\n        .floating-info-item:last-child { border-bottom: none; margin-bottom: 0; }\n        .floating-info-label { font-size: 13px; color: #666; min-width: 120px; }\n        .floating-info-value { font-size: 14px; color: #333; font-weight: 500; text-align: right; flex: 1; }\n        .floating-content { background: #f8f9fa; border: 1px solid #eaeaea; border-radius: 8px; padding: 12px; font-size: 14px; color: #333; line-height: 1.5; margin-bottom: 15px; }\n        .floating-price-list { display: flex; flex-direction: column; gap: 8px; }\n        .floating-price-item { background: #ffffff; border: 1px solid #eaeaea; border-radius: 8px; padding: 10px 12px; display: flex; align-items: center; justify-content: space-between; transition: all 0.2s; }\n        .floating-price-item:hover { border-color: #007aff; }\n        .floating-price-activity { font-size: 14px; color: #333; flex: 1; }\n        .floating-price-value { font-size: 14px; color: #ff3b30; font-weight: 600; }\n        @media (max-width: 768px) {\n            .floating-panel { width: 350px; right: 10px; bottom: 80px; }\n            .floating-button { width: 50px; height: 50px; font-size: 20px; right: 15px; bottom: 15px; }\n            .live-header { padding: 14px 16px; }\n            .avatar-container { width: 48px; height: 48px; }\n            .host-info h2 { font-size: 16px; }\n        }\n        @media (max-width: 480px) {\n            .floating-panel { width: 300px; }\n            .chat-section { height: 400px; }\n            .app-container { padding: 0.5rem; gap: 1rem; }\n        }\n    </style>\n<body>\n    <div id=\"config\" style=\"display:none;\">\n        <div id=\"liveData\" style=\"display:none;\">{{result}}</div>\n    </div>\n    \n    <div class=\"app-container\">\n        <div class=\"live-section\">\n            <div class=\"topic-section\" id=\"topicContainer\">\n                <div class=\"topic-label\">\n                    <i class=\"fas fa-bullhorn\"></i> 直播标题\n                </div>\n                <div class=\"topic-content\" id=\"topic\"></div>\n            </div>\n            \n            <div class=\"live-header\">\n                <div class=\"avatar-container\">\n                    <img class=\"avatar\" id=\"avatarImg\" src=\"\" alt=\"\">\n                </div>\n                <div class=\"host-info\">\n                    <h2 id=\"hostName\">正在加载...</h2>\n                    <div class=\"status-container\">\n                        <span class=\"live-badge\">直播中</span>\n                        <div class=\"viewer-count\">\n                            <i class=\"fas fa-users\"></i>\n                            <span id=\"membersCount\">--</span> 人\n                        </div>\n                    </div>\n                </div>\n            </div>\n            \n            <div class=\"player-container\" id=\"playerContainer\">\n                <div id=\"dplayer\"></div>\n                <div class=\"loading-indicator\" id=\"loadingIndicator\">正在切换...</div>\n                <div class=\"custom-controls\">\n                    <div class=\"left-controls\">\n                        <button class=\"control-btn\" id=\"refreshBtn\" title=\"刷新播放\">\n                            <i class=\"fas fa-redo-alt\"></i>\n                        </button>\n                        <button class=\"control-btn\" id=\"volumeBtn\" title=\"静音/取消静音\">\n                            <i class=\"fas fa-volume-up\"></i>\n                        </button>\n                        <div class=\"rotate-btn\" id=\"rotateBtn\">竖屏</div>\n                    </div>\n                    <div class=\"right-controls\">\n                        <div class=\"line-selector\">\n                            <div class=\"selector-btn\" id=\"lineBtn\" title=\"选择线路\">线路1 <i class=\"fas fa-chevron-down\"></i></div>\n                            <div class=\"selector-menu\" id=\"lineMenu\"></div>\n                        </div>\n                        <div class=\"quality-selector\">\n                            <div class=\"selector-btn\" id=\"qualityBtn\" title=\"选择清晰度\">默认 <i class=\"fas fa-chevron-down\"></i></div>\n                            <div class=\"selector-menu\" id=\"qualityMenu\"></div>\n                        </div>\n                        <button class=\"control-btn\" id=\"fullscreenBtn\" title=\"全屏\">\n                            <i class=\"fas fa-expand\"></i>\n                        </button>\n                    </div>\n                </div>\n            </div>\n        </div>\n        \n        <div class=\"chat-section\">\n             <div class=\"chat-messages\" id=\"chatContainer\"></div>\n        </div>\n    </div>\n    \n    <button class=\"floating-button\" id=\"floatingBtn\">\n        <i class=\"fas fa-info\"></i>\n    </button>\n    \n    <div class=\"floating-panel\" id=\"floatingPanel\">\n        <div class=\"floating-panel-title\">直播信息</div>\n        \n        <div class=\"floating-info-section\">\n            <div class=\"floating-info-section-title\">\n                <i class=\"fas fa-user\"></i> 主播信息\n            </div>\n            <div class=\"floating-info-item\">\n                <span class=\"floating-info-label\">主播名称:</span>\n                <span class=\"floating-info-value\" id=\"floatingHostName\">--</span>\n            </div>\n            <div class=\"floating-info-item\">\n                <span class=\"floating-info-label\">历史最高排行:</span>\n                <span class=\"floating-info-value\" id=\"floatingTopBestPlace\">--</span>\n            </div>\n            <div class=\"floating-info-item\">\n                <span class=\"floating-info-label\">总人数:</span>\n                <span class=\"floating-info-value\" id=\"floatingMembersCount\">--</span>\n            </div>\n            <div class=\"floating-info-item\">\n                <span class=\"floating-info-label\">首次开播日期:</span>\n                <span class=\"floating-info-value\" id=\"floatingTipMenuCreatedAt\">--</span>\n            </div>\n            <div class=\"floating-info-item\">\n                <span class=\"floating-info-label\" id=\"floatingDurationLabel\">时长标签:</span>\n                <span class=\"floating-info-value\" id=\"floatingDuration\">--</span>\n            </div>\n            <div class=\"floating-info-item\">\n                <span class=\"floating-info-label\" id=\"floatingTimeLabel\">时间标签:</span>\n                <span class=\"floating-info-value\" id=\"floatingStatusTime\">--</span>\n            </div>\n        </div>\n        \n        <div class=\"floating-info-section\" id=\"floatingUserDescriptionSection\">\n            <div class=\"floating-info-section-title\">\n                <i class=\"fas fa-user-circle\"></i> 主播介绍\n            </div>\n            <div class=\"floating-content\" id=\"floatingUserDescription\"></div>\n        </div>\n        \n        <div class=\"floating-info-section\" id=\"floatingGoalSection\">\n            <div class=\"floating-info-section-title\">\n                <i class=\"fas fa-bullseye\"></i> 直播目标\n            </div>\n            <div class=\"floating-content\" id=\"floatingGoalDescription\"></div>\n        </div>\n        \n        <div class=\"floating-info-section\" id=\"floatingFanClubSection\">\n            <div class=\"floating-info-section-title\">\n                <i class=\"fas fa-users\"></i> 粉丝团留言\n            </div>\n            <div class=\"floating-content\" id=\"floatingFanClubDescription\"></div>\n        </div>\n        \n        <div class=\"floating-info-section\">\n            <div class=\"floating-info-section-title\">\n                <i class=\"fas fa-gift\"></i> 打赏菜单\n            </div>\n            <div class=\"floating-price-list\" id=\"floatingPriceList\"></div>\n        </div>\n        \n        <div class=\"floating-info-section\">\n            <div class=\"floating-info-section-title\">\n                <i class=\"fas fa-tv\"></i> 播放设置\n            </div>\n            <div class=\"floating-info-item\">\n                <span class=\"floating-info-label\">当前线路:</span>\n                <span class=\"floating-info-value\" id=\"floatingLine\">线路1</span>\n            </div>\n            <div class=\"floating-info-item\">\n                <span class=\"floating-info-label\">清晰度:</span>\n                <span class=\"floating-info-value\" id=\"floatingQuality\">默认</span>\n            </div>\n        </div>\n    </div>\n\n    <script src=\"https://cdn.jsdelivr.net/npm/dplayer@1.27.1/dist/DPlayer.min.js\"></script>\n    <script src=\"https://cdn.jsdelivr.net/npm/hls.js@1.4.10/dist/hls.min.js\"></script>\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/js/all.min.js\"></script>\n    <script>\n        const liveDataElement = document.getElementById('liveData');\n        let liveData = {};\n        \n        if (liveDataElement.textContent) {\n            try {\n                liveData = JSON.parse(liveDataElement.textContent);\n            } catch (e) {}\n        }\n        \n        const chatContainer = document.getElementById('chatContainer');\n        let chatWs = null;\n\n        function addSystemMessage(text) {\n            const systemDiv = document.createElement('div');\n            systemDiv.className = 'message-item system-message';\n            systemDiv.textContent = text;\n            chatContainer.prepend(systemDiv);\n            chatContainer.scrollTop = 0;\n        }\n        \n        function initChat() {\n            if (!liveData.modelId || !liveData.websocketUrl || !liveData.websocketToken) return;\n\n            addSystemMessage('开始连接弹幕服务器');\n            \n            const timeoutMs = 10000;\n            let connectTimeoutTimer = setTimeout(() => {\n                if (chatWs && chatWs.readyState !== WebSocket.OPEN) {\n                    chatWs.close();\n                    addSystemMessage('连接超时：未能成功连接弹幕服务器');\n                }\n            }, timeoutMs);\n            \n            if (chatWs && chatWs.readyState === WebSocket.OPEN) {\n                chatWs.close();\n            }\n            \n            chatWs = new WebSocket(`${liveData.websocketUrl}`);\n            const sendQueue = [\n                '{\"connect\":{\"token\":\"' + liveData.websocketToken + '\"},\"id\":1}',\n                `{\"subscribe\":{\"channel\":\"newChatMessage@${liveData.modelId}\"},\"id\":2}`\n            ];\n            \n            function getUserLevelTag(userData) {\n                return userData?.userRanking?.level ? `<span class=\"level-tag\">Lv.${userData.userRanking.level}</span>` : '';\n            }\n            \n            function createMessageElement(data) {\n                const messageDiv = document.createElement('div');\n                messageDiv.className = 'message-item';\n                \n                const { type, userData, details } = data.message;\n                const levelTag = getUserLevelTag(userData);\n                \n                let content = '';\n                switch(type) {\n                    case 'text':\n                        messageDiv.className += ' text-item';\n                        content = `${levelTag}<span class=\"user-name\">${userData.username}</span>: ${details.body}`;\n                        break;\n                    case 'tip':\n                        messageDiv.className += ' tip-item';\n                        content = `${levelTag}<span class=\"user-name\">${userData.username}</span>: 已支付<span class=\"tip-amount\">${details.amount}</span>代币`;\n                        break;\n                    case 'lovense':\n                        messageDiv.className += ' lovense-item';\n                        const { power, time, amount } = details.lovenseDetails.detail;\n                        const powerText = power === 'low' ? '低' : power === 'medium' ? '中' : '高';\n                        const clientLevelTag = getUserLevelTag(details.lovenseDetails.clientUserInfo);\n                        content = `${clientLevelTag}<span class=\"user-name\">${details.lovenseDetails.clientUserInfo.username}</span>: ${powerText}强度 · ${time}秒`;\n                        break;\n                    default:\n                        return null;\n                }\n                \n                messageDiv.innerHTML = content;\n                return messageDiv;\n            }\n            \n            function addMessageToPanel(messageData) {\n                const messageElement = createMessageElement(messageData);\n                if (messageElement) {\n                    const messageWrapper = document.createElement('div');\n                    messageWrapper.className = 'message-wrapper';\n                    messageWrapper.appendChild(messageElement);\n                    chatContainer.prepend(messageWrapper);\n                    chatContainer.scrollTop = 0;\n                }\n            }\n            \n            chatWs.onopen = () => {\n                clearTimeout(connectTimeoutTimer);\n                sendQueue.forEach(cmd => chatWs.send(cmd));\n                addSystemMessage('弹幕服务器连接正常');\n            };\n            \n            chatWs.onmessage = (e) => {\n                if (e.data.trim() === '{}') {\n                    chatWs.send('{}');\n                    return;\n                }\n                try {\n                    const data = JSON.parse(e.data);\n                    if (data.ping) {\n                        chatWs.send(JSON.stringify({ pong: data.ping }));\n                    }\n                    if (data.push?.channel === `newChatMessage@${liveData.modelId}`) {\n                        addMessageToPanel(data.push.pub.data);\n                    }\n                } catch (error) {}\n            };\n            \n            chatWs.onerror = (err) => {\n                const errorDiv = document.createElement('div');\n                errorDiv.className = 'message-item system-message';\n                errorDiv.textContent = '连接错误';\n                chatContainer.prepend(errorDiv);\n                chatContainer.scrollTop = 0;\n            };\n            \n            chatWs.onclose = (e) => {\n                const closeDiv = document.createElement('div');\n                closeDiv.className = 'message-item system-message';\n                closeDiv.textContent = `连接关闭 | 错误码: ${e.code}`;\n                chatContainer.prepend(closeDiv);\n                chatContainer.scrollTop = 0;\n            };\n        }\n        \n        const elements = {\n            avatarImg: document.getElementById('avatarImg'),\n            hostName: document.getElementById('hostName'),\n            refreshBtn: document.getElementById('refreshBtn'),\n            volumeBtn: document.getElementById('volumeBtn'),\n            lineBtn: document.getElementById('lineBtn'),\n            lineMenu: document.getElementById('lineMenu'),\n            qualityBtn: document.getElementById('qualityBtn'),\n            qualityMenu: document.getElementById('qualityMenu'),\n            fullscreenBtn: document.getElementById('fullscreenBtn'),\n            loadingIndicator: document.getElementById('loadingIndicator'),\n            playerContainer: document.getElementById('playerContainer'),\n            membersCount: document.getElementById('membersCount'),\n            floatingBtn: document.getElementById('floatingBtn'),\n            floatingPanel: document.getElementById('floatingPanel'),\n            floatingHostName: document.getElementById('floatingHostName'),\n            floatingTopBestPlace: document.getElementById('floatingTopBestPlace'),\n            floatingMembersCount: document.getElementById('floatingMembersCount'),\n            floatingTipMenuCreatedAt: document.getElementById('floatingTipMenuCreatedAt'),\n            floatingTopic: document.getElementById('floatingTopic'),\n            floatingTopicSection: document.getElementById('floatingTopicSection'),\n            floatingGoalDescription: document.getElementById('floatingGoalDescription'),\n            floatingGoalSection: document.getElementById('floatingGoalSection'),\n            floatingUserDescription: document.getElementById('floatingUserDescription'),\n            floatingUserDescriptionSection: document.getElementById('floatingUserDescriptionSection'),\n            floatingFanClubDescription: document.getElementById('floatingFanClubDescription'),\n            floatingFanClubSection: document.getElementById('floatingFanClubSection'),\n            floatingPriceList: document.getElementById('floatingPriceList'),\n            floatingDurationLabel: document.getElementById('floatingDurationLabel'),\n            floatingDuration: document.getElementById('floatingDuration'),\n            floatingTimeLabel: document.getElementById('floatingTimeLabel'),\n            floatingStatusTime: document.getElementById('floatingStatusTime'),\n            floatingLine: document.getElementById('floatingLine'),\n            floatingQuality: document.getElementById('floatingQuality'),\n            topicContainer: document.getElementById('topicContainer'),\n            topic: document.getElementById('topic'),\n            rotateBtn: document.getElementById('rotateBtn')\n        };\n        \n        let dp = null;\n        let isMuted = false;\n        let isFullscreen = false;\n        let hlsInstance = null;\n        let durationInterval = null;\n        let config = {};\n        let hideControlsTimer = null;\n        \n        const getStreamUrl = (lineIndex = config.currentLine || 0, quality = config.currentQuality || 'auto') => {\n            const line = config.hlsLines?.[lineIndex];\n            if (!line || !config.stream) return '';\n            \n            const pureStatus = (config.status || '').toLowerCase();\n            let suffix = '_auto';\n            \n            if (pureStatus !== 'public') {\n                suffix = '_160p_blurred';\n            } else if (quality === 'auto') {\n                suffix = '_auto';\n            } else {\n                suffix = '_' + quality;\n            }\n            \n            return `https://edge-hls.${line}/hls/${config.stream}/master/${config.stream}${suffix}.m3u8?pkey=bXorqTB5ZhP5FcpX`;\n        };\n        \n        function showControls() {\n            elements.playerContainer.classList.remove('controls-hidden');\n            elements.playerContainer.classList.add('controls-visible');\n            if (hideControlsTimer) {\n                clearTimeout(hideControlsTimer);\n            }\n            hideControlsTimer = setTimeout(() => {\n                elements.playerContainer.classList.remove('controls-visible');\n                elements.playerContainer.classList.add('controls-hidden');\n            }, 3000);\n        }\n        \n        function switchStream(url) {\n            if (!dp || !dp.video || !url) return;\n            \n            config.isSwitching = true;\n            elements.loadingIndicator.style.display = 'block';\n            showControls();\n            \n            const video = dp.video;\n            video.pause();\n            video.src = '';\n            video.load();\n            \n            if (hlsInstance) {\n                try {\n                    hlsInstance.stopLoad();\n                    setTimeout(() => {\n                        hlsInstance.destroy();\n                        hlsInstance = null;\n                        startNewStream(url, video);\n                    }, 50);\n                } catch (e) {\n                    hlsInstance.destroy();\n                    hlsInstance = null;\n                    startNewStream(url, video);\n                }\n            } else {\n                startNewStream(url, video);\n            }\n        }\n        \n        function startNewStream(url, video) {\n            video.src = url;\n            \n            if (Hls.isSupported()) {\n                hlsInstance = new Hls({\n                    enableWorker: true,\n                    lowLatencyMode: true,\n                    backBufferLength: 60,\n                    maxBufferSize: 30 * 1000 * 1000,\n                    maxBufferLength: 30\n                });\n                \n                hlsInstance.loadSource(url);\n                hlsInstance.attachMedia(video);\n                \n                hlsInstance.on(Hls.Events.MANIFEST_PARSED, () => {\n                    completeSwitch();\n                    video.play().catch(e => {});\n                });\n                \n                hlsInstance.on(Hls.Events.ERROR, (event, data) => {\n                    if (data.fatal) {\n                        switch(data.type) {\n                            case Hls.ErrorTypes.NETWORK_ERROR:\n                                hlsInstance.startLoad();\n                                break;\n                            case Hls.ErrorTypes.MEDIA_ERROR:\n                                hlsInstance.recoverMediaError();\n                                break;\n                            default:\n                                completeSwitch();\n                                break;\n                        }\n                    }\n                });\n                \n                setTimeout(() => {\n                    if (config.isSwitching) {\n                        completeSwitch();\n                    }\n                }, 5000);\n                \n            } else if (video.canPlayType('application/vnd.apple.mpegurl')) {\n                video.addEventListener('loadedmetadata', () => {\n                    completeSwitch();\n                    video.play().catch(e => {});\n                });\n                \n                video.addEventListener('error', () => {\n                    completeSwitch();\n                });\n                \n                setTimeout(() => {\n                    if (config.isSwitching) {\n                        completeSwitch();\n                    }\n                }, 5000);\n            } else {\n                completeSwitch();\n            }\n        }\n        \n        function completeSwitch() {\n            config.isSwitching = false;\n            elements.loadingIndicator.style.display = 'none';\n        }\n        \n        function initPlayer() {\n            config = { ...liveData, currentLine: 0, currentQuality: 'auto', isSwitching: false };\n            \n            const url = getStreamUrl();\n            if (!url) return;\n            \n            if (dp) {\n                dp.destroy();\n                dp = null;\n            }\n            \n            dp = new DPlayer({\n                container: document.getElementById('dplayer'),\n                live: true,\n                autoplay: true,\n                theme: '#00a1d6',\n                loop: false,\n                lang: 'zh-cn',\n                screenshot: false,\n                hotkey: false,\n                preload: 'auto',\n                volume: 0.7,\n                mutex: true,\n                controls: false,\n                video: {\n                    url: url,\n                    pic: config.coverImg,\n                    type: 'customHls',\n                    customType: {\n                        customHls: function(video, player) {}\n                    }\n                },\n                contextmenu: [],\n                danmaku: false\n            });\n            \n            const videoElement = dp.video;\n            if (videoElement) {\n                videoElement.style.pointerEvents = 'none';\n                videoElement.addEventListener('click', function(e) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    return false;\n                });\n            }\n            \n            const dplayerContainer = dp.container;\n            dplayerContainer.style.pointerEvents = 'none';\n            dplayerContainer.addEventListener('click', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                return false;\n            });\n            \n            isMuted = dp.video.muted;\n            elements.volumeBtn.innerHTML = isMuted \n                ? '<i class=\"fas fa-volume-mute\"></i>'\n                : '<i class=\"fas fa-volume-up\"></i>';\n            \n            switchStream(url);\n        }\n\n        function refreshPlayer() {\n            if (config.isSwitching || !config.stream) return;\n            const url = getStreamUrl(config.currentLine, config.currentQuality);\n            switchStream(url);\n        }\n        \n        function switchLine(lineIndex) {\n            if (config.isSwitching || !config.hlsLines || lineIndex >= config.hlsLines.length) return;\n            config.currentLine = lineIndex;\n            elements.lineBtn.innerHTML = `线路${lineIndex + 1} <i class=\"fas fa-chevron-down\"></i>`;\n            elements.floatingLine.textContent = `线路${lineIndex + 1}`;\n            updateLineMenuHighlights();\n            elements.lineMenu.style.display = 'none';\n            \n            const url = getStreamUrl(lineIndex, config.currentQuality);\n            switchStream(url);\n        }\n        \n        function switchQuality(quality) {\n            if (config.isSwitching) return;\n            config.currentQuality = quality;\n            const displayText = quality === 'auto' ? '默认' : quality;\n            elements.qualityBtn.innerHTML = `${displayText} <i class=\"fas fa-chevron-down\"></i>`;\n            elements.floatingQuality.textContent = displayText;\n            updateQualityMenuHighlights();\n            elements.qualityMenu.style.display = 'none';\n            \n            const url = getStreamUrl(config.currentLine, quality);\n            switchStream(url);\n        }\n        \n        function formatDuration(seconds) {\n            if (!seconds) return '0秒';\n            \n            const days = Math.floor(seconds / (24 * 60 * 60));\n            const hours = Math.floor((seconds % (24 * 60 * 60)) / (60 * 60));\n            const minutes = Math.floor((seconds % (60 * 60)) / 60);\n            const secs = Math.floor(seconds % 60);\n            \n            let result = '';\n            if (days > 0) result += `${days}天`;\n            if (hours > 0) result += `${hours}小时`;\n            if (minutes > 0) result += `${minutes}分钟`;\n            if (secs > 0 || result === '') result += `${secs}秒`;\n            \n            return result;\n        }\n        \n        function updateTimeInfo() {\n            if (!config.status || !config.startTime) return;\n            \n            const pureStatus = config.status.replace(/^状态：/, '').toLowerCase();\n            const isPublic = pureStatus === 'public';\n            const startTime = config.startTime ? new Date(config.startTime).getTime() : null;\n            const now = Date.now();\n            \n            if (config.isLive && startTime) {\n                if (isPublic) {\n                    elements.floatingDurationLabel.textContent = '直播时长:';\n                    elements.floatingTimeLabel.textContent = '直播时间:';\n                    \n                    const duration = Math.floor((now - startTime) / 1000);\n                    const durationText = formatDuration(duration);\n                    elements.floatingDuration.textContent = durationText;\n                    \n                    const startDate = new Date(startTime);\n                    elements.floatingStatusTime.textContent = startDate.toLocaleString();\n                } else {\n                    elements.floatingDurationLabel.textContent = '持续时长:';\n                    elements.floatingTimeLabel.textContent = '私密直播:';\n                    \n                    const duration = Math.floor((now - startTime) / 1000);\n                    const durationText = formatDuration(duration);\n                    elements.floatingDuration.textContent = durationText;\n                    \n                    const startDate = new Date(startTime);\n                    elements.floatingStatusTime.textContent = startDate.toLocaleString();\n                }\n            } else if (startTime) {\n                elements.floatingDurationLabel.textContent = '持续时长:';\n                elements.floatingTimeLabel.textContent = '下播时间:';\n                \n                const duration = Math.floor((now - startTime) / 1000);\n                let durationText = formatDuration(duration);\n                elements.floatingDuration.textContent = durationText;\n                \n                const endDate = new Date(startTime);\n                elements.floatingStatusTime.textContent = endDate.toLocaleString();\n            } else {\n                elements.floatingDuration.textContent = '--';\n                elements.floatingStatusTime.textContent = '--';\n            }\n        }\n        \n        function startDurationUpdate() {\n            if (durationInterval) {\n                clearInterval(durationInterval);\n            }\n            \n            updateTimeInfo();\n            durationInterval = setInterval(updateTimeInfo, 1000);\n        }\n        \n        function updateFloatingPanel() {\n            const pureUsername = (config.username || '').split('/').pop() || config.username || '';\n            elements.floatingHostName.textContent = pureUsername || '未知主播';\n            elements.membersCount.textContent = config.membersCount > 0 ? config.membersCount.toLocaleString() : '--';\n            elements.floatingMembersCount.textContent = config.membersCount > 0 ? config.membersCount.toLocaleString() : '--';\n            \n            if (config.topBestPlace > 0) {\n                const rankText = `TOP ${config.topBestPlace}`;\n                elements.floatingTopBestPlace.textContent = rankText;\n            } else {\n                elements.floatingTopBestPlace.textContent = '未上榜';\n            }\n            \n            if (config.tipMenuCreatedAt) {\n                const createdAt = new Date(config.tipMenuCreatedAt);\n                elements.floatingTipMenuCreatedAt.textContent = createdAt.toLocaleString();\n            } else {\n                elements.floatingTipMenuCreatedAt.textContent = '--';\n            }\n            \n            if (config.userDescription && config.userDescription.trim() !== '') {\n                elements.floatingUserDescription.textContent = config.userDescription;\n                elements.floatingUserDescriptionSection.style.display = 'block';\n            } else {\n                elements.floatingUserDescriptionSection.style.display = 'none';\n            }\n            \n            if (config.goalDescription && config.goalDescription.trim() !== '') {\n                elements.floatingGoalDescription.textContent = config.goalDescription;\n                elements.floatingGoalSection.style.display = 'block';\n            } else {\n                elements.floatingGoalSection.style.display = 'none';\n            }\n            \n            if (config.fanClubDescription && config.fanClubDescription.trim() !== '') {\n                elements.floatingFanClubDescription.textContent = config.fanClubDescription;\n                elements.floatingFanClubSection.style.display = 'block';\n            } else {\n                elements.floatingFanClubSection.style.display = 'none';\n            }\n            \n            if (config.tipMenuPriceList && config.tipMenuPriceList.length > 0) {\n                elements.floatingPriceList.innerHTML = '';\n                config.tipMenuPriceList.forEach((tip) => {\n                    const priceItem = document.createElement('div');\n                    priceItem.className = 'floating-price-item';\n                    \n                    const activityDiv = document.createElement('div');\n                    activityDiv.className = 'floating-price-activity';\n                    activityDiv.textContent = tip.activity || '未命名';\n                    \n                    const priceDiv = document.createElement('div');\n                    priceDiv.className = 'floating-price-value';\n                    priceDiv.textContent = `${tip.price || 0} 代币`;\n                    \n                    priceItem.appendChild(activityDiv);\n                    priceItem.appendChild(priceDiv);\n                    elements.floatingPriceList.appendChild(priceItem);\n                });\n            } else {\n                elements.floatingPriceList.innerHTML = '<div class=\"floating-price-item\"><div class=\"floating-price-activity\">暂无打赏菜单</div></div>';\n            }\n            \n            startDurationUpdate();\n        }\n        \n        function initUI() {\n            const pureUsername = (config.username || '').split('/').pop() || config.username || '';\n            elements.hostName.textContent = pureUsername || '未知主播';\n            \n            if (config.topic && config.topic.trim() !== '') {\n                elements.topic.textContent = config.topic;\n                elements.topicContainer.style.display = 'block';\n                document.title = config.topic;\n            } else {\n                elements.topicContainer.style.display = 'none';\n                document.title = pureUsername || '直播间';\n            }\n            \n            if (config.avatarUrl) {\n                const prefix = 'https://static-cdn.strpst.com';\n                if (config.avatarUrl.startsWith(prefix + prefix)) {\n                    config.avatarUrl = config.avatarUrl.replace(prefix + prefix, prefix);\n                }\n                elements.avatarImg.src = config.avatarUrl;\n            } else {\n                elements.avatarImg.src = '主播';\n            }\n            \n            updateFloatingPanel();\n        }\n        \n        function initLineMenu() {\n            elements.lineMenu.innerHTML = '';\n            \n            if (!config.hlsLines || config.hlsLines.length === 0) {\n                const item = document.createElement('div');\n                item.className = 'menu-item';\n                item.textContent = '无线路';\n                item.style.opacity = '0.6';\n                elements.lineMenu.appendChild(item);\n                return;\n            }\n            \n            config.hlsLines.forEach((line, index) => {\n                const item = document.createElement('div');\n                item.className = `menu-item ${index === config.currentLine ? 'active' : ''}`;\n                item.textContent = `线路${index + 1}`;\n                item.dataset.index = index;\n                item.onclick = (e) => {\n                    e.stopPropagation();\n                    switchLine(index);\n                };\n                elements.lineMenu.appendChild(item);\n            });\n        }\n        \n        function initQualityMenu() {\n            elements.qualityMenu.innerHTML = '';\n            const pureStatus = (config.status || '').replace(/^状态：/, '').toLowerCase();\n            \n            let availableQualities = [];\n            availableQualities.push({ value: 'auto', display: '默认' });\n            \n            if (pureStatus !== 'public') {\n                availableQualities = [{ value: '160p_blurred', display: '模糊' }];\n                config.currentQuality = '160p_blurred';\n            } else if (config.pixelatedResolutions && config.pixelatedResolutions.length > 0) {\n                config.pixelatedResolutions.forEach(resolution => {\n                    if (resolution !== '160p_blurred') {\n                        availableQualities.push({ \n                            value: resolution, \n                            display: resolution \n                        });\n                    }\n                });\n            }\n            \n            availableQualities.forEach((quality) => {\n                const isActive = quality.value === config.currentQuality;\n                const item = document.createElement('div');\n                item.className = `menu-item ${isActive ? 'active' : ''}`;\n                item.textContent = quality.display;\n                item.dataset.quality = quality.value;\n                item.onclick = (e) => {\n                    e.stopPropagation();\n                    switchQuality(quality.value);\n                };\n                elements.qualityMenu.appendChild(item);\n            });\n            \n            const currentQuality = availableQualities.find(q => q.value === config.currentQuality);\n            const displayText = currentQuality ? currentQuality.display : '默认';\n            elements.qualityBtn.innerHTML = `${displayText} <i class=\"fas fa-chevron-down\"></i>`;\n            elements.floatingQuality.textContent = displayText;\n        }\n        \n        function updateLineMenuHighlights() {\n            const items = elements.lineMenu.querySelectorAll('.menu-item');\n            items.forEach((item, index) => {\n                if (index === config.currentLine) {\n                    item.classList.add('active');\n                } else {\n                    item.classList.remove('active');\n                }\n            });\n        }\n        \n        function updateQualityMenuHighlights() {\n            const items = elements.qualityMenu.querySelectorAll('.menu-item');\n            items.forEach((item) => {\n                const quality = item.dataset.quality;\n                if (quality === config.currentQuality) {\n                    item.classList.add('active');\n                } else {\n                    item.classList.remove('active');\n                }\n            });\n        }\n        \n        async function handleRotateClick() {\n            try {\n                if (!document.fullscreenElement) {\n                    await elements.playerContainer.requestFullscreen();\n                }\n                \n                if (screen.orientation) {\n                    const type = screen.orientation.type;\n                    if (type.startsWith('portrait')) {\n                        await screen.orientation.lock('landscape');\n                        elements.rotateBtn.textContent = '横屏';\n                    } else {\n                        await screen.orientation.lock('portrait');\n                        elements.rotateBtn.textContent = '横屏';\n                    }\n                }\n                showControls();\n            } catch (err) {}\n        }\n        \n        function bindEvents() {\n            elements.refreshBtn.addEventListener('click', (e) => {\n                e.stopPropagation();\n                refreshPlayer();\n                showControls();\n            });\n            \n            elements.volumeBtn.addEventListener('click', (e) => {\n                e.stopPropagation();\n                if (dp && dp.video && !config.isSwitching) {\n                    isMuted = !isMuted;\n                    dp.video.muted = isMuted;\n                    elements.volumeBtn.innerHTML = isMuted \n                        ? '<i class=\"fas fa-volume-mute\"></i>'\n                        : '<i class=\"fas fa-volume-up\"></i>';\n                }\n                showControls();\n            });\n            \n            elements.fullscreenBtn.addEventListener('click', (e) => {\n                e.stopPropagation();\n                if (!isFullscreen) {\n                    const container = document.querySelector('.player-container');\n                    if (container.requestFullscreen) {\n                        container.requestFullscreen();\n                    } else if (container.webkitRequestFullscreen) {\n                        container.webkitRequestFullscreen();\n                    }\n                    elements.fullscreenBtn.innerHTML = '<i class=\"fas fa-compress\"></i>';\n                } else {\n                    if (document.exitFullscreen) {\n                        document.exitFullscreen();\n                    } else if (document.webkitExitFullscreen) {\n                        document.webkitExitFullscreen();\n                    }\n                    elements.fullscreenBtn.innerHTML = '<i class=\"fas fa-expand\"></i>';\n                }\n                isFullscreen = !isFullscreen;\n                showControls();\n            });\n            \n            elements.lineBtn.addEventListener('click', (e) => {\n                e.stopPropagation();\n                elements.lineMenu.style.display = \n                    elements.lineMenu.style.display === 'block' ? 'none' : 'block';\n                elements.qualityMenu.style.display = 'none';\n                updateLineMenuHighlights();\n                showControls();\n            });\n            \n            elements.qualityBtn.addEventListener('click', (e) => {\n                e.stopPropagation();\n                elements.qualityMenu.style.display = \n                    elements.qualityMenu.style.display === 'block' ? 'none' : 'block';\n                elements.lineMenu.style.display = 'none';\n                updateQualityMenuHighlights();\n                showControls();\n            });\n            \n            elements.rotateBtn.addEventListener('click', (e) => {\n                e.stopPropagation();\n                handleRotateClick();\n            });\n            \n            elements.playerContainer.addEventListener('touchstart', (e) => {\n                if (e.target.closest('.custom-controls, .selector-menu, .control-btn, .selector-btn, .menu-item, .rotate-btn')) {\n                    showControls();\n                    return;\n                }\n                \n                if (elements.playerContainer.classList.contains('controls-hidden')) {\n                    showControls();\n                } else {\n                    elements.playerContainer.classList.remove('controls-visible');\n                    elements.playerContainer.classList.add('controls-hidden');\n                    if (hideControlsTimer) {\n                        clearTimeout(hideControlsTimer);\n                        hideControlsTimer = null;\n                    }\n                }\n            });\n            \n            document.addEventListener('click', (e) => {\n                if (!e.target.closest('.selector-btn')) {\n                    elements.lineMenu.style.display = 'none';\n                    elements.qualityMenu.style.display = 'none';\n                }\n            });\n            \n            document.addEventListener('fullscreenchange', handleFullscreenChange);\n            document.addEventListener('webkitfullscreenchange', handleFullscreenChange);\n            \n            elements.floatingBtn.addEventListener('click', (e) => {\n                e.stopPropagation();\n                elements.floatingPanel.style.display = \n                    elements.floatingPanel.style.display === 'block' ? 'none' : 'block';\n            });\n            \n            document.addEventListener('click', (e) => {\n                if (!e.target.closest('.floating-button') && !e.target.closest('.floating-panel')) {\n                    elements.floatingPanel.style.display = 'none';\n                }\n            });\n        }\n        \n        function handleFullscreenChange() {\n            const isFullscreenNow = !!(document.fullscreenElement || \n                document.webkitFullscreenElement);\n            if (!isFullscreenNow) {\n                elements.fullscreenBtn.innerHTML = '<i class=\"fas fa-expand\"></i>';\n                isFullscreen = false;\n            }\n        }\n        \n        function initializeApp() {\n            if (!liveData || Object.keys(liveData).length === 0) return;\n            \n            addSystemMessage('正在读取直播间信息');\n            \n            config = { ...liveData, currentLine: 0, currentQuality: 'auto', isSwitching: false };\n            \n            initUI();\n            initLineMenu();\n            initQualityMenu();\n            initPlayer();\n            bindEvents();\n            initChat();\n            \n            elements.playerContainer.classList.add('controls-visible');\n            showControls();\n        }\n        \n        document.addEventListener('DOMContentLoaded', initializeApp);\n    </script>\n</body>\n</html>",
    "ruleImage": "https://img.doppiocdn.live/thumbs/{$.popularSnapshotTimestamp}/{$..id}_webp",
    "ruleLink": "/{$.username}",
    "rulePubDate": "{$.isLive}观众：{$.viewersCount}人 状态：{$.status}@js:result.replace(/(状态：)public/g, \"$1公开\").replace(/(状态：)(?!公开).+/g, \"$1付费\").replace(/false.*/g, '状态：未直播').replace(/true/g, '')",
    "ruleTitle": "$.username",
    "searchUrl": "/api/front/v4/models/search/suggestion?query={{key}}&limit=9999&primaryTag=girls",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部直播::/api/front/v2/models?limit=60&primaryTag=girls\n直播推荐::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"recommended\"]]\n竖屏直播::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"mobile\"]]\n中文直播::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"tagLanguageChinese\"]]\n日本直播::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"tagLanguageJapanese\"]]\n韩国直播::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"tagLanguageKorean\"]]\n户外直播::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"doPublicPlace\"]]\n青少年直播::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"ageTeen\"]]\n俄罗斯直播::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"tagLanguageRussianSpeaking\"]]\nASMR直播::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"asmr\"]]\nCOS直播::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"doCosplay\"]]\n情侣直播::/api/front/models?limit=60&primaryTag=couples\n变性直播::/api/front/models?limit=60&primaryTag=trans\n新人直播::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"autoTagNew\"]]\n互动玩具::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"autoTagInteractiveToy\"]]\n炮机直播::/api/front/models?limit=60&primaryTag=girls&filterGroupTags=[[\"fuckMachine\"]]",
    "sourceComment": "备用：\nhttps://zh.virtualtaboo.live\nhttps://zh.spiritzone.top\nhttps://zh.stripchat.webcam\nhttps://zh.mywebcamroom.com\nhttps://zh.topcams.tv\nhttps://zh.stripchatgirls.com\nhttps://zh.stripchat.com\nhttps://zh.xhamsterlive.com\nhttps://zh.hotzcam.com\nhttps://zh.tklivechat.com\nhttps://zh.spankbanglive.com\nhttps://zh.live.91pinse.com\npkey=Iecohquahc5RieQu\npkey=bXorqTB5ZhP5FcpX",
    "sourceGroup": "美涩",
    "sourceIcon": "https://i.imgs.ovh/2025/12/29/Cwo6eX.png",
    "sourceName": "Strip直播",
    "sourceUrl": "https://zh.topcams.tv",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774456774178,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".posts-wrapper@class.col-lg-1-5",
    "ruleImage": ".placeholder@a@img@data-src",
    "ruleLink": ".entry-title@a@href",
    "ruleNextPage": ".page-numbers@.next@href",
    "rulePubDate": ".meta-date@text",
    "ruleTitle": ".entry-title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部::https://www.gamer520.com\n搜索::/page/{{page}}?s={{source.getVariable()}}",
    "sourceComment": "1.设置源变量搜索\n2.发布页Switch520\nhttps://xxxxx528.com\nhttps://laoquzhang.com/\nhttps://fourpetal.com/",
    "sourceGroup": "游戏",
    "sourceIcon": "https://www.yecao.net/wp-content/uploads/sites/2/2024/01/100.png",
    "sourceName": "Gamer520",
    "sourceUrl": "https://www.gamer520.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774456811984,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "http://img5.adesk.com/68d0f78fab9725cae3c22331?imageMogr2/thumbnail/!1080x1920r/gravity/Center/crop/1080x1920&sign=ec76e92a65142f3c04f056faeaa9c918&t=69bd67e1",
    "sourceName": "无需flash在线玩4399小游戏[现有游戏245954]",
    "sourceUrl": "https://oldswf.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://vemtoutcheeg.com/",
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774456914714,
    "loadWithBaseUrl": true,
    "loginUi": "[{\n        \"name\": \"蛋蛋宝宝最可爱了\",\n        \"type\": \"text\"\n    },\n    {\n        \"name\": \"🏠源站\",\n        \"type\": \"button\",\n        \"action\": \"M()\"\n    },\n    {\n        name: \"🌟初始化\",\n        type: \"button\",\n        action: \"reset(y)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        name: \"🌕显示当前变量 \",\n        type: \"button\",\n        action: \"get(y)\",\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    },\n    {\n        name: \"📂其他\",\n        type: \"button\",\n        action: \"cat(0)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4\n        }\n    },\n    {\n        name: \"📂史\",\n        type: \"button\",\n        action: \"cat(1)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4\n        }\n    },\n    {\n        name: \"📂结绳\",\n        type: \"button\",\n        action: \"cat(2)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4\n        }\n    },\n    {\n        name: \"📂阅读\",\n        type: \"button\",\n        action: \"cat(3)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.4\n        }\n    },\n    {\n        name: \"---📁归档---\",\n        type: \"button\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        name: \"📁2025-05\",\n        type: \"button\",\n        action: \"Arch(0)\"\n    },\n    {\n\tname: \"by天天的鸟蛋蛋（mctiantian2501314 (2333)）\",\n\ttype: \"button\",\n\taction: \"t()\",\n   \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n}\n]",
    "loginUrl": "function login(){}\nM = () =>{\n\tjava.startBrowser('https://blog.ttxz.eu.org','源站');\n    }\ny = source.getVariable();\nif(!y||y==\"\"){\n  y=\"\";\n  source.setVariable(y);\n  java.toast(\"\\n首次使用\\n已初始化为空\\n---\\n默认为：“全部”\");\n  \n  }else{y=y;}\n  let meta = JSON.parse(java.ajax(\"https://blog.ttxz.eu.org/data/meta.json\"))\n  \ncategory=meta.categories\narchive=meta.archives\nfunction cat(n){\n  show=\"\\n设置成功！\\n当前变量：\";\n  tips=\"\\n清除数据--->刷新生效！\\n 点击右上角三个点\\n---\\n清除>刷新分类 后生效\";\n y=n;  \n java.longToast(show+category[y]+tips);\n   return source.setVariable(category[y]);\n  \n  }\nfunction Arch(n){\n  show=\"\\n设置成功！\\n当前变量：\";\n  tips=\"\\n清除数据--->刷新生效！\\n 点击右上角三个点\\n---\\n清除>清除>刷新分类 后生效\";\n y=n;  \n java.longToast(show+archive[y]+tips);\n  return source.setVariable(archive[y]);\n  \n  }\nfunction reset(y){\n y=\"\"\n  source.setVariable(y);\n  java.log(\"变量已改变为空\")\n  java.toast(\"\\n已初始化为空\\n---\\n默认为：“全部”\");\n  }\nfunction get(y){\n  show=\"\\n当前变量：\";\n  return java.longToast(show+source.getVariable())\n}\nfunction t() {\n    let res = JSON.parse(\njava.ajax(\"https://www.wniui.com/api/yiyan/index.php\")\n    )\n    java.toast(res.data)\n  }\n\n",
    "preload": false,
    "ruleArticles": "<js>\nvar loginInfoMap = source.getLoginInfoMap();\nvar dandan = null;\n\nif (loginInfoMap !== null) {\n    dandan = loginInfoMap.get(\"蛋蛋宝宝最可爱了\");\n}\n\nvar dandan_r = cache.get(\"dandan\");\nif (dandan !== null && dandan !== undefined && dandan == \"蛋蛋宝宝最可爱了\" && (dandan_r == null || dandan_r == undefined || dandan_r == \"\")) {\n    cache.put(\"dandan\", dandan);\n}\n\n\n\nvar JsDom = Packages.org.jsoup.Jsoup;\nvar Document = Packages.org.jsoup.nodes.Document;\nvar Element = Packages.org.jsoup.nodes.Element;\n\ntry {\n    var parsed = JSON.parse(result);\n    var searchPattern = new RegExp(source.getVariable());\n    var targetArray;\n    if (parsed.posts && parsed.posts instanceof Array) {    \n        targetArray = parsed.posts;\n    } else {   \n        var collections = parsed.collections || [];\n        var sources = parsed.sources || [];\n        targetArray = [].concat(collections, sources);\n    }\n    var filtered = targetArray.filter(function(r) {\n        return JSON.stringify(r).match(searchPattern);\n    });\n    JSON.stringify(filtered);\n} catch(e) {\n   \n    var doc = JsDom.parse(result);\n    var links = doc.select(\".nav-links>a\");\n    var resultList = [{\n        \"title\": \"玄蛋秘阁\",\n        \"comment\": \"发布页主页\",\n        \"path\": baseUrl\n    }];\n    \n    for (var i = 0; i < links.size(); i++) {\n        var link = links.get(i);\n        resultList.push({\n            \"title\": link.text(),\n            \"path\": link.attr(\"href\"),\n            \"comment\": \"更多内容自由探索\",\n        });\n    }\n    JSON.stringify(resultList);\n}</js>\n$[*]",
    "ruleContent": "<js>\n\npathw=baseUrl;\nvar json=pathw.match(/.*\\.json/) \nvar md=pathw.match(/.*\\.md/)\nvar org=pathw.match(/.*\\.org/)\ntitle= java.get(\"title\");\ncomment= java.get(\"comment\");\nif(pathw=md){\n\t\n   var path = java.get(\"path\");\nvar url = \"https://blog.ttxz.eu.org/?path=\" + path;\n\nfunction generateHtmlDocument(title, content) {\n    return `<!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, maximum-scale=5.0, minimum-scale=1.0\">\n      <title>${title}-天天的小站</title>\n    \n    \n    \n    <!-- 依赖库 -->\n    <script src=\"https://blog.ttxz.eu.org/libs/marked/marked.min.js\"></script>\n    <script src=\"https://blog.ttxz.eu.org/libs/dompurify/purify.min.js\"></script>\n    <script src=\"https://blog.ttxz.eu.org/libs/highlight.js/highlight.min.js\"></script>\n    <script src=\"https://blog.ttxz.eu.org/libs/mathjax/es5/tex-mml-chtml.js\"></script>\n\n    <style>\n        :root {\n            /* 亮色模式变量 */\n            --bg-light: #ffffff;\n            --text-light: #333333;\n            --code-bg-light: #f6f8fa;\n            --border-light: #e1e4e8;\n            --btn-bg: #007bff;\n            --btn-hover-bg: #0056b3;\n            \n            /* 暗黑模式变量 */\n            --bg-dark: #1e1e1e;\n            --text-dark: #e8e8e8;\n            --code-bg-dark: #252526;\n            --border-dark: #4a4a4a;\n            --btn-dark-bg: #0056b3;\n            --btn-dark-hover-bg: #003d80;\n            --table-bg-dark: #2d2d2d;\n            --blockquote-bg-dark: rgba(255,255,255,0.03);\n            --inline-code-bg-dark: rgba(255,255,255,0.1);\n            --math-bg-dark: #2a2a2a;\n        }\n\n        /* 基础布局 */\n        body {\n            margin: 0;\n            padding: 70px 1rem 1rem;\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif;\n            line-height: 1.6;\n            background: var(--bg-light);\n            color: var(--text-light);\n            transition: background 0.3s, color 0.3s;\n        }\n\n        /* 统一按钮样式 */\n        .ctrl-btn,\n        .copy-btn,\n        .open-original-post {\n            display: inline-block;\n            padding: 10px 20px;\n            background-color: var(--btn-bg);\n            color: #fff !important;\n            border: none;\n            border-radius: 5px;\n            font-size: 16px;\n            text-align: center;\n            text-decoration: none;\n            cursor: pointer;\n            transition: all 0.3s;\n            box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n        }\n\n        /* 按钮交互效果 */\n        .ctrl-btn:hover,\n        .copy-btn:hover,\n        .open-original-post:hover {\n            background-color: var(--btn-hover-bg);\n            transform: translateY(-1px);\n        }\n\n        .ctrl-btn:active,\n        .copy-btn:active,\n        .open-original-post:active {\n            transform: translateY(1px);\n        }\n\n        /* 固定顶部栏 */\n        .header-bar {\n            position: fixed;\n            top: 0;\n            left: 0;\n            right: 0;\n            height: 60px;\n            background: rgba(255,255,255,0.95);\n            backdrop-filter: blur(10px);\n            z-index: 1000;\n            box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n            display: flex;\n            align-items: center;\n            padding: 0 20px;\n            gap: 15px;\n        }\n\n        /* Markdown内容容器 */\n        .markdown-body {\n            max-width: 900px;\n            margin: 0 auto;\n            padding: 20px 0;\n            background-color: var(--bg-light);\n        }\n\n        /* =============== 代码框关键修复 =============== */\n        .code-wrapper {\n            position: relative;\n            margin: 1.5rem 0;\n            background: var(--code-bg-light);\n            border-radius: 8px;\n            border: 1px solid var(--border-light);\n            overflow: hidden;\n            box-shadow: 0 2px 4px rgba(0,0,0,0.05);\n        }\n\n        .code-scroll {\n            padding: 2.5rem 1.5rem 1.5rem;\n            max-height: 60vh;\n            overflow-y: auto;\n            -webkit-overflow-scrolling: touch;\n        }\n\n        .copy-btn {\n            position: absolute;\n            top: 12px;\n            right: 12px;\n            padding: 8px 16px;\n            font-size: 14px;\n            z-index: 100;\n        }\n                .hljs {\n            background: transparent !important;\n            padding: 0 !important;\n            line-height: inherit !important;\n        }\n\n        /* 亮色模式语法高亮 */\n        .hljs-keyword { color: #d73a49; }\n        .hljs-string { color: #032f62; }\n        .hljs-comment { color: #6a737d; }\n        .hljs-title { color: #6f42c1; }\n        .hljs-number { color: #005cc5; }\n        .hljs-built_in { color: #e36209; }\n\n\n        /* ====================== */\n        /* 暗黑模式全面修复 */\n        /* ====================== */\n        body.dark-mode {\n            background: var(--bg-dark);\n            color: var(--text-dark);\n\n            .header-bar {\n                background: rgba(30,30,30,0.98);\n            }\n\n            /* 强制覆盖Markdown容器 */\n            .markdown-body {\n                background-color: var(--bg-dark) !important;\n                color: var(--text-dark) !important;\n            }\n\n            /* ========= 代码框修复 ========= */\n            .code-wrapper {\n                background-color: var(--code-bg-dark) !important;\n                border-color: var(--border-dark) !important;\n\n                pre {\n                    background: transparent !important;\n                    code {\n                        background: transparent !important;\n                    }\n                }\n            }\n\n            /* 覆盖highlight.js默认主题 */\n            .hljs {\n                display: block;\n                background: var(--code-bg-dark) !important;\n                color: #dcdcdc !important;\n                padding: 1em !important;\n\n                /* 语法高亮色适配 */\n                .hljs-keyword { color: #569cd6; }\n                .hljs-string { color: #ce9178; }\n                .hljs-comment { color: #6a9955; }\n                .hljs-title { color: #dcdcaa; }\n                .hljs-number { color: #b5cea8; }\n            }\n\n            /* 行内代码 */\n            .markdown-body code:not([class*=\"language-\"]) {\n                background-color: var(--inline-code-bg-dark) !important;\n                color: #f8f8f8 !important;\n                padding: 0.2em 0.4em !important;\n                border-radius: 3px;\n            }\n\n            /* 数学公式 */\n            .MathJax_SVG {\n                background-color: var(--math-bg-dark) !important;\n                padding: 10px !important;\n                border-radius: 4px;\n            }\n\n            /* 其他元素修复 */\n            table tr:nth-child(2n) {\n                background-color: rgba(255,255,255,0.05) !important;\n            }\n            blockquote {\n                background-color: var(--blockquote-bg-dark) !important;\n            }\n            img {\n                background-color: var(--bg-dark) !important;\n            }\n        }\n\n        /* 移动端优化 */\n        @media (max-width: 768px) {\n            body {\n                padding: 60px 0.8rem 0.8rem;\n            }\n            \n            .markdown-body {\n                max-width: 100%;\n                padding: 10px;\n                font-size: 15px;\n            }\n            \n            .code-wrapper {\n                margin: 1rem 0 !important;\n                border-radius: 6px !important;\n            }\n            \n            .copy-btn {\n                top: 8px;\n                right: 8px;\n                padding: 6px 12px;\n            }\n        }\n    </style>\n</head>\n<body>\n    <!-- 固定顶部栏 -->\n    <div class=\"header-bar\">\n    \n        <button class=\"ctrl-btn\" id=\"themeToggle\">🌓 主题切换</button>\n        <button class=\"open-original-post\" \n                onclick=\"window.open('${url}', '_blank')\">\n            📎 查看原帖\n        </button>\n    </div>\n\n    <!-- Markdown内容 -->\n    <h1>${title}</h1>\n    </br>\n    <div class=\"markdown-body\" id=\"content\"></div>\n\n    <script>\n        // 动态创建代码容器\n        function wrapCodeBlocks() {\n            document.querySelectorAll('.markdown-body pre').forEach(pre => {\n                const wrapper = document.createElement('div');\n                wrapper.className = 'code-wrapper';\n                \n                const copyBtn = document.createElement('button');\n                copyBtn.className = 'copy-btn';\n                copyBtn.textContent = '复制';\n                \n                const scrollDiv = document.createElement('div');\n                scrollDiv.className = 'code-scroll';\n                \n                pre.parentNode.replaceChild(wrapper, pre);\n                wrapper.appendChild(scrollDiv);\n                scrollDiv.appendChild(pre);\n                wrapper.appendChild(copyBtn);\n            });\n        }\n\n        // 初始化复制功能\n        function initCopyButtons() {\n            document.querySelectorAll('.copy-btn').forEach(btn => {\n                btn.addEventListener('click', () => {\n                    const code = btn.previousElementSibling.querySelector('code').innerText;\n                    navigator.clipboard.writeText(code)\n                        .then(() => {\n                            btn.textContent = '已复制!';\n                            setTimeout(() => btn.textContent = '复制', 1500);\n                        })\n                        .catch(err => console.error('复制失败:', err));\n                });\n            });\n        }\n\n        // 初始化内容\n        function initContent() {\n            try {\n                const rawContent = decodeURIComponent(escape(atob(\"${java.base64Encode(content)}\")));\n                const parsedMarkdown = marked.parse(rawContent);\n                document.getElementById('content').innerHTML = DOMPurify.sanitize(parsedMarkdown);\n                \n                wrapCodeBlocks();\n                initCopyButtons();\n                hljs.highlightAll();\n                MathJax.typesetPromise();\n            } catch (error) {\n                console.error('内容加载失败:', error);\n                document.getElementById('content').innerHTML = '<p class=\"error\">内容加载失败</p>';\n            }\n        }\n\n        // 主题切换\n        function toggleTheme() {\n            document.body.classList.toggle('dark-mode');\n            localStorage.setItem('theme', \n                document.body.classList.contains('dark-mode') ? 'dark' : 'light'\n            );\n            MathJax.typesetPromise();\n        }\n\n        // 初始化\n        window.addEventListener('DOMContentLoaded', () => {\n            if (localStorage.getItem('theme') === 'dark') {\n                document.body.classList.add('dark-mode');\n            }\n            initContent();\n            document.getElementById('themeToggle').addEventListener('click', toggleTheme);\n        });\n    </script>\n</body>\n</html>`;\n}\n\nvar fullHtmlDocument = generateHtmlDocument(title, src);\n\nfullHtmlDocument;\n\n\t} else if(pathw=json) {\n\t\tUrl=\"legado://import/source?src=\"+baseUrl\n\t\t\n\t\t\n\t  Html=`<div class=\"card\">\n  <h1>${title}</h1>\n  <div class=\"button-group\">\n    <button class=\"action-btn\" onclick=\"openNewWindow()\">导入</button>\n    <button class=\"action-btn\" onclick=\"copyContent()\">复制</button>\n  </div>\n  <p class=\"comment\">源注释：${comment}</p>\n  <div id=\"toast\" class=\"toast\">✓ 已复制到剪贴板</div>\n</div>\n\n<script>\n\nfunction openNewWindow() {\n  const url = \\`${Url}\\`;  \n  window.open(url, '_blank');\n}\n\nfunction copyContent() {\n  const textToCopy = \\`${baseUrl}\\`;  \n  navigator.clipboard.writeText(textToCopy)\n    .then(() => showToast())\n    .catch(err => console.error('复制失败:', err));\n}\n\nfunction showToast() {\n  const toast = document.getElementById('toast');\n  toast.classList.add('show');\n  setTimeout(() => toast.classList.remove('show'), 2000);\n}\n</script>\n\n<style>\n.card {\n  border: 1px solid #e0e0e0;\n  border-radius: 12px;\n  padding: 24px;\n  margin: 20px;\n  box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n  max-width: 480px;\n  position: relative;\n  background: white;\n}\n\n.button-group {\n  display: flex;\n  gap: 12px;\n  margin: 20px 0;\n}\n\n.action-btn {\n  padding: 10px 20px;\n  background: #4CAF50; /* 修改为绿色 */\n  color: white;\n  border: none;\n  border-radius: 6px;\n  cursor: pointer;\n  font-size: 14px;\n  transition: transform 0.1s, background 0.3s;\n}\n\n.action-btn:hover {\n  background: #45a049; /* 深绿色悬停效果 */\n  transform: translateY(-1px);\n}\n\n.action-btn:active {\n  transform: translateY(0);\n}\n\n.comment {\n  color: #666;\n  font-size: 14px;\n  line-height: 1.6;\n  margin: 0;\n}\n\n.toast {\n  /* 保持原有弹窗样式不变 */\n  position: fixed;\n  bottom: 30px;\n  left: 50%;\n  transform: translateX(-50%);\n  background: rgba(0,0,0,0.8);\n  color: white;\n  padding: 12px 24px;\n  border-radius: 25px;\n  font-size: 14px;\n  opacity: 0;\n  visibility: hidden;\n  transition: all 0.3s;\n}\n\n.toast.show {\n  opacity: 1;\n  visibility: visible;\n  bottom: 40px;\n}\n</style>`}else if(pathw=org){\n\t\t\tresult;\n\t\t\t}\n\n\n\n</js>",
    "ruleLink": "$.path\n<js>\npathw=result\nvar json=pathw.match(/.*\\.json/) \nvar md=pathw.match(/.*\\.md/)\nvar org=pathw.match(/.*\\.org/)\nif(pathw=md){\n\tpath=java.put(\"path\",pathw)\nresult=\"https://blog.ttxz.eu.org/md/\"+result\nresult;\n\t}else if(pathw=json){\n\t\t\n\t\tresult=\"https://sy.ttxz.eu.org/sy/\"+result\n\t\t}else if(pathw=org){\n\t\t\tresult=result\n\t\t\t}\n\n</js>",
    "rulePubDate": "{{$.comment}}\n{{$.modified}}|{{$.created}}|分类：{{$.category}}|标签：{{$.tags}}|\n",
    "ruleTitle": "$.title@put:{\"title\":\".title\",\"comment\":\".comment\"}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "书源::https://sy.ttxz.eu.org/data.json\n文章::https://blog.ttxz.eu.org/data/data.json\n其他::https://ttxz.eu.org",
    "sourceComment": "/*\n\t玄蛋秘阁\nby天天的鸟蛋蛋\n请用最新测试版\n\n# 介绍\n自己的个人博客，是一个静态博客所有数据都是md 记录（收集）了一些我的笔记 有些是从网上搜集，有些是自己写的\n# 使用方法\n登录 源站 是访问源网站\n默认 全部\n通过源变量来搜索\n登录分类归档会改变源变量\n回到全部分类可以点全部按钮或者初始化\n其他的就是字面意思\n# 感谢 \nby另一个书友圈 提供登录改变变量方法\nby河鹅和 修复正文bug &nbsp;无法渲染空格  和 变量搜索\nby怣疯  提供正文思路\n\n更新日志：\n2025/3/6 更新正文 \n主要更新\n1.优化正文\n2.加入更好的高亮 \n3.加入黑暗模式\n4.加入代码框一键复制\n5.加入打开原贴\n2025/3/20 转移数据\n从serv00的php 转移到 GitHub Pages py生成数据 github自动工作流 因此更新\n2025/5/28 增加功能\n1.新增书源发布页(增加更多功能)\n2.优化代码\n*/\n",
    "sourceGroup": "书源",
    "sourceIcon": "https://blog.ttxz.eu.org/icon.png",
    "sourceName": "天天的小站",
    "sourceUrl": "https://ttxz.eu.org",
    "style": ".markdown-body {\n  --base-size-4: 0.25rem;\n  --base-size-8: 0.5rem;\n  --base-size-16: 1rem;\n  --base-size-24: 1.5rem;\n  --base-size-40: 2.5rem;\n  --base-text-weight-normal: 400;\n  --base-text-weight-medium: 500;\n  --base-text-weight-semibold: 600;\n  --fontStack-monospace: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;\n  --fgColor-accent: Highlight;\n}\n@media (prefers-color-scheme: dark) {\n  .markdown-body, [data-theme=\"dark\"] {\n    /* dark */\n    color-scheme: dark;\n    --focus-outlineColor: #1f6feb;\n    --fgColor-default: #f0f6fc;\n    --fgColor-muted: #9198a1;\n    --fgColor-accent: #4493f8;\n    --fgColor-success: #3fb950;\n    --fgColor-attention: #d29922;\n    --fgColor-danger: #f85149;\n    --fgColor-done: #ab7df8;\n    --bgColor-default: #0d1117;\n    --bgColor-muted: #151b23;\n    --bgColor-neutral-muted: #656c7633;\n    --bgColor-attention-muted: #bb800926;\n    --borderColor-default: #3d444d;\n    --borderColor-muted: #3d444db3;\n    --borderColor-neutral-muted: #3d444db3;\n    --borderColor-accent-emphasis: #1f6feb;\n    --borderColor-success-emphasis: #238636;\n    --borderColor-attention-emphasis: #9e6a03;\n    --borderColor-danger-emphasis: #da3633;\n    --borderColor-done-emphasis: #8957e5;\n    --color-prettylights-syntax-comment: #9198a1;\n    --color-prettylights-syntax-constant: #79c0ff;\n    --color-prettylights-syntax-constant-other-reference-link: #a5d6ff;\n    --color-prettylights-syntax-entity: #d2a8ff;\n    --color-prettylights-syntax-storage-modifier-import: #f0f6fc;\n    --color-prettylights-syntax-entity-tag: #7ee787;\n    --color-prettylights-syntax-keyword: #ff7b72;\n    --color-prettylights-syntax-string: #a5d6ff;\n    --color-prettylights-syntax-variable: #ffa657;\n    --color-prettylights-syntax-brackethighlighter-unmatched: #f85149;\n    --color-prettylights-syntax-brackethighlighter-angle: #9198a1;\n    --color-prettylights-syntax-invalid-illegal-text: #f0f6fc;\n    --color-prettylights-syntax-invalid-illegal-bg: #8e1519;\n    --color-prettylights-syntax-carriage-return-text: #f0f6fc;\n    --color-prettylights-syntax-carriage-return-bg: #b62324;\n    --color-prettylights-syntax-string-regexp: #7ee787;\n    --color-prettylights-syntax-markup-list: #f2cc60;\n    --color-prettylights-syntax-markup-heading: #1f6feb;\n    --color-prettylights-syntax-markup-italic: #f0f6fc;\n    --color-prettylights-syntax-markup-bold: #f0f6fc;\n    --color-prettylights-syntax-markup-deleted-text: #ffdcd7;\n    --color-prettylights-syntax-markup-deleted-bg: #67060c;\n    --color-prettylights-syntax-markup-inserted-text: #aff5b4;\n    --color-prettylights-syntax-markup-inserted-bg: #033a16;\n    --color-prettylights-syntax-markup-changed-text: #ffdfb6;\n    --color-prettylights-syntax-markup-changed-bg: #5a1e02;\n    --color-prettylights-syntax-markup-ignored-text: #f0f6fc;\n    --color-prettylights-syntax-markup-ignored-bg: #1158c7;\n    --color-prettylights-syntax-meta-diff-range: #d2a8ff;\n    --color-prettylights-syntax-sublimelinter-gutter-mark: #3d444d;\n  }\n}\n@media (prefers-color-scheme: light) {\n  .markdown-body, [data-theme=\"light\"] {\n    /* light */\n    color-scheme: light;\n    --focus-outlineColor: #0969da;\n    --fgColor-default: #1f2328;\n    --fgColor-muted: #59636e;\n    --fgColor-accent: #0969da;\n    --fgColor-success: #1a7f37;\n    --fgColor-attention: #9a6700;\n    --fgColor-danger: #d1242f;\n    --fgColor-done: #8250df;\n    --bgColor-default: #ffffff;\n    --bgColor-muted: #f6f8fa;\n    --bgColor-neutral-muted: #818b981f;\n    --bgColor-attention-muted: #fff8c5;\n    --borderColor-default: #d1d9e0;\n    --borderColor-muted: #d1d9e0b3;\n    --borderColor-neutral-muted: #d1d9e0b3;\n    --borderColor-accent-emphasis: #0969da;\n    --borderColor-success-emphasis: #1a7f37;\n    --borderColor-attention-emphasis: #9a6700;\n    --borderColor-danger-emphasis: #cf222e;\n    --borderColor-done-emphasis: #8250df;\n    --color-prettylights-syntax-comment: #59636e;\n    --color-prettylights-syntax-constant: #0550ae;\n    --color-prettylights-syntax-constant-other-reference-link: #0a3069;\n    --color-prettylights-syntax-entity: #6639ba;\n    --color-prettylights-syntax-storage-modifier-import: #1f2328;\n    --color-prettylights-syntax-entity-tag: #0550ae;\n    --color-prettylights-syntax-keyword: #cf222e;\n    --color-prettylights-syntax-string: #0a3069;\n    --color-prettylights-syntax-variable: #953800;\n    --color-prettylights-syntax-brackethighlighter-unmatched: #82071e;\n    --color-prettylights-syntax-brackethighlighter-angle: #59636e;\n    --color-prettylights-syntax-invalid-illegal-text: #f6f8fa;\n    --color-prettylights-syntax-invalid-illegal-bg: #82071e;\n    --color-prettylights-syntax-carriage-return-text: #f6f8fa;\n    --color-prettylights-syntax-carriage-return-bg: #cf222e;\n    --color-prettylights-syntax-string-regexp: #116329;\n    --color-prettylights-syntax-markup-list: #3b2300;\n    --color-prettylights-syntax-markup-heading: #0550ae;\n    --color-prettylights-syntax-markup-italic: #1f2328;\n    --color-prettylights-syntax-markup-bold: #1f2328;\n    --color-prettylights-syntax-markup-deleted-text: #82071e;\n    --color-prettylights-syntax-markup-deleted-bg: #ffebe9;\n    --color-prettylights-syntax-markup-inserted-text: #116329;\n    --color-prettylights-syntax-markup-inserted-bg: #dafbe1;\n    --color-prettylights-syntax-markup-changed-text: #953800;\n    --color-prettylights-syntax-markup-changed-bg: #ffd8b5;\n    --color-prettylights-syntax-markup-ignored-text: #d1d9e0;\n    --color-prettylights-syntax-markup-ignored-bg: #0550ae;\n    --color-prettylights-syntax-meta-diff-range: #8250df;\n    --color-prettylights-syntax-sublimelinter-gutter-mark: #818b98;\n  }\n}\n\n.markdown-body {\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n  margin: 0;\n  color: var(--fgColor-default);\n  background-color: var(--bgColor-default);\n  font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Noto Sans\",Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\";\n  font-size: 16px;\n  line-height: 1.5;\n  word-wrap: break-word;\n}\n\n.markdown-body .octicon {\n  display: inline-block;\n  fill: currentColor;\n  vertical-align: text-bottom;\n}\n\n.markdown-body h1:hover .anchor .octicon-link:before,\n.markdown-body h2:hover .anchor .octicon-link:before,\n.markdown-body h3:hover .anchor .octicon-link:before,\n.markdown-body h4:hover .anchor .octicon-link:before,\n.markdown-body h5:hover .anchor .octicon-link:before,\n.markdown-body h6:hover .anchor .octicon-link:before {\n  width: 16px;\n  height: 16px;\n  content: ' ';\n  display: inline-block;\n  background-color: currentColor;\n  -webkit-mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>\");\n  mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>\");\n}\n\n.markdown-body details,\n.markdown-body figcaption,\n.markdown-body figure {\n  display: block;\n}\n\n.markdown-body summary {\n  display: list-item;\n}\n\n.markdown-body [hidden] {\n  display: none !important;\n}\n\n.markdown-body a {\n  background-color: transparent;\n  color: var(--fgColor-accent);\n  text-decoration: none;\n}\n\n.markdown-body abbr[title] {\n  border-bottom: none;\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n}\n\n.markdown-body b,\n.markdown-body strong {\n  font-weight: var(--base-text-weight-semibold, 600);\n}\n\n.markdown-body dfn {\n  font-style: italic;\n}\n\n.markdown-body h1 {\n  margin: .67em 0;\n  font-weight: var(--base-text-weight-semibold, 600);\n  padding-bottom: .3em;\n  font-size: 2em;\n  border-bottom: 1px solid var(--borderColor-muted);\n}\n\n.markdown-body mark {\n  background-color: var(--bgColor-attention-muted);\n  color: var(--fgColor-default);\n}\n\n.markdown-body small {\n  font-size: 90%;\n}\n\n.markdown-body sub,\n.markdown-body sup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\n.markdown-body sub {\n  bottom: -0.25em;\n}\n\n.markdown-body sup {\n  top: -0.5em;\n}\n\n.markdown-body img {\n  border-style: none;\n  max-width: 100%;\n  box-sizing: content-box;\n}\n\n.markdown-body code,\n.markdown-body kbd,\n.markdown-body pre,\n.markdown-body samp {\n  font-family: monospace;\n  font-size: 1em;\n}\n\n.markdown-body figure {\n  margin: 1em var(--base-size-40);\n}\n\n.markdown-body hr {\n  box-sizing: content-box;\n  overflow: hidden;\n  background: transparent;\n  border-bottom: 1px solid var(--borderColor-muted);\n  height: .25em;\n  padding: 0;\n  margin: var(--base-size-24) 0;\n  background-color: var(--borderColor-default);\n  border: 0;\n}\n\n.markdown-body input {\n  font: inherit;\n  margin: 0;\n  overflow: visible;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\n.markdown-body [type=button],\n.markdown-body [type=reset],\n.markdown-body [type=submit] {\n  -webkit-appearance: button;\n  appearance: button;\n}\n\n.markdown-body [type=checkbox],\n.markdown-body [type=radio] {\n  box-sizing: border-box;\n  padding: 0;\n}\n\n.markdown-body [type=number]::-webkit-inner-spin-button,\n.markdown-body [type=number]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n.markdown-body [type=search]::-webkit-search-cancel-button,\n.markdown-body [type=search]::-webkit-search-decoration {\n  -webkit-appearance: none;\n  appearance: none;\n}\n\n.markdown-body ::-webkit-input-placeholder {\n  color: inherit;\n  opacity: .54;\n}\n\n.markdown-body ::-webkit-file-upload-button {\n  -webkit-appearance: button;\n  appearance: button;\n  font: inherit;\n}\n\n.markdown-body a:hover {\n  text-decoration: underline;\n}\n\n.markdown-body ::placeholder {\n  color: var(--fgColor-muted);\n  opacity: 1;\n}\n\n.markdown-body hr::before {\n  display: table;\n  content: \"\";\n}\n\n.markdown-body hr::after {\n  display: table;\n  clear: both;\n  content: \"\";\n}\n\n.markdown-body table {\n  border-spacing: 0;\n  border-collapse: collapse;\n  display: block;\n  width: max-content;\n  max-width: 100%;\n  overflow: auto;\n  font-variant: tabular-nums;\n}\n\n.markdown-body td,\n.markdown-body th {\n  padding: 0;\n}\n\n.markdown-body details summary {\n  cursor: pointer;\n}\n\n.markdown-body a:focus,\n.markdown-body [role=button]:focus,\n.markdown-body input[type=radio]:focus,\n.markdown-body input[type=checkbox]:focus {\n  outline: 2px solid var(--focus-outlineColor);\n  outline-offset: -2px;\n  box-shadow: none;\n}\n\n.markdown-body a:focus:not(:focus-visible),\n.markdown-body [role=button]:focus:not(:focus-visible),\n.markdown-body input[type=radio]:focus:not(:focus-visible),\n.markdown-body input[type=checkbox]:focus:not(:focus-visible) {\n  outline: solid 1px transparent;\n}\n\n.markdown-body a:focus-visible,\n.markdown-body [role=button]:focus-visible,\n.markdown-body input[type=radio]:focus-visible,\n.markdown-body input[type=checkbox]:focus-visible {\n  outline: 2px solid var(--focus-outlineColor);\n  outline-offset: -2px;\n  box-shadow: none;\n}\n\n.markdown-body a:not([class]):focus,\n.markdown-body a:not([class]):focus-visible,\n.markdown-body input[type=radio]:focus,\n.markdown-body input[type=radio]:focus-visible,\n.markdown-body input[type=checkbox]:focus,\n.markdown-body input[type=checkbox]:focus-visible {\n  outline-offset: 0;\n}\n\n.markdown-body kbd {\n  display: inline-block;\n  padding: var(--base-size-4);\n  font: 11px var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);\n  line-height: 10px;\n  color: var(--fgColor-default);\n  vertical-align: middle;\n  background-color: var(--bgColor-muted);\n  border: solid 1px var(--borderColor-neutral-muted);\n  border-bottom-color: var(--borderColor-neutral-muted);\n  border-radius: 6px;\n  box-shadow: inset 0 -1px 0 var(--borderColor-neutral-muted);\n}\n\n.markdown-body h1,\n.markdown-body h2,\n.markdown-body h3,\n.markdown-body h4,\n.markdown-body h5,\n.markdown-body h6 {\n  margin-top: var(--base-size-24);\n  margin-bottom: var(--base-size-16);\n  font-weight: var(--base-text-weight-semibold, 600);\n  line-height: 1.25;\n}\n\n.markdown-body h2 {\n  font-weight: var(--base-text-weight-semibold, 600);\n  padding-bottom: .3em;\n  font-size: 1.5em;\n  border-bottom: 1px solid var(--borderColor-muted);\n}\n\n.markdown-body h3 {\n  font-weight: var(--base-text-weight-semibold, 600);\n  font-size: 1.25em;\n}\n\n.markdown-body h4 {\n  font-weight: var(--base-text-weight-semibold, 600);\n  font-size: 1em;\n}\n\n.markdown-body h5 {\n  font-weight: var(--base-text-weight-semibold, 600);\n  font-size: .875em;\n}\n\n.markdown-body h6 {\n  font-weight: var(--base-text-weight-semibold, 600);\n  font-size: .85em;\n  color: var(--fgColor-muted);\n}\n\n.markdown-body p {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\n\n.markdown-body blockquote {\n  margin: 0;\n  padding: 0 1em;\n  color: var(--fgColor-muted);\n  border-left: .25em solid var(--borderColor-default);\n}\n\n.markdown-body ul,\n.markdown-body ol {\n  margin-top: 0;\n  margin-bottom: 0;\n  padding-left: 2em;\n}\n\n.markdown-body ol ol,\n.markdown-body ul ol {\n  list-style-type: lower-roman;\n}\n\n.markdown-body ul ul ol,\n.markdown-body ul ol ol,\n.markdown-body ol ul ol,\n.markdown-body ol ol ol {\n  list-style-type: lower-alpha;\n}\n\n.markdown-body dd {\n  margin-left: 0;\n}\n\n.markdown-body tt,\n.markdown-body code,\n.markdown-body samp {\n  font-family: var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);\n  font-size: 12px;\n}\n\n.markdown-body pre {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-family: var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);\n  font-size: 12px;\n  word-wrap: normal;\n}\n\n.markdown-body .octicon {\n  display: inline-block;\n  overflow: visible !important;\n  vertical-align: text-bottom;\n  fill: currentColor;\n}\n\n.markdown-body input::-webkit-outer-spin-button,\n.markdown-body input::-webkit-inner-spin-button {\n  margin: 0;\n  appearance: none;\n}\n\n.markdown-body .mr-2 {\n  margin-right: var(--base-size-8, 8px) !important;\n}\n\n.markdown-body::before {\n  display: table;\n  content: \"\";\n}\n\n.markdown-body::after {\n  display: table;\n  clear: both;\n  content: \"\";\n}\n\n.markdown-body>*:first-child {\n  margin-top: 0 !important;\n}\n\n.markdown-body>*:last-child {\n  margin-bottom: 0 !important;\n}\n\n.markdown-body a:not([href]) {\n  color: inherit;\n  text-decoration: none;\n}\n\n.markdown-body .absent {\n  color: var(--fgColor-danger);\n}\n\n.markdown-body .anchor {\n  float: left;\n  padding-right: var(--base-size-4);\n  margin-left: -20px;\n  line-height: 1;\n}\n\n.markdown-body .anchor:focus {\n  outline: none;\n}\n\n.markdown-body p,\n.markdown-body blockquote,\n.markdown-body ul,\n.markdown-body ol,\n.markdown-body dl,\n.markdown-body table,\n.markdown-body pre,\n.markdown-body details {\n  margin-top: 0;\n  margin-bottom: var(--base-size-16);\n}\n\n.markdown-body blockquote>:first-child {\n  margin-top: 0;\n}\n\n.markdown-body blockquote>:last-child {\n  margin-bottom: 0;\n}\n\n.markdown-body h1 .octicon-link,\n.markdown-body h2 .octicon-link,\n.markdown-body h3 .octicon-link,\n.markdown-body h4 .octicon-link,\n.markdown-body h5 .octicon-link,\n.markdown-body h6 .octicon-link {\n  color: var(--fgColor-default);\n  vertical-align: middle;\n  visibility: hidden;\n}\n\n.markdown-body h1:hover .anchor,\n.markdown-body h2:hover .anchor,\n.markdown-body h3:hover .anchor,\n.markdown-body h4:hover .anchor,\n.markdown-body h5:hover .anchor,\n.markdown-body h6:hover .anchor {\n  text-decoration: none;\n}\n\n.markdown-body h1:hover .anchor .octicon-link,\n.markdown-body h2:hover .anchor .octicon-link,\n.markdown-body h3:hover .anchor .octicon-link,\n.markdown-body h4:hover .anchor .octicon-link,\n.markdown-body h5:hover .anchor .octicon-link,\n.markdown-body h6:hover .anchor .octicon-link {\n  visibility: visible;\n}\n\n.markdown-body h1 tt,\n.markdown-body h1 code,\n.markdown-body h2 tt,\n.markdown-body h2 code,\n.markdown-body h3 tt,\n.markdown-body h3 code,\n.markdown-body h4 tt,\n.markdown-body h4 code,\n.markdown-body h5 tt,\n.markdown-body h5 code,\n.markdown-body h6 tt,\n.markdown-body h6 code {\n  padding: 0 .2em;\n  font-size: inherit;\n}\n\n.markdown-body summary h1,\n.markdown-body summary h2,\n.markdown-body summary h3,\n.markdown-body summary h4,\n.markdown-body summary h5,\n.markdown-body summary h6 {\n  display: inline-block;\n}\n\n.markdown-body summary h1 .anchor,\n.markdown-body summary h2 .anchor,\n.markdown-body summary h3 .anchor,\n.markdown-body summary h4 .anchor,\n.markdown-body summary h5 .anchor,\n.markdown-body summary h6 .anchor {\n  margin-left: -40px;\n}\n\n.markdown-body summary h1,\n.markdown-body summary h2 {\n  padding-bottom: 0;\n  border-bottom: 0;\n}\n\n.markdown-body ul.no-list,\n.markdown-body ol.no-list {\n  padding: 0;\n  list-style-type: none;\n}\n\n.markdown-body ol[type=\"a s\"] {\n  list-style-type: lower-alpha;\n}\n\n.markdown-body ol[type=\"A s\"] {\n  list-style-type: upper-alpha;\n}\n\n.markdown-body ol[type=\"i s\"] {\n  list-style-type: lower-roman;\n}\n\n.markdown-body ol[type=\"I s\"] {\n  list-style-type: upper-roman;\n}\n\n.markdown-body ol[type=\"1\"] {\n  list-style-type: decimal;\n}\n\n.markdown-body div>ol:not([type]) {\n  list-style-type: decimal;\n}\n\n.markdown-body ul ul,\n.markdown-body ul ol,\n.markdown-body ol ol,\n.markdown-body ol ul {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n.markdown-body li>p {\n  margin-top: var(--base-size-16);\n}\n\n.markdown-body li+li {\n  margin-top: .25em;\n}\n\n.markdown-body dl {\n  padding: 0;\n}\n\n.markdown-body dl dt {\n  padding: 0;\n  margin-top: var(--base-size-16);\n  font-size: 1em;\n  font-style: italic;\n  font-weight: var(--base-text-weight-semibold, 600);\n}\n\n.markdown-body dl dd {\n  padding: 0 var(--base-size-16);\n  margin-bottom: var(--base-size-16);\n}\n\n.markdown-body table th {\n  font-weight: var(--base-text-weight-semibold, 600);\n}\n\n.markdown-body table th,\n.markdown-body table td {\n  padding: 6px 13px;\n  border: 1px solid var(--borderColor-default);\n}\n\n.markdown-body table td>:last-child {\n  margin-bottom: 0;\n}\n\n.markdown-body table tr {\n  background-color: var(--bgColor-default);\n  border-top: 1px solid var(--borderColor-muted);\n}\n\n.markdown-body table tr:nth-child(2n) {\n  background-color: var(--bgColor-muted);\n}\n\n.markdown-body table img {\n  background-color: transparent;\n}\n\n.markdown-body img[align=right] {\n  padding-left: 20px;\n}\n\n.markdown-body img[align=left] {\n  padding-right: 20px;\n}\n\n.markdown-body .emoji {\n  max-width: none;\n  vertical-align: text-top;\n  background-color: transparent;\n}\n\n.markdown-body span.frame {\n  display: block;\n  overflow: hidden;\n}\n\n.markdown-body span.frame>span {\n  display: block;\n  float: left;\n  width: auto;\n  padding: 7px;\n  margin: 13px 0 0;\n  overflow: hidden;\n  border: 1px solid var(--borderColor-default);\n}\n\n.markdown-body span.frame span img {\n  display: block;\n  float: left;\n}\n\n.markdown-body span.frame span span {\n  display: block;\n  padding: 5px 0 0;\n  clear: both;\n  color: var(--fgColor-default);\n}\n\n.markdown-body span.align-center {\n  display: block;\n  overflow: hidden;\n  clear: both;\n}\n\n.markdown-body span.align-center>span {\n  display: block;\n  margin: 13px auto 0;\n  overflow: hidden;\n  text-align: center;\n}\n\n.markdown-body span.align-center span img {\n  margin: 0 auto;\n  text-align: center;\n}\n\n.markdown-body span.align-right {\n  display: block;\n  overflow: hidden;\n  clear: both;\n}\n\n.markdown-body span.align-right>span {\n  display: block;\n  margin: 13px 0 0;\n  overflow: hidden;\n  text-align: right;\n}\n\n.markdown-body span.align-right span img {\n  margin: 0;\n  text-align: right;\n}\n\n.markdown-body span.float-left {\n  display: block;\n  float: left;\n  margin-right: 13px;\n  overflow: hidden;\n}\n\n.markdown-body span.float-left span {\n  margin: 13px 0 0;\n}\n\n.markdown-body span.float-right {\n  display: block;\n  float: right;\n  margin-left: 13px;\n  overflow: hidden;\n}\n\n.markdown-body span.float-right>span {\n  display: block;\n  margin: 13px auto 0;\n  overflow: hidden;\n  text-align: right;\n}\n\n.markdown-body code,\n.markdown-body tt {\n  padding: .2em .4em;\n  margin: 0;\n  font-size: 85%;\n  white-space: break-spaces;\n  background-color: var(--bgColor-neutral-muted);\n  border-radius: 6px;\n}\n\n.markdown-body code br,\n.markdown-body tt br {\n  display: none;\n}\n\n.markdown-body del code {\n  text-decoration: inherit;\n}\n\n.markdown-body samp {\n  font-size: 85%;\n}\n\n.markdown-body pre code {\n  font-size: 100%;\n}\n\n.markdown-body pre>code {\n  padding: 0;\n  margin: 0;\n  word-break: normal;\n  white-space: pre;\n  background: transparent;\n  border: 0;\n}\n\n.markdown-body .highlight {\n  margin-bottom: var(--base-size-16);\n}\n\n.markdown-body .highlight pre {\n  margin-bottom: 0;\n  word-break: normal;\n}\n\n.markdown-body .highlight pre,\n.markdown-body pre {\n  padding: var(--base-size-16);\n  overflow: auto;\n  font-size: 85%;\n  line-height: 1.45;\n  color: var(--fgColor-default);\n  background-color: var(--bgColor-muted);\n  border-radius: 6px;\n}\n\n.markdown-body pre code,\n.markdown-body pre tt {\n  display: inline;\n  max-width: auto;\n  padding: 0;\n  margin: 0;\n  overflow: visible;\n  line-height: inherit;\n  word-wrap: normal;\n  background-color: transparent;\n  border: 0;\n}\n\n.markdown-body .csv-data td,\n.markdown-body .csv-data th {\n  padding: 5px;\n  overflow: hidden;\n  font-size: 12px;\n  line-height: 1;\n  text-align: left;\n  white-space: nowrap;\n}\n\n.markdown-body .csv-data .blob-num {\n  padding: 10px var(--base-size-8) 9px;\n  text-align: right;\n  background: var(--bgColor-default);\n  border: 0;\n}\n\n.markdown-body .csv-data tr {\n  border-top: 0;\n}\n\n.markdown-body .csv-data th {\n  font-weight: var(--base-text-weight-semibold, 600);\n  background: var(--bgColor-muted);\n  border-top: 0;\n}\n\n.markdown-body [data-footnote-ref]::before {\n  content: \"[\";\n}\n\n.markdown-body [data-footnote-ref]::after {\n  content: \"]\";\n}\n\n.markdown-body .footnotes {\n  font-size: 12px;\n  color: var(--fgColor-muted);\n  border-top: 1px solid var(--borderColor-default);\n}\n\n.markdown-body .footnotes ol {\n  padding-left: var(--base-size-16);\n}\n\n.markdown-body .footnotes ol ul {\n  display: inline-block;\n  padding-left: var(--base-size-16);\n  margin-top: var(--base-size-16);\n}\n\n.markdown-body .footnotes li {\n  position: relative;\n}\n\n.markdown-body .footnotes li:target::before {\n  position: absolute;\n  top: calc(var(--base-size-8)*-1);\n  right: calc(var(--base-size-8)*-1);\n  bottom: calc(var(--base-size-8)*-1);\n  left: calc(var(--base-size-24)*-1);\n  pointer-events: none;\n  content: \"\";\n  border: 2px solid var(--borderColor-accent-emphasis);\n  border-radius: 6px;\n}\n\n.markdown-body .footnotes li:target {\n  color: var(--fgColor-default);\n}\n\n.markdown-body .footnotes .data-footnote-backref g-emoji {\n  font-family: monospace;\n}\n\n.markdown-body body:has(:modal) {\n  padding-right: var(--dialog-scrollgutter) !important;\n}\n\n.markdown-body .pl-c {\n  color: var(--color-prettylights-syntax-comment);\n}\n\n.markdown-body .pl-c1,\n.markdown-body .pl-s .pl-v {\n  color: var(--color-prettylights-syntax-constant);\n}\n\n.markdown-body .pl-e,\n.markdown-body .pl-en {\n  color: var(--color-prettylights-syntax-entity);\n}\n\n.markdown-body .pl-smi,\n.markdown-body .pl-s .pl-s1 {\n  color: var(--color-prettylights-syntax-storage-modifier-import);\n}\n\n.markdown-body .pl-ent {\n  color: var(--color-prettylights-syntax-entity-tag);\n}\n\n.markdown-body .pl-k {\n  color: var(--color-prettylights-syntax-keyword);\n}\n\n.markdown-body .pl-s,\n.markdown-body .pl-pds,\n.markdown-body .pl-s .pl-pse .pl-s1,\n.markdown-body .pl-sr,\n.markdown-body .pl-sr .pl-cce,\n.markdown-body .pl-sr .pl-sre,\n.markdown-body .pl-sr .pl-sra {\n  color: var(--color-prettylights-syntax-string);\n}\n\n.markdown-body .pl-v,\n.markdown-body .pl-smw {\n  color: var(--color-prettylights-syntax-variable);\n}\n\n.markdown-body .pl-bu {\n  color: var(--color-prettylights-syntax-brackethighlighter-unmatched);\n}\n\n.markdown-body .pl-ii {\n  color: var(--color-prettylights-syntax-invalid-illegal-text);\n  background-color: var(--color-prettylights-syntax-invalid-illegal-bg);\n}\n\n.markdown-body .pl-c2 {\n  color: var(--color-prettylights-syntax-carriage-return-text);\n  background-color: var(--color-prettylights-syntax-carriage-return-bg);\n}\n\n.markdown-body .pl-sr .pl-cce {\n  font-weight: bold;\n  color: var(--color-prettylights-syntax-string-regexp);\n}\n\n.markdown-body .pl-ml {\n  color: var(--color-prettylights-syntax-markup-list);\n}\n\n.markdown-body .pl-mh,\n.markdown-body .pl-mh .pl-en,\n.markdown-body .pl-ms {\n  font-weight: bold;\n  color: var(--color-prettylights-syntax-markup-heading);\n}\n\n.markdown-body .pl-mi {\n  font-style: italic;\n  color: var(--color-prettylights-syntax-markup-italic);\n}\n\n.markdown-body .pl-mb {\n  font-weight: bold;\n  color: var(--color-prettylights-syntax-markup-bold);\n}\n\n.markdown-body .pl-md {\n  color: var(--color-prettylights-syntax-markup-deleted-text);\n  background-color: var(--color-prettylights-syntax-markup-deleted-bg);\n}\n\n.markdown-body .pl-mi1 {\n  color: var(--color-prettylights-syntax-markup-inserted-text);\n  background-color: var(--color-prettylights-syntax-markup-inserted-bg);\n}\n\n.markdown-body .pl-mc {\n  color: var(--color-prettylights-syntax-markup-changed-text);\n  background-color: var(--color-prettylights-syntax-markup-changed-bg);\n}\n\n.markdown-body .pl-mi2 {\n  color: var(--color-prettylights-syntax-markup-ignored-text);\n  background-color: var(--color-prettylights-syntax-markup-ignored-bg);\n}\n\n.markdown-body .pl-mdr {\n  font-weight: bold;\n  color: var(--color-prettylights-syntax-meta-diff-range);\n}\n\n.markdown-body .pl-ba {\n  color: var(--color-prettylights-syntax-brackethighlighter-angle);\n}\n\n.markdown-body .pl-sg {\n  color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n\n.markdown-body .pl-corl {\n  text-decoration: underline;\n  color: var(--color-prettylights-syntax-constant-other-reference-link);\n}\n\n.markdown-body [role=button]:focus:not(:focus-visible),\n.markdown-body [role=tabpanel][tabindex=\"0\"]:focus:not(:focus-visible),\n.markdown-body button:focus:not(:focus-visible),\n.markdown-body summary:focus:not(:focus-visible),\n.markdown-body a:focus:not(:focus-visible) {\n  outline: none;\n  box-shadow: none;\n}\n\n.markdown-body [tabindex=\"0\"]:focus:not(:focus-visible),\n.markdown-body details-dialog:focus:not(:focus-visible) {\n  outline: none;\n}\n\n.markdown-body g-emoji {\n  display: inline-block;\n  min-width: 1ch;\n  font-family: \"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";\n  font-size: 1em;\n  font-style: normal !important;\n  font-weight: var(--base-text-weight-normal, 400);\n  line-height: 1;\n  vertical-align: -0.075em;\n}\n\n.markdown-body g-emoji img {\n  width: 1em;\n  height: 1em;\n}\n\n.markdown-body .task-list-item {\n  list-style-type: none;\n}\n\n.markdown-body .task-list-item label {\n  font-weight: var(--base-text-weight-normal, 400);\n}\n\n.markdown-body .task-list-item.enabled label {\n  cursor: pointer;\n}\n\n.markdown-body .task-list-item+.task-list-item {\n  margin-top: var(--base-size-4);\n}\n\n.markdown-body .task-list-item .handle {\n  display: none;\n}\n\n.markdown-body .task-list-item-checkbox {\n  margin: 0 .2em .25em -1.4em;\n  vertical-align: middle;\n}\n\n.markdown-body ul:dir(rtl) .task-list-item-checkbox {\n  margin: 0 -1.6em .25em .2em;\n}\n\n.markdown-body ol:dir(rtl) .task-list-item-checkbox {\n  margin: 0 -1.6em .25em .2em;\n}\n\n.markdown-body .contains-task-list:hover .task-list-item-convert-container,\n.markdown-body .contains-task-list:focus-within .task-list-item-convert-container {\n  display: block;\n  width: auto;\n  height: 24px;\n  overflow: visible;\n  clip: auto;\n}\n\n.markdown-body ::-webkit-calendar-picker-indicator {\n  filter: invert(50%);\n}\n\n.markdown-body .markdown-alert {\n  padding: var(--base-size-8) var(--base-size-16);\n  margin-bottom: var(--base-size-16);\n  color: inherit;\n  border-left: .25em solid var(--borderColor-default);\n}\n\n.markdown-body .markdown-alert>:first-child {\n  margin-top: 0;\n}\n\n.markdown-body .markdown-alert>:last-child {\n  margin-bottom: 0;\n}\n\n.markdown-body .markdown-alert .markdown-alert-title {\n  display: flex;\n  font-weight: var(--base-text-weight-medium, 500);\n  align-items: center;\n  line-height: 1;\n}\n\n.markdown-body .markdown-alert.markdown-alert-note {\n  border-left-color: var(--borderColor-accent-emphasis);\n}\n\n.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title {\n  color: var(--fgColor-accent);\n}\n\n.markdown-body .markdown-alert.markdown-alert-important {\n  border-left-color: var(--borderColor-done-emphasis);\n}\n\n.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title {\n  color: var(--fgColor-done);\n}\n\n.markdown-body .markdown-alert.markdown-alert-warning {\n  border-left-color: var(--borderColor-attention-emphasis);\n}\n\n.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title {\n  color: var(--fgColor-attention);\n}\n\n.markdown-body .markdown-alert.markdown-alert-tip {\n  border-left-color: var(--borderColor-success-emphasis);\n}\n\n.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title {\n  color: var(--fgColor-success);\n}\n\n.markdown-body .markdown-alert.markdown-alert-caution {\n  border-left-color: var(--borderColor-danger-emphasis);\n}\n\n.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title {\n  color: var(--fgColor-danger);\n}\n\n.markdown-body>*:first-child>.heading-element:first-child {\n  margin-top: 0 !important;\n}\n\n.markdown-body .highlight pre:has(+.zeroclipboard-container) {\n  min-height: 52px;\n}\n\n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774457759200,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.poi-row@article",
    "ruleImage": "class.inn-archive__item__container@tag.a.0@img@src",
    "ruleLink": "class.inn-archive__item__container@tag.a.0@href",
    "ruleNextPage": ".poi-pager@.poi-pager__item_next@href",
    "rulePubDate": ".inn-card_post-thumbnail__item__meta@tag.time@text",
    "ruleTitle": "h3@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最近::/category/单机游戏/page/{{page}}\n最赞::/category/单机游戏/page/{{page}}/?by=pop\n策略::/category/单机游戏/策略游戏/page/{{page}}/\n动作::/category/单机游戏/动作游戏/page/{{page}}/\n冒险::/category/单机游戏/冒险游戏/page/{{page}}/\n体育::/category/单机游戏/体育游戏/page/{{page}}/\n3A::/category/单机游戏/3a大作/page/{{page}}/\n模拟::/category/%e5%8d%95%e6%9c%ba%e6%b8%b8%e6%88%8f/%e7%ad%96%e7%95%a5%e7%b1%bb/%e6%a8%a1%e6%8b%9f%e6%b8%b8%e6%88%8f/page/{{page}}/\n休闲::/category/%e5%8d%95%e6%9c%ba%e6%b8%b8%e6%88%8f/%e7%ad%96%e7%95%a5%e7%b1%bb/%e4%bc%91%e9%97%b2%e6%b8%b8%e6%88%8f/page/{{page}}/",
    "sourceGroup": "游戏",
    "sourceIcon": "https://steamzg.com/wp-content/plugins/ozui/static/img/logo/chobits.png",
    "sourceName": "小叽资源",
    "sourceUrl": "https://steamzg.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774475080459,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".posts-item",
    "ruleContent": ".wp-posts-content@html##decoding=\"async\" src=\"https://www.qingju.org/wp-content/themes/zibll/img/thumbnail-lg.svg\" data-src=##<img src=",
    "ruleImage": "img@data-src",
    "ruleLink": "a.0@href",
    "ruleNextPage": ".pagenav@a.-2@href",
    "rulePubDate": "{{@@.ml6@text}}  {{@@.item-tags@text### ##✨}}",
    "ruleTitle": ".item-heading@text##.*该冲就冲！|.*新用户下载送vip|.*福利资源免费下载",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://www.qingju.org/\n搜索::https://www.qingju.org/?s={{source.getVariable()}}&type=post\npc::https://www.qingju.org/category/pc\n安卓::https://www.qingju.org/category/%e5%ae%89%e5%8d%93\nTyranor::https://www.qingju.org/category/tyranor\nONS::https://www.qingju.org/category/ons\nKRKR::https://www.qingju.org/category/krkr",
    "sourceGroup": "美涩",
    "sourceIcon": "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F201501%2F10%2F20150110110220_CdRf2.thumb.400_0.gif&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1749393622&t=98078db46c82d6bfd4a098deb897a096",
    "sourceName": "青桔网",
    "sourceUrl": "https://www.qingju.org/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774770723489,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "书源",
    "sourceIcon": "http://v1.gyks.cf/favicon.ico",
    "sourceName": "晴天书源",
    "sourceUrl": "https://sy.gyks.cf",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774770730087,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "书源",
    "sourceIcon": "http://v1.gyks.cf/favicon.ico",
    "sourceName": "晴天发布页",
    "sourceUrl": "http://vip.gyks.cf",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://lupic.cdn.bcebos.com/,\nhttps://cpro.baidu.com/,\nhttps://eclick.baidu.com/,\nhttps://sofire.baidu.com/,\nhttps://analytics.woozooo.com/,\nhttps://statics.woozooo.com/,\nhttps://hm.baidu.com/,\nhttps://wwads.cn/code/,\nhttps://cdn.wwads.cn/,\nhttps://pagead2.googlesyndication.com,\nhttps://www.qlspx.com,\nhttps://sdk.51.la,\nhttps://abk.lingsiqiwu.com,\n\nhttps://googleads4.g.doubleclick.net,\nhttps://static.googleadsserving.cn,\nhttps://s0.2mdn.net,\nhttps://tpc.googlesyndication.com,\nhttps://www.googletagservices.com,\nhttps://cm.g.doubleclick.net,,\nhttps://star.jsyunmy.com,\nhttps://p.qlogo.cn,\nhttps://partner.googleadservices.com,",
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"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\"}",
    "injectJs": "// 是蓝奏云链接时\nif(/lanzou/.test(window.location.href)){\nArray.from(document.querySelectorAll(`\n\t.mt2:last-of-type,.appreport,.n_login,\n\tdiv[style*=\"color: #8a6d3b;\"]\n`),$=>$.style.display='none');\n}\n\n\n//选择需要删除的标签，以,分隔\nitems = document.querySelectorAll(`\n.stealth-scroll,\n\n#evaluate-box,\n.project-operation,\n.recommend-footer,\n\n.project-desc2,\n.side-widget,\n\n.header_nav,\n.under\n`)\n\n//把选择的html值改成空\nArray.from(items,(item)=>{\n\titem.innerHTML = ``\n\titem.style.display = `#m-splitter`\n})",
    "lastUpdateTime": 1774770922030,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "<js>\ntry {\n    $ = JSON.parse(src).text;\n    if ($ == \"no file\") $ = [];\n} \n\n//💙catch。。。\ncatch (err) {\n\n    //💚💚网站整合\n     if (baseUrl.match(/www\\.baidu\\.com\\?wd=/)) {\n        $ = [];\n        baseUrl.replace(/^.*?wd=\\s*/,'').replace(/\\,/g,',{\"headers\":{\"User-Agent\": \"Mozilla/5.0 (Windows; U; Windows NT 5.2;. en-US) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Quark/4.6.2.161\"}}').\n        split(/\\s*♞♞\\s*/).map($$ => $.push({\n            name_all: $$.match(/.*?《(.*?)》/)[1],\n            time: $$.match(/◎.*?◎/) ? $$.match(/.*?◎(.*?)◎/)[1].replace(/■/,'▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁').replace(/🦁/,'｜编程狮｜w3cschool.cn｜') : \"\",\n            uri1: $$.match(/【.*?】/) ? $$.match(/.*?【(.*?)】/)[1] : \"004.png\",\n            url: $$.match(/^([^【《◎]*),?/)[1]\n        }));\n    }\n    //💚💚0 网站整合结束\n\n\n    //💚💚蓝奏云\n    else {\n\n        //🧡🧡🧡蓝奏云非分组链接\n        if (String(java.getString('text.举报文件@href')).length) {\n            $ = [{\n                name_all: String(java.getString('class.md@textNodes')),\n                icon: String(java.getString('class.md@textNodes')).replace(/.*\\./, ''),\n                size: String(java.getString('class.mtt@text')).replace(/\\( /, '').replace(/ \\)/, ''),\n                time: String(java.getString('class.mf@textNodes')).replace(/.*\\n/, ''),\n                uri: baseUrl.replace(/^(.+com).*\\/(.+)$/, '$2'),\n                url: baseUrl.replace(/^(.+com).*\\/(.+)$/, '$1/tp/$2')\n            }]\n        }\n        //🧡🧡🧡蓝奏云非分组结束\n\n\n        //🧡🧡🧡取消分享\n        else if (String(java.getString('.off@text')).match(/取消分享/)) {\n            $ = [{\n                name_all: java.getString('.off@text'),\n                time: baseUrl.replace(/[#\\?].*/g, ''),\n                url: baseUrl.replace(/[#\\?].*/g, ''),\n            }]\n        }\n        //🧡🧡🧡取消结束\n\n\n        //🧡🧡🧡蓝奏云分组链接\n        else {\n            json = [];\n            name = java.getString('.user-radio@text||title@text')\n            java.getElements('#folder .mlink').forEach(a => {java.setContent(a);\n      json.push({\n      \t    name_all: java.getString('.filename@textNodes'),\n          url: java.getString('a@href'),\n          time: '🗂️ folder　📑 ' + (String(java.getString('.filesize@text')) || name) })\n    })\njava.setContent(src);\n\n\n            mat = baseUrl.match(/^(.*?\\.com)[^##]*\\/(.+)$/)\n            url = mat[1]\n            uri = mat[2]\n            uri2=baseUrl.match(/【[^】]/)? baseUrl.match(/【(.*?)[】$]/)[1]: \"004.png\"\n\n            function $(reg) {\n                return uri.match(reg) ? true : false}\n\n\n            //get【pwd】(链接提取码)\n            pwd =\n$(/##[^【]/) ? uri.match(/##(.*?)(【|$)/)[1] :\"\";\n\n\n\nhead = {method: \"POST\", params: {uri: uri,\nimg: $(/【[^】]/)?uri.match(/【([^】]+)/)[1] :\"\"}}\n\n\n            //get 【body】\n            eval(src.match(/var pgs;([\\s\\S]*?pgs.+;)/)[1]);\n            eval('$=' + src.match(/data :([\\s\\S]*?\\})/)[1]);\n            head.body = Object.keys($).map(key => key + \"=\" + $[key]).join('&');\n\n\n            //补全【url】\nurl += \"/filemoreajax.php,\" + JSON.stringify(head);\n\n            //ajax\n            $ = JSON.parse(java.ajax(url));\n            $ = json.concat($.text != 0 ? $.text :\n             //密码错误提示\n             [{name_all: $.info,\n               time: uri.replace(/[#\\?].*/, '') + $.info,\n               url: baseUrl.replace(/[#\\?].*/, '') }]\n                                        )\n            baseUrl = url\n        }\n        //🧡🧡🧡蓝奏分组结束\n\n    }\n    //💚💚蓝奏结束\n\n}\n//💙catch(err)结束\n\njava.put('url', baseUrl);\nJSON.stringify($);\n</js>$.[*]",
    "ruleImage": "@js:\nn=`{{$.name_all}}` ;\nuri1=`{{$.uri1}}` ;\n\nsrc =uri1 ? uri1 :\n\n//文件名判断使用对应图标\nn.match(/\\.7z/i)? \"zip.png\" :\n!n.match(/\\.\\w\\w\\w$/)? \"0.png\" :\nn.match(/迷迭|md/i)? \"md.png\" :\nn.match(/单仓|215613905|taka|q版/)? \"dc1.png\" :\nn.match(/可视|影视仓|影音壳子|多仓/)? \"dc2.png\" :\nn.match(/本地/)? \"bd.png\" :\nn.match(/海阔|[^青钢承]影|视|剧|直播|tv[^b]/i)? \"ys.png\" :\n\nbaseUrl.match(/423down/)? \"423down.png\" :\nbaseUrl.match(/lxapk/)? \"lxapk.png\" :\nbaseUrl.match(/yoyodadada/)? \"yoyo.png\" :\n\nn.match(/\\.zip/i)? \"zip.png\" :\n\n//为空时，文件名判断apk图标✱④\nn.match(/apk/g)? \"apk.png\" :\n\nbaseUrl.match(/【(.*?)[】$]/) ? baseUrl.match(/【(.*?)(】|$)/)[1]:\n\n//为空时\n`lan.png` ;\n\n\n//md图片简写补全。\npic=String(source.sourceComment).match(/pic\\=(.*)/)[1] ;\n\npic= \n//⬇︎ agit ⬇︎\npic==`0` ? `https://agit.ai/yd/00rose/raw/branch/o/${src}`:\npic==`1` ?\n`https://agit.ai/yd/01pink/raw/branch/o/${src}` :\npic==`2` ?\n`https://agit.ai/yd/02blue/raw/branch/o/${src}` :\npic==`3` ?\n`https://agit.ai/yd/03green/raw/branch/o/${src}` :\npic==`4` ? `https://agit.ai/yd/04gear/raw/branch/o/${src}` :\npic==`5` ? `https://agit.ai/yd/05green/raw/branch/o/${src}` :\npic==`6`? `https://agit.ai/yd/06red/raw/branch/o/${src}`:\npic==`7` ?\n`https://agit.ai/yd/07blackred/raw/branch/o/${src}` :\npic==`8` ?\n`https://agit.ai/yd/08black/raw/branch/o/${src}` :\npic==`9` ?\n`https://agit.ai/yd/09note/raw/branch/o/${src}` :\n\npic==`10`?`https://agit.ai/yd/03green2/raw/branch/o/${src}`:\npic==`11`?`https://agit.ai/yd/04gear2/raw/branch/o/${src}` :\npic==`12`?`https://agit.ai/yd/04gear3/raw/branch/o/${src}`:\n\n//⬇︎gitee⬇︎\npic==`a` ?`https://gitee.com/visita/yd/raw/master/00rose/${src}` :\npic==`b` ?\n`https://gitee.com/visita/yd/raw/master/01pink/${src}` :\npic==`c` ?\n`https://gitee.com/visita/yd/raw/master/02blue/${src}` :\npic==`d` ?\n`https://gitee.com/visita/yd/raw/master/03green/${src}` :\npic==`e` ?\n`https://gitee.com/visita/yd/raw/master/04gear/${src}` :\npic==`f` ?`https://gitee.com/visita/yd/raw/master/05green/${src}` :\npic==`g` ?\n`https://gitee.com/visita/yd/raw/master/06red/${src}` :\npic==`h` ?\n`https://gitee.com/visita/yd/raw/master/07blackred/${src}` :\npic==`i` ?\n`https://gitee.com/visita/yd/raw/master/08black/${src}` :\n//pic==`j` ?\n`https://gitee.com/visita/yd/raw/master/09note/${src}` ;\n\nsrc=src.match(/^http/) ? src : pic ;\nsrc",
    "ruleLink": "$.id@js:\nurl=`{{$.url}}`\nif(result){url+=`/tp/{{$.id}}`;\nurl}",
    "ruleNextPage": "@js:\ntry {\n    url = String(java.get('url'));\n    url = url.replace(/(pg=)(\\d+)/, (mat, $1, $2) => {\n        return $1 + (~~$2 + 1)\n    }).replace(url, '');\n} catch (err) {\n    url = \"\"\n}\nurl",
    "rulePubDate": "💾 {{$.icon}}　📥 {{$.size}}　⏱️ {{$.time}}\n##💾 　📥 　⏱️\\s*",
    "ruleTitle": "$.name_all",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "💔💔注意💔💔💔::http://www.baidu.com?wd=https://0【】《💔本列表纯粹警示说明💔软件都在👉🏻》◎◎♞♞https://mby.lanzoue.com/iQztD2c4qadi【】《‼️点击本链接获取永久软件地址。》◎◎♞♞http://qqs888.xyz/free【】《部分软件可能失效，可以多换几个试试。》◎◎♞♞http://qqs.qqs888.xyz/free【】《‼️所有软件均免费下载，不要相信任何广告！》◎但不知这个小bug是否仍有效◎♞♞http://www.qqs666.top/free【】《‼️软件不强制分享，如果觉得好用请分享给你的朋友！》◎◎♞♞http://qqs666.top/free【】《‼️如有在线博彩、赌博，都是诈骗，请勿尝试！试试就逝世！》◎◎\n\n\n\n橙仁1号::https://mby.lanzoub.com/b016j9vzjc\n橙仁2号::https://mby.lanzoue.com/b016iz5kgd\n实用软件::https://wwxo.lanzouf.com/b048cxf8b\n学习资料::https://mby.lanzoub.com/b016jtiadi",
    "sourceComment": "/*▔▔▔▔▔▔▔▔\npic=8\n⬆︎设置图片样式\n★★ agit ★★\n0  红+\n1  粉++\n2  蓝++\n3  绿+  10\n4  绿齿轮  11  12\n5  绿字印章+\n6  红字印章+\n7  红字 黑白背景\n8  蓝字黑底（夜间）-\n9  卡其色 记事板-\n★★gitee★★\na  红+\nb  粉++\nc  蓝++\nd  绿+\ne  绿齿轮\nf   绿字印章+\ng  红字印章+\nh  红字 黑白背景\ni   蓝字黑底（夜间）-\nj   卡其色 记事板-\n▁▁▁▁▁▁▁▁*/\n\n\n/*▔▔▔▔▔▔▔▔\n订阅源图标可自己复制链接替换\n（拉到顶部第三项）\n★★ agit 图标★★\nhttps://agit.ai/yd/06red/raw/branch/o/0purple.jpg\nhttps://agit.ai/yd/06red/raw/branch/o/004.png\n★★gitee图标★★\nhttps://gitee.com/visita/yd/raw/master/06red/0purple.jpg\nhttps://gitee.com/visita/yd/raw/master/06red/004.png\n▁▁▁▁▁▁▁▁*/\n\n\n",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://wwxo.lanzoue.com/favicon.ico",
    "sourceName": "软件库-难受云",
    "sourceUrl": "https://www.lanzoux.com/#qqs678",
    "style": "body {\r\n    font-family: 'Roboto', sans-serif;\r\n    display: flex;\r\n    flex-direction: column;\r\n    height: 100vh;\r\n    margin: 5;\r\n    background-color: #F8F8F8;\r\n}\r\n\nmd1 {\n    color: #444444;\n    font-size: 2em; \r\n    margin: 40px 0;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\r\nmd2 {\r\n    color: #444444;\n    font-size: 1.4em; \n    margin-bottom: 40px;\n    line-height: 1.8;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\r\nmd3 {\n    color: #212121;\n    font-size: 1.6em; \r\n    margin: 10px 0;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\nmd4 {\n    font-size: 1.1em; \r\n}\n\r\nmd5 {\r\n    font-size: 1em; \n    color: #222222;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\ntextarea {\n    width:98%;\r\n    height: auto;\r\n    min-height: 54px;\n    max-height: 500px;\r\n    overflow-y: auto;\n    border-radius:5px;\r\n    border: 1px solid #BDBDBD;\r\n}\r\n\r\n.button {\n    display: block; \r\n    margin-left: auto;\n    margin-right: auto;\r\n    padding: 6px 10px;\r\n    background-color: #FF5722;\r\n    border: none;\r\n    color: white;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n    text-decoration: none;\r\n    margin-top: 1px;\r\n    font-size: 18px;\r\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\r\n    transition: background-color 0.5s,\n    transform 0.4s;\r\n}\r\n\r\n.button:hover {\r\n    background-color: #FF5722;\r\n    transform: translateY(-2px);\r\n}\r\n\r\n.button:active {\r\n    box-shadow: 0 3px 5px rgba(0, 0, 0, 0.4);\r\n    transform: translateY(0);\r\n}\r\n\n\r\n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775366350081,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "官网：www.yiove.com",
    "sourceGroup": "书源",
    "sourceIcon": "https://shuyuan.yiove.com/logo.jpeg",
    "sourceName": "Yiove 书源仓库",
    "sourceUrl": "https://shuyuan.yiove.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775405861793,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://nsvod.me/static/ds5/img/favicon.png",
    "sourceName": "耐视点播",
    "sourceUrl": "https://nsvod.me",
    "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": 1775584094755,
    "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": "美涩",
    "sourceIcon": "https://18oc.life/18link/18j/images/favicon.ico",
    "sourceName": "18J-夜明空",
    "sourceUrl": "https://18oc.life/label/tag/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 0,
    "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://qikzj.com/\"\n}",
    "lastUpdateTime": 1775644159272,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".bricks-layout-item.repeater-item",
    "ruleContent": "@js:\nvar doc = org.jsoup.Jsoup.parse(result);\nvar myImgs = [];\n\n// 1. 严格锁定正文 ID，彻底避开 Related Posts 等外部组件\nvar contentHtml = \"\";\nvar mainBox = doc.getElementById(\"brxe-qoenez\");\nif (mainBox) {\n    contentHtml = mainBox.html();\n} else {\n    contentHtml = doc.select(\".brxe-post-content\").html();\n}\n\nif (contentHtml) {\n    // 2. 在限定范围内扫描高清图片链接\n    var regex = /https?:\\/\\/qikzj\\.com\\/wp-content\\/uploads\\/[^\"'\\s<>]*?\\.(?:jpg|jpeg|png|webp|gif)/gi;\n    var matches;\n    while ((matches = regex.exec(contentHtml)) !== null) {\n        var s = matches[0];\n        // 过滤 Logo 和头像\n        if (s.indexOf(\"logo\") === -1 && s.indexOf(\"avatar\") === -1) {\n            // 还原高清原图路径，去掉尺寸和缩放后缀\n            var cleanUrl = s.replace(/-\\d+x\\d+\\./i, \".\").replace(/-scaled\\./i, \".\");\n            if (myImgs.indexOf(cleanUrl) === -1) {\n                myImgs.push(cleanUrl);\n            }\n        }\n    }\n}\n\nvar displayTitle = (typeof title !== 'undefined' && title) ? title : \"QikZ Visuals\";\n\nvar h = \"<!DOCTYPE html><html><head><style>body{margin:0;background:#050505;color:#eee;font-family:sans-serif;padding-bottom:100px} .top{background:#111;color:#888;text-align:center;padding:15px;font-size:10px;text-transform:uppercase;letter-spacing:3px;border-bottom:1px solid #222} .header{padding:40px 25px;text-align:center} .img-list{padding:0 10px} .img-box{position:relative;margin-bottom:18px;background:#000;border-radius:2px;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,0.5)} .img-box img{width:100%;display:block;height:auto} .img-num{position:absolute;bottom:10px;right:15px;background:rgba(0,0,0,0.6);color:#fff;padding:2px 8px;border-radius:2px;font-size:10px;font-family:monospace;font-weight:bold}</style></head><body>\";\nh += \"<div class='top'>HD VISUAL SHOWCASE</div>\";\nh += \"<div class='header'><h1 style='font-size:20px;margin:0;font-weight:300;color:#fff;line-height:1.4'>\" + displayTitle + \"</h1></div>\";\nh += \"<div class='img-list'>\";\nfor(var k=0; k<myImgs.length; k++){\n    h += \"<div class='img-box'><img src='\" + myImgs[k] + \"'><span class='img-num'>\" + (k+1) + \" / \" + myImgs.length + \"</span></div>\";\n}\nh += \"</div><p style='text-align:center;color:#333;font-size:10px;margin-top:60px;letter-spacing:2px'>QIKZ PHOTOGRAPHY GALLERY</p></body></html>\";\nresult = h;",
    "ruleImage": "@js:\nvar img = result.select(\"img\").first();\nif (img) {\n    var s = img.attr(\"data-src\") || img.attr(\"data-srcset\") || img.attr(\"src\");\n    if (s && s.indexOf(\" \") > 0) s = s.split(\" \")[0];\n    result = s;\n} else {\n    result = \"https://qikzj.com/favicon.ico\";\n}\nresult;",
    "ruleLink": "h3.dynamic a@href",
    "ruleNextPage": ".page-numbers.next@href",
    "ruleTitle": "h3.dynamic a@text",
    "searchUrl": "/?s={{key}}",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "涩图",
    "sourceIcon": "https://qikzj.com/favicon.ico",
    "sourceName": "视界快感网 (QikZ)",
    "sourceUrl": "https://qikzj.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1,
    "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 Reader\"}",
    "injectJs": "if (!/^https:\\/\\/(so\\.toutiao\\.com\\/search\\/?|quark\\.sm\\.cn\\/s|wap\\.sogou\\.com\\/web\\/searchList\\.jsp|m\\.so\\.com\\/s|cn\\.bing\\.com\\/search|www\\.baidu\\.com\\/s)\\?/.test(window.location.href) && !document.getElementById('open-yuedu-bookshelf')) {\n    const btn = document.createElement('div');\n    btn.innerHTML = `<button type=\"button\" id='open-yuedu-bookshelf' style=\"z-index: 9999999999;\n    position: fixed;bottom: 13%;right: 10%;background-color: rgb(255, 153, 0);border-radius: 2px;border: 1px solid rgb(255, 153, 0);color: #fff;\n    font-size:${window.innerWidth/80}vw;font-weight: 400;padding: ${window.innerWidth/400}vw ${window.innerWidth/150}vw;\n    \"onclick=\"window.open('legado://import/addToBookshelf?src=${encodeURIComponent(window.location.href)}','_blank');location.reload();\">加入书架</button>`;\n    document.body.appendChild(btn);\n\n    const btn2 = document.createElement('div');\n    btn2.innerHTML = `<button type=\"button\" id='impotr-booksource' style=\"z-index: 9999999999;\n    position: fixed;bottom: 13%;left: 10%;background-color: rgb(255, 153, 0);border-radius: 2px;border: 1px solid rgb(255, 153, 0);color: #fff;\n    font-size:${window.innerWidth/80}vw;font-weight: 400;padding: ${window.innerWidth/400}vw ${window.innerWidth/150}vw;\n    \"onclick=\"window.open('legado://import/bookSource?src=https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/pixiv.json','_blank');\">导入书源</button>`;\n    document.body.appendChild(btn2);\n}\n\nlet time,num=0;\nconst herfs = new Map();\nfunction onTouchStart(evt) {\n    for (const el of evt.path) {\n        if (el.tagName === \"A\") {\n            if (el.href !== 'javascript:void(0)') {\n                const inner = el.href;\n                herfs.set(el, inner);\n                el.setAttribute('href', 'javascript:void(0)');\n                time = setTimeout(() => {\twindow.open(`legado://import/addToBookshelf?src=${encodeURIComponent(inner)}`, '_blank')\n                }, 600);\n            }\n            break;\n        }\n    }\n}\nfunction onTouchEnd(evt) {\n    if (time) {\n        clearTimeout(time);\n        time = undefined;\n    }\n    for (const el of evt.path) {\n        if (el.tagName === \"A\") {\n            if (el.href === 'javascript:void(0)') {\n                const herf = herfs.get(el);\n                if (herf) {\n                    el.setAttribute('href', herf)\n                }\n            }\n            break;\n        }\n    }\n}\n\nfunction addListener(els){\n    Array.from(els, (item) => {\n        if (item.getAttribute('add-yuedu-bookshelf') !== 'add-yuedu-bookshelf' && item.innerText && item.href && !/^#|^javascript:/.test(item.href)) {\n            item.setAttribute('add-yuedu-bookshelf', 'add-yuedu-bookshelf');\n            item.addEventListener('touchstart', onTouchStart);\n            item.addEventListener('touchend', onTouchEnd);\n            item.addEventListener('touchcancel', onTouchEnd);\n            item.addEventListener('mousedown', onTouchStart);\n            item.addEventListener('mouseup', onTouchEnd);\n        }\n    });\n    num= els.length;\n}\n\nfunction reAdd(){\n    const els = document.getElementsByTagName('a');\n    if(els.length>num)addListener(els);\n}\n\nreAdd();\n\nconst observer = new ResizeObserver(reAdd);\nobserver.observe(document.body);",
    "jsLib": "function getWebViewUA() {\n    let {java} = this\n    let userAgent = String(java.getWebViewUA())\n    if (userAgent.includes(\"Windows NT 10.0; Win64; x64\")) {\n        userAgent = \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36\"\n    }\n    return String(userAgent)\n}\n\nfunction sleep(seconds) {\n    return Packages.java.lang.Thread.sleep(1000*seconds)\n}\n\nfunction sleepToast(text, second) {\n    let {java} = this\n    java.log(text)\n    java.longToast(text)\n    if (second === undefined) {second = 0.01}\n    this.sleep(1000*second)\n}",
    "lastUpdateTime": 1774771262449,
    "loadWithBaseUrl": true,
    "loginUi": "[\n    {\n        \"name\": \"\\uD83C\\uDD7F️ 登录账号\",\n        \"type\": \"button\",\n        \"action\": \"login()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"⚙️ 账号设置\",\n        \"type\": \"button\",\n        \"action\": \"startPixivSettings()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDD19 退出账号\",\n        \"type\": \"button\",\n        \"action\": \"logout()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"书源相关\",\n        \"type\": \"text\"\n    },\n    {\n        \"name\": \"🔰 使用指南\",\n        \"type\": \"button\",\n        \"action\": \"startGithubIntroduction()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDCD8 书源指南\",\n        \"type\": \"button\",\n        \"action\": \"startGithubReadme()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDC1E 反馈问题\",\n        \"type\": \"button\",\n        \"action\": \"startGithubIssue()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"⭐️ 收藏项目\",\n        \"type\": \"button\",\n        \"action\": \"startGithub()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDCBE 备份恢复\",\n        \"type\": \"button\",\n        \"action\": \"startGithubWebdavBackup()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"☁️ 远程书籍\",\n        \"type\": \"button\",\n        \"action\": \"startGithubRemoteBooks()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDCD6 阅读频道\",\n        \"type\": \"button\",\n        \"action\": \"startTelegramLegado()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"✈️ 书源频道\",\n        \"type\": \"button\",\n        \"action\": \"startTelegram()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"☕ ️支持开发\",\n        \"type\": \"button\",\n        \"action\": \"startGithubSponsor()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    }\n]",
    "loginUrl": "function login() {\n    let resp = java.startBrowserAwait(`https://accounts.pixiv.net/login,\n    {\"headers\": {\"User-Agent\": ${getWebViewUA()}}}`, '登录账号', false)\n    if (resp.code() === 200) {\n        getCookie(); getCsrfToken()\n        return true\n    } else {\n        java.log(resp.code()); sleepToast(\"🅿️ 登录账号\\n\\n⚠️ 登录失败\")\n        return false\n    }\n}\n\nfunction logout() {\n    removeCookie()\n    java.startBrowser(\"https://www.pixiv.net/logout.php\", \"退出账号\")\n    removeCookie()\n    sleepToast(`✅ 已退出当前账号\\n\\n退出后请点击右上角的 ✔️ 退出\\n\\n登录请点击【登录账号】进行登录`)\n}\n\nfunction removeCookie() {\n    cookie.removeCookie('https://www.pixiv.net')\n    cookie.removeCookie('https://accounts.pixiv.net')\n    cookie.removeCookie('https://accounts.google.com')\n    cookie.removeCookie('https://api.weibo.com')\n    cache.delete(\"pixivCookie\")\n    cache.delete(\"pixivCsrfToken\")  // 与登录设备有关\n    cache.delete(\"headers\")\n}\n\n// 获取 Csrf Token，以便进行收藏等请求\n// 获取方法来自脚本 Pixiv Previewer\n// https://github.com/Ocrosoft/PixivPreviewer\n// https://greasyfork.org/zh-CN/scripts/30766-pixiv-previewer/code\nfunction getCsrfToken() {\n    let pixivCsrfToken\n    let html = java.webView(null, \"https://www.pixiv.net/\", null)\n    try {\n        pixivCsrfToken = html.match(/token\\\\\":\\\\\"([a-z0-9]{32})/)[1]\n    } catch (e) {\n        pixivCsrfToken = null\n    }\n    // java.log(pixivCsrfToken)\n    cache.put(\"pixivCsrfToken\", pixivCsrfToken)  // 与登录设备有关\n    return pixivCsrfToken\n}\n\nfunction getCookie() {\n    let pixivCookie = String(java.getCookie(\"https://www.pixiv.net/\", null))\n    if (pixivCookie.includes(\"first_visit_datetime\")) {\n        // java.log(pixivCookie)\n        cache.put(\"pixivCookie\", pixivCookie, 60*60)\n        return pixivCookie\n    } else {\n        cache.delete(\"pixivCookie\")\n        // sleepToast(\"未登录账号( pixivCookie)\")\n        return null\n    }\n}\n\nfunction startBrowser(url, title) {\n    let msg = \"\", headers = `{\"headers\": {\"User-Agent\":\"${getWebViewUA()}\"}}`\n    if (url.includes(\"pixiv.net\")) {\n        msg += \"\\n\\n即将打开 Pixiv\\n请确认已开启代理/梯子/VPN等\"\n    } else if (url.includes(\"github\")) {\n        msg += \"\\n\\n即将打开 Github\\n请确认已开启代理/梯子/VPN等\"\n    } else if (url.includes(\"https://t.me/\")){\n        msg += \"\\n\\n即将打开 Telegram\\n请确认已开启代理/梯子/VPN等\"\n    }\n    sleepToast(msg)\n    java.startBrowser(`${url}, ${headers}`, title)\n}\n\nfunction startPixivSettings() {\n    startBrowser(\"https://www.pixiv.net/settings/viewing\", \"账号设置\")\n}\n\nfunction startGithubIssue() {\n    startBrowser(\"https://github.com/DowneyRem/PixivSource/issues\", \"反馈问题\")\n}\nfunction startGithub() {\n    startBrowser(\"https://github.com/DowneyRem/PixivSource\", \"收藏项目\")\n}\n\nfunction startGithubIntroduction() {\n    startBrowser(\"https://pixivsource.pages.dev/BetterExperience\", \"使用指南\")\n}\nfunction startGithubReadme() {\n    startBrowser(\"https://pixivsource.pages.dev/Pixiv\", \"书源指南\")\n}\nfunction startGithubWebdavBackup() {\n    startBrowser(\"https://pixivsource.pages.dev/WebdavBackup\", \"备份恢复\")\n}\nfunction startGithubRemoteBooks() {\n    startBrowser(\"https://pixivsource.pages.dev/RemoteBooks\", \"远程书籍\")\n}\nfunction startGithubSponsor() {\n    startBrowser(\"https://pixivsource.pages.dev/Sponsor\", \"支持开发\")\n}\n\nfunction startTelegram() {\n    startBrowser(\"https://t.me/PixivSource\", \"书源频道\")\n}\nfunction startTelegramLegado() {\n    startBrowser(\"https://t.me/ReadSigma\", \"阅读频道\")\n}\nfunction startTelegramFurryReading() {\n    startBrowser(\"https://t.me/FurryReading\", \"兽人阅读频道\")\n}",
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "Pixiv 订阅源\n\n可用功能：✅添加小说（配合书源）✅更新书源\n添加小说：打开小说，【刷新】，点击【加入书架】按钮，添加小说到书架\n\n书源发布：\nPixiv 书源频道 https://t.me/PixivSource\n兽人阅读频道 https://t.me/FurryReading\n\n项目地址：\nhttps://github.com/DowneyRem/PixivSource\nhttps://github.com/eigeen/PixivSourceProject\n\n规则订阅：Import 订阅源\nhttps://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/import.json\nhttps://raw.githubusercontent.com/DowneyRem/PixivSource/main/import.json",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://asset.brandfetch.io/idIlKj_n7C/idSsbP7h1m.png",
    "sourceName": "Pixiv",
    "sourceUrl": "https://www.pixiv.net/novel,{\"js\":\"java.longToast('请使用右上角菜单中的【登录】进行登录/退出账号')\"}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775644198829,
    "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": "涩图",
    "sourceIcon": "https://www.446m.com/icon.png",
    "sourceName": "萌图社",
    "sourceUrl": "https://www.446m.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 2,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/012.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.0 Mobile Safari/533.4 3gpp-gba\"}",
    "lastUpdateTime": 1774456899623,
    "loadWithBaseUrl": true,
    "loginUrl": "https://yckceo.vip/",
    "preload": false,
    "ruleArticles": "class.ylist",
    "ruleContent": "head@all&&class.m-top@all",
    "ruleLink": "a@href",
    "rulePubDate": "{{@@h2@p@text}} {{@@tag.span@text&&tag.span.2@title}}\n@js:result.replace(/\\n/g,'  ').replace(/\\s+[23]\\.X/,'').replace(/用户[: ：]+/,'👤').replace(/ 下载[: ：](\\d+)\\s*UID[:：](\\d+)/,'(UID: $2)  📥$1').replace(/下载[：: ]+/,'📥').replace(/源数量[：:](\\d+)/,'📝$1个源')",
    "ruleTitle": "名称：{{//h2/a[1]/text()##http.*}}\n网址：{{//h2/a[1]/text()##.*(http)##$1}}\n@js:result.replace(/([\\s\\S]{4,}?)(?:\\s+)?\\1/g, '$1')",
    "searchUrl": "/yuedu/shuyuan/index.html?keys={{key}}&uid=&order1=time&order2=1&ver=&faxian=&sousuo=&x18=<,&page={{page}}>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📖书源::/yuedu/shuyuan/index.html?page={{page - 1 == 0 ? \"\": page}}\n🔰订阅源::/yuedu/rss/index.html?page={{page}}\n📖书源合集::/yuedu/shuyuans/index.html?page={{page}}\n🔰订阅源合集::/yuedu/rsss/index.html?page={{page}}\n\n🔎搜书源::/yuedu/shuyuan/index.html?keys={{svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/><text x=\"200\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"70\" fill=\"#333\" font-weight=\"bold\">请输入关键词</text></svg>`));if(page==1){let a=\"\";try{a=java.getVerificationCode('data:image/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()}source.setVariable(a);a}else{source.getVariable()};}}&uid=&order1=time&order2=1&ver=&faxian=&sousuo=&x18=<,&page={{page}}>\n🔎搜订阅::/yuedu/rss/index.html?keys={{svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/><text x=\"200\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"70\" fill=\"#333\" font-weight=\"bold\">请输入关键词</text></svg>`));if(page==1){let a=\"\";try{a=java.getVerificationCode('data:image/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()}source.setVariable(a);a}else{source.getVariable()};}}&uid=&order1=time&order2=1&ver=&faxian=&sousuo=&x18=<,&page={{page}}>\n👤搜书源(UID)::/yuedu/shuyuan/index.html?keys=&uid={{svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/><text x=\"200\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"70\" fill=\"#333\" font-weight=\"bold\">请输入UID</text></svg>`));if(page==1){let a=\"\";try{a=java.getVerificationCode('data:image/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()}source.setVariable(a);a}else{source.getVariable()};}}&order1=time&order2=1&ver=&faxian=&sousuo=&x18=<,&page={{page}}>\n👤搜订阅(UID)::/yuedu/rss/index.html?keys=&uid={{svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/><text x=\"200\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"70\" fill=\"#333\" font-weight=\"bold\">请输入UID</text></svg>`));if(page==1){let a=\"\";try{a=java.getVerificationCode('data:image/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()}source.setVariable(a);a}else{source.getVariable()};}}&order1=time&order2=1&ver=&faxian=&sousuo=&x18=<,&page={{page}}>",
    "sourceComment": "by：旅途\n改：歌行灯\n弹窗搜索的代码是从关耳大大那抄的\n————————————\n【地址失效的解决方法】\n若地址失效导致订阅源失效，可于登录处进入源仓库最新地址发布页，从发布页复制最新可用地址粘贴到源URL处，然后退出重进即可。\n————————————\n【如何搜索】\n点击（或下拉）标有🔎或👤的列表，会弹出提示框，填写关键词或UID即可。也可直接在源变量处填写关键词/UID（记得保存并刷新分类）\n（昵称后面的括号里那串数字就是UID，注意不要填“UID:”这几个字符，只用填数字）\n如果你填的是源名称，那么结果在🔎处查看；如果你填的是源作者的UID，那么结果在👤处查看。\n阅读Sigma版可点击右上角搜索按钮，输入关键词搜索书源。\n————————————\n修复源URL与源名称一样时重复显示4遍的问题（2026.2.3@歌行灯）",
    "sourceGroup": "书源",
    "sourceIcon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWEAAAFhBAMAAABT0QbkAAAAAXNSR0IArs4c6QAAACRQTFRFLzY8R3BMLTQ6LjU7oMxJm8dElsI/kb05jLg0hrMvb446T2M71eCsLgAAAAR0Uk5T/wBQxEskO5YAAA+JSURBVHja1NXBbdswFMbxT5KLIOlFlRaQ0AWoegEfyMCoLz0wG2SEDtARfA168cED9NABq9KMbMsSE+gRzHt/2D4+/PQsgvgSrForhZQVxboNikqEuAofU9GGxARvcnNYvMbHtg6IQwtmtOawuAaHuveLv4JH3wLiMZgbOSxuwKf8PeIanOreFlfgVfuWuFJgRw6LFbhVhMUl+JWFxBU41gbEChwr5sU1eNbNisG1OXEJrnUzYvBtWlyCb9mkGJybEpfgXDYhVmDdrbgG77obsQLvirG4AvfakbgB9/KRGPy7FpfgX3YlbsC//FJcQULthbiGhLoLcQMJ5RdiyOgsriGjbhCXkFE2iCGlV3EFKbVeXENKnRc3kFLuxQpSKrwYcjqJa8ipc+IScsqcuIGccidWEJQTQ5q4gqTaXlxDUlkvLsWJG0gq78UKkip6MWQlUVxBVg1qzPb5ZbrfiNTDy3R7zKdQBsR6ukdEaqWn2yDQErH+gzgdk4kPiJNOJt6AEHl+s2DiDlG6WyZWC8QaUVqJEx8Tin8hRs/LxFgi3sQ5eAnF3xGh+5TiLSK0SiCOe+sdk4oPoGeTijcxDl5S8Q7k7tKKH0FulVasQe6YWLwHtefE4g394KUV02+9+9TiLYh9Siym33rH5OIDaD0lFhv9A7R08h3vqDee0Ta+eGamNdpqE+HGM9N/nyXt2Pa88SfGrXc0Dnw73BB3bOd2bO0elH5q09ts9B073mgJ/imMG0t74ez/6dfzDW3Hp3HjV8K4aEfvwT268fOuXglrKTu2ZmrHDm63tIPnpxinHoaf9MvFw5RLsNH+MUDo70n5Ot3xh+1QduyH6LPXo622pFvPnnfsztowP8aO+6/PDT5vhnL0tB3Ome0b5hv3VhPEPif3x7rP/VhDOHr3fpK3Dht+or7Hboz/ng+d37b9R2wZ48YNQ0G0C5C91wApXfyhsXDjhoWRJk2O4CPsUXK/wMPPT8u7sKH/19CINCkZGIyfNKAfK/9qDitfTItPoNw8zY2r4y6deOulbfdmleYZYYSmFDdmZkS+ehcSlIscjWsPEA/5xJ+qgkL1DWFJqIuJBdhph8TkKX3iGYev+aLVXDXGdDdpRR/PfqVPPArwCuvyJxXGDB8sDIt71vgfiA3ksNZaSLzMKLMYY0mfet0ZMOqmTawlxkJAYDHQ0Ew7AzRGWKcce2OBsbk8txZpPEtW76dybcwYRKrf8ZSRVGQX9OwxeeLRSPC9mRHa6hcVxgyeBGSKIerbZrJ4HtgpO4nBmGCdMRZjYMPYctV71VesyBJG47S1ImMzCsFibFyMaQ85EMpquhQRnM4ig3xi+SzGTiAYG1PVO5Eemb7MrMO0xBjxriKrEXOQ53TxaOaThKzDFFZjbEZMENqHjGCyeCJJaGosY7D6HUtYjCfigSNTvb9uqcvk7QD8DhXGMopvOSAH4+eELc1oQZizgPdh/KWeMsX7XN+c+Jwo3rGJmSjewYn3V+9yQOKaOQ9IXKre6ejEL3tNfxydmIniHZC4Ur3XoxP3P7Xi3T9xY78afumOv3cW79rRx7i0LSTunddqmlPnexWva5YZX8MIZ7/re4t3m/DE0KuMb8JomrnqXRpvq7FrVhl/JNHYg3Fvb7fteZdnJ2XSN769ibEnLzCWR19D0otrLXfqndhbUPUh6e8QkhrjgXH9lCjjNvWys3juI8v/tJaxchQxEESVeMHwfZ6E5AKmjX05VWRExI6IL+HiS9jvo7Y127NVSzCLuClrNVaVWq0njWXnt0f/80Pdf3esq8DWP9Eyt0OFt0wKVWOvhMF8hHH45IF5fNJ2bOhy7F/NcEWoFFEiPAOMdRuYbFNTeujV45yU6nw9IoSHGMdN0Cm6OHi284HCI9pgHN1W1IcZd8tdjDkF2dL4gdJ7oN8gILHkG4jGGYuBQGz3YAcKr4slWffPV4sT1CJDjLd3lmq/tgca+aVeeN4ln7oe3f9OEpEM3GOHw8y8B/PJls7BLvL6q4c1Vj3Hl2npqGY9gQSPO6YMpSMcj66ARXIuF54rhOJ1kraWGmDcObALrB+xktUyKJfeO209sZ5mHZlOc4AxurJDBNpXd2iwr4Oq4LxaQkBw2NvMdKMKOw0wDsvJpV11T7QQqqX3EwZGnpG32ZjK8hjj8JtEvU3QVRGc70VBiHEqttk9b8Vo5Tkgy9G1R5jGVsbnauHBImTvExm7XPsgY/nS5Vu2kX4D2mtNb4KhhwN9Mk7JOGQxfo+TscFa469gg/f2VC08mCImX5ZRrFvHMGOGs7EztDbnkKE33OqFp+Bku7Urwj01GQOOO1y4y3NrkwsujKNWhAJA5x+TX5IAz44fG2UMo2enXmuPUAjLuVR4K8KM5bm8OnxljFHGFOKPzHGU42YwJ2jYt4rce2R0xL54u4JB8sOOt/LO1FprP3IHazyXCk+Ocu7b4jgR27hjXrxQItQWUFQqTCuvnmBuXcewFvpPjFllucTELWjUyKog9ySGCjr2HeRhx9tzvLH0TCORnktqti+8RO8SG3asCMcN+yi8eg+GXZzkWHFvx4pK4e3jwnfl/o7nv4/XCy9n3Z/x80Jlwi4Krx728dLuy1jn+AGFRSpiZzq+N2ON73BVXry9s/sz5iJ/qi9jpdaNKAwfYCaWTIPgBWDyApCXSUtz0UzSUFnLdeMqWkGjKlcyjapc6FzF3LeLo2jWRP/Z9drWSqt/3O3K++nzOXuAeZXDGs898ZdK00RfzK3HP1Mv/OGQWA23Cbewf+PFfRDHNVj4gJkf2Hg065R41k6jEhd2Tb0JPjK7d0CMWWhOiR/ImJ90jUcPbolnNbFx6tlPPHJOHCvHnLFH0ob/7Z9cEAPyrOYyTj37xnNHjCbVCirjE3Jf5YA4xjTH/DmDJMbGizEV1fkVVzrtvEeyaj37xjt37ljrzDj1ZhjRLMWYTidIQxziUjzf690f5uoQyBGOH1pRjolZMky9CVdfeEiToxxDHrU/80NiaDymUSsnjiHK8d+4ZGi9v2IMHOKkjreTbcL6t2+8+In6qONPjqd25ac8wvSck4s6TiBbjwlG23phglmoQzCPBxPPINsv+xZj9I2HqdQhmMOJE0NTrPFtZrrW+x5jTIcc4dhQFZO4vRbHOfFJME/UZIqHdOt4rk5Cx8n9Id/TrWOMOolijKb1AlOpTrutY8yWeJZgCMIXUCKqrWOMI8frGLPiG28GSWgAx5MEw7deyl3dJseOiKfa+YKNh1/TG/Hsd8OdFdfqbCbeLIdVZ46/ksq3BJnZxktQctUf8TOprMEcP/W+I3BCrohjyFcyt57txBukKqZMId9bfcvnbUGPxBQzy7Z/aqpMXBP/Bj83X6BGpNkKlvtxvE4wK6bxMDSIY/6whdXEc02MXW4/rvjBOZRj0leN+bXyYRzzU0/A/3gJpuqTOCO71jM33mCOA4upJ7nvGMYxX6OifRoH1L9j+9bjJ16fxAKI2dYzA60GdLxOIYpH23iidZekbh2LHQaFyAkuQFPdTFLnju1bzzzxlGO3xKkgi9Yzv1JOvdaxpF0/+pNd4ynHolPiVLQ/Lcdr3PI/orWADQm1HOOWw4nxu1q3GwXMloq2SXH5a4tY4JYjHOO3tYinsEUk97SN2ClwkvbrmGBLkj5/nnhYFHm7KtJeHVOKjjNSCRjHK6iKfh2vwdDn1vqeokAa2HEAhkSSf7r82suq8baOe67jqRBtx9sDz4WA5Rdw3OVdIXY7pvbvLkTyvL1JUljOnTqWmIxaKQx7JhKjGs+wZ3E4sYCA4w+BWVGzlmKoTZxiDidOMeA4TCGyatakgDwDscAc4RgDjqcSoupQu2SuCseOSWDmev25jWO3dUwMlqA6gWRK3HEdSwg6/oA9QjQrQkKIBr8rKEDHzW9fpJBn8sAxtl4qF80Loz2GuFPHUqStDxITbJJi2bwKrORILFPYtuh25kHeNLsCiVk5r+N2TyExtl7akH1IDEGCjqtCpi1khjiUmIr/i+OZWMeiyzq2qApsPSEfYeLpUAKZdukYwnUeyXZ/SfnCjm+Zk+s6lgDDERegWD7pGw/ruO+7omYDZLbxMrJ07J4YkuVc4y25h4cgPmcP5Un8cMzBzaeceE8c81Mv5BrPE8d8k71JDHnjOOQ2chPPG8dTaZWFP45JWiX3xTFOPT7ZyiPHgRUxDeK4JMvWwyw1L1tAenB8jsdict5xNohjkhB24rmv4yJrfzJi8wYb4ZOteMfM3j4c49TDUC+OCzBAbMKdilXjgWM843DiTMr2uRrH0128qvEYx7C3D8dU7ACWstIQZ5t06DizdEyF2fEmK53jQkqXjnXEgdkxPOjKcWbtONjleK591c3qEHV8nhmBZZFrXzWDY3pxTOY5ncmqF8cZYmiJ3zJj5Epfx3BMfnhVtI81EH8UxpSkd1xkrRzuuGRCmoSlIUXxSnrHsP1wx/u4mpYZxEZbmBWQw4kZCC0xlaaaKCt9VeApRzguIQbizFAV5crgGHb35Dg0OiZDHcPunhyHJscveuKyzHp3jH2K1nx0TKU+sjIUU6eODQWJec+0KVeGqoDLojyCGJIZiH+U+pDBMR5yTB3vdbYe+JUMjjG52ymN2zELw3sOSEyZlrgyOC4GJNYCF+SNY7yo2E9J/tWxufVeTA8xb+iK2L71cl8dk7bxfK1jei/5kH+OzVOvIG8dh5qJ56Fjc+vl/jomTeN56NjceuSx44An9thxyDaex475J/KOHd92SUxs43nsmG898trxj72fCAcmnjKN5zEx/0jeNfF1p8TENF7XdXzRLfH7vg+EromX+wIs+yY+Wtmr58T4TN458VW3xASN1zHxLV3uIH7ffpZYlnzrLf97bolvyBOrByyIrynq2HF41P5lTW4ivnBN/ErHVgUS39KYcrYhvqYx5XRDfEFjysmG+IrGlLsN8SWNKTcb4ojGlOhf4tuxEY/qsjitiS/GdFXUxFdjuipq4mhMZVwTj6j1zmriMbXeaU08pkK+a4gvxzPxGuJoRI3XEF+MpYwV8dVYylgRR6MpCkV8PY6iUMRjKYsTRTyW++1GEY9kUJ9Fingk99uJIh7LbREp4pHcFqct4iv/x0eLOLr1v+8U8Th67wSIfZccIfGF54qROPJbMRB7LvkUiH2XHPHEV55XMRJH/t7FQOy55DsgVrn1XDESX5KPuUFiv2+4kwiI/a6LswiIPa+LGyAGZA+BkdjfK+4uQmLItV9/TyAx5mfyJb9EHLFvyAiMxJgrv2oYiTGXnt0SSIy59aznkBg1D8l8BoKBeGBm5NUS/wMtJQR5NY0DewAAAABJRU5ErkJggg==",
    "sourceName": "源仓库\n(看注释)",
    "sourceUrl": "https://www.yck2026.top",
    "type": 0,
    "variableComment": "请填写搜索关键词或UID\n若列表没有刷新请手动 右上三个点【刷新分类】\n"
  },
  {
    "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/119.0.0.0 Mobile Safari/537.36 Reader\"}",
    "injectJs": "if (!/^https:\\/\\/(so\\.toutiao\\.com\\/search\\/?|quark\\.sm\\.cn\\/s|wap\\.sogou\\.com\\/web\\/searchList\\.jsp|m\\.so\\.com\\/s|cn\\.bing\\.com\\/search|www\\.baidu\\.com\\/s)\\?/.test(window.location.href) && !document.getElementById('open-yuedu-bookshelf')) {\n    const btn = document.createElement('div');\n    btn.innerHTML = `<button type=\"button\" id='open-yuedu-bookshelf' style=\"z-index: 9999999999;\n    position: fixed;bottom: 8.1%;left: 9.5%;background-color: rgb(255, 153, 0);border-radius: 2px;border: 1px solid rgb(255, 153, 0);color: #fff;\n    font-size:${window.innerWidth/80}vw;font-weight: 400;padding: ${window.innerWidth/400}vw ${window.innerWidth/150}vw;\n    \"onclick=\"window.open('legado://import/bookSource?src=https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/linpx.json','_blank');\">导入书源</button>`;\n    document.body.appendChild(btn);\n}\n\nlet time, num=0;\nconst herfs = new Map();\nfunction onTouchStart(evt) {\n    for (const el of evt.path) {\n        if (el.tagName === \"A\") {\n            if (el.href !== 'javascript:void(0)') {\n                const inner = el.href;\n                herfs.set(el, inner);\n                el.setAttribute('href', 'javascript:void(0)');\n                time = setTimeout(() => {\twindow.open(`legado://import/addToBookshelf?src=${encodeURIComponent(inner)}`, '_blank')\n                }, 600);\n            }\n            break;\n        }\n    }\n}\n\nfunction onTouchEnd(evt) {\n    if (time) {\n        clearTimeout(time);\n        time = undefined;\n    }\n    for (const el of evt.path) {\n        if (el.tagName === \"A\") {\n            if (el.href === 'javascript:void(0)') {\n                const herf = herfs.get(el);\n                if (herf) {\n                    el.setAttribute('href', herf)\n                }\n            }\n            break;\n        }\n    }\n}\n\nfunction addListener(els){\n    Array.from(els, (item) => {\n        if (item.getAttribute('add-yuedu-bookshelf') !== 'add-yuedu-bookshelf' && item.innerText && item.href && !/^#|^javascript:/.test(item.href)) {\n            item.setAttribute('add-yuedu-bookshelf', 'add-yuedu-bookshelf');\n            item.addEventListener('touchstart', onTouchStart);\n            item.addEventListener('touchend', onTouchEnd);\n            item.addEventListener('touchcancel', onTouchEnd);\n            item.addEventListener('mousedown', onTouchStart);\n            item.addEventListener('mouseup', onTouchEnd);\n        }\n    });\n    num= els.length;\n}\n\nfunction reAdd(){\n    const els = document.getElementsByTagName('a');\n    if(els.length>num)addListener(els);\n}\n\nreAdd();\n\nconst observer = new ResizeObserver(reAdd);\nobserver.observe(document.body);",
    "jsLib": "function getWebViewUA() {\n    let {java} = this\n    let userAgent = String(java.getWebViewUA())\n    if (userAgent.includes(\"Windows NT 10.0; Win64; x64\")) {\n        userAgent = \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36\"\n    }\n    return String(userAgent)\n}\n\nfunction sleep(seconds) {\n    return Packages.java.lang.Thread.sleep(1000*seconds)\n}\n\nfunction sleepToast(text, second) {\n    let {java} = this\n    java.log(text)\n    java.longToast(text)\n    if (second === undefined) {second = 0.01}\n    this.sleep(1000*second)\n}",
    "lastUpdateTime": 1774771399769,
    "loadWithBaseUrl": true,
    "loginUi": "[\n    {\n        \"name\": \"🔰 使用指南\",\n        \"type\": \"button\",\n        \"action\": \"startGithubIntroduction()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDCD9 书源指南\",\n        \"type\": \"button\",\n        \"action\": \"startGithubReadme()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDC1E 反馈问题\",\n        \"type\": \"button\",\n        \"action\": \"startGithubIssue()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"⭐️ 收藏项目\",\n        \"type\": \"button\",\n        \"action\": \"startGithub()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDCBE 备份恢复\",\n        \"type\": \"button\",\n        \"action\": \"startGithubWebdavBackup()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"☁️ 远程书籍\",\n        \"type\": \"button\",\n        \"action\": \"startGithubRemoteBooks()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDC3A 兽人阅读\",\n        \"type\": \"button\",\n        \"action\": \"startTelegramFurryReading()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"✈️ 书源频道\",\n        \"type\": \"button\",\n        \"action\": \"startTelegram()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"☕ ️支持开发\",\n        \"type\": \"button\",\n        \"action\": \"startGithubSponsor()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    }\n]",
    "loginUrl": "function login() {}\n\nfunction startBrowser(url, title) {\n    let msg = \"\", headers = `{\"headers\": {\"User-Agent\":\"${getWebViewUA()}\"}}`\n    if (url.includes(\"pixiv.net\")) {\n        msg += \"\\n\\n即将打开 Pixiv\\n请确认已开启代理/梯子/VPN等\"\n    } else if (url.includes(\"github\")) {\n        msg += \"\\n\\n即将打开 Github\\n请确认已开启代理/梯子/VPN等\"\n    } else if (url.includes(\"https://t.me/\")){\n        msg += \"\\n\\n即将打开 Telegram\\n请确认已开启代理/梯子/VPN等\"\n    }\n    sleepToast(msg)\n    java.startBrowser(`${url}, ${headers}`, title)\n}\n\nfunction startGithubIssue() {\n    startBrowser(\"https://github.com/DowneyRem/PixivSource/issues\", \"反馈问题\")\n}\nfunction startGithub() {\n    startBrowser(\"https://github.com/DowneyRem/PixivSource\", \"收藏项目\")\n}\n\nfunction startGithubIntroduction() {\n    startBrowser(\"https://pixivsource.pages.dev/BetterExperience\", \"使用指南\")\n}\nfunction startGithubReadme() {\n    startBrowser(\"https://pixivsource.pages.dev/Linpx\", \"书源指南\")\n}\nfunction startGithubWebdavBackup() {\n    startBrowser(\"https://pixivsource.pages.dev/WebdavBackup\", \"备份恢复\")\n}\nfunction startGithubRemoteBooks() {\n    startBrowser(\"https://pixivsource.pages.dev/RemoteBooks\", \"远程书籍\")\n}\nfunction startGithubSponsor() {\n    startBrowser(\"https://pixivsource.pages.dev/Sponsor\", \"支持开发\")\n}\n\nfunction startTelegram() {\n    startBrowser(\"https://t.me/PixivSource\", \"书源频道\")\n}\nfunction startTelegramLegado() {\n    startBrowser(\"https://t.me/ReadSigma\", \"阅读频道\")\n}\nfunction startTelegramFurryReading() {\n    startBrowser(\"https://t.me/FurryReading\", \"兽人阅读频道\")\n}",
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "Linpx 订阅源\n\n可用功能：✅添加小说（配合书源）✅更新书源\n添加小说：打开小说，点击底部按钮【添加到书架】，添加小说到书架\n\n书源发布：\nPixiv 书源频道 https://t.me/PixivSource\n兽人阅读频道 https://t.me/FurryReading\n\n项目地址：\nhttps://github.com/DowneyRem/PixivSource\nhttps://github.com/eigeen/PixivSourceProject\n\n规则订阅：Import 订阅源\nhttps://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/import.json\nhttps://raw.githubusercontent.com/DowneyRem/PixivSource/main/import.json",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://furrynovel.ink/apple-touch-icon.png",
    "sourceName": "Linpx",
    "sourceUrl": "https://furrynovel.ink/?from=read",
    "type": 0
  },
  {
    "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": 1775584744388,
    "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": "美涩",
    "sourceIcon": "https://img2.baidu.com/it/u=2497591018,1494490685&fm=253&fmt=auto&app=138&f=JPEG?w=375&h=500",
    "sourceName": "每日大赛",
    "sourceUrl": "https://d3fzqoxno61m61.rnxuiofe.com/",
    "style": "iframe{\n\theight:600px\n}\ntitle{\n\tdisplay:block\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4,
    "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 Reader\"}",
    "jsLib": "function getWebViewUA() {\n    let {java} = this\n    let userAgent = String(java.getWebViewUA())\n    if (userAgent.includes(\"Windows NT 10.0; Win64; x64\")) {\n        userAgent = \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36\"\n    }\n    return String(userAgent)\n}\n\nfunction sleep(seconds) {\n    return Packages.java.lang.Thread.sleep(1000*seconds)\n}\n\nfunction sleepToast(text, second) {\n    let {java} = this\n    java.log(text)\n    java.longToast(text)\n    if (second === undefined) {second = 0.01}\n    this.sleep(1000*second)\n}",
    "lastUpdateTime": 1774771365404,
    "loadWithBaseUrl": true,
    "loginUi": "[\n    {\n        \"name\": \"🔰 使用指南\",\n        \"type\": \"button\",\n        \"action\": \"startGithubIntroduction()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDCD8 书源指南\",\n        \"type\": \"button\",\n        \"action\": \"startGithubReadme()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDC1E 反馈问题\",\n        \"type\": \"button\",\n        \"action\": \"startGithubIssue()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"⭐️ 收藏项目\",\n        \"type\": \"button\",\n        \"action\": \"startGithub()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDCBE 备份恢复\",\n        \"type\": \"button\",\n        \"action\": \"startGithubWebdavBackup()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"☁️ 远程书籍\",\n        \"type\": \"button\",\n        \"action\": \"startGithubRemoteBooks()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDCD6 阅读频道\",\n        \"type\": \"button\",\n        \"action\": \"startTelegramLegado()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"✈️ 书源频道\",\n        \"type\": \"button\",\n        \"action\": \"startTelegram()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"☕ ️支持开发\",\n        \"type\": \"button\",\n        \"action\": \"startGithubSponsor()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    }\n]",
    "loginUrl": "function login() {}\n\nfunction startBrowser(url, title) {\n    let msg = \"\", headers = `{\"headers\": {\"User-Agent\":\"${getWebViewUA()}\"}}`\n    if (url.includes(\"pixiv.net\")) {\n        msg += \"\\n\\n即将打开 Pixiv\\n请确认已开启代理/梯子/VPN等\"\n    } else if (url.includes(\"github\")) {\n        msg += \"\\n\\n即将打开 Github\\n请确认已开启代理/梯子/VPN等\"\n    } else if (url.includes(\"https://t.me/\")){\n        msg += \"\\n\\n即将打开 Telegram\\n请确认已开启代理/梯子/VPN等\"\n    }\n    sleepToast(msg)\n    java.startBrowser(`${url}, ${headers}`, title)\n}\n\nfunction startGithubIssue() {\n    startBrowser(\"https://github.com/DowneyRem/PixivSource/issues\", \"反馈问题\")\n}\nfunction startGithub() {\n    startBrowser(\"https://github.com/DowneyRem/PixivSource\", \"收藏项目\")\n}\n\nfunction startGithubIntroduction() {\n    startBrowser(\"https://pixivsource.pages.dev/BetterExperience\", \"使用指南\")\n}\nfunction startGithubReadme() {\n    startBrowser(\"https://pixivsource.pages.dev/Pixiv\", \"书源指南\")\n}\nfunction startGithubWebdavBackup() {\n    startBrowser(\"https://pixivsource.pages.dev/WebdavBackup\", \"备份恢复\")\n}\nfunction startGithubRemoteBooks() {\n    startBrowser(\"https://pixivsource.pages.dev/RemoteBooks\", \"远程书籍\")\n}\nfunction startGithubSponsor() {\n    startBrowser(\"https://pixivsource.pages.dev/Sponsor\", \"支持开发\")\n}\n\nfunction startTelegram() {\n    startBrowser(\"https://t.me/PixivSource\", \"书源频道\")\n}\nfunction startTelegramLegado() {\n    startBrowser(\"https://t.me/ReadSigma\", \"阅读频道\")\n}\nfunction startTelegramFurryReading() {\n    startBrowser(\"https://t.me/FurryReading\", \"兽人阅读频道\")\n}",
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "Pixiv 书源项目\n\n可用功能：✅导入书源✅更新书源\n\n书源发布：\nPixiv 书源频道 https://t.me/PixivSource\n兽人阅读频道 https://t.me/FurryReading\n\n项目地址：\nhttps://github.com/DowneyRem/PixivSource\nhttps://github.com/eigeen/PixivSourceProject\n\n规则订阅：Import 订阅源\nhttps://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/import.json\nhttps://raw.githubusercontent.com/DowneyRem/PixivSource/main/import.json",
    "sourceGroup": "官方网站",
    "sourceIcon": "https://pixivsource.pages.dev/favicon-512x512.png",
    "sourceName": "Pixiv 书源",
    "sourceUrl": "https://pixivsource.pages.dev",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "<js>\nvar _0x2a37,_0x406d;function tZY9EHb(_0x2a37,_0x406d,tZY9EHb){for(tZY9EHb=0x0;tZY9EHb<_0x406d;tZY9EHb++){_0x2a37[\"\\u0070\\u0075\\u0073\\u0068\"](_0x2a37[\"\\x73\\x68\\x69\\x66\\x74\"]())}return _0x2a37}_0x2a37=tZY9EHb([\"\\x48\\x73\\x4f\\x35\\x44\\x73\\x4f\"+\"\\u0055\\u0077\\u0070\\u0059\\u006d\\u0077\\u0072\"+\"\\u0033\\u0043\\u0071\\u004d\\u004b\\u0074\\u0077\"+\"\\x72\\x62\\x43\\x73\\x48\\x4e\\x75\"+\"\\x63\\x73\\x4b\\x65\\x4d\\x4d\\x4b\"+\"\\u0058\\u005a\\u0077\\u0064\\u004a\\u004a\\u0073\"+\"\\x4f\\x79\\x77\\x34\\x4d\\x3d\",\"\\u0053\\u0073\\u004f\\u0066\\u0077\\u0036\"+\"\\u004c\\u0044\\u006f\\u0055\\u004d\\u002b\"+\"\\u0077\\u0072\\u0044\\u0043\\u0069\\u0031\"+\"\\x2f\\x44\\x69\\x45\\x66\\x44\"+\"\\x6a\\x73\\x4b\\x51\\x77\\x34\"+\"\\x70\\x52\",\"\\u0041\\u0042\\u0048\\u0043\\u006e\\u0058\"+\"\\x66\\x44\\x76\\x4d\\x4f\\x36\"+\"\\x52\\x38\\x4b\\x6d\\x77\\x34\"+\"\\u006e\\u0043\\u0073\\u0052\\u0051\\u0063\"+\"\\x77\\x72\\x68\\x42\\x4b\\x4d\"+\"\\u004f\\u0050\",\"\\x4e\\x38\\x4f\\x7a\\x77\\x70\\x58\\x44\\x6b\\x48\\x6b\"+\"\\x4a\\x55\\x4d\\x4b\\x67\\x77\\x71\\x6b\\x68\\x77\\x71\"+\"\\u0052\\u0041\\u0077\\u0070\\u0037\\u0043\\u006f\\u004d\\u004b\\u0032\\u0077\"+\"\\u006f\\u006e\\u0043\\u0073\\u006d\\u0045\\u0061\\u0041\\u0067\\u003d\\u003d\",\"\\x55\\x57\\x66\\x43\\x67\\x73\\x4f\\x30\\x49\\x6e\\x6c\\x51\\x77\\x34\\x31\\x44\\x77\\x37\\x6f\\x55\\x77\\x72\\x58\\x43\\x72\\x67\\x62\\x44\\x72\\x73\\x4f\\x6a\\x4b\\x63\\x4f\\x57\\x77\\x35\\x41\\x38\\x4e\\x6c\\x72\\x43\\x75\\x63\\x4b\"+\"\\x68\\x45\\x77\\x2f\\x44\\x71\\x73\\x4f\\x70\\x77\\x70\\x46\\x69\\x4a\\x48\\x2f\\x43\\x70\\x79\\x33\\x43\\x69\\x33\\x6e\\x43\\x73\\x6e\\x4c\\x44\\x71\\x48\\x4a\\x62\\x57\\x68\\x58\\x44\\x73\\x6b\\x54\\x43\\x67\\x53\\x4e\\x75\\x77\\x71\"+\"\\x62\\x44\\x6e\\x33\\x5a\\x64\\x77\\x71\\x6c\\x4b\\x77\\x70\\x70\\x6a\\x4d\\x4d\\x4f\\x6d\\x77\\x6f\\x66\\x44\\x69\\x47\\x33\\x43\\x73\\x6c\\x48\\x43\\x76\\x63\\x4b\\x4e\\x4f\\x48\\x33\\x43\\x6f\\x4d\\x4b\\x54\\x56\\x6a\\x64\\x4e\\x64\"+\"\\u0068\\u0041\\u0043\\u0062\\u0056\\u0058\\u0043\\u0073\\u0054\\u0059\\u0056\\u0051\\u0063\\u004f\\u0074\\u0077\\u006f\\u0076\\u0044\\u0071\\u0052\\u0074\\u006b\\u0077\\u0034\\u0070\\u006c\\u0048\\u006d\\u006b\\u0036\\u0059\\u004d\\u004f\\u006a\\u0053\\u0058\\u004e\\u0076\\u0077\\u0071\\u004d\\u004a\\u0054\\u004d\\u004f\\u0044\"+\"\\x43\\x57\\x30\\x37\\x4c\\x73\\x4b\\x2b\\x77\\x72\\x67\\x52\\x49\\x53\\x4e\\x58\\x77\\x34\\x77\\x39\\x61\\x55\\x37\\x44\\x6d\\x38\\x4f\\x73\\x77\\x72\\x62\\x44\\x67\\x6a\\x4a\\x4f\\x42\\x68\\x31\\x79\\x50\\x46\\x6a\\x43\\x6e\\x41\\x3d\"+\"\\x3d\",\"\\u0054\\u0073\\u004b\\u0053\\u0055\\u0038\"+\"\\u004b\\u0049\\u004e\\u0079\\u0072\\u0044\"+\"\\u0074\\u0038\\u004b\\u0054\\u0077\\u006f\"+\"\\x51\\x3d\"],0x18);_0x406d=function(tZY9EHb,JQeh_YU){var e9meFM4,X2tQvkG;tZY9EHb=tZY9EHb-0x0;e9meFM4=_0x2a37[tZY9EHb];if(_0x406d[\"\\x52\\x68\\x66\\x79\\x53\\x42\"]===undefined){var S44QvIE;(function(){var tZY9EHb,JQeh_YU;try{var e9meFM4=Function(\"\\u0072\\u0065\\u0074\\u0075\\u0072\\u006e\"+\"\\u0020\\u0028\\u0066\\u0075\\u006e\\u0063\"+\"\\u0074\\u0069\\u006f\\u006e\\u0028\\u0029\"+\"\\u0020\"+(\"\\x7b\\x7d\\x2e\\x63\\x6f\\x6e\"+\"\\u0073\\u0074\\u0072\\u0075\\u0063\\u0074\"+\"\\u006f\\u0072\\u0028\\u0022\\u0072\\u0065\"+\"\\u0074\\u0075\\u0072\\u006e\\u0020\\u0074\"+\"\\u0068\\u0069\\u0073\\u0022\\u0029\\u0028\"+\"\\x20\\x29\")+\"\\x29\\x3b\");tZY9EHb=e9meFM4()}catch(X2tQvkG){tZY9EHb=window}JQeh_YU=\"\\x41\\x42\\x43\\x44\\x45\\x46\\x47\\x48\\x49\\x4a\\x4b\\x4c\\x4d\\x4e\\x4f\\x50\\x51\\x52\\x53\\x54\\x55\\x56\"+\"\\u0057\\u0058\\u0059\\u005a\\u0061\\u0062\\u0063\\u0064\\u0065\\u0066\\u0067\\u0068\\u0069\\u006a\\u006b\\u006c\\u006d\\u006e\\u006f\\u0070\\u0071\\u0072\"+\"\\u0073\\u0074\\u0075\\u0076\\u0077\\u0078\\u0079\\u007a\\u0030\\u0031\\u0032\\u0033\\u0034\\u0035\\u0036\\u0037\\u0038\\u0039\\u002b\\u002f\\u003d\";tZY9EHb[\"\\x61\\x74\\x6f\\x62\"]||(tZY9EHb[\"\\u0061\\u0074\\u006f\\u0062\"]=function(tZY9EHb){var e9meFM4=String(tZY9EHb)[\"\\x72\\x65\\x70\\x6c\\x61\\x63\"+\"\\x65\"](new RegExp(\"\\u003d\\u002b\\u0024\",\"\"),\"\"),X2tQvkG;X2tQvkG=\"\";for(var S44QvIE=0x0,_0x2a37,_0x406d,aI9qdr=0x0;_0x406d=e9meFM4[\"\\x63\\x68\\x61\\x72\\x41\\x74\"](aI9qdr++);~_0x406d&&(_0x2a37=S44QvIE%0x4?_0x2a37*0x40+_0x406d:_0x406d,S44QvIE++%0x4)?X2tQvkG+=String[\"\\x66\\x72\\x6f\\x6d\\x43\\x68\"+\"\\x61\\x72\\x43\\x6f\\x64\\x65\"](0xff&_0x2a37>>(-0x2*S44QvIE&0x6)):0x0){_0x406d=JQeh_YU[\"\\x69\\x6e\\x64\\x65\\x78\\x4f\"+\"\\u0066\"](_0x406d)}return X2tQvkG})})();S44QvIE=function(tZY9EHb,JQeh_YU){var e9meFM4=[],X2tQvkG,S44QvIE,_0x2a37,_0x406d,psTkKF,zAQKaRC;X2tQvkG=0x0;S44QvIE=undefined;_0x2a37=\"\";_0x406d=\"\";tZY9EHb=atob(tZY9EHb);for(var xKrOQCd=0x0,R_wkPCJ=tZY9EHb[\"\\u006c\\u0065\\u006e\\u0067\\u0074\\u0068\"];xKrOQCd<R_wkPCJ;xKrOQCd++){_0x406d+=\"\\x25\"+(\"\\x30\\x30\"+tZY9EHb[\"\\x63\\x68\\x61\\x72\\x43\\x6f\"+\"\\u0064\\u0065\\u0041\\u0074\"](xKrOQCd)[\"\\u0074\\u006f\\u0053\\u0074\\u0072\\u0069\"+\"\\u006e\\u0067\"](0x10))[\"\\x73\\x6c\\x69\\x63\\x65\"](-0x2)}tZY9EHb=decodeURIComponent(_0x406d);psTkKF=undefined;for(psTkKF=0x0;psTkKF<0x100;psTkKF++){e9meFM4[psTkKF]=psTkKF}for(psTkKF=0x0;psTkKF<0x100;psTkKF++){X2tQvkG=(X2tQvkG+e9meFM4[psTkKF]+JQeh_YU[\"\\u0063\\u0068\\u0061\\u0072\\u0043\\u006f\"+\"\\u0064\\u0065\\u0041\\u0074\"](psTkKF%JQeh_YU[\"\\x6c\\x65\\x6e\\x67\\x74\\x68\"]))%0x100;S44QvIE=e9meFM4[psTkKF];e9meFM4[psTkKF]=e9meFM4[X2tQvkG];e9meFM4[X2tQvkG]=S44QvIE}psTkKF=0x0;X2tQvkG=0x0;for(zAQKaRC=0x0;zAQKaRC<tZY9EHb[\"\\u006c\\u0065\\u006e\\u0067\\u0074\\u0068\"];zAQKaRC++){psTkKF=(psTkKF+0x1)%0x100;X2tQvkG=(X2tQvkG+e9meFM4[psTkKF])%0x100;S44QvIE=e9meFM4[psTkKF];e9meFM4[psTkKF]=e9meFM4[X2tQvkG];e9meFM4[X2tQvkG]=S44QvIE;_0x2a37+=String[\"\\u0066\\u0072\\u006f\\u006d\\u0043\\u0068\"+\"\\u0061\\u0072\\u0043\\u006f\\u0064\\u0065\"](tZY9EHb[\"\\u0063\\u0068\\u0061\\u0072\\u0043\\u006f\"+\"\\x64\\x65\\x41\\x74\"](zAQKaRC)^e9meFM4[(e9meFM4[psTkKF]+e9meFM4[X2tQvkG])%0x100])}return _0x2a37};_0x406d[\"\\u006b\\u0044\\u0043\\u004a\\u0051\\u0077\"]=S44QvIE;_0x406d[\"\\x6d\\x67\\x48\\x57\\x44\\x69\"]={};_0x406d[\"\\x52\\x68\\x66\\x79\\x53\\x42\"]=!![]}X2tQvkG=_0x406d[\"\\u006d\\u0067\\u0048\\u0057\\u0044\\u0069\"][tZY9EHb];if(X2tQvkG===undefined){if(_0x406d[\"\\u0047\\u0074\\u004e\\u0065\\u0053\\u0049\"]===undefined){_0x406d[\"\\u0047\\u0074\\u004e\\u0065\\u0053\\u0049\"]=!![]}e9meFM4=_0x406d[\"\\x6b\\x44\\x43\\x4a\\x51\\x77\"](e9meFM4,JQeh_YU);_0x406d[\"\\u006d\\u0067\\u0048\\u0057\\u0044\\u0069\"][tZY9EHb]=e9meFM4}else{e9meFM4=X2tQvkG}return e9meFM4};eval(String(java[_0x406d(\"\\x30\\x78\\x30\",\"\\u0075\\u006d\\u002a\\u006e\")](source[_0x406d(\"\\u0030\\u0078\\u0031\",\"\\u0069\\u0049\\u0057\\u0061\")],_0x406d(\"\\u0030\\u0078\\u0032\",\"\\x4d\\x50\\x55\\x34\"),_0x406d(\"\\u0030\\u0078\\u0033\",\"\\u0035\\u0066\\u005b\\u0053\"),\"\")));user_Check();headers={[\"\\x55\\x73\\x65\\x72\\x2d\\x41\"+\"\\x67\\x65\\x6e\\x74\"]:_0x406d(\"\\u0030\\u0078\\u0034\",\"\\x79\\x63\\x21\\x44\"),[\"\\x41\\x63\\x63\\x6f\\x75\\x6e\"+\"\\u0074\"]:Account,\"\\x4e\\x61\\x6d\\x65\":Name,\"\\x6c\\x69\\x6d\\x69\\x74\":limit};JSON[_0x406d(\"\\u0030\\u0078\\u0035\",\"\\x69\\x72\\x62\\x49\")](headers);\n</js>",
    "lastUpdateTime": 1775366296374,
    "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": "书源",
    "sourceIcon": "https://qyyuapi.com/logo.jpg",
    "sourceName": "XH发布页",
    "sourceUrl": "https://qyyuapi.com",
    "type": 0,
    "variableComment": "JspHXCgzmq549cSvxZRk3RjxcB4ut+abnBPuh0aaJjiYDY+/6fHk7jDLr53JgymxYjcsQKo1BUB1ztvvZiBblDMduGT0UY0EeUSczoZqvLzEKl+3DQw10vYSo84bXQESntYttlMnXBJmELsR4Tw2BdqFwybq7jVwvbbMSXXHsT410X8mY6cZaMIPWNw3NcEqvInH8DSSegzdPddUfhcvmyULd7miS/vTLFwC0eQSYfeEPvlu0y6mb5nn2n0XEN7playPCBOyhaqVduzeisk8J78+vn2EKh7bGicC1dcAZ7+4qvVFalN7wqw4QoedJkdDUQoZYIcCH7V0mlr+xgepoKO0Ssa6xFVYq86m6IFKMYv5TbcYAX4bvZ0VitkoRUlLPopsMPuGXDeGxpKemwWxTPu1EqoO/WNB/RPqJH59ikpb4dWKl8rKmnNI4uQD6A9M9TxZmzBYqtAatKLYANtiOxppujAiC6vlUqU1Lzc20JfjmCw9klDTr7w53ksD68OzgPAZM8n3CHyOaJLr3iDK+4S5s0MeTjX6LNrTfmoTl/UP0DLGyOs9PJMqMWBrTHqGDY8jOUUUemlqwcb+mN4AeL3GCLXiSKzarUQbb0dutVySoCQOWDveemTdOjihvC29XNPWm6k06txWInIFQgcWXYM0o6N6IQtKnV8qVuoQ6zRagwz0UG5pfN0QRiHyHBGyZtRuzLWY0Vhc87fJDgPJaXsj9q5tdpx3ViyXUgugpJ+K5UVhEiGzOlIsYjJDy3n/AbIbi/deXHbi0IY+hrtOH0Btq2GYf7De2BSDmwMSSIn2iD3Je0svO8rHAkzPpvPfRLH+9dNQWEbrlgk0oq1Twp3mw7Mk5nuA5nr7u9weXkgH/rN+310iHr8wcduSN4jCZMjkpF2Zazz9m9ezI4mB8VyjUvek0i60uPY3b35J2sP7JIfhsfOIjuMxDv8a0TBr9wcBNt++Aw2NjFZ3CDukdvmx5maiQ5CDd7Zi7wY8S5CsglrFXG+lyAa2SA+KPf4lc8ybym6o54sEWaLIaekseixF5PbshXI/60sFAx9AYBlJaQUBciWcEtdjGds6tv4EvPcbLBjJvbGpH0ZhBphsogwQ2aI6p7kNkDbzdyEPmVyaAfIIGHU/vmJ6HummYX3Cn4Tnd+HyFPcir4kPYkc0sYLvKRcUhqpjMnyujpUuasno1v5txSiD7GKjZ1ExpA/n/0Ej0fc/fKxdvQYrEmKojg8m60mc8OVXBoErowBz46YTASmhwhzcbdXcKAzTCaABY28zrJ/k2xHbkagWS6qGnD1RmRWA3SgcKkli9gFtSBicArkKuzV256t/Unv6i9tdhR4XF7lkP7f37P2eZ5vJDQhnFxdGgyCdRC0QVhK21Xufznb4rxl/aNRsDzL64NcoID1t9NmAplImf7ckJW2/WI1u3qBj3WBhYKUceB1qdwsr+mYQvrwrIdLAB5P+1iARwaRe2urUZj3Sozyioue60Z/OdvivGX9o1GwPMvrg1yjoaNlKuVQp5F+IhNnaZHuSjW7eoGPdYGFgpRx4HWp3CxfWJ7eXUpkFeGA+qUNJ4WcLBVlpzzMdajT8qDh3yi/4dCGZsFRZ/uGJtOIpDpL/V5iDCn+jp4sXVvfFz5LUdtH7D8lWS9lDYrqnkLCV+NZfqLb6bYa3jYyWBLA5La4Os7XvGgP0/Ux+JuWzaRFj/1R7bvlDuh5eVOeRldJucWjFWr0jzsWH1Iyc3vP5hdMbiKkMzVjx7Zqcbf6rbicc76D9V4WyQxK0cSe7d9/9FB3SxZBjAiCO+KOut8Un8msxSnVVwgvKx21dER1iPoNp6UqAmZbr8z45Sy+pruQ5nsfBOQr4l7WVhNegga6nXNzj2tpHudPrDm9Wn2UR4YshDfI2BUHw5QUks0QBNocu+jfuCxNjMeNDzOk0a/ZER3ne8hIj4XHTvojbtJgkELKNd9f9D+p1rSuXNtYRepfB8LOv+Eaq6dx05J0+DQo2b6KEEITL67AdLY9nptuYSinHMloQ4+Ne3RmvvzzeEu0zAiBMHmzqWOo/8A4PU0SwHjPpmF7kFsy/stIq0yoHwBHy4CDkpYUMVD6MzJnkh5wTo3QE1tS+Rd7HKkFKeV10xq+LaSxbV3V2G0UZFJdTAtjEgrG68sRLy50Bxc6reH4+tuyU9uE/tyAW9+03QSUfnesqUHBBqIg9W2Npmtz/COJwj00FoPD0XFCD9CPiN/EXGpmBHqnizWGjUNRu4uYwfW0FW6ssbNlkYUYG7+MPxa1FtH/nrBLkQWUMbIzExc9SCzNN5gIcCKEJgpgKTqk9TGHIPByDZFJmEjFiCs5oBtHpdx07vrh0kIXGWXUk8SVKpJy0ciZf0ReHuO2skcnylDk+Iatc4nbjALT/2IMHR6kurLwspWQtpINJKzXhj+phRqgNEWICiI/SFnHx8cu0vPopPqRCe+bPwAAIpwkke+scblvPuxFbBz6m+YGv78wOumHcxo+EahbP8MQ6y0gADR8b3vH8dOWL9Q/mcoVzHjNVGSLSLvpTqfVvX8Ro5qMp2YihepAb9bpr5/0yMuV4IFO2d92CfusilEOWeoEP5R3yrgQG5k36F1CWdSCTj8Df42Lw1Q6ZkBBe6jAzSsKhurOjrDangTkID5u8YbUCi6BRLCxLo0aBoeO8zjznm5WD8KTtPvIk7yPXiYx4zK9PSI3PMB2/zv8uDT465Ouin07fxbGlmqIs6OM51dI4XMytpMRK5VQeciG4fROQyQiCuO/k9JEIMkQ92oSur9KmW/+9GKg47RBU5Y8I0uTueRDr7iqrstwrXtW/iv6MUCayx10COLrkisx/IsTsZnIKzSAs82w4zIJDzgsq88dpDC4fbJt5U0IJl8mJB5/03AFikTKf5/4s4arA1FlFQeCJzRU6HBTvL/qBQlcXOX/lAJnyWhXi1ZR/+GpUVvdg/b/5G6MOWoVxvuiAeWpvlmHNifZiUhPVDpmQEF7qMDNKwqG6s6Os9DnLd1f2w1ZpsLniQ3rErgy1A1lXIvyfbgr77WkIh82zNYCq5y338g0leY1Smd50uhtBU3IODaIKuPZp3y1JtTrgE71jDnmTRTiIm0FAoDCIIRp/NW6OzF8c0I79UzA6KfEKV6BN5zRGLnQG66J4NVs0d1/Ae9m5oZuRKgyEetZ06r8QIonmy7xI6UgVXNXPVtsplKqBQyis4MY+f0T9VR8W44qDLydiU74r8/PYKUoFoPD0XFCD9CPiN/EXGpmBHqnizWGjUNRu4uYwfW0FW6ssbNlkYUYG7+MPxa1FtH/nrBLkQWUMbIzExc9SCzNN5gIcCKEJgpgKTqk9TGHIPC6AmHCIIoBuMneVXqiT9Z4nHbQ61xML4LsfaVd0Gaa490fFauD6fcYRXnhlfKpuDJhwyUBwDbiOmvt0RIuTR7faWpcDU+SnejOrJB8jn0/E5yIp0pmh03eI6bb2FjUxkfM/F7CmsDmgezt6oE/kSUj3N4NCQH24Hnf6uo0mWOxD3DSWyy675HG9dUVBuCDZZFVriIfiCePPKssy07w3gKy6UyOR+0J0sWL/6emtb49MWfOFu2Ntsdd+lRpDSA4b3zTItoy+FQVOJ6nKcLtkKTmnBefq420c6e70ytwdliE4Sk2wZ2mVy/+gtOFJUHMFxAW896J6YSECoHBtZ5+pRkydmRsAREFd5QOnNb1fLzaGWqScL+Z0ggPcgce9nM52WeBei68bakYePn8orltY5Q0y++hwRmmIQP5zHa++1mfCEUEesGTmKYtnfvOpTD5u2GwGhuRPiO0HAaLVkegl1zbkgNE+E7M6TC0OS9IW7QGTI7kOAWVffgNWa/yCd47R+hAmt7xrhIdKkVO6WHjmKXhKcmot/SvruJxi/2QODXhvarHfBYx+tNOkIOgyBum47TdyP4Dfuh03ErLvC0ATs4AC/2Ih3SSLq6EsqShjFiAuUen2jf/AZjHSilr1f/EqKJbGEdmSNLrFcAM/PHUd0HPbl9k91vGv0xvB6yGE40e0W7lzxKVMJafePI3BE+c5//2kYktX1eE9pn1mhmaTdGLKS20YOFt21cfJ2bY01yOY0HQCS984ayVK5WpCcYl4UoKTWxDKGoQPPGY9DpiUAZQcdqCv8bBrmiqXnKIGCZDde0SF4p9r/x177+MMIobITSARYovpkV7fNrENZOqf1RUbIlxYAF6tPxd94LL/7mVso7HBbltHc7qWwR407Er8xO8cTVODrP2PlPnEOUsm2WhSRUvm3BwjeDXZcZkx/QaBuefW9JH7xmhnc+kU0dIkZvCwC/cSab1EvkIUtqCnI9djEBToEtLyiN+iviLRucEWyoj9P1ypwN8V/o5N9KioXFZNvmQwLtQhG3ireJomElLF+pwHjuOX+NAOL3/xckcSLmr19Qjy/mAu+g1mwckZQZ5OEt5NgeGc6csin5nEnbaY8Iv3V2SwUtyn+RyuYSXXeSpL5bRT9OtEKmN9RsJzobnT2+fk3VkmHj/wnuS9YJ7npHhkyRnqMo0qnCaNgq9LH72lMvjJB36LxUB6FyOYnQNKPvzngPTvKsgWNFgvgiwQpBQKZd4QQk78newTmvBAZWZeAEh80IanNi1Jz++iziDMS2fcogUKESg/PBuV/j4T/GZmwcbPE6O/p3F1Kht+skJRPa4lF+b1wQBRpBXvEZBZ4NJAYiTHdTjn5r1FY75HCriuBJoFLmLMI+6kyjbqjgPh7iMhPFr+bCupvJFkGyu55om29wA2KFppHoRZE9QH8HJueHbdV0bKge2scasMEKQUCmXeEEJO/J3sE5rwQIq15cJodryolinSoPebMKnaa04dN1LnVZyxuuxSuPgLUhUJLZ/wPoBL4I16axsdtC5q9fUI8v5gLvoNZsHJGUGeThLeTYHhnOnLIp+ZxJ221RWqjBfzkz9VLJf610RX0gQYzralL0uLOA9YqGQNHO665IrMfyLE7GZyCs0gLPNsFyEoU/Hlb1LqiLn4hhA6O3haWQF3Ph4lqj1XGBEo4bs="
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 5,
    "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": "影视",
    "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": 2,
    "cacheFirst": false,
    "customOrder": 5,
    "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": 1774475117970,
    "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": "美涩",
    "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": 0,
    "cacheFirst": false,
    "customOrder": 6,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "动漫漫画",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/005.webp",
    "sourceName": "樱之空动漫",
    "sourceUrl": "https://www.skrcc.cc/",
    "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": 1775584402094,
    "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": "美涩",
    "sourceIcon": "https://files.catbox.moe/f9o8mb.gif",
    "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": 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": "美涩,动漫漫画",
    "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": 8,
    "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": "美涩",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/007.webp",
    "sourceName": "开心漫画",
    "sourceUrl": "https://www.kxmanhua1.com/manga/library",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 9,
    "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": "美涩,动漫漫画",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/001.webp",
    "sourceName": "动漫吧",
    "sourceUrl": "https://www.dzltkt.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 10,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775584304436,
    "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": "美涩",
    "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": 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": "美涩",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/045.webp",
    "sourceName": "漫小肆",
    "sourceUrl": "https://www.ikanhm.top",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 14,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774456739906,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".vod[2:23]",
    "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('.title.1 @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@data-original",
    "ruleLink": "a@href",
    "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/search/page/{{page}}/wd/{{source.getVariable()}}.html\n吃瓜::https://eeoopinkyy.cc/pink/index.php/vod/search/page/{{page}}/wd/吃瓜.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│！声明│交流，请于２４小时后删除│\n└────────────────┘",
    "sourceGroup": "美涩",
    "sourceIcon": "https://ico.img12345.com/jt/favicon.png",
    "sourceName": "粉粉",
    "sourceUrl": "https://eeoopinkyy.cc/pink/index.php/vod/type/id/197.html",
    "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": 1775584881772,
    "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": "美涩",
    "sourceIcon": "https://kp-i25985.com/Uploads/vod/2023-06-21/1141.mp4.gif",
    "sourceName": "❀碰碰网  S",
    "sourceUrl": "https://www.sevvz.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 17,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236292570,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://www.wandou.la/favicon.ico",
    "sourceName": "豌豆影视PRO",
    "sourceUrl": "https://www.wandou.la/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 17,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775644353977,
    "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": "涩图",
    "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,
    "contentBlacklist": "https://lupic.cdn.bcebos.com/,\nhttps://cpro.baidu.com/,\nhttps://eclick.baidu.com/,\nhttps://sofire.baidu.com/,\nhttps://analytics.woozooo.com/,\nhttps://statics.woozooo.com/",
    "customOrder": 20,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n  Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36\n}",
    "lastUpdateTime": 1773229467897,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "@js:\ntry{\n\t$=JSON.parse(src).text\n\tif($==\"no file\")$=[];\n\t}\ncatch(err){\n\n\n//网站整合\nif(baseUrl.match(/^https?\\:\\/\\/(www.)?baidu.com\\?wd=\\s*/)){\n\t\t$=[]\n\t\tbaseUrl.replace(/^.*?wd=\\s*/,'').\n\t\tsplit('♞♞').map($$=>$.push({\n\t\t\t\tname_all: $$.match(/《(.*?)》/)[1],\n\t\t\t\ttime: $$.match(/◎(.*?)◎/)[1].replace(/■/,'▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁'),\n\t\t\t\turi: $$.match(/【(.*?)】/)[1],\n\t\t\t\turl: $$.match(/^(.*?)【/)[1]\n\t\t\t}));\n\t}\n\n\n//蓝奏云\nelse{\n\n//蓝奏云非分组链接\nif(String(java.getString('text.举报文件@href')).length){$=[{\n\t\tname_all: String(java.getString('class.md@textNodes')),\n\t\ticon: String(java.getString('class.md@textNodes')).replace(/.*\\./,''),\n\t\tsize: String(java.getString('class.mtt@text')).replace(/\\( /,'').replace(/ \\)/,''),\n\t\ttime: String(java.getString('class.mf@textNodes')).replace(/.*\\n/,''),\n\t\turi: baseUrl.replace(/^(.+com).*\\/(.+)$/,'$2'),\n\t\turl: baseUrl.replace(/^(.+com).*\\/(.+)$/,'$1/tp/$2')\n\t}]}\n\n\n//蓝奏云分组链接\nelse{\nmat = baseUrl.match(/^(.*?com)[^##]*\\/(.+)$/)\n\t\turl = mat[1]\n\t\turi = mat[2]\nfunction $(reg){\n\t\treturn uri.match(reg)?true:false\n\t}\n\n\n//get【pwd】(链接提取码)\npwd = \n\n//蓝奏云密码\n$(/##.*/)?  baseUrl.match(/##(.*?)(【|\\,|$)/)[1]:\n\n//‼️Thomas密码。密码写这里也行，列表链接那里不写。\n//‼️$(/b03p9ftpc/)?  \"read\":\n\n\"\";\n\n\n//get 【body】\neval(src.match(/var pgs;([\\s\\S]*?pgs.+;)/)[1])\neval('body=\"\";$='+src.match(/data :([\\s\\S]*?\\})/)[1])\nfor(key in $)body+=key+'='+$[key]+'&';\nbody=String(body).replace(/&$/,'')\n\n\n//补全【url】\nurl += `/filemoreajax.php,{\"method\":\"POST\",\"body\":\"${body}\",\"uri\":\"${uri}\"}`\n\n\n//ajax\n$=JSON.parse(java.ajax(baseUrl=url));\n$=$.text!=0?$.text:\n\n//密码错误提示\n[{name_all:$.info,time:uri+$.info,url:uri+$.info}];\n}\n\n}}\njava.put('url', baseUrl)\n$.map($=>JSON.stringify($))",
    "ruleDescription": "❗️0、0、开始❗️\n111\n❗️0、0、结束❗️❗️0、1、开始❗️\n<title>{{$.name_all}}</title><style>\ninput{\n\toutline:0;\n\ttext-indent:10px;\n\tborder:1px solid #000;\n\twidth:60%;\n\theight:35px;\n\tposition:absolute;\n\ttop:35%;\n\tleft:10%;\n\tborder-top-left-radius:10px;\n\tborder-bottom-left-radius:10px\n}\nbutton{\n\toutline:none;\n\twidth:20%;\n\theight:35px;\n\tposition:absolute;\n\ttop:35%;\n\tright:10%;\n\tborder-top-right-radius:10px;\n\tborder-bottom-right-radius:10px\n}\nh3{text-align:center}\n</style>\n\n\n<br><h3>帮你导入</h3>\n<input type=\"text\" id=\"src\" placeholder=\"输入正确的资源链接...\">\n<button onclick=\"clickme()\">一键导入</button>\n<iframe id=\"iframe\" src=\"\" hidden></iframe>\n\n<script>\nfunction clickme(){\n\tdocument.getElementById('iframe').src = \"legado://import/auto?src=\"+document.getElementById('src').value\n}\n</script>\n❗️0、1、结束❗️\n\n{{}}@js:\nurl=String(java.getString('$.url'))\n\n//一键导入html\nif(url.match(/^📥/)){\nurl=String(url).replace('📥','')\n\nurl=url.match(/^legado\\:\\/\\//)?url:'legado://import/auto?src='+url\n\n\nresult=`<title>{{$.name_all}}</title>\n<iframe src=\"${url}\" hidden></iframe>\n<br><h3>{{$.name_all}}</h3>\n<h5>导入不成功？多导入几次试试</h5>\n<h6><b>\n↓资源链接，点击复制\n<a href=\"${url}\">一键导入</a>\n<textarea id=\"copy\" onclick=\"copy()\">${String(url).replace(/legado.*?src=/,'')}</textarea>\n{{$.time}}\n</b></h6><style>\na{float:right;text-decoration:none}\nh3,h5{text-align:center}\nh6{margin:0 2;position:sticky;top:30%}\ntextarea{width:100%;border-radius:5px}\n</style><script>\nfunction copy(){\n\tdocument.getElementById('copy').select()\n\tdocument.execCommand('copy')\n\talert(\"复制成功\")\n}\n</script>`}\n\n//自定义html\nelse if(url.match(/\\d+、\\d+、/)){\nreg=new RegExp('❗️'+url+'开始❗️\\\\s*([\\\\s\\\\S]+?)\\\\s*❗️'+url+'结束❗️')\n\n//默认禁用放大缩小按钮\nresult=result.match(reg)?'<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">'+result.match(reg)[1]:'<br>未找到对应html'\n}else{result=''}",
    "ruleImage": "$.uri\n@js:\n\nu=String(java.get('url'));\nuri = String(result) || (u.match(/uri\":\"([^\"]+)/)?u.match(/uri\":\"([^\"]+)/)[1]:\"\");\n\nfunction $(reg){\n\t\treturn uri.match(reg)?true:false\n\t}\n\nsrc =\n//蓝奏云列表图标\n$(/【[^】]/)? baseUrl.match(/【(.*?)(】|$)/)[1]:\nuri ;\n\n\nsrc.match(/http/)?  src:\n\njava.getString(\"$.name_all\").match(/本地/) ? \"https://agit.ai/yd/green/raw/branch/o/bd.png\" :\n\njava.getString(\"$.name_all\").match(/单仓|215613905|taka|q版/) ? \"https://agit.ai/yd/green/raw/branch/o/dc1.png\" :\n\njava.getString(\"$.name_all\").match(/可视|影视仓|影音壳子|多仓/) ? \"https://agit.ai/yd/green/raw/branch/o/dc2.png\" :\n\n//4⃣️423 简写补全\nbaseUrl.match(/423down/)?  \"https://agit.ai/yd/green/raw/branch/o/4.jpg\":\n\n//一程图标简写补全\nsrc.match(/^\\//)?  `https://gitee.com/i-c/tc/raw/master/dy/yd${src}` :\n\n//md agit仓图片简写补全\nsrc.match(/^[^/]*\\./)? `https://agit.ai/yd/green/raw/branch/o/${src}`:\n\n//默认图标：APK图标\n\"https://agit.ai/yd/green/raw/branch/o/apk.jpg\"",
    "ruleLink": "$.id@js:\nurl=`{{$.url}}`\nif(result)url+=`/tp/{{$.id}}`;\nString(url).replace(/^蓝奏链接(.+com).*\\/(.+)/,'$1/tp/$2').replace(/^..导入/,'')",
    "ruleNextPage": "@js:\ntry{\n\t\tu = String(java.get('url'))\n\t\tp = u.match(/pg=(\\d+)&/)[1]\n\t\tp = 'pg='+(parseInt(p)+1)+'&'\n\t\turl = u.replace(/pg=(\\d+)&/,p)\n\t}\ncatch(err){url=\"\"}\nurl",
    "rulePubDate": "💾 {{$.icon}}　📥 {{$.size}}　⏱️ {{$.time}}\n##💾 　📥 　⏱️\\s*",
    "ruleTitle": "$.name_all",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "破解游戏::https://www.lanzoui.com/b053xt4vg\nHs团队破解游戏::https://pan.lanzoui.com/b888887\nBhVip::https://pan.lanzoui.com/u/彪煌qq1846055318\n大肥::https://pan.lanzoui.com/u/qianxun8\n兜兜游戏::https://www.lanzoui.com/b897234\n软件库::https://www.lanzoui.com/u/rjk\n安卓软件::https://www.lanzoui.com/u/langman666\n滚哥::https://www.lanzoui.com/b838976",
    "sourceComment": "rss by.Thomas。  md小改&收集整理。\n————————\n小说交流群892966579\nA群637775313不加人。若群炸了查看此群群资料找新家。\n\n内容取自网络，仅作学习参考，请24小时内删除。找到感兴趣内容请去支持正版。\n————————\n版权警告，此盘已挂。\n♬歌词适配::https://gcsp.lanzoux.com/b0e895h2b?w1##【yy.png】",
    "sourceGroup": "资源绘",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_52437554_1640934578/256",
    "sourceName": "软件",
    "sourceUrl": "https://www.lanzoux.com/#md3",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 20,
    "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": 1774475170918,
    "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": "美涩",
    "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,
    "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": 1775584959581,
    "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": "美涩",
    "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": "{\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": "<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": "",
    "ruleDescription": "",
    "ruleImage": "$.src",
    "ruleLink": "$.index\n@js:\nif(!result.match(/^http/) && !result.match(/\\d+、\\d+、/)){\nresult=\"https://www.coolapk.com/link?url=\"+encodeURIComponent(result)\n}else{result=result}",
    "ruleNextPage": "",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "❓ 其他::http://www.baidu.com?wd=yuedu://booksource/importonline?src=https://code.gitlink.org.cn/yi-c/yd/raw/branch/master/sy.json【https://gitee.com/i-c/tc/raw/master/dy/yd/sy.png】《书源更新》◎手动点导入｜更新时间：12月06日◎ yuedu://rsssource/importonline?src=https://code.gitlink.org.cn/yi-c/yd/raw/branch/master/dy.json【https://gitee.com/i-c/tc/raw/master/dy/yd/dy.png】《订阅更新》◎手动点导入｜更新时间：12月06日◎ https://code.gitlink.org.cn/yi-c/yd/src/branch/master/README.md【https://gitee.com/i-c/tc/raw/master/dy/yd/fb.png】《书源发布》◎一程｜书源、订阅发布更新日志◎ https://kunfei.lanzoux.com/b0f810h4b【https://gitee.com/i-c/tc/raw/master/dy/yd/gx.png】《阅读3.0测试版》◎最新版、google版、共存版下载◎ http://yuedu.miaogongzi.net/gx.html【https://gitee.com/i-c/tc/raw/master/dy/yd/yj.png】《大佬云集》◎喵公子｜书源管理、大佬云集◎ http://yd.mgz6.cc/【https://gitee.com/i-c/tc/raw/master/dy/yd/bg.png】《阅读下载》◎喵公子｜开源阅读下载◎ https://www.yuque.com/legado【https://gitee.com/i-c/tc/raw/master/dy/yd/yq.png】《阅读手册》◎使用说明、源制作、官方公告。◎ https://legado.cc/【https://gitee.com/i-c/tc/raw/master/dy/yd/yd3.png】《阅读论坛》◎阅读交流论坛◎ https://data.newrank.cn/m/s.html?s=NykyOzI9MS5LNQ%3D%3D【https://gitee.com/i-c/tc/raw/master/dy/yd/ydlogo.png】《🔎阅读》◎开源阅读公众号-号内搜索◎ http://www.yckceo.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/yck.png】《源仓库》◎阅读书源仓库◎ https://yuedu.juhua.fun/tool【https://gitee.com/i-c/tc/raw/master/dy/yd/fxmh.png】《发现美化》◎阅读｜正则小工具◎ https://gualemang.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/wzglm.png】《网站挂了吗》◎网站宕机检测工具◎ https://m.w3cschool.cn/regex_rmjc/regex_rmjc-n5a328cn.html【https://gitee.com/i-c/tc/raw/master/dy/yd/bcs.png】《正则表达式》◎w3cschool编程狮◎\n\n\n🌟 拾遗::https://data.newrank.cn/m/s.html?s=Py8yOTE5KDE4【https://gitee.com/i-c/tc/raw/master/dy/yd/xssy.png】《🔎小说拾遗》◎小说拾遗公众号-号内搜索◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319671603470581762&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://gitee.com/i-c/tc/raw/master/dy/yd/sd.png】《精选书单》◎主推优质完结和连载100万字以上小说◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319666229510193155&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://gitee.com/i-c/tc/raw/master/dy/yd/xs.png】《潜力新书》◎主推大神新书和20～100万字的优质新书◎ http://mp.weixin.qq.com/mp/homepage?__biz=MzI2MDg2NjAwMg==&hid=11&sn=c55d27329c109430838bc5b5f5b615b7&scene=18#wechat_redirect【https://gitee.com/i-c/tc/raw/master/dy/yd/gf.png】《高分必看》◎高分完本合集◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319668267623170050&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://gitee.com/i-c/tc/raw/master/dy/yd/wj.png】《近期完结》◎主推近一段时间内优质的完结小说◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319673664333463554&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://gitee.com/i-c/tc/raw/master/dy/yd/np.png】《女频书单》◎主推女频优质小说◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319675692849872897&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://gitee.com/i-c/tc/raw/master/dy/yd/hg.png】《后宫精选》◎后宫精选合集◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI2MDg2NjAwMg==&action=getalbum&album_id=1651826809002328065#wechat_redirect【https://gitee.com/i-c/tc/raw/master/dy/yd/nt.png】《年终推荐》◎精选优质完结和连载100万字以上小说◎\n\n\n⚡ 赤戟::https://mp.weixin.qq.com/mp/homepage?__biz=MzI5NTA4NjgwNw==&hid=1&sn=0fcecdc85b8c23e596880f8c895b901d&scene=18&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=59&session_us=gh_2aa0f3c6dd8f&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://gitee.com/i-c/tc/raw/master/dy/yd/cjdshjjs.png】《赤戟的书荒救济所》◎最新热门分类◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319454340050157569&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://gitee.com/i-c/tc/raw/master/dy/yd/sd.png】《网文书单》◎每期三本-新书速递、养肥佳作、完本好书◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319393737944170497&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://gitee.com/i-c/tc/raw/master/dy/yd/fl.png】《分类推书》◎分类大盘点◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319471313224040448&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://gitee.com/i-c/tc/raw/master/dy/yd/jx.png】《澎湃精选》◎超过50万字，连载或完本的优秀作品◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1325500020388626432&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://gitee.com/i-c/tc/raw/master/dy/yd/sj.png】《优书数据》◎月度大数据推书◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1333946780098330626&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://gitee.com/i-c/tc/raw/master/dy/yd/zt.png】《网文杂谈》◎一些吃瓜趣闻，网文闲谈◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1526356920989712387&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://gitee.com/i-c/tc/raw/master/dy/yd/nd.png】《年度盘点》◎年度盘点各分类中诞生的新书、完本书◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319335766203662337&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://gitee.com/i-c/tc/raw/master/dy/yd/qs.png】《网文趣事弹》◎各类和网文相关的趣事-每月一期◎\n\n\n📊 书单::https://vt.sm.cn/api/novelStarReco/index【https://gitee.com/i-c/tc/raw/master/dy/yd/xyts.png】《星云推书》◎书荒搜书神器◎ https://shenmezhidedu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/smzdd.png】《什么值得读》◎互联网人的书单库◎ https://www.yousuu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/ysbd.png】《优书网》◎优书网书单◎ https://www.tuishujun.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/tsj.png】《推书君》◎书荒求书就找推书君◎ https://quark.sm.cn/api/rest?method=Novelnew.home&format=html&schema=v2&gender=male&cate=%E5%85%A8%E9%83%A8&rank=rank_hot&pv=2420440【https://gitee.com/i-c/tc/raw/master/dy/yd/kkbd.png】《夸克榜单》◎夸克浏览器小说榜单◎ https://m.baidu.com/sf?openapi=1&dspName=iphone&dsp=iphone&from_sf=1&pd=bookstore&resource_id=5077&type=2&card_id=5143&word=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&title=%E6%9B%B4%E5%A4%9A%E6%8E%A8%E8%8D%90&tag1=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&lid=11549307334103749569&referlid=11549307334103749569&ms=1&frsrcid=5143&frorder=4【https://gitee.com/i-c/tc/raw/master/dy/yd/bdbd.png】《百度榜单》◎百度浏览器小说榜单◎ https://m.qidian.com/rank/【https://gitee.com/i-c/tc/raw/master/dy/yd/qdbd.png】《起点榜单》◎起点中文网榜单◎ http://saowen.net/【https://gitee.com/i-c/tc/raw/master/dy/yd/swxy.png】《扫文小院》◎🔎登录｜耽美小说扫文网站◎ https://www.basequan.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/bsq.png】《芭莳圈》◎好看的言情小说推荐◎\n\n\n💰 正版::https://wap.faloo.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/flxs.png】《飞卢小说》◎同人免费小说在线阅读与下载◎ https://h5.17k.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/17kxs.png】《17K小说》◎集创作、阅读于一体的在线阅读网站◎ https://m.qidian.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/qdzw.png】《起点中文》◎阅文集团旗下网站◎ https://wap.jjwxc.net/【https://gitee.com/i-c/tc/raw/master/dy/yd/jjwx.png】《晋江文学》◎女性网络文学原创基地◎ https://m.zongheng.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/zhzw.png】《纵横中文》◎最热门的免费小说网站◎ http://m.shuhai.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/shxs.png】《书海小说》◎书海小说网◎ http://www.xmkanshu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/xmks.png】《熊猫看书》◎好看的小说阅读网站◎ https://m.zhangyue.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/zy.png】《掌阅》◎好看的原创小说网◎ https://t.shuqi.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/sqxs.png】《书旗小说》◎阿里巴巴集团旗下阅读平台◎ https://wap.cmread.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/mgyd.png】《咪咕阅读》◎原创网络文学◎ https://yd.baidu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/bdyd.png】《百度阅读》◎全网最全小说，让时间更有价值◎ https://ubook.reader.qq.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/qqyd.png】《QQ阅读》◎QQ阅读官方网站◎ https://www.ihuaben.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hbxs.png】《话本小说》◎首创气泡对话小说，写小说原创社区◎ https://wenxue.m.iqiyi.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/aqywx.png】《爱奇艺文学》◎影视原著小说推荐◎ https://m.xxsy.net/【https://gitee.com/i-c/tc/raw/master/dy/yd/xxsy.png】《潇湘书院》◎免费言情小说◎ https://m.gongzicp.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/cpwx.png】《长佩文学》◎更懂你的女性向阅读交流平台◎ https://m.hongxiu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hxtx.png】《红袖添香》◎阅文集团旗下网站◎ http://h5.lc1001.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/lcds.png】《连城读书》◎华语原创小说旗帜门户◎ http://m.cread.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/zwsc.png】《中文书城》◎热门的网络小说◎ https://m.youdubook.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/ggyd.png】《咕咕阅读》◎有毒小说网◎ http://wap.hanwujinian.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hwjn.png】《寒武纪年》◎原创耽美小说有声广播剧◎ https://m.ruochu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/rcwx.png】《若初文学》◎好看的小说推荐◎ https://m.hongshu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hsyd.png】《红薯阅读》◎红薯中文网◎ https://m.sfacg.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/sfqxs.png】《SF轻小说》◎SF轻小说网◎\n\n\n🌏 图文::http://m.wufazhuce.com/index【https://gitee.com/i-c/tc/raw/master/dy/yd/oneyg.png】《一个》◎ONE·图文阅读◎ https://www.jianshu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/js.png】《简书》◎优质的创作社区◎ http://g2.ltfc.net/category【https://gitee.com/i-c/tc/raw/master/dy/yd/zhzb.png】《中华珍宝》◎中华珍宝馆◎ https://digicol.dpm.org.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/ggbwy.png】《故宫博物院》◎数字文物库◎ http://pf.bigpixel.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/qyxskzg.png】《千亿像素看中国》◎景坤科技·放大万倍体验中国城市◎\n\n\n📜 历史::http://m.qulishi.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/qlsw.png】《趣历史网》◎历史朝代表百科知识◎ http://m.y5000.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/zglsw.png】《中国历史网》◎全面的历史知识阅读◎ https://www.ageeye.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/gch.png】《观沧海》◎地图分享知识◎ https://m.allhistory.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/qls.png】《全历史》◎弘扬中国传统文化◎\n\n\n📄 阅读::http://lib.xcz.im/【https://gitee.com/i-c/tc/raw/master/dy/yd/xcz.png】《西窗烛》◎中华诗词库◎ https://www.gushiji.cc/【https://gitee.com/i-c/tc/raw/master/dy/yd/gsj.png】《古诗集》◎古诗词大全名句等◎ https://m.gushiwen.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/gsww.png】《古诗文网》◎古诗文经典传承◎ http://m.httpcn.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hcw.png】《汉程网》◎专业中国传统文化网站◎ https://5000yan.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/5000y.png】《5000言》◎国学经典-传统文化◎ https://meiriyiwen.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/mryw.png】《每日一文》◎每日一文官网◎ https://m.mingyantong.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/myt.png】《名言通》◎美句佳句大全◎ https://sou-yun.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/scdq.png】《诗词》◎诗词大全◎ https://web.dudianji.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/ddj.png】《读典籍》◎文白对照读典籍◎ https://m.rain8.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/yfx.png】《雨枫轩》◎原创文学|小说|散文|杂文|诗歌|中外名著◎ https://m.zbyw.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/zby.png】《字博缘》◎文言文|诗词赏析|汉语辞海◎\n\n\n📝 教育::https://le.ouchn.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/zsjypt.png】《终身教育平台》◎国家终身教育平台◎ http://www.dxzy163.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/dxzyw.png】《大学资源网》◎课程培训与视频教程◎ https://www.zxx.edu.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/zhjy.png】《智慧教育》◎国家中小学智慧教育平台◎ http://m.haoduoyun.cc/【https://gitee.com/i-c/tc/raw/master/dy/yd/hddzkb.png】《好多电子课本》◎中小学师生在线阅读教材◎ http://www.jiaoshi100.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/xkbdyw.png】《作文指北》◎新课标大语文◎ https://m.ruiwen.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/rww.png】《瑞文网》◎经典美文、教学资源、实用文档◎ https://m.51test.net/【https://gitee.com/i-c/tc/raw/master/dy/yd/wykw.png】《无忧考网》◎学习资源门户网站◎ https://m.5068.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/5068jxzyw.png】《5068教学资源网》◎教学资源共享平台◎ https://m.ppzuowen.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/ppzw.png】《皮皮作文》◎小学生作文网◎ https://m.thn21.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hyw.png】《华语网》◎由24位语文老师倾力打造的语文教育站点◎ https://m.diyifanwen.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/dyfww.png】《第一范文网》◎日常写作指导、作文参考◎ https://m.riji.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/rjdq.png】《日记大全》◎小学生日记大全网◎ https://m.meiwen.com.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/mwyd.png】《美文阅读》◎足不出户阅尽天下美文◎ https://www.guidaye.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/zwdq.png】《作文大全》◎鬼大爷鬼故事作文网◎\n\n\n🐾 儿童::http://www.tonghuaba.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/thgs.png】《童话故事》◎童话故事大全◎ http://gs.seeol.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/gsdq4.png】《故事大全》◎童话、爱情、历史等故事大全◎ https://gushi.1or9.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/gsdq3.png】《故事大全》◎10多种小故事分类大全◎ https://www.gushidaquan.com.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/gsdqw1.png】《故事大全网》◎经典故事大全在线阅读◎ http://m.quangushi.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/gsdqw2.png】《故事大全网》◎精彩丰富的儿童故事◎ https://wap.xigushi.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/xgs.png】《小故事》◎小故事大全◎ https://www.qigushi.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/qgs.png】《七故事》◎儿童睡前故事大全◎ https://m.61ertong.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/lyetw.png】《六一儿童网》◎儿歌视频大全◎ https://www.gushi365.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/gs365.png】《故事365》◎儿童故事大全◎ http://mip.55555333.cc/【https://gitee.com/i-c/tc/raw/master/dy/yd/53gsw.png】《53故事网》◎人生哲理经典小故事◎ https://m.pcbaby.com.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/tpyqzw.png】《太平洋亲子网》◎健康育儿、品质生活◎\n\n\n📥 下书::https://new.shuge.org/【https://gitee.com/i-c/tc/raw/master/dy/yd/sg.png】《书格》◎有品格的数字古籍图书馆◎ http://zxcs.me/【https://gitee.com/i-c/tc/raw/master/dy/yd/zxcs.png】《知轩藏书》◎藏尽网络中最好的精校小说◎ https://m.zxcs.info/【https://gitee.com/i-c/tc/raw/master/dy/yd/zxjj.png】《知轩精校》◎精校小说◎ https://m.huangdizhijia.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hdzj.png】《皇帝之家》◎精品全本电子书◎ https://book.gouyg.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/ggdzs.png】《狗狗电子书》◎小说下载、电子书搜索◎ http://m.s5l.com/index.php?c=home【https://gitee.com/i-c/tc/raw/master/dy/yd/xssq.png】《小说社区》◎精校小说社区◎ http://m.zntxt.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/znxs.png】《宅男小说》◎完结小说下载◎ http://m.jjxsz.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/swxs.png】《搜我小说》◎TXT全本小说下载◎ https://sj.qubook.cc/【https://gitee.com/i-c/tc/raw/master/dy/yd/qsw.png】《手机趣书》◎免费TXT小说下载◎ http://m.84sk.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/bssk.png】《巴士书库》◎言情小说下载◎ https://www.15huang.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/shw.png】《书荒网》◎完结小说推荐和TXT小说下载◎ https://m.zei8.vip/【https://gitee.com/i-c/tc/raw/master/dy/yd/zbw.png】《贼吧网》◎（旧书）全本精校小说下载◎ http://www.12z.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/mfxs.png】《免费小说》◎精校、完结、无错小说下载◎ https://www.qiantxt.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/qsxs.png】《千书小说》◎完本小说TXT下载站◎ https://m.ijjxs.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/ajjxs.png】《爱久久小说》◎电子书资源免费下载◎ https://www.jingjiaoba.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/jjb.png】《精校吧》◎校对全本TXT小说下载◎ https://www.downtxts.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/txtxz.png】《TXT下载》◎TXT小说网盘下载◎ https://noveless.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/shbl.png】《书荒部落》◎精校全本◎ https://www.sxpdf.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/sxtx.png】《书行天下》◎PDF电子书学习下载站◎ https://tuostudy.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/toxx.png】《图欧学习资源库》◎B站某UP主整合的学习资源◎\n\n\n🎧 有声::http://m.ysxs8.vip/【https://gitee.com/i-c/tc/raw/master/dy/yd/ysxsb.png】《有声小说吧》◎有声小说◎ https://m.70ts.cc/【https://gitee.com/i-c/tc/raw/master/dy/yd/tsb.png】《麒麟听书》◎有声小说◎ http://m.tingshubao.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/tsb.png】《听书宝》◎有声小说◎ http://m.ting74.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/tsb.png】《74听书》◎有声小说◎ http://m.ting56.cc/【https://gitee.com/i-c/tc/raw/master/dy/yd/56ts.png】《56听书》◎有声小说◎ https://m.tingzh.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/zwts.png】《中文听书》◎有声小说◎ https://www.qmtsw.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/qmts.png】《全民听书》◎有声小说◎ https://mitingshu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/xmts.png】《小米听书》◎有声小说◎ http://m.ixinmo.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/xmts1.png】《心魔听书》◎有声小说◎\n\n\n📖 小说::https://kukecun.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/kkc.png】《酷客村》◎🎉优选｜传统文学、网络文学◎ http://m.kujiang.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/kjw.png】《酷匠网》◎手机阅读｜精品阅读时光◎ https://m.9kus.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/jkwx.png】《九库文学》◎🎉优选｜免费小说阅读网站◎ https://m.xuribook.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/xrxs.png】《旭日小说》◎🎉优选｜网络小说、耽美小说◎ https://m.56ting.net/【https://gitee.com/i-c/tc/raw/master/dy/yd/56tsw.png】《56听书网》◎🎉优选｜56听书免费小说阅读网◎ https://m.aiazw.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/aasw.png】《爱爱书屋》◎广大网络小说爱好者必备的小说◎ https://www.henhaoso.org/【https://gitee.com/i-c/tc/raw/master/dy/yd/htss.png】《海棠搜书》◎💗女频｜自由的小说搜索网站◎ https://m.fmias.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/aeyq.png】《AE言情》◎💗女频｜言情小说网◎ http://m.ndlib.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/ydyd.png】《移动阅读》◎📚出版｜公共数字文化工程移动阅读◎ https://www.mzhu8.com/wap/【https://gitee.com/i-c/tc/raw/master/dy/yd/mzyd.png】《名著阅读》◎📚出版｜全本名著小说阅读网◎ https://www.yodu.org/【https://gitee.com/i-c/tc/raw/master/dy/yd/ydzww.png】《有度中文》◎🔎登录｜汇集精品图书小说◎ https://next.acgdmzy.com/home【https://gitee.com/i-c/tc/raw/master/dy/yd/qsj.png】《轻书架》◎🔎登录｜轻小说发布地◎\n\n\n🎨 漫画::http://www.vomicmh.com/#/home【https://gitee.com/i-c/tc/raw/master/dy/yd/vomic.png】《vomic漫画》◎漫画聚合◎ https://m.dongmanmanhua.cn/【https://gitee.com/i-c/tc/raw/master/dy/yd/dmmh.png】《咚漫漫画》◎全球数字漫画服务平台◎ https://m.dmzj.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/dmzj.png】《动漫之家》◎海量漫画在线看◎ http://m.sixmh7.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/lmhw.png】《六漫画网》◎六漫画免费在线观看◎ https://m.bnmh.cc/【https://gitee.com/i-c/tc/raw/master/dy/yd/bnmh.png】《百年漫画》◎言情漫画、少女爱情等类型的漫画◎ https://cn.baozimh.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/bzmh.png】《包子漫画》◎超多优质漫画阅读◎ https://m.ythuiju.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/pfmh.png】《扑飞漫画》◎主打免费漫画阅读◎ https://m.hmba.vip/【https://gitee.com/i-c/tc/raw/master/dy/yd/hmb.png】《韩漫吧》◎免费的韩漫网◎ http://qiman56.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/qmw.png】《奇漫屋》◎当下热门漫画免费观看◎ https://m.zuimh.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/zmh.png】《最漫画》◎热血漫画、科幻漫画、武侠漫画◎ https://kanmanhuala.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/kmhl.png】《看漫画啦》◎土豪漫画-最新漫画大全◎ https://m.123gf.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/gfmh.png】《古风漫画》◎古风漫画、言情漫画、少女爱情◎\n\n\n☯ 玄学::http://m.daorenjia.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/drj.png】《道人家》◎中华道藏◎ http://www.daizhige.org/【https://gitee.com/i-c/tc/raw/master/dy/yd/dzg.png】《殆知阁》◎经典藏书◎ https://www.ifreesite.com/scriptures/book.htm【https://gitee.com/i-c/tc/raw/master/dy/yd/ddd.png】《道道道》◎道神道，非人道。明不明，非常明。◎ https://www.1tiaolu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/ytl.png】《一条路》◎武术秘籍、武术大全◎ https://m.hrfjw.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hrfj.png】《华人佛教》◎传播正信正知佛法的佛教网站◎ https://m.12ky.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hrky.png】《华人开运》◎风水、起名、解梦、生肖、星座◎\n\n\n👻 异闻::https://www.cbaigui.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/jy.png】《纪妖》◎中国妖怪百集◎ https://www.xn--cjztj18l.com/forum.php?mod=guide&view=newthread【https://gitee.com/i-c/tc/raw/master/dy/yd/smw.png】《神秘网》◎神秘事件综合网站◎ http://www.lingyi.org/【https://gitee.com/i-c/tc/raw/master/dy/yd/zgly.png】《中国灵异》◎真实灵异事件网站◎ https://www.186317.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/ggszj.png】《鬼故事之家》◎鬼故事在线阅读◎ https://www.guidaye.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/gdy.png】《鬼故事网》◎原创短篇鬼故事◎ http://www.gsw888.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/gsdq1.png】《故事大全》◎精选世界各地故事◎",
    "sourceComment": "//图标yd后面加1可以替换成白底黑字。例：https://gitee.com/i-c/tc/raw/master/dy/tb/yd1.png",
    "sourceGroup": "书源",
    "sourceIcon": "https://i.postimg.cc/8c7khTBp/ytstZ4.gif\n",
    "sourceName": "阅读ʏᴰ",
    "sourceUrl": "阅读合集",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 22,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\t\"referer\":\"http://android.jjwxc.net/?v=357\",\n\t\"versionCode\":\"357\",\n\t\"versiontype\":\"reading\",\n  \"User-Agent\": \"Dalvik/2.1.0\"\n}",
    "injectJs": "let AppidE = document.getElementById(\"app\")\n\nif(AppidE){\n    AppidE?AppidE.remove():null;\n// 获取书籍链接\n\t\tbookid = String(window.location.href).replace(/^.*\\//,'');\n\t\tbooksrc = \"http://app-cdn.jjwxc.net/androidapi/novelbasicinfo?novelId=\"+bookid;\n\t\t\nbooksrc = `legado://import/addToBookshelf?src=${encodeURIComponent(booksrc)}`;\n\t\n\t\t//获取书籍名称\ntitle = document.querySelector(\".big.o\")?document.querySelector(\".big.o\").innerText.replace(/首页>/,''):\"\";\n\n//获取作者名称\nauthor = document.querySelector(\".authorname-content a\")?document.querySelector(\".authorname-content a\").innerText:\"\";\n\ncreate(title,\"addBookshelf\",14,booksrc);\ncreate(title,\"bookName\",18)\ncreate(author,\"bookAuthor\",22)\n\n function create(name,type,top,url){\n \t    type = type+\"=\"+name;\n \t    url = url!=undefined?url+\"#\"+type:\"\";\n \t    \n     let \ttypebutton;\n     if(/bookName/.test(type)){\n     \t    typebutton=\"搜索书名\"\n     \t}else if(/bookAuthor/.test(type)){\n     \t\t   typebutton=\"搜索作者\"\n     \t}else{\n     \t\t\t   typebutton=\"加入书架\"\n     \t}\n    \n    \tlet Url = location.search!=\"\"?location.search.replace(/&*book[AN].*?=.*/,'')+\"&\"+type:window.location.pathname+\"?\"+type;\n    \turl = url!=\"\"?url:Url;\n    \tconsole.log(url);\n    \tA = document.createElement(\"a\");\n\t\t A.href =url.replace(/#addBookshelf.*/,'')\n\t\t     \n\t\tA.innerHTML = `<button style=\"outline:none; position:fixed; top:${top}%; right:7%; z-index:999; border-radius:5px; color:#166188;background:#fff;padding:4px;border:1px solid #000\"><b>${typebutton}</b></button>`;\n\t\t\n    \tdocument.body.appendChild(A);\n \t}\t    \n }",
    "jsLib": "function getBooklist(list,src){\n    let html=\"\";\n    let alllist = list.recommend_novelinfo ?? list;\n    let json = src?JSON.parse(src):{};\n    json = json?.data?.booklist_desc ?? {}\n    for(let i in alllist){\n        let $ = alllist[i];\n        let novelid = $.novelid;\n        let cover = ($.cover || (\"https://i9-static.jjwxc.net/novelimage.php?novelid=\"+novelid)).replace(/https?/,'https');\n        let cover2 = \"https://i9-static.jjwxc.net/novelimage.php?novelid=\"+novelid;\n        let novelname = $.novelname;\n        let authorname = $.authorname;\n        let novelstep_name = $.novelstep_name || $.novelstep_str || $.novelstep;\n        let novelsize = $.novelsize;\n        let novel_review_score = $.novel_review_score || ($.fav_count_str==undefined?\"\":$.fav_count_str+\"收藏\");\n        let novelstar = $.novelstar || 0;\n        let s=\"\";\n        for(i=0;i<novelstar;i++){s+=\"★\"}\n        novelstar=s;\n        let novelintroshort = $.novelintroshort;\n        let comment = $.comment || $.commentbody || \"\";\n        comment = this.replaceEmoticons(comment? comment.replace(/\\s*(.*)\\n/g,'&emsp;&emsp;$1<br>').replace(/<br>(?!&emsp)/gm,'<br>&emsp;&emsp;').replace(/null/g,''):\"\");\n        let novelclass_str = $.novelclass_str || (\"第\"+$.chapterid+\"章  打分：\"+$.commentmark+\"分  订阅率：\"+($?.subscription_rate_info?.rate??\"\")+($?.subscription_rate_info?.iconapp==\"rate_novelallbuy\"?\"100%\":\"\"));\n        novelclass_str = novelclass_str.replace(/订阅率：$/,'');\n        let onclickOpen = json.reader_name?` onclick=\"openS('${json.reader_name}','${json.readerid}')\"`:\"\";\n        \n        html +=`\n            <div class=\"book\">\n                <div class=\"bookdes\">\n                 <div class=\"pic\" onclick=\"addShelf('${novelid}')\" href=\"javascript:;\">\n                     <img src=\"${cover}\" referrerpolicy=\"no-referrer\" onerror=\"if(this.src!='${cover2}')this.src='${cover2}'\">\n                 </div>\n                 <div class=\"details>\n                      <p class=\"bookname\">\n                          <span class=\"name\">\n                             <a href =\"https://m.jjwxc.net/book2/${novelid}\">${novelname}</a>\n                          </span>\n                          <br>\n                          <span class=\"author\" onclick=\"window.open('https://m.jjwxc.net#bookAuthor=${authorname}')\">\n                             ——${authorname}\n                          </span>\n                      </p>    \n                      <p class=\"tag\" onclick=\"window.open('https://m.jjwxc.net#bookName=${novelname}')\">\n                      <br>\n                      ${novelsize}•${novelstep_name}•${novel_review_score} 🔎<br><br>\n                        ${novelintroshort}<br><br>\n                        ${novelclass_str}<br><br>\n                        ${novelstar}\n                      </p>             \n                 </div>             \n                 </div>\n                     ${comment ? `<div class=\"comment\" style=\"margin-top:1px\"${onclickOpen}>`+comment+\"</div>\":\"\"}\n            </div>     \n            `;                \n    }\n    let floor_reply_all = list.floor_reply_all ?? [];\n    let floor_reply_html = \"\";\n    floor_reply_all.forEach(x=>{\n         let onclickOpen = ` onclick=\"openS('${x.nickname}','${x.readerid}')\"`\n        floor_reply_html += `<span style=\"color:#3A9DBF\"${onclickOpen}>${x.nickname}：</span>${x.body}<br>`;\n      });\n   if(floor_reply_all.length)floor_reply_html =  `<div class=\"comment\" style=\"background:#eee\">${floor_reply_html}</div>`;\n    return this.replaceEmoticons(html+floor_reply_html)\n   }\n\n\n\nfunction replaceEmoticons(t) {\n    const n = t => `<img class=\"ef\" src=\"https://i9-static.jjwxc.net/tmp/emoji/${t}.png\"/>`,\n        o = {'狗头': n('dog'),'星星眼': n('star'),'亲亲': n('kiss'),'害羞': n('shy'),'坏笑': n('bad_smile'),'爱心眼': n('love_heart'),'让我康康': n('look'),'加油': n('go'),'撒花': n('flower'),'奶茶': n('milk'),'彩虹屁': n('rainbow'),'笑哭': n('laugh'),'爆哭': n('cry'),'托腮': n('sigh'),'问号': n('question'),'闭嘴': n('shut'),'白眼': n('eyes'),'裂开': n('break'),'墨镜': n('20240809171403_66b5dddb9b4a9_201'),'吃瓜': n('20240813133503_66baf08792cb4_971'),'可怜': n('20240813133538_66baf0aa48da0_272'),'摊手': n('20240813133559_66baf0bfe94a8_123'),'化了': n('20240813133734_66baf11eca900_736'),'捂脸偷看': n('20240813133808_66baf140db042_203'),'哈哈大笑': n('20250327162728_67e50bf002312_926'),'摸头': n('20250327162816_67e50c2004946_460'),'抱抱': n('20250327162653_67e50bcdc4107_345'),'哦哦哦': n('20250327162901_67e50c4d70e05_616'),'无奈': n('20250327163425_67e50d916f9f7_934'),'捂脸笑哭': n('20250327162314_67e50af266b86_726'),'眼镜': n('20250513142108_6822e4d4908c7_855'),'好的': n('20250513142306_6822e54a95fec_363'),'求你了': n('20250513142345_6822e5719d933_198'),'求求你了': n('20250513142416_6822e59075a3b_751'),'小丑': n('20240813134155_66baf223161c9_172'),'猫头': n('20240813134245_66baf2554d0c0_482'),'三花猫头': n('20240813134304_66baf2688507d_882'),'垂耳兔头': n('20240813134345_66baf29111f22_694'),'竖耳兔头': n('20240813134441_66baf2c986c2b_931'),'熊猫头': n('20240813134502_66baf2deb9a59_203'),'害怕': n('fear'),'愤怒': n('anger'),'菜狗': n('20240813134018_66baf1c223617_332'),'狗头叼玫瑰': n('20250513142003_6822e493665f5_485'),'抱大腿': n('20260204135809_6982dff14e77e_333'),'加载ing': n('20260204140413_6982e15d2793a_774'),'抠脑壳': n('20260204140336_6982e138332f7_280'),'吐血': n('20260204140451_6982e1831a3eb_940'),'躺平': n('20260204140510_6982e1966d57c_902'),'咬手绢': n('20260204140825_6982e259def03_162'),'接': n('20260204140844_6982e26c6b04d_710'),'咦~': n('20260204140948_6982e2ace7d2d_985'),'鸽子': n('dove'),'发财': n('rich'),'好运莲莲': n('20240813132511_66baee37a0048_173'),'玫瑰': n('20240813132550_66baee5e5f847_433'),'橘糖': n('20240813132714_66baeeb282db3_126'),'紫糖': n('20240813132746_66baeed24ae82_531'),'猫爪': n('20240813132824_66baeef888f6a_514'),'药丸': n('20240813132902_66baef1e7590e_674'),'柠檬': n('20240813133018_66baef6a49f76_858'),'烟花': n('20250513142645_6822e6257d8f0_243'),'元宝': n('20250513142558_6822e5f6c2986_398'),'饭饭': n('20250513142708_6822e63c630d3_583'),'空碗': n('20250513142731_6822e653b7bac_594'),'鸡腿': n('20260204143139_6982e7cba82a6_247'),'蛋糕': n('20260204143253_6982e815d10ed_365'),'加一': n('20250513142841_6822e699f2124_862'),'减一': n('20250513142916_6822e6bc011ee_516'),'敲木鱼': n('20260204142929_6982e7493d944_145'),'耳朵': n('20240813133118_66baefa6c51c9_627'),'沙发': n('20260204143209_6982e7e9ea976_665'),'比心': n('hand_heart'),'点赞': n('like'),'鼓掌': n('clap'),'666': n('666'),'摆手': n('wave'),'合十': n('20240813132056_66baed38130c1_545'),'抱拳': n('20250327163246_67e50d2e50aa5_351'),'心碎': n('broken_heart'),'红心': n('red_heart'),'橙心': n('orange_heart'),'黄心': n('yellow_heart'),'绿心': n('green_heart'),'青心': n('cyan_heart'),'蓝心': n('blue_heart'),'紫心': n('purple_heart'),'粉心': n('pink_heart'),'裤子': n('20250513142753_6822e669080b5_216'),'橙裤': n('20251222112949_6948bb2d0c1a0_312'),'黄裤': n('20260204142815_6982e6ffb9231_878'),'绿裤': n('20260204150217_6982eef91613d_152'),'青裤': n('20260204153134_6982f5d665d98_318'),'蓝裤': n('20260204150249_6982ef1911a40_263'),'紫裤': n('20260204150315_6982ef3399d82_820')};\n    return t.replace(/\\[([^\\]]+)\\]/g, (t, r) => o[r.trim()] || t)\n}",
    "lastUpdateTime": 1774770669671,
    "loadWithBaseUrl": true,
    "loginCheckJs": "cache.put(\"jjsdv0201\",1);\nresult",
    "preload": false,
    "preloadJs": "window.java = java;",
    "ruleArticles": "$.data.data[*]||$.data.list[*]||$.data.fav_find_book_list[*]&&$.data.find_book_list[*]&&$.data.fav_list[*]&&$.data.book_list[*]||$.data.recommend[*]%%$.data.find[*]\n<js>\nif(result ==\"[]\"){\n\tresult = JSON.stringify([\n\t{\"title\":\"支持源作者\",\n\t\"url\":`data:pic;base64,PGltZyBzdHlsZT0id2lkdGg6MTAwJSIgc3JjPSJhYm91dDpibGFuayIgb25lcnJvcj0idGhpcy5zcmM9YXRvYignYUhSMGNITTZMeTluYVhSbFpTNWpiMjB2WjNWaGJtVnlNREF4TVRJMUwySnZiMnR6YjNWeVkyVXZjbUYzTDIxaGMzUmxjaThsUlRVbE9VSWxRa1VsUlRjbE9Ea2xPRGN2WjNWaGJtVnlMbmRsWW5BPScpIj4KCg==,{\"type\":\"html\"}`}\n\t])\n\t\n\t}\nresult\n</js>\n$.[*]",
    "ruleContent": "{{java.longToast(\"加载中....\")}}\n<title> {{$.data.booklist_desc.listname}}</title>\n<head>\n  <meta name=\"referrer\" content=\"no-referrer\">\n</head>\n\n\n<div id=\"modalOverlay\" style=\"position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); display: none; justify-content: center; align-items: center;z-index: 1000;\">\n  <div id=\"modalContent\" style=\"width: 300px; background-color: white; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); overflow: hidden;\">\n    <!-- 标题栏 - 作者名字 -->\n    <div style=\"background-color: #f5f8ff; padding: 8px 10px; border-bottom: 1px solid #e6f0ff;\">\n      <div class=\"modalName\" style=\"color: #333; font-weight: bold; font-size: 16px; text-align: center;\"></div>\n    </div>\n    \n    <div style=\"padding: 18px; display: flex; gap: 20px; justify-content: center;\">\n      <button id=\"viewCommentsBtn\" style=\"padding: 12px 20px; background-color: #e6f0fa; border: none; border-radius: 4px; color: #4a89dc; font-weight: 500; cursor: pointer; font-size: 14px; transition: background-color 0.2s;\">💬查看评论</button>\n      <button id=\"viewBooklistBtn\" style=\"padding: 12px 20px; background-color: white; border: 1px solid #e6f0fa; border-radius: 4px; color: #4a89dc; font-weight: 500;cursor: pointer; font-size: 14px; transition: background-color 0.2s;\">📚查看书单</button>\n    </div>\n  </div>\n</div>\n\n<div class=\"booklist_desc\" {{baseUrl.includes(\"getTopTenNovelComment\")?` style=\"display:none\"`:\"\"}}>\n    <p class=\"listname\">\n        <span class=\"level\">\n            &emsp;{{$.data.booklist_desc.level}}级&emsp;\n        </span>\n          {{$.data.booklist_desc.listname}}\n     </p>\n     <span class=\"dateline\">\n         {{$.data.booklist_desc.dateline||$.data.booklist_desc.create_time}}\n     </span>\n     <p class=\"des\">\n         荐书描述 共{{$.data.booklist_desc.booknum}}本\n     </p>\n     <div class=\"introduction\">\n           <p>{{$.data.booklist_desc.introduction}}</p>\n     </div>\n</div>\n<br>\n<br>\n\n<js>\n\ntry{\n   list = JSON.parse(src).data?.novel_lists || JSON.parse(src).data?.booklist_desc?.recommend_novelinfo || JSON.parse(src).data;\n   \n   html = result + '<div class=\"booklists\">'+getBooklist(list,src)+'</div>';\n   result = String(html)\n     .replace(/<div class=\"comment\">\\s*<\\/div>|<span class=\"level\">\\s*&emsp;级&emsp;\\s*<\\/span>/g,'')\n     .replace(/荐书描述 共本/,'');\n   result = replaceEmoticons(result);\n   result = /subjectDetail/.test(baseUrl)?result.replace(/荐书描述 共\\d+本/,'找书描述'):result;\n   result += `\n<script>\nfunction openS(name,id){\n        java.getThemeConfig();\n        let modalOverlay = document.querySelector(\"#modalOverlay\");\n        modalOverlay.style.display = \"flex\";\n        document.querySelector(\".modalName\").textContent = name;\n        modalOverlay.addEventListener('click', () => {\n            modalOverlay.style.display = 'none';\n        });\n        \n        document.querySelector(\"#viewCommentsBtn\").addEventListener('click', () => {\n            let url = \"https://android.jjwxc.net/app.jjwxc/android/reading/comment/getTopTenNovelComment?versionCode=477&reader_id=\"+id+\"&useridentity_check=1\";\n            java.open(\"rss\",url,name+\"的评论\",\"📖晋江书单\");\n        });\n        \n        document.querySelector(\"#viewBooklistBtn\").addEventListener('click', () => {\n            let url = \"https://android.jjwxc.net/app.jjwxc/android/reading/booklist/get?versionCode=477&reader_id=\"+id+\"&type=all\";\n            java.open(\"sort\",url,name+\"的书单\",\"📖晋江书单\");\n        });\n}\n \n var replyManager = {\n        listid: 0,\n        currentPage: 0,\n        totalPages: 0,\n        isLoading: false,\n        isInitialized: false\n    };\n \n \n    function getListIdFromUrl() {\n        var url = window.location.href;\n        var match = url.match(/id=(\\\\d+)/);\n        return match ? match[1] : 0;\n    }\n    \n    \n    ${getBooklist.toString().replace(/this\\./g,'')}\n    ${replaceEmoticons.toString()}\n\n    function fetchWithHeaders(url, options) {\n        var defaultHeaders = {\n            \"referer\": \"https://android.jjwxc.net/?v=357\",\n            \"versionCode\": \"357\",\n            \"versiontype\": \"reading\",\n            \"User-Agent\": \"Dalvik/2.1.0\"\n        };\n        var fetchOptions = options || {};\n        fetchOptions.headers = Object.assign({}, defaultHeaders, fetchOptions.headers || {});\n        if (!fetchOptions.headers.referer) {\n            fetchOptions.headers.referer = defaultHeaders.referer;\n        }\n        return fetch(url, fetchOptions);\n    }\n\n    function loadReplies(page) {\n        if (replyManager.isLoading) {\n            return;\n        }\n\n        replyManager.isLoading = true;\n        if (page === 1) {\n            var loadingIndicator = document.getElementById('loadingIndicator');\n            if (loadingIndicator) loadingIndicator.classList.remove('hidden');\n        } else {\n            var loadMoreBtn = document.getElementById('loadMore');\n            var loadingIndicator = document.getElementById('loadingIndicator');\n            if (loadMoreBtn) loadMoreBtn.classList.add('hidden');\n            if (loadingIndicator) loadingIndicator.classList.remove('hidden');\n        }\n\n        var listid = getListIdFromUrl();\n        if (!listid) {\n            console.error(\"无法获取列表ID\");\n            showError(\"加载失败：无法获取列表ID\");\n            return;\n        }\n\n        var reply_url = \"https://app.jjwxc.org/app.jjwxc/android/reading/BookListFindBook/replyList?versionCode=357&listid=\" + listid + \"&page=\" + page + \"&filter_recommend=0\";\n\n        fetchWithHeaders(reply_url)\n            .then(function(response) {\n                if (!response.ok) {\n                    throw new Error('网络请求失败: ' + response.status);\n                }\n                return response.text();\n            })\n            .then(function(text) {\n                try {\n                    var responseData = JSON.parse(text);\n                    \n                    \n                    var booklistsContainer = document.querySelector('.booklists');\n                    \n                    \n                    if (responseData.data && responseData.data.data && Array.isArray(responseData.data.data)) {\n                        var replies = responseData.data.data;\n                        var replyContainer = document.getElementById('replyContainer');\n                         if(page === 1){\n                         replyContainer.innerHTML = '<br><br>全部讨论（'+responseData.data.total+'）回复<br><br>';\n                    }\n                         \n                        if (!replyContainer && page === 1) {\n                            if (booklistsContainer) {\n                                var booklistsContainer = document.querySelector('.booklists');\n                                replyContainer = document.createElement('div');\n                                replyContainer.id = 'replyContainer';\n                                booklistsContainer.appendChild(replyContainer);\n                                \n                                if (responseData.data.page_count > 1) {\n                                    var loadMoreHTML = '<div id=\"loadMore\" class=\"loading\">' +\n                                        '<span class=\"loading-text\">点击加载更多评论</span>' +\n                                        '</div>' +\n                                        '<div id=\"loadingIndicator\" class=\"loading hidden\">' +\n                                        '加载中...' +\n                                        '</div>' +\n                                        '<div id=\"noMore\" class=\"loading hidden\">' +\n                                        '已加载所有评论' +\n                                        '</div>';\n                                    var loadMoreContainer = document.createElement('div');\n                                    loadMoreContainer.innerHTML = loadMoreHTML;\n                                    booklistsContainer.appendChild(loadMoreContainer);\n                                }\n                            } else {\n                                console.error(\"找不到书籍列表容器\");\n                                return;\n                            }\n                        }\n                        \n                        if (replyContainer) {\n                            var startFloor = (page - 1) * 20; \n                            for (var i = 0; i < replies.length; i++) {\n                                var replyItem = replies[i];\n                                var floor = startFloor + i + 1;\n                                let onclickOpen = \\` onclick=\"openS('$\\{replyItem.nickname}','$\\{replyItem.readerid}')\"\\`;\n                                replyContainer.innerHTML += '<div class=\"comment\">' +\n                                '<span style=\"color:#3A9DBF\"'+onclickOpen+'>' + floor + '楼 '+replyItem.nickname+'</span><br>' + \n                                replaceEmoticons(replyItem.body || '') + \n                                '</div>'+getBooklist(replyItem)+\"<br><br>\"\n                            }\n\n                            if (page === 1) {\n                                replyManager.totalPages = responseData.data.page_count;\n                                replyManager.listid = listid;\n                                replyManager.currentPage = 1;\n                                replyManager.isInitialized = true;\n                                \n                                var loadingIndicator = document.getElementById('loadingIndicator');\n                                if (loadingIndicator) loadingIndicator.classList.add('hidden');\n                                \n                                if (replyManager.totalPages > 1) {\n                                    var loadMoreBtn = document.getElementById('loadMore');\n                                    if (loadMoreBtn) {\n                                        loadMoreBtn.classList.remove('hidden');\n                                        loadMoreBtn.querySelector('.loading-text').textContent = \"点击加载更多评论 (第2/\" + replyManager.totalPages + \"页)\";\n                                        loadMoreBtn.onclick = function() { loadReplies(2); };\n                                    }\n                                }\n                            } else {\n                                replyManager.currentPage = page;\n                                \n                                var loadingIndicator = document.getElementById('loadingIndicator');\n                                var loadMoreBtn = document.getElementById('loadMore');\n                                var noMore = document.getElementById('noMore');\n                                \n                                if (loadingIndicator) loadingIndicator.classList.add('hidden');\n                                \n                                if (replyManager.currentPage >= replyManager.totalPages) {\n                                    if (noMore) noMore.classList.remove('hidden');\n                                } else {\n                                    if (loadMoreBtn) {\n                                        loadMoreBtn.classList.remove('hidden');\n                                        loadMoreBtn.querySelector('.loading-text').textContent = \"点击加载更多评论 (第\" + (replyManager.currentPage + 1) + \"/\" + replyManager.totalPages + \"页)\";\n                                        loadMoreBtn.onclick = function() { loadReplies(replyManager.currentPage + 1); };\n                                    }\n                                }\n                            }\n                        }\n                    } else {\n                        throw new Error('数据格式错误');\n                    }\n                    \n                } catch (e) {\n                    throw new Error('解析数据失败: ' + e.message);\n                }\n            })\n            .catch(function(error) {\n                console.error('加载评论失败:', error);\n                showError(\"加载失败，点击重试\", page);\n            })\n            .finally(function() {\n                replyManager.isLoading = false;\n            });\n    }\n\n    function showError(message, page) {\n        if (page === 1) {\n            var loadingIndicator = document.getElementById('loadingIndicator');\n            if (loadingIndicator) {\n                loadingIndicator.innerHTML = '<span class=\"loading-error\">' + message + '</span>';\n                loadingIndicator.onclick = function() {\n                    loadingIndicator.innerHTML = '加载中...';\n                    loadingIndicator.onclick = null;\n                    loadReplies(page);\n                };\n            }\n        } else {\n            var loadMoreBtn = document.getElementById('loadMore');\n            if (loadMoreBtn) {\n                loadMoreBtn.innerHTML = '<span class=\"loading-error\">' + message + '</span>';\n                loadMoreBtn.classList.remove('hidden');\n                loadMoreBtn.onclick = function() {\n                    loadMoreBtn.innerHTML = '<span class=\"loading-text\">点击加载更多评论</span>';\n                    loadMoreBtn.onclick = function() { loadReplies(page); };\n                    loadReplies(page);\n                };\n            }\n        }\n    }\n\n    window.addShelf = function(bookid) {\n        var booksrc = \"https://app-cdn.jjwxc.net/androidapi/novelbasicinfo?novelId=\" + bookid;\n        booksrc = \"legado://import/addToBookshelf?src=\" + encodeURIComponent(booksrc);\n        window.open(booksrc);\n    };\n\n    function init() {\n        if (window.location.href.includes('subjectDetail')) {\n            var booklistsContainer = document.querySelector('.booklists');\n            if (booklistsContainer) {\n                var replyContainer = document.createElement('div');\n                replyContainer.id = 'replyContainer';\n                booklistsContainer.appendChild(replyContainer);\n                \n                var loadingIndicator = document.createElement('div');\n                loadingIndicator.id = 'loadingIndicator';\n                loadingIndicator.className = 'loading';\n                loadingIndicator.innerHTML = '正在加载评论...';\n                booklistsContainer.appendChild(loadingIndicator);\n                loadReplies(1);\n                var isScrolling = false;\n                window.addEventListener('scroll', function() {\n                    if (isScrolling || replyManager.isLoading || !replyManager.isInitialized || replyManager.currentPage >= replyManager.totalPages) {\n                        return;\n                    }\n\n                    isScrolling = true;\n                    setTimeout(function() {\n                        var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;\n                        var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n                        var documentHeight = document.documentElement.scrollHeight;\n                        if (documentHeight - (scrollTop + windowHeight) < 200) {\n                            loadReplies(replyManager.currentPage + 1);\n                        }\n                        isScrolling = false;\n                    }, 200);\n                });\n            }\n        }\n    }\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', init);\n    } else {\n        init();\n    }\n\n</script>`;\n     \n}catch(e){\n    java.log(e);\n}\n</js>\n",
    "ruleDescription": "@js:\nbaseUrl = String(java.getString(\"$.url\")) || baseUrl;\nif(/data:pic;base64/.test(baseUrl)){\n\tresult = java.base64Decode(baseUrl.match(/base64,(.*?),/)[1]);\n\t}else{\n\t\tresult = \"\"\n\t\t}",
    "ruleImage": "$.display_novelinfo[0].ebookurl||$.display_novelinfo[0].localImg||$.cover||$.localImg\n@js:\ntry{\n\tif(/(?:postimg|bmp|alicdn|i9-static)\\./.test(result)){\n\tresult = \"https://i9-static.jjwxc.net/novelimage.php?novelid={{$.display_novelinfo[0].novelid}}\";\n\t}else if(/data:/.test(baseUrl) || String(java.getString(\"$.url\"))){\n\t\t\n\t\timg = String(java.base64Decode(String(java.getString(\"$.url\")).match(/base64,(.*?),/)[1]));\n\t\tresult = java.base64Decode(img.match(/atob\\('([^']+)'/)[1])\n\t\t}else{\n\t\tresult = result\n\t\t}\n\t\theader = {\n\t\t\"headers\":{\n\t\t\t\"referer\":result.match(/(^https?:\\/\\/.*?\\/)/)?.[1]\n\t\t\t}\n\t\t}\nresult = (result +\",\"+ JSON.stringify(header)).replace(/wx\\d+/,'wx2')\n}catch(e){\n\tjava.log(e)\n\t}\nresult",
    "ruleLink": "<js>\ndata_type = java.getString(\"$.data_type||$.examine_status||$.display_status\");\nif(data_type==\"2\"){\n\t\"https://app-cdn.jjwxc.com/app.jjwxc/android/reading/Booklist/getDetail?listid={{$.listid}}\"\n\t}else if(/http/.test(baseUrl)){\n\t\t\"https://app.jjwxc.org/app.jjwxc/android/reading/BookListFindBook/subjectDetail?versionCode=357&listid={{$.listid}}\";\n\t\t}else{\n\t\t\t\"http://www.baidu.com\"\n\t\t\t}\n</js>",
    "ruleNextPage": "<js>\nif(/rec_new_offset/.test(baseUrl)){\n\tresult = \"https://app.jjwxc.org/app.jjwxc/android/reading/BookListFindBook/square?versionCode=357&rec_new_offset={{$.data.rec_new_offset}}&find_new_offset={{$.data.find_new_offset}}&rec_edit_offset={{$.data.rec_edit_offset}}\"\n\t}else if(/page=/.test(baseUrl)){\n\t\tresult = baseUrl.replace(/page=\\d+/,\"page=\"+(Number(baseUrl.match(/page=(\\d+)/)[1])+1));\n\t\t\n\t\t\t}\n\t\t\n</js>",
    "rulePubDate": "【{{java.getString(\"$.data_type||$.examine_status||$.display_status\")==1?\"🔍找书\":\"📖荐书\"}}】•{{$.level}}级 {{$.recommend_count||$.booknum}}本 {{$.fav_count||$.favnum}}收藏  |  {{$.introduction}}\n@js:result = result.replace(/•级/g,'')\n.replace(/【📖荐书】 本 收藏|\\s*\\|\\s*$/g,'');",
    "ruleTitle": "$.subject||$.title||$.listname##</*.*?>",
    "searchUrl": "https://app.jjwxc.org/app.jjwxc/android/reading/BookListSearch/search?versionCode=357&keywords={{key}}&page=1&sort=fav_count",
    "shouldOverrideUrlLoading": "if(/[\\?#&]book[AN]/.test(url)){\n\ttitle = url.match(/[\\?#&]book[AN].+?=(.*)/)[1];\n\tURLDecoder = Packages.java.net.URLDecoder;\n\tgb2312Str = URLDecoder.decode(title,\"gbk\");\n utf8Str = URLDecoder.decode(title,\"utf-8\");\n\t result = gb2312Str.length() >= utf8Str.length();\n\t title = result?decodeURI(title):gb2312Str;\n\t java.searchBook(title);\n  result = true\n\t}",
    "showWebLog": true,
    "singleUrl": false,
    "sortUrl": "\n热门书单::https://android.jjwxc.net/app.jjwxc/android/reading/BookListFindBook/hotSubjectMore?versionCode=429\n\n书单广场::https://app.jjwxc.org/app.jjwxc/android/reading/BookListFindBook/square?versionCode=357&rec_new_offset=0&find_new_offset=0&rec_edit_offset=0&page={{page}}\n\n搜索书单::https://app.jjwxc.org/app.jjwxc/android/reading/BookListSearch/search?versionCode=357&keywords={{svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/><text x=\"200\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"70\" fill=\"#333\" font-weight=\"bold\">输入要搜索的内容</text></svg>`));if(page==1){let a=\"\";try{a=java.getVerificationCode('data:image/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()}source.setVariable(a);a}else{source.getVariable()};}}&page=1&sort=fav_count\n\n搜索百合书单::https://android.jjwxc.com/app.jjwxc/android/reading/BookListSearch/search?versionCode=358&page=1&sort=fav_count&must_xx=3&could_xx=5&book_num_range=0%2C252&data_type=1%2C2&keywords={{svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/><text x=\"200\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"70\" fill=\"#333\" font-weight=\"bold\">输入要搜索的内容</text></svg>`));if(page==1){let a=\"\";try{a=java.getVerificationCode('data:image/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()}source.setVariable(a);a}else{source.getVariable()};}}\n\n支持源作者::data:pic;base64,PGltZyBzdHlsZT0id2lkdGg6MTAwJSIgc3JjPSJhYm91dDpibGFuayIgb25lcnJvcj0idGhpcy5zcmM9YXRvYignYUhSMGNITTZMeTluYVhSbFpTNWpiMjB2WjNWaGJtVnlNREF4TVRJMUwySnZiMnR6YjNWeVkyVXZjbUYzTDIxaGMzUmxjaThsUlRVbE9VSWxRa1VsUlRjbE9Ea2xPRGN2WjNWaGJtVnlMbmRsWW5BPScpIj4KCg==,{\"type\":\"html\"}",
    "sourceComment": "//点击右上角三点，设置源变量搜索书单，或者下拉搜索\n\nlyc改版支持点击用户名之后，查看该用户的评论和书单",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m-static.jjwxc.net/images/wap/logo.png",
    "sourceName": "书单",
    "sourceUrl": "📖晋江书单",
    "style": "a:link {color:#415E44;}\na:visited{color:#8EB28B}\n.ef{\n\twidth: 24px; display: inline-block; vertical-align: middle; margin-top: -4px;\n\t}\nbody{\n\tpadding-left:10px;\n\tpadding-right:20px;\n\t}\n.listname{\n\tfont-size:12px;\n\theight:4px;\n\tfont-weight:bolder\n\t}\n.level{\n\tbackground:#9DD8ED;\n\tfont-size:12px;\n\tborder-radius:8px;\n\t}\n.dateline{\n\tcolor:#BABABB;\n\tfont-size:12px\n\t}\n.introduction{\n\tborder:2px dashed #3A9DBF;\n\tborder-radius:10px;\n\t}\n.introduction p{\n\ttext-indent: 3ch;\n\tmargin:5px;\n\tfont-size:12px;\n\tfont-weight:bold\n\t}\n.des{\n\tmargin-top:10px;\n\tmargin-bottom:0px;\n\tmargin-left:18px;\n\tfont-weight:bolder;\n\tcolor:#1D5F22\n}\n.bookdes{\n\tdisplay: flex;\n\tflex-direction:row;\n\tmargin:5px;\n\twidth:100%;\n\tposition: relative;\n\t}\n.book{\n\twidth:100%;\n\tdisplay: flex;\n\tflex-direction:column;\n\talign-items:flex-start;\n\tmargin-bottom:8px;\n\t}\n.pic {\n    width: 25vw;\n    margin-right: 20px;\n    min-height: 128px;\n    border: 1px solid #C4C4C4;\n    border-radius: 5px;\n    box-shadow: 1px 2px 2px black;\n    overflow: hidden; /* 关键 */\n    position: relative;\n}\n\n.pic img {\n    width: 100%;\n    height: 100%; /* 填满容器高度 */\n    object-fit: cover; /* 保持图片比例，覆盖整个容器 */\n    border-radius: inherit; /* 继承圆角 */\n    display: block;\n}\n\n.details{\n\twidth:72vw;\n\tmargin-left:25px;\n\t}\n\n.name{\n\tfont-size:13px;\n\tcolor:#000;\n\t}\n.author{\n\tcolor:#929292;\n\tfont-size:12px;\n\tdisplay:inline-block;\n\tposition:absolute;\n\tright:5px;\n\t}\n.tag{\n\tcolor:#929292;\n\tfont-size:10px;\n\tmargin-top:-10px;\n\t}\n.comment{\n\tpadding:10px;\n\tmargin-bottom:18px;\n\tmargin-top:-3px;\n\tbackground:#E8F6E9;\n\tborder-radius:5px;\n\twidth:100%;\n    font-size:13px\n\t}\n\n .loading {\n      text-align: center;\n      padding: 20px;\n      color: #666;\n      cursor: pointer;\n    }\n    .loading:hover {\n      background-color: #f5f5f5;\n    }\n    .loading.hidden {\n      display: none;\n    }\n    .loading-text {\n      color: #3A9DBF;\n    }\n    .loading-error {\n      color: #ff4444;\n    }",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 23,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "id.content@h3",
    "ruleLink": "a@href",
    "ruleTitle": "a@textNodes",
    "showWebLog": false,
    "singleUrl": true,
    "sortUrl": "首页::https://legado.aoaostar.com",
    "sourceGroup": "书源",
    "sourceIcon": "https://www.aoaostar.com/favicon.ico",
    "sourceName": "阅读APP源 - AOAOSTAR",
    "sourceUrl": "https://legado.aoaostar.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 23,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "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}",
    "injectJs": "function $(a){\n\treturn document.querySelector(a)\n\t}\nfunction $$(a){\n\treturn document.querySelectorAll(a)\n\t}\n\t\nhref = window.location.href\n\nif(href.search(/#/)==-1){\n\nauthor = $$(\".authorname\");\nhtml = \"\";\nnode = $$(\".read\");\n\nfor(i=0;i<author.length;i++){\n\t\ta = author[i].innerText.replace(/加书签 举报/g,'').replace(/☆☆☆/g,'');\n\thtml+='<div class=\"author\">'+a+\"</div>\"+node[i].innerHTML+\"<hr><br>\";\n\t}\n\n\ttry{\n\tzhu = $(\"#msgsubject\").outerHTML+\"<br><br>\";\n\tpage = $$(\"#pager_top\")[0]?$$(\"#pager_top\")[0].innerHTML:\"\";\n\t$(\"body\").innerHTML = page+\"<br>\" + zhu + html +page\n  $(\"#msgsubject\").style.cssText = 'background:#fff;border-radius:15px;box-shadow:1px 1px 3px #555;\ttext-indent:2em;\tpadding:2px 5px'\n $(\"body\").style.cssText = \"background:#fff\"\nfor(i=0;i<author.length;i++){\n\t\t$$(\".author\")[i].style.cssText=\"font-size:12px;color:green\"\n\t}\n}catch(err){\n\t}\n}",
    "lastUpdateTime": 1774770684792,
    "loadWithBaseUrl": true,
    "loginUrl": "https://bbs.jjwxc.net/showmsg.php?board=55&boardpagemsg=1&id=4705#",
    "preload": false,
    "ruleArticles": "tr.boardlist",
    "ruleContent": "<js>\npage = java.getString(\"@@id.pager_top@html\")\nno = java.getStringList(\"@@class.authorname@font.0@text\");\nauthor =java.getStringList(\"@@class.authorname@div@textNodes&&class.authorname@ownText\");\nnode = java.getElement(\"@@class.read\");\nhtml = \"\"\nfor(i in no){\n\thtml+='<div class=\"author\"><font class=\"no\">'+no[i]+\"</font> \"+author[i]+\"</div>\"+node[i]+\"<hr><br>\"\n\t}\n\tlogin = java.getString('@text.登入@text')\n\tif(login == \"登入\"){\n\t\tlogin = \"点击右上角三点，登录后，刷新可查看更多帖子\"\n\t\t}else{\n\t\t\tlogin = \"\"\n\t\t\t}\npage + \"<title>\"+String(java.getString(\"@@id.msgsubject@textNodes\")).replace(/主题：/,'')+\"</title><div id='msgsubject'>\"+java.getString(\"@@id.msgsubject@textNodes\")+\"</div><br><br>\"+html+login + page\n</js>\n##<img src=\".*?(?:□□|9999-\\d+).*?\">|<img src=\"\">##【图片链接被屏蔽】\n<js>result</js>\n##max-height:\\d+px;overflow: hidden;##max-height:500px;overflow: auto;",
    "ruleLink": "{{@@tag.a.0@href}}#第一页",
    "ruleNextPage": "page",
    "rulePubDate": "{{@div@text}}✪{{@a@title}} 回复数：{{@@tag.span.2@text}}",
    "ruleTitle": "【{{@td.0@text}}】{{@a.0@text}} 【{{@tag.img.0@src##.*/|\\.gif}}】\n<js>\nresult = result.replace(/【hot】/g,'🔥')\n.replace(/【new】/,'🆕')\n.replace(/【wonderful】/,'【精】')\n</js>\n##【】",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "百合堂::board.php?board=55&page={{page}}\n百合堂•精华区::board.php?board=55&type=wonderful&page={{page}}\n百合堂•套红区::board.php?board=55&type=red&page={{page}}\n🗣网友交流区::board.php?board=2&page={{page}}\n🗣宠物情缘::board.php?board=40&page={{page}}\n🗣时尚·饕餮::board.php?board=16&page={{page}}\n🗣战色逆乐园::board.php?board=20&page={{page}}\n🗣妈咪宝贝::board.php?board=39&page={{page}}\n🗣读书心得::board.php?board=4&page={{page}}\n🗣动漫大家谈::board.php?board=12&page={{page}}\n🗣晋江影视区::board.php?board=14&page={{page}}\n🗣自由交易区::board.php?board=11&page={{page}}\n📝碧水江汀::board.php?board=17&page={{page}}\n📝留声花园::board.php?board=44&page={{page}}\n📝涂画乐园::board.php?board=23&page={{page}}\n📝古意茶坊::board.php?board=10&page={{page}}\n🕶耽美闲情::board.php?board=3&page={{page}}\n🕶评论专区::board.php?board=9&page={{page}}\n🕶优声由色::board.php?board=52&page={{page}}\n📢意见建议簿::board.php?board=22&page={{page}}\n📢版主交流区::board.php?board=13&page={{page}}",
    "sourceComment": "https://m-static.jjwxc.net/images/wap/logo.png",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m-static.jjwxc.net/images/wap/logo.png",
    "sourceName": "论坛",
    "sourceUrl": "https://bbs.jjwxc.net",
    "style": "#msgsubject{\n\tbackground:#fff;\n\tborder-radius:15px;\n\tbox-shadow:1px 1px 3px #555;\n\ttext-indent:2em;\n\tpadding:2px 5px\n\t}\n.no{\n\tcolor:green\n\t}\n.author{\n\tfont-size:12px\n\t}\n.quotebodyinner font{\n\tfont-size:15px\n\t}\n.replybodyinner{\n\twidth:100%\n\t}\nimg{\n\t width:100%\n\t}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 23,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "@js:\nresult = JSON.stringify({\n\t\"referer\":\"http://android.jjwxc.net/?v=357\",\n\t\"versionCode\":\"357\",\n\t\"versiontype\":\"reading\",\n  \"User-Agent\": \"Dalvik/2.1.0\"\n})",
    "injectJs": "let previousUrl = \"\";\nlet currentUrl = '';\nlet currentOffset = 0;\nlet totalPages = 1;\nlet isLoading = false;\nlet hasMore = true;\nlet hasPrevious = false;\nlet scrollDebounceTimer = null;\nlet exploreM = localStorage.getItem('explore') || \"0\";\n\ntry{\n\tcache.put(\"jqsearch\",\"1\",\"5\");\n\t}catch(e){}\n\nif(/getSearchForKeyWords/.test(window.location.href) && currentUrl==\"\"){\n\t\n    currentUrl = window.location.href;\n    fetchAndRender(currentUrl)\n}\n\n\nif(/book2\\/\\d+/.test(window.location.href)){\ndocument.getElementById(\"app\").remove();\ndocument.querySelector(\".grid-c\").remove();\n\n// 获取书籍链接\n\t\tbookid = String(window.location.href).replace(/^.*\\//,'');\n\t\tbooksrc = \"http://app-cdn.jjwxc.net/androidapi/novelbasicinfo?novelId=\"+bookid;\n\t\t\nbooksrc = `legado://import/addToBookshelf?src=${encodeURIComponent(booksrc)}`;\n\t\t//获取书籍名称\ntitle = document.querySelector(\".big.o\").innerText.replace(/首页>/,'');\n\n//获取作者名称\nauthor = document.querySelector(\".authorname-content a\").innerText;\n\n//跳转作者url[可省略]\nhref = document.querySelector(\".authorname-content a\").href;\n\n//create(搜索的内容,\"bookName or bookAuthor\",距离顶部距离,[跳转其他url])\n\ncreate(title,\"addBookshelf\",14,booksrc);\ncreate(title,\"bookName\",18)\ncreate(author,\"bookAuthor\",22)\n}\n\n function create(name,type,top,url){\n \t    type = type+\"=\"+name;\n \t    url = url!=undefined?url+\"#\"+type:\"\";\n \t    \n     let \ttypebutton;\n     if(/bookName/.test(type)){\n     \t    typebutton=\"搜索书名\"\n     \t}else if(/bookAuthor/.test(type)){\n     \t\t   typebutton=\"搜索作者\"\n     \t}else{\n     \t\t\t   typebutton=\"加入书架\"\n     \t}\n    \n    \tlet Url = location.search!=\"\"?location.search.replace(/&*book[AN].*?=.*/,'')+\"&\"+type:window.location.pathname+\"?\"+type;\n    \turl = url!=\"\"?url:Url;\n    \t\n    \tA = document.createElement(\"a\");\n\t\t A.href =url.replace(/#addBookshelf.*/,'')\n\t\t     \n\t\tA.innerHTML = `<button style=\"outline:none; position:fixed; top:${top}%; right:7%; z-index:999; border-radius:5px; color:#166188;background:#fff;padding:4px;border:1px solid #000\"><b>${typebutton}</b></button>`;\n\t\tconsole.log(A.href)\n    \tdocument.body.appendChild(A);\n }\t    \n\nif(document.querySelector(\"#dis\")){\n   \ndocument.querySelector(\"#dis\").remove();\ndocument.querySelector(\"#logininfo\").remove();\ndocument.querySelector(\".ft\").innerHTML =`<div style=\"width:100%;height:200px;display:block\"></div>\n`;\n\nvar li1 = document.createElement('li');\nli1.innerHTML = `\n   <span class=\"biaoqian\">排序方式:</span>\n    <div class=\"optionsArea\">\n        \n            <label><input type=\"radio\" name=\"sorttype\" value=\"2\" checked=\"checked\">\n                积分</label>\n       \n            <label><input type=\"radio\" name=\"sorttype\" value=\"1\">\n                <span>最近更新</span></label>\n        \n            <label><input type=\"radio\" name=\"sorttype\" value=\"3\">\n                <span>最新发表</span></label>\n\n            <label><input type=\"radio\" name=\"sorttype\" value=\"5\">\n                <span>字数</span></label>\n     \n            <label><input type=\"radio\" name=\"sorttype\" value=\"4\">\n                <span>收藏数</span></label>\n\n            <label><input type=\"radio\" name=\"sorttype\" value=\"10\">\n                <span>完结高分</span></label>\n        \n    </div>\n`;\n\n\nvar li2 = document.createElement('li');\nli2.innerHTML = `\n    <span class=\"biaoqian\">完成状态:</span>\n    <div class=\"optionsArea\">\n\n            <label><input type=\"radio\" name=\"isfinish\" value=\"0\" checked=\"checked\">\n                <span>无限制</span></label>\n        \n            <label><input type=\"radio\" name=\"isfinish\" value=\"1\">\n                <span>连载</span></label>\n     \n            <label><input type=\"radio\" name=\"isfinish\" value=\"2\">\n                <span>完结</span></label>\n        \n    </div>\n`;\n\n// 添加到ul中\nvar formsList = document.getElementById('formsList');\nif(formsList){\n    /*\nformsList.prepend(li1);\nformsList.prepend(li2);\n*/\nvar liElements = formsList.getElementsByTagName(\"li\");\n    var liCount = liElements.length;\n    \n        var lastLi = liElements[liCount - 1];\n        var secondLastLi = liElements[liCount - 3];\n        formsList.insertBefore(lastLi,secondLastLi)\n        formsList.insertBefore(li1,liElements[9]);\n        formsList.insertBefore(li2,liElements[9])\n        let p = formsList.querySelector(\"#ajaxCheck p\");\n        p.style.fontSize = \"12px\";\n        formsList.insertBefore(p,liElements[11])\n}\n}\n\nfunction encode(str) {\n    str = str.replace(/https:.*?bq=/g,'');\n    return btoa(encodeURI(str));\n}\n\nfunction decode(str) {\n    str = \"https://android.jjwxc.net/search/getSearchForKeyWords?offset=0&limit=20&bq=\" + atob(str);\n    return str;\n}\n\n// 书籍定位\nfunction recordBookPosition(novelid,offset) {\n    previousUrl = sessionStorage.getItem('previousUrl');\n    sessionStorage.setItem('bookPosition', JSON.stringify({\n        url:previousUrl,\n        novelid: novelid,\n        offset: offset    \n    }));\n}\n\nfunction restoreBookPosition() {\n    const bookPosition = sessionStorage.getItem('bookPosition');\n    if (!bookPosition) return;\n    \n    let { url, novelid, offset, timestamp } = JSON.parse(bookPosition);\n    const pUrl = new URL(url);\n    pUrl.searchParams.set('offset', offset);\n    currentOffset = offset;\n    fetchAndRender(pUrl.toString(), function(error) {\n    if (error) {\n        return;\n    }\n    \n    const bookElement = document.querySelector(`.book[data-id=\"${novelid}\"]`);\n    if (bookElement) {\n        updateCurrentPage()\n        window.scrollTo({\n            top: bookElement.offsetTop - 100,\n            behavior: 'auto'\n        });\n    }\n});\n    \n}\n        \nfunction fetchAndRender(url, callback) {\n    showLoadingMessage();\n    isLoading = true;\n    sessionStorage.setItem('previousUrl',url);\n    fetch(url)\n        .then(response => response.json())\n        .then(jsonData => {\n            currentUrl = url;\n            totalPages = jsonData.total_page;\n            \n            currentOffset = parseInt(new URL(url).searchParams.get('offset')) || 0;\n            hasMore = (Math.floor(currentOffset / 20) + 1) < jsonData.total_page;\n            hasPrevious = currentOffset > 0; \n            sessionStorage.setItem('previousUrl',url);\n            generatePageContent(jsonData,currentOffset);\n            addStyles();\n           \n            if (typeof callback === 'function') {\n                callback(null, jsonData);\n            }\n        })\n        .catch(error => {\n            console.error('加载失败:', error);\n            if (typeof callback === 'function') {\n                callback(error);\n            }\n        })\n        .finally(() => {\n            isLoading = false;\n            hideLoadingMessage();\n            bookPosition = sessionStorage.getItem('bookPosition');        \n            sessionStorage.removeItem('bookPosition');        \n            if (!bookPosition) {\n                window.scrollTo(0,0); \t\n                return;\n            }\n        });\n}\n\n// 下拉加载\nfunction initScrollListener() {    \n    window.addEventListener('scroll', handleScroll, { passive: true });\n}\n\nfunction handleScroll() {    \n    clearTimeout(scrollDebounceTimer);\n    scrollDebounceTimer = setTimeout(() => {\n        if (!isLoading) {\n            updateCurrentPage();\n        }        \n        checkScrollBoundaries();\n    }, 50);\n}\n\nfunction checkScrollBoundaries() {\n    if (isLoading) return;\n    \n    const scrollPosition = window.scrollY;\n    const documentHeight = document.body.offsetHeight;\n    const windowHeight = window.innerHeight;\n    \n    if (scrollPosition + windowHeight >= documentHeight - 100 && hasMore) {\n        loadNextPage();\n    }\n        \n    if (scrollPosition <= 100 && hasPrevious) {\n        loadPreviousPage();\n    }\n}\n\nfunction loadPreviousPage() {\n    if (isLoading) return;\n    \n    isLoading = true;\n    document.getElementById('loading').style.display = 'block';\n    \n    const newOffset = Math.max(0, currentOffset - 20);\n    const url = new URL(currentUrl);\n    url.searchParams.set('offset', newOffset);\n    const scrollPositionBefore = window.scrollY;\n    \n    fetch(url.toString())\n        .then(response => response.json())\n        .then(jsonData => {\n                requestAnimationFrame(() => {\n                prependBookElements(jsonData, newOffset);                                \n                currentOffset = newOffset;\n                updateCurrentPage();\n                hasMore = (Math.floor(newOffset / 20) + 1) < jsonData.total_page;\n                hasPrevious = newOffset > 0;           \n                const newBooks = document.querySelectorAll('.book');\n                if (newBooks.length > 0) {              \n                    const targetBook = newBooks[jsonData.items.length - 1];\n                    if (targetBook) {\n                        const targetPosition = targetBook.offsetTop +100; \n                        window.scrollTo({\n                            top: targetPosition,\n                            behavior: 'auto'\n                        });\n                    }\n                }\n            });\n        })\n        .catch(error => {\n            console.error('加载上一页失败:', error);\n        })\n        .finally(() => {\n            isLoading = false;\n            document.getElementById('loading').style.display = 'none';\n        });\n}\n\n// 加载下一页函数\nfunction loadNextPage() {\n   \n    if (isLoading) return;\n    \n    isLoading = true;\n    document.getElementById('loading').style.display = 'block';\n    \n    const newOffset = currentOffset + 20;\n    \n    \n    const url = new URL(currentUrl);\n    url.searchParams.set('offset', newOffset);\n    \n    fetch(url.toString())\n        .then(response => response.json())\n        .then(jsonData => {\n            requestAnimationFrame(() => {\n                currentOffset = newOffset;\n                appendBookElements(jsonData, newOffset);\n                updateCurrentPage();\n                hasMore = (Math.floor(newOffset / 20) + 1) < jsonData.total_page;\n            });\n        })\n        .catch(error => {\n            console.error('加载下一页失败:', error);\n        })\n        .finally(() => {\n            isLoading = false;\n            document.getElementById('loading').style.display = 'none';\n        });\n}\n\nfunction createBookElement(item,offset){\nlet bookDiv = document.createElement('div');\n        bookDiv.className = 'book';\n        bookDiv.setAttribute('data-id', item.novelid);\n        bookDiv.setAttribute('data-offset', offset);\n        booksrc = `http://app-cdn.jjwxc.net/androidapi/novelbasicinfo?novelId=${item.novelid}`;\n        cover2 = \"https://i9-static.jjwxc.net/novelimage.php?novelid=\"+item.novelid;\n        bookDiv.innerHTML = `\n            <div class=\"bookdes\">\n                <div class=\"pic\" onclick=\"window.open('${booksrc}')\"><img src=\"${item.cover.replace(/https?/,'https')}\" referrerpolicy=\"no-referrer\" onerror=\"if(this.src!='${cover2}')this.src='${cover2}'\"></div>\n                <div class=\"details\">\n                    <p class=\"bookname\">\n                        <span class=\"name\"><a href=\"https://m.jjwxc.net/book2/${item.novelid}\">${item.novelname}</a></span>\n                        <br>\n                        <span class=\"author\" onclick=\"window.open('https://m.jjwxc.net/channel/#bookAuthor=${item.authorname}')\">——${item.authorname}</span>\n                    </p>\n                    <p class=\"tag\" onclick=\"window.open('https://m.jjwxc.net/channel/#bookName=${item.novelname}')\">⭐️ ${item.novelSizeformat}字•${item.novelstep === '2' ? '<span style=\"color:red\">已完结</span>' : '<span style=\"color:blue\">连载中</span>'} 🔎<br><br>📖 ${item.novelintroshort}<br><br>🔖 ${item.novelClass}<br><br>🏷 <span style=\"color:green\">${item.tags}</span></p>\n                </div>\n            </div>\n        `;\n        \n        const link = bookDiv.querySelector('a');\n        link.addEventListener('click', (e) => {\n            e.preventDefault();\n            recordBookPosition(item.novelid, offset);\n            window.location.href = link.href;\n        });\nreturn bookDiv\n}\n\nfunction prependBookElements(data, offset) {\n    const bookContainer = document.getElementById('bookContainer');\n    const fragment = document.createDocumentFragment();   \n    data.items.forEach((item, index) => {       \n        let bookDiv = createBookElement(item,offset)\n        fragment.appendChild(bookDiv);\n    });    \n    bookContainer.insertBefore(fragment, bookContainer.firstChild);\n}\n\n\n// 书籍列表生成\nfunction createBookElements(data,offset) {\n    const bookContainer = document.getElementById('bookContainer');\n    bookContainer.innerHTML = '';\n    data.items.forEach((item, index) => {\n        let bookDiv = createBookElement(item,offset)\n        bookContainer.appendChild(bookDiv);     \n    });\n}\n\nfunction appendBookElements(data,offset) {\n    const bookContainer = document.getElementById('bookContainer');\n    data.items.forEach((item, index) => {\n        let bookDiv = createBookElement(item,offset)\n        bookContainer.appendChild(bookDiv);\n    });\n}\n\n// 页面操作\nfunction updateUrlParam(key, value) {\n    const url = new URL(currentUrl);\n    url.searchParams.set(key, value);\n    url.searchParams.set('offset', 0);\n    currentOffset = 0;\n    updateCurrentPage()\n    fetchAndRender(url.toString());\n}\n\nfunction updateOffset(delta) {\n    const url = new URL(currentUrl);\n    const newOffset = Math.max(0, currentOffset + delta);\n    currentOffset = newOffset;\n    url.searchParams.set('offset', newOffset);\n    fetchAndRender(url.toString());\n}\n\nfunction jumpToPage() {\n    const pageInput = document.querySelector('.page-input');\n    const page = parseInt(pageInput.value);\n    if (isNaN(page) || page < 1 || page > totalPages) {\n        alert(`请输入有效的页码(1-${totalPages})`);\n        return;\n    }\n    \n    currentOffset = (page - 1) * 20;\n    const url = new URL(currentUrl);\n    url.searchParams.set('offset', currentOffset);\n    fetchAndRender(url.toString());\n}\n\nfunction updateCurrentPage() {\n    const books = document.querySelectorAll('.book');\n    if (books.length === 0) return;\n    \n    \n    const observer = new IntersectionObserver((entries) => {\n        entries.forEach(entry => {\n            if (entry.isIntersecting) {\n                const bookOffsetAttr = entry.target.getAttribute('data-offset');\n                \nconst bookOffset = bookOffsetAttr !== null ? parseInt(bookOffsetAttr) : currentOffset;\n\n                const currentPage = Math.floor(bookOffset / 20) + 1;\n                \n                \n                const currentDisplay = document.querySelector('.current-page').textContent;\n                if (currentDisplay !== currentPage.toString()) {\n                    document.querySelector('.current-page').textContent = currentPage;\n                    document.querySelector('.current').textContent = currentPage;\n                    currentOffset = bookOffset;\n                }\n            }\n        });\n    }, {\n        threshold: 0.5 \n    });        \n    books.forEach(book => {\n        observer.observe(book);\n    });\n    \n    return () => {\n        observer.disconnect();\n    };\n}\n\n\n// 辅助函数\nfunction showLoadingMessage() {\n    const loadingDiv = document.createElement('div');\n    loadingDiv.id = 'loading-message';\n    loadingDiv.style.position = 'fixed';\n    loadingDiv.style.top = '20px';\n    loadingDiv.style.left = '50%';\n    loadingDiv.style.transform = 'translateX(-50%)';\n    loadingDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.8)';\n    loadingDiv.style.color = 'white';\n    loadingDiv.style.padding = '10px 20px';\n    loadingDiv.style.borderRadius = '5px';\n    loadingDiv.style.zIndex = '1000';\n    loadingDiv.textContent = '正在加载，请稍候...';\n    document.body.appendChild(loadingDiv);\n}\n\nfunction hideLoadingMessage() {\n    const loadingDiv = document.getElementById('loading-message');\n    if (loadingDiv) loadingDiv.remove();\n}\n\nfunction generateFinalUrl(formData) {\n    const variables = {};\n    for (let [key, value] of formData.entries()) {\n        const variableName = key.replace(/\\d+/g, '');\n        if (!variables[variableName]) {\n            variables[variableName] = [];\n        }\n        variables[variableName].push(value);\n    }\n\n    for (const key in variables) {\n        variables[key] = variables[key].join(',');\n    }\n\n    let bookurl = `https://android.jjwxc.net/search/getSearchForKeyWords?offset=0&limit=20&bq=${variables.bq || ''}&removetags=${variables.removebq || ''}&notlikecollectionTypes=${variables.notlikecollectiontypes || ''}&fw=${variables.fw || ''}&yc=${variables.yc || ''}&xx=${variables.xx || ''}&sd=${variables.sd || ''}&lx=${variables.lx || ''}&mainview=${variables.mainview || ''}&fbsj=${variables.fbsj || ''}&novelbefavoritedcount=${variables.novelbefavoritedcount || ''}&isfinish=${variables.isfinish || ''}&collectionTypes=${variables.collectiontypes || ''}&searchkeyWords=${variables.searchkeywords || ''}&sortType=${variables.sorttype}`;\n    return bookurl\n}\n\n// 页面生成\nfunction generatePageContent(jsonData,offset) {\n    document.documentElement.innerHTML = `\n          <!-- 悬浮按钮组 -->\n    <div class=\"float-buttons\">\n        <div class=\"button-group\">\n                    <!-- 页码控制面板 -->\n            <div class=\"page-control\">\n                <div class=\"page-info\">\n                    <span class=\"current-page\">1</span>\n                    <div class=\"divider\"></div>\n                    <span class=\"total-pages\">${jsonData.total_page}</span>\n                </div>\n                <div class=\"page-jump\">\n                    <input type=\"number\" min=\"1\" max=\"${jsonData.total_page}\" value=\"1\" class=\"page-input\">\n                    <button class=\"go-btn\">GO</button>\n                </div>\n            </div>\n            <!-- 功能按钮（从下到上顺序） -->\n            <button class=\"func-btn home\" title=\"返回首页\">⌂</button>\n            <button class=\"func-btn bottom\" title=\"页面底部\">↓</button>\n            <button class=\"func-btn top\" title=\"页面顶部\">↑</button>\n            \n\n        </div>\n        \n        <!-- 主按钮 - 深绿色圆形 -->\n        <button class=\"main-btn\" title=\"展开功能\">\n            <span class=\"current\">1</span>\n            <div class=\"divider\"></div>\n            <span class=\"total\">${jsonData.total_page}</span>\n        </button>\n    </div>\n    \n            <div class=\"center\" style=\"text-align: center;\">\n                <select name=\"sortType\" id=\"orderstr\" style=\"width:25%\">\n                    <option value=\"2\">积分</option>\n                    <option value=\"1\">最近更新</option>\n                    <option value=\"3\">最新发表</option>\n                    <option value=\"5\">字数</option>\n                    <option value=\"4\">收藏数</option>\n                    <option value=\"10\">完结高分</option>\n                </select>\n                <span style=\"margin: 0 2px;\">|</span>\n                <select name=\"isfinish\" id=\"isfinish\" style=\"width:25%\">\n                    <option value=\"0\">无限制</option>\n                    <option value=\"1\">连载</option>\n                    <option value=\"2\">完结</option>\n                </select>\n                <span style=\"margin: 0 2px;\">|</span>\n                <button id=\"biaoqian\" style=\"width:25%\">\n                    标签管理                  \n                </button>\n            </div>\n        <div style=\"height: 60px;\"></div>\n        <br>\n        <div id=\"bookContainer\" class=\"book-container\"></div>\n        <div id=\"loading\" style=\"text-align: center; padding: 10px; display: none;\">\n            正在加载更多...\n        </div>\n    `;\n\n    const sortTypeSelect = document.getElementById(\"orderstr\");\n    const isFinishSelect = document.getElementById(\"isfinish\");\n    const urlParams = new URLSearchParams(currentUrl.split('?')[1]);\n            \n    const mainBtn = document.querySelector('.main-btn');\n    const floatButtons = document.querySelector('.float-buttons');\n    const totalPagesEl = document.querySelector('.total-pages');\n    const pageInput = document.querySelector('.page-input');\n    const pageSections = document.querySelectorAll('.page-section');\n    const homeBtn = document.querySelector('.func-btn.home');\n    const topBtn = document.querySelector('.func-btn.top');\n    const bottomBtn = document.querySelector('.func-btn.bottom');\n        totalPages = jsonData.total_page; \n        totalPagesEl.textContent = totalPages;\n        pageInput.max = totalPages;\n        \n        if (totalPages >= 10000) {\n            floatButtons.classList.add('long-page');\n        }\n        \n        \n        mainBtn.addEventListener('click', function(e) {\n            e.stopPropagation();\n            floatButtons.classList.toggle('expanded');\n            mainBtn.style.display = 'none';\n            \n        });\n        \n        document.addEventListener('click', function() {\n            floatButtons.classList.remove('expanded');\n            mainBtn.style.display = 'flex';\n        });\n        \n        \n        document.querySelector('.button-group').addEventListener('click', function(e) {\n            e.stopPropagation();\n        });\n        \n        \n        document.querySelector('.go-btn').addEventListener('click', jumpToPage);\n        document.querySelector('#biaoqian').addEventListener('click',function() {    \n            toggleTag(sessionStorage.getItem('previousUrl'))\n        });\n\n        \n        homeBtn.addEventListener('click', function() {\n            sessionStorage.setItem('previousUrl', \"\");\nwindow.open(\"https://m.jjwxc.net/assort#\", \"_blank\");\n\n        });\n        \n        topBtn.addEventListener('click', function() {\n            window.scrollTo({top: 0, behavior: 'smooth'});\n            floatButtons.classList.remove('expanded');\n            mainBtn.style.display = 'flex';\n        });\n        \n        bottomBtn.addEventListener('click', function() {\n            window.scrollTo({top: document.body.scrollHeight-100, behavior: 'smooth'});\n            floatButtons.classList.remove('expanded');\n            mainBtn.style.display = 'flex';\n        });\n        \n    sortTypeSelect.value = urlParams.get('sortType') || '2';\n    isFinishSelect.value = urlParams.get('isfinish') || '0';\n    sortTypeSelect.onchange = () => {\n        updateUrlParam('sortType', sortTypeSelect.value);\n        window.scrollTo(0,0);\n    }\n    isFinishSelect.onchange = () => {\n        updateUrlParam('isfinish', isFinishSelect.value);\n        window.scrollTo(0,0);\n    }\n    \n      \n    initScrollListener();\n    createBookElements(jsonData,offset);\n    updateCurrentPage();\n    \n    const checkScrollable = () => {\n        if (document.body.scrollHeight <= window.innerHeight) {\n            \n            if (hasMore) {\n                loadNextPage();\n            } else if (hasPrevious) {\n                loadPreviousPage();\n            }\n        }\n    };\n    \n\n    checkScrollable();\n}\n\n\n\nfunction createTag(url){    \n        const form = document.getElementsByTagName('form')[1];\n        const formData = new FormData(form);\n        \n        const finalUrl = url==undefined?generateFinalUrl(formData):url;                                           \n        const dialog = createModalDialog();               \n        const urlTextarea = document.createElement('textarea');\n        urlTextarea.value = `标签名@${encode(finalUrl)}#`;\n        urlTextarea.style.width = '90%';\n        urlTextarea.style.height = '100px';\n        urlTextarea.style.padding = '10px';\n        urlTextarea.style.margin = '10px';\n        urlTextarea.style.outline ='none';\n        urlTextarea.style.border ='1px solid #ddd';\n        urlTextarea.style.resize = 'none';\n        \n        dialog.dialog.prepend(urlTextarea);\n\n        const promptText = document.createElement('p');\n        promptText.textContent = '修改标签名，点击保存';\n        promptText.style.margin = '10px 0';\n        promptText.style.fontSize = '14px';\n        promptText.style.color = '#333';\n        dialog.dialog.prepend(promptText);\n\n        const copyButton = document.createElement('button');\n        copyButton.textContent = '保存';\n        copyButton.style.margin = '10px';\n        copyButton.style.padding = '5px 5px';\n        copyButton.style.backgroundColor = '#28a745';\n        copyButton.style.color = 'white';\n        copyButton.style.border = 'none';\n        copyButton.style.borderRadius = '5px';\n        copyButton.style.cursor = 'pointer';\n        copyButton.addEventListener('click', () => {\n            let tag = urlTextarea.value;\n            let tags = localStorage.getItem(\"setTag\");\n            localStorage.setItem(\"setTag\",tags+tag);\n            let saveTag = localStorage.getItem(\"setTag\");          \n            \n                try{\n            source.put(\"saveTag\",saveTag);\n            cache.putFile(\"saveTag\",saveTag,0)\n            cache.putFile(\"exploreM\",exploreM,0)\n            }catch(e){}  \n            alert('已保存标签：'+tag);\n            document.body.removeChild(dialog.overlay);\n        });\n        dialog.dialog.appendChild(copyButton);   \n        \n        const addshelfButton = document.createElement('button');\n        addshelfButton.textContent = '加入书架';\n        addshelfButton.style.margin = '10px';\n        addshelfButton.style.padding = '5px 5px';\n        addshelfButton.style.backgroundColor = '#F3A23D';\n        addshelfButton.style.color = 'white';\n        addshelfButton.style.border = 'none';\n        addshelfButton.style.borderRadius = '5px';\n        addshelfButton.style.cursor = 'pointer';\n        addshelfButton.addEventListener('click', () => {\n            let tag = urlTextarea.value;\n            let u = tag.split(\"@\");\n            let name = u[0];\n            let booku = decode(u[1].replace(/#$/,''))+\"#❌bookname=\"+u[0]; \n            \n            let url = `legado://import/addToBookshelf?src=${encodeURIComponent(booku)}`;\n            window.open(url)\n            document.body.removeChild(dialog.overlay);\n        });\n        dialog.dialog.appendChild(addshelfButton);  \n}\n\n\n//标签管理弹窗\nfunction createModalDialog(options = {}) {\n    //遮罩层\n    const overlay = document.createElement('div');\n    overlay.style.position = 'fixed';\n    overlay.style.top = '0';\n    overlay.style.left = '0';\n    overlay.style.width = '100%';\n    overlay.style.height = '100%';\n    overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';\n    overlay.style.zIndex = '1001';\n    overlay.style.display = 'flex';\n    overlay.style.justifyContent = 'center';\n    overlay.style.alignItems = 'center';\n    \n    //弹窗\n    const dialog = document.createElement('div');\ndialog.style.cssText = `\n    background-color: white;\n    padding: 10px;\n    border-radius: 10px;\n    width: 80%;\n    box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);\n    text-align: center;\n    max-height: 60vh;\n`;\n\n\n    if (options.title) {\n        const title = document.createElement('h2');\n        title.textContent = options.title;\n        title.style.marginTop = '0';\n        dialog.appendChild(title);\n    }\n\n    if (options.content && Array.isArray(options.content)) {\n        options.content.forEach(element => {\n            dialog.appendChild(element);\n        });\n    }\n\n    // 创建关闭按钮\n    const closeButton = document.createElement('button');\n    closeButton.textContent = '关闭';\n    closeButton.style.margin = '10px';\n    closeButton.style.padding = '5px 5px';\n    closeButton.style.backgroundColor = '#dc3545';\n    closeButton.style.color = 'white';\n    closeButton.style.border = 'none';\n    closeButton.style.borderRadius = '5px';\n    closeButton.style.cursor = 'pointer';\n    closeButton.addEventListener('click', () => {\n        document.body.removeChild(overlay);\n        if (typeof options.onClose === 'function') {\n            options.onClose(); \n        }\n    });\n    dialog.appendChild(closeButton);\n\n    overlay.appendChild(dialog);\n    document.body.appendChild(overlay);\n\n     return {\n        dialog: dialog, \n        overlay: overlay\n    };\n}\n\nfunction createTagButton(type){   \n    const tagsWrapper = document.createElement('div');\n    tagsWrapper.style.cssText = `\n        margin: 5px;\n        padding:5px;\n        max-height:50vh;\n        overflow-y: auto;\n        display: flex;\n        flex-wrap: wrap;\n        align-items: flex-start;\n    `;\n    let url = localStorage.getItem('setTag');\n    const urls = url.split('#');\n    const buttonData = urls.filter(part => part.trim() !== '');        \n    buttonData.forEach((data, index) => {\n        const [label, url] = data.split('@');\n        const button = document.createElement('button');\n        button.textContent = decodeURIComponent(label) || `标签${index + 1}`;\n        button.style.cssText = `\n            padding: 5px 5px;\n            border-radius: 5px;\n            white-space: wrap;\n            flex-shrink: 0;\n            background-color: #2196F3;\n            color: white;\n            border: none;\n            cursor: pointer;\n            transition: all 0.3s;\n            margin-right: 10px;\n            margin-bottom: 10px;\n            min-width: 60px;\n            max-width: 100%;\n        `;\n        if(type!==0){     \n            if(exploreM==\"0\"){\n            button.addEventListener('click', () =>{\n                fetchAndRender(decode(url));\n                window.scrollTo(0,0);\n            });\n                \n           }else{\n               button.addEventListener('click', () =>{\n                   window.open(decode(url)+\"bookname\"+encodeURIComponent(label))\n               });\n           }\n        }else if(type===0){\n        button.addEventListener('click', () => {\n        try{\n        document.querySelectorAll(\"input\").forEach(input => {\n\n  input.checked = false;\n  \n  const span = input.nextElementSibling; \n  if (span && span.tagName === 'SPAN') {\n    span.style.color = 'black';\n  }\n});\n\n        document.querySelectorAll('.del_choosed_tag').forEach(button => {\n    button.click();\n});              \n        let eurl = decodeURIComponent(decodeURIComponent(decode(url)));\n        \n        eurl = eurl.toLowerCase().replace(/http.*?\\?|offset=\\d+&|limit=\\d+&/g,'').split('&'); \n        if(!/sortsype/.test(eurl))document.querySelector(`input[name=\"sorttype\"][value=\"2\"]`).checked = true;\n        if(!/isfinish/.test(eurl))document.querySelector(`input[name=\"isfinish\"][value=\"0\"]`).checked = true;\n        for(let i=0;i<eurl.length;i++){\n            let params = eurl[i].split(\"=\");\n            let names = params[0];  \n                       \n            let values = params[1].split(\",\"); \n                         \n            for(let j=0;j<values.length;j++){\n                let name,input;\n      if(names===\"searchkeywords\"){\n      \tdocument.querySelector(`input[name=\"${names}\"]`).value = params[1];\n      \t}else if(names===\"bq\"||names===\"removetags\"){\n      if(values[j]){\n              addBq(params[1],values[j],names)\n             }\n              }else if(/\\d+/.test(values[j]) && !/sorttype|isfinish/.test(names)){\n                name = names+values[j];       \n                input = document.querySelector(`input[name=\"${name}\"]`);\n                if(input){\n                  if (input.nextElementSibling && input.nextElementSibling.tagName === 'SPAN') {\n    input.nextElementSibling.style.color = 'red';\n  }\n  input.checked=true\n        }        \n              }else{\n              input = document.querySelector(`input[name=\"${names}\"][value=\"${values[j]}\"]`);\n              \n              input?input.checked=true:null\n              }            \t       \n            }                                         \n        }\n       \n        }catch(e){alert(e)}              \n        });               \n     }\n        tagsWrapper.appendChild(button);        \n    });\n    return tagsWrapper\n}\n\nfunction addBq(all,v,type){\ntry{\n        \n        type === \"removetags\"?        \n          document.querySelector('.tag_label_'+v+\"~.remove_tags\").click()                  \n           :document.querySelector('.tag_label_'+v+\"~.add_tags\").click();          \n         \n      }catch(e){\n      alert(e)\n      }\n}\n\nfunction toggleTagEdit(){      \n    const dialog = createModalDialog();\n    const tagContainer = document.createElement('div');\n    const tagsWrapper = createTagButton(0);\n\n    tagContainer.style.cssText = `\n        max-height:50vh;\n        padding: 10px;\n        margin: 5px;\n        border-radius: 10px;\n        width: 90%;\n        display: flex;\n        flex-direction: column;\n        align-items: flex-start;\n    `;\n   \n    tagContainer.appendChild(tagsWrapper); \n    dialog.dialog.prepend(tagContainer);\n\n    dialog.overlay.addEventListener('click', () => {\n        document.body.removeChild(dialog.overlay);\n    });\n    \n}\n\n///标签选择\nfunction toggleTag(curl){   \n    // 创建弹窗    \n    const dialog = createModalDialog();\n    const tagContainer = document.createElement('div');\n    const tagsWrapper = createTagButton();\n\n    tagContainer.style.cssText = `\n        max-height:50vh;\n        padding: 10px;\n        margin: 5px;\n        border-radius: 10px;\n        width: 90%;\n        display: flex;\n        flex-direction: column;\n        align-items: flex-start;\n    `;\n\n    // 创建【生成标签】按钮\n    const generateBtn = document.createElement('button');\n    generateBtn.textContent = '生成';\n    generateBtn.style.cssText = `\n        padding: 5px 5px;\n        margin: 6px;\n        background: #4CAF50;\n        color: white;\n        border: none;\n        border-radius: 5px;\n        cursor: pointer;\n        margin-bottom: 10px;\n    `;\n    dialog.dialog.appendChild(generateBtn);\n    const editBtn = document.createElement('button');\n    \n    \n    editBtn.textContent = '编辑';\n    editBtn.style.cssText = `\n        padding: 5px 5px;\n        margin: 6px;\n        background: #719EA5;\n        color: white;\n        border: none;\n        border-radius: 5px;\n        cursor: pointer;\n        margin-bottom: 10px;\n    `;\n    dialog.dialog.appendChild(editBtn);\n     \n    const copyBtn = document.createElement('button');\n    copyBtn.textContent = '复制';\n    copyBtn.style.cssText = `\n        padding: 5px 5px;\n        margin: 6px;\n        background: #DE8E32;\n        color: white;\n        border: none;\n        border-radius: 5px;\n        cursor: pointer;\n        margin-bottom: 10px;\n    `;\n    dialog.dialog.appendChild(copyBtn);\n     \n    tagContainer.appendChild(tagsWrapper); \n    dialog.dialog.prepend(tagContainer);\n\n    dialog.overlay.addEventListener('click', () => {\n        document.body.removeChild(dialog.overlay);\n    });\n    \n    // 【生成标签】点击事件\n    generateBtn.addEventListener('click', () => {        \n        createTag(curl)        \n    });    \n    editBtn.addEventListener('click', () => {        \n        editTag()        \n    });    \n    copyBtn.addEventListener('click', () => {        \n        copyTag()        \n    });    \n}\nfunction copyTag(){\n           let setTagValue = localStorage.getItem('setTag');\n            if (setTagValue){\n                let tempTextArea = document.createElement('textarea');\n                tempTextArea.value = setTagValue;\n                document.body.appendChild(tempTextArea);\n                tempTextArea.select();\n                document.execCommand('copy');\n                document.body.removeChild(tempTextArea);\n                alert('内容已复制到剪贴板: ' + setTagValue);\n            } else {\n                alert('localStorage中没有找到setTag的值');\n            }\n}\n\nfunction editTag(){\n    let dialog = createModalDialog();\n    let text = localStorage.getItem('setTag');\n    const tagsWrapper = document.createElement('div');\n    tagsWrapper.style.cssText = `\n        margin: 5px;\n        padding:5px;\n        max-height:50vh;\n        overflow-y: auto;\n        display: flex;\n        flex-wrap: wrap;\n        align-items: flex-start;\n    `;        \n    const urls = text.split('#');\n    const buttonData = urls.filter(part => part.trim() !== '');        \n    buttonData.forEach((data, index) => {\n        const [label, url] = data.split('@');\n        const button = document.createElement('input');\n        button.type = \"text\";\n        button.value = label || `标签${index + 1}`;\n        button.style.cssText = `\n            padding: 5px 5px;\n            border-radius: 5px;\n            white-space: wrap;\n            flex-shrink: 0;\n            background-color: #2196F3;\n            color: white;\n            border: none;\n            cursor: pointer;\n            transition: all 0.3s;           \n            min-width: 60px;\n            max-width: 100%;\n            width:40%;\n            margin-right: 10px;\n            margin-bottom: 10px;\n        `;\n        \n        button.dataset.id = url;   \n        tagsWrapper.appendChild(button); \n    });            \n        dialog.dialog.prepend(tagsWrapper);\n        \n        const promptText = document.createElement('p');\n        promptText.textContent = '修改标签名或者删除相应文字，点击保存';\n        promptText.style.margin = '10px 0';\n        promptText.style.fontSize = '14px';\n        promptText.style.color = '#333';\n        dialog.dialog.prepend(promptText);\n\n        const copyButton = document.createElement('button');\n        copyButton.textContent = '保存';\n        copyButton.style.margin = '10px';\n        copyButton.style.padding = '5px 5px';\n        copyButton.style.backgroundColor = '#28a745';\n        copyButton.style.color = 'white';\n        copyButton.style.border = 'none';\n        copyButton.style.borderRadius = '5px';\n        copyButton.style.cursor = 'pointer';\n        copyButton.addEventListener('click', () => {\n            const allButtons = tagsWrapper.querySelectorAll('input');\n            \n            let saveTag = \"\";        \n            allButtons.forEach(data=>{\n            if(data.value){\n               saveTag+=data.value+\"@\"+data.dataset.id+\"#\";}\n            });\n            \n            localStorage.setItem(\"setTag\",saveTag);\n            try{\n            source.put(\"saveTag\",saveTag);\n            cache.putFile(\"saveTag\",saveTag,0);\n            cache.putFile(\"exploreM\",exploreM,0)\n            }catch(e){}\n            alert(\"已更新标签\");\n            document.body.removeChild(dialog.overlay);\n            \n        });        \n        \n        dialog.dialog.appendChild(copyButton);          \n}\n\n\n\nfunction waitEl(s,f){var e=document.querySelector(s);if(e)return f(e);if(window.MutationObserver){new MutationObserver(function(){e=document.querySelector(s);e&&(this.disconnect(),f(e))}).observe(document.body,{childList:!0,subtree:!0})}else{var t=setInterval(function(){e=document.querySelector(s);e&&(clearInterval(t),f(e))},100)}}\n\n\nif(/#$/.test(window.location.href)){\n    waitEl('.biaoqian', el => {\n        try{\n           let saveTag = String(source.getVariable()??'').replace(/^🔼/,'').trim();\n           if(saveTag){\n                localStorage.setItem('setTag',saveTag);\n           }\n            \n        saveTag = localStorage.getItem(\"setTag\",saveTag);\n        source.put(\"saveTag\",saveTag);\n        cache.putFile(\"saveTag\",saveTag,0);\n        cache.putFile(\"exploreM\",exploreM,0)\n    }catch(e){}\n    let homeTagButton = document.createElement('button');\n    homeTagButton.textContent = '标签管理';\n    homeTagButton.style.cssText = `\n        position: fixed;\n        bottom: 20px;\n        right: 20px;\n        z-index: 1000;\n        padding: 5px 10px;\n        background-color: #007BFF;\n        color: white;\n        border: none;\n        border-radius: 5px;\n        cursor: pointer;\n    `;\n    document.body.appendChild(homeTagButton);\n    \n    let cTagButton = document.createElement('button');\n    cTagButton.textContent = '生成标签';\n    cTagButton.style.cssText = `\n        position: fixed;\n        bottom: 50px;\n        right: 20px;\n        z-index: 1000;\n        padding: 5px 10px;\n        background-color: #007BFF;\n        color: white;\n        border: none;\n        border-radius: 5px;\n        cursor: pointer;\n    `;\n    document.body.appendChild(cTagButton);\n    \n    \n    let eTagButton = document.createElement('button');\n    eTagButton.textContent = '复现标签';\n    eTagButton.style.cssText = `\n        position: fixed;\n        bottom: 80px;\n        right: 20px;\n        z-index: 1000;\n        padding: 5px 10px;\n        background-color: #007BFF;\n        color: white;\n        border: none;\n        border-radius: 5px;\n        cursor: pointer;\n    `;\n    document.body.appendChild(eTagButton);\n    \n    let exploreButton = document.createElement('button');\n    exploreButton.textContent = exploreM==\"0\"?\"网页模式\":\"发现模式\";\n    exploreButton.style.cssText = `\n        position: fixed;\n        bottom: 110px;\n        right: 20px;\n        z-index: 1000;\n        padding: 5px 10px;\n        background-color: #007BFF;\n        color: white;\n        border: none;\n        border-radius: 5px;\n        cursor: pointer;\n    `;\n    document.body.appendChild(exploreButton);\n    \n     \n    let searchb = document.createElement('button');\n    searchb.textContent = \"搜索\";\n    searchb.style.cssText = `\n        position: fixed;\n        bottom: 140px;\n        right: 20px;\n        z-index: 1000;\n        padding: 5px 10px;\n        background-color: #007BFF;\n        color: white;\n        border: none;\n        border-radius: 5px;\n        cursor: pointer;\n    `;\n    document.body.appendChild(searchb);\n    \n    exploreButton.addEventListener('click', () => {\n        if(exploreM==\"0\"){\n            localStorage.setItem('explore',\"1\");\n            exploreButton.textContent = \"发现模式\"\n            exploreM = 1;\n        }else{\n            localStorage.setItem('explore',\"0\");\n            exploreM = 0;\n            exploreButton.textContent = \"网页模式\"\n        }\n        cache.putFile(\"exploreM\",exploreM,0);\n    });\n    \n    homeTagButton.addEventListener('click', () => {            \n        toggleTag()\n    });\n    \n    eTagButton.addEventListener('click', () => {               \n        toggleTagEdit()\n    });\n    \n    cTagButton.addEventListener('click', () => {              \n        createTag()        \n    });\n    \n    const forms = document.getElementsByTagName('form')[1];\n    restoreBookPosition();\n    searchb.addEventListener('click', () => {            \n        let formData = new FormData(forms);\n        currentUrl = generateFinalUrl(formData);\n        previousUrl = currentUrl;\n        currentOffset = 0;\n        if(exploreM == \"0\")fetchAndRender(currentUrl);\n        if(exploreM == \"1\")window.open(currentUrl)\n    });\n    forms.addEventListener('submit', function(event) {\n        event.preventDefault();\n        let formData = new FormData(forms);\n        currentUrl = generateFinalUrl(formData);\n        previousUrl = currentUrl;\n        currentOffset = 0;\n        if(exploreM == \"0\")fetchAndRender(currentUrl);\n        if(exploreM == \"1\")window.open(currentUrl)\n    });\n    \n    });\n}\n\nfunction addStyles() {\n    const style = document.createElement('style');\n    style.innerHTML = `\n    .center {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    background: white;\n    z-index: 999;\n    padding: 10px 0;\n    box-shadow: 0 2px 5px rgba(0,0,0,0.1);\n}\n\n        a:link { color: #415E44; }\n        a:visited { color: #8EB28B; }\n        button, select, input {\n            background: #E9F5F3;\n            color: green;\n            font-weight: bold;\n            border-radius: 15px;\n            border: 0px solid #000;\n            padding: 5px 10px;\n            box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);\n        }\n        \n        .float-buttons {\n            position: fixed;\n            right: 10px;\n            bottom: 10px;\n            display: flex;\n            flex-direction: column-reverse;\n            align-items: center;\n            z-index: 999;\n        }\n       \n        /* 主按钮 - 深绿色圆形 */\n        .main-btn {\n            width: 50px;\n            height: 50px;\n            border-radius: 50%;\n            background: #E9F5F3;\n            color: green;\n            border: none;\n            cursor: pointer;\n            box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            font-size: 12px;\n            outline: none;\n            -webkit-tap-highlight-color: transparent;\n            transition: all 0.3s ease;\n            padding: 5px 2px;\n            position: relative;\n        }\n        \n        /* 当前页和总页数颜色区分 */\n        .main-btn .current {\n            color: green;\n            font-weight: bold;\n            margin-bottom: 2px;\n        }\n        \n        .main-btn .total {\n            color: rgba(0, 0, 0, 0.8);\n            font-size: 0.9em;\n            margin-top: 2px;\n        }\n        \n        .main-btn .divider {\n            width: 60%;\n            height: 1px;\n            background: green;\n            margin: 3px 0;\n        }\n        \n        /* 功能按钮容器 - 默认隐藏 */\n        .button-group {\n            display: none;\n            flex-direction: column-reverse;\n            align-items: center;\n        }\n        \n        \n        .expanded .button-group {\n            display: flex;\n        }\n        \n        /* 功能按钮样式 */\n        .func-btn {\n            width: 50px;\n            height: 50px;\n            border-radius: 50%;\n            background: #495057;\n            color: white;\n            border: none;\n            cursor: pointer;\n            box-shadow: 0 2px 6px rgba(0, 0, 0, 0.7);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-size: 18px;\n            outline: none;\n            margin-bottom: 8px;\n        }\n        \n        /* 不同功能按钮颜色 */\n        .func-btn.home { background: #9B5F64; }\n        .func-btn.bottom { background: #8DA371; }\n        .func-btn.top { background: #67749A; }\n        \n        /* 页码控制面板 */\n        .page-control {\n            background: #E9F5F3;\n            color: white;\n            padding: 10px;\n            border-radius: 25px;\n            font-size: 14px;\n            box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            width: 30px;\n            margin-bottom: 8px;\n        }\n        \n        .page-info {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            margin-bottom: 8px;\n            font-size: 12px;\n            line-height: 1.3;\n            position: relative;\n            width: 100%;\n        }\n        \n        \n        .page-info .divider {\n            width: 90%;\n            height: 1px;\n            background: green;\n            margin: 4px 0;\n        }\n        \n        .page-info .current-page {\n            color: green;\n            font-weight: bold;\n            font-size: 14px;\n        }\n        \n        .page-info .total-pages {\n            color: rgba(0, 0, 0, 0.6);\n            font-size: 11px;\n        }\n        \n        .page-jump {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            width: 100%;\n        }\n        \n        .page-jump input {\n            width: 30px;\n            padding: 6px;\n            border: none;\n            border-radius: 15px;\n            text-align: center;\n            outline: none;\n            font-size: 12px;\n            margin-bottom: 6px;\n            background: #f8f9fa;\n        }\n        \n        .page-jump button {\n            width: 30px;\n            height: 25px;\n            background: #2b8a3e;\n            color: white;\n            border: none;\n            border-radius: 15px;\n            cursor: pointer;\n            font-size: 12px;\n            transition: background 0.2s;\n        }\n        \n        .page-jump button:hover {\n            background: #2f9e44;\n        }\n        \n        .main-btn:hover, .func-btn:hover {\n            transform: translateY(-3px);\n            box-shadow: 0 6px 12px rgba(0, 0, 0, 0.25);\n        }\n        \n        .main-btn:active, .func-btn:active {\n            transform: translateY(0);\n        }\n        \n        .long-page .main-btn {\n            font-size: 11px;\n            padding: 3px 1px;\n        }\n        \n        .book {\n            width: 100%;\n            display: flex;\n            flex-direction: column;\n            align-items: flex-start;\n            margin-bottom: 8px;\n        }\n        .bookdes {\n            display: flex;\n            flex-direction: row;\n            margin: 5px;\n            width: 100%;\n            position: relative;\n            align-items: center;\n        }\n        .pic {\n            width: 25vw;\n            margin-right: 20px;\n            align-self: center;\n        }\n        .details {\n            width: 72vw;\n            margin-left: 20px;\n            align-self: center;\n            margin-left: auto;\n        }\n        .pic img {\n            border: 1px solid #C4C4C4;\n            border-radius: 5px;\n            box-shadow: 1px 2px 2px black;\n            width: 97%;\n            height: auto;\n        }\n        .name { font-size: 15px; color: #000; }\n        .author {\n            font-size: 10px;\n            display: inline-block;\n            position: absolute;\n            right: 8px;\n        }\n        .tag { font-size: 10px; margin-top: -10px; }\n        #loading {\n            background: rgba(0,0,0,0.1);\n            margin: 10px 0;\n        }\n    `;\n    document.head.appendChild(style);\n    \n\n}",
    "jsLib": "function gbkToutf(title){\n\tconst {java} = this;\n let URLDecoder = Packages.java.net.URLDecoder;\n let \tgb2312Str = URLDecoder.decode(title,\"gbk\");\n let utf8Str = URLDecoder.decode(title,\"utf-8\");\n let result = gb2312Str.length() >= utf8Str.length();\n\ttitle = result?decodeURI(title):gb2312Str;\n\treturn title\n\t}\n\n\nfunction isL(){\n\tconst {java} = this;\n\ttry{\n\t\tjava.getThemeConfig();\n\t\treturn true\n }catch(e){\n \treturn false\n \t}\n}",
    "lastUpdateTime": 1774770695731,
    "loadWithBaseUrl": true,
    "loginUi": "[\n{\n        \"name\": \"标签\",\n        \"type\": \"text\"\n    },\n        {\n        \"name\": \"⬆️更新网页标签\",\n        \"type\": \"button\",\n        \"action\": \"saveTag()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,              \n            \"layout_flexBasisPercent\": 0.4\n        }\n    },\n    {\n        \"name\": \"🖨打印标签\",\n        \"type\": \"button\",\n        \"action\": \"getTag()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,        \n            \"layout_flexBasisPercent\": 0.4   \n        }\n    },\n\n    {\n        \"name\": \"❌删除所有标签\",\n        \"type\": \"button\",\n        \"action\": \"clearTag()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,              \n            \"layout_flexBasisPercent\": 0.4\n        }\n    },\n    {\n        \"name\": \"☕️支持源作者\",\n        \"type\": \"button\",\n        \"action\": \"toThank()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,     \n            \"layout_flexBasisPercent\": 0.4\n        }\n    }\n]",
    "loginUrl": "function getTag(){\n\t   java.longToast(\"打印中...请稍候...\");\n     let \tlocal = java.webView(null,\"https://m.jjwxc.net/assort#\",\"localStorage.getItem('setTag')?localStorage.getItem('setTag'):''\");  \n    let msg = `\\n------这是源变量里的标签----\\n${source.getVariable()}\\n------这是网页里的标签------\\n${local}`;\n    java.log(msg);\n   \tjava.longToast(\"请查看日志查看标签，可复制用来备份\");\n\t}\n    \nfunction saveTag(){\n\tjava.longToast(\"更新中...请稍候...\");\n\tlet tag = result.get(\"标签\") || \"\";\n\tsource.putLoginInfo(`{\n\t\t\"标签\":tag\n\t\t}`);\n\t\tsource.put(\"saveTag\",tag);\n\tsource.setVariable(\"🔼\"+tag);\n\tlet script = `<script>localStorage.setItem('setTag',\\`${tag}\\`);</script>`;\n let \tlocal = java.webView(script,\"https://m.jjwxc.net/assort#\",\"localStorage.getItem('setTag')\");\n if(local){\n   \tjava.longToast(\"更新成功.....\");\n  }\n\t}\t\n\t\nfunction clearTag(){\n\t   java.longToast(\"删除中...请稍候...\");\n     let \tlocal = java.webView(\"<script>localStorage.setItem('setTag','')</script>\",\"https://m.jjwxc.net/assort#\",null);     \t\n   \tjava.longToast(\"已删除网页保存标签\");\n\t}\nfunction toThank(){\n\tjava.startBrowser(\"data:text/html;base64,PGltZyBzdHlsZT0id2lkdGg6MTAwJSIgc3JjPSJhYm91dDpibGFuayIgb25lcnJvcj0idGhpcy5zcmM9YXRvYignYUhSMGNITTZMeTluYVhSbFpTNWpiMjB2WjNWaGJtVnlNREF4TVRJMUwySnZiMnR6YjNWeVkyVXZjbUYzTDIxaGMzUmxjaThsUlRVbE9VSWxRa1VsUlRjbE9Ea2xPRGN2WjNWaGJtVnlMbmRsWW5BPScpIj4KCg==\",\"感谢你的支持\");\t\n\t}\nfunction login(){}",
    "preload": false,
    "preloadJs": "window.source=source;\nwindow.java=java;\nwindow.cache=cache;",
    "shouldOverrideUrlLoading": "if(/[\\?#&]book[AN]/.test(url)){\n\ttitle = url.match(/[\\?#&]book[AN].+?=(.*)/)[1];\n\t title = gbkToutf(title)\n\t java.searchBook(title);\n\t true\n\t}\n\t\n\tif(/novelbasicinfo/.test(url) && !/legado/.test(url)){\n\t\tjava.addBook(url);\n\t\ttrue\n\t\t}\n\t\t\n\t\t\nif(/^http.*?search\\/getSearchForKeyWords/.test(url)){\n\tlet urls = url.replace(/offset=\\d+/,'offset={\\{(page-1)*20}}').split('bookname');\n\t\ttitle = urls[0].match(/searchkeyWords=(.*?)&/)?.[1]??\"\";\t\n\t title = gbkToutf(title)\n\t url = urls[0].replace(/searchkeyWords=.*?&/,'searchkeyWords='+title+'&');\n\t \n\tjava.open(\"explore\", url,urls[1]?decodeURIComponent(urls[1]):\"搜索结果\",\"https://m.jjwxc.net/channel/\")\n\t\n\ttrue\n\t}",
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "❗️保存标签，在网页里生成标签后保存标签。\n❗️删除标签，在网页里编辑标签，把文字删了，点保存。\n◎网页保存的标签信息消失情况：清除webView或清除应用缓存。\n◎源变量消失情况：对源URL进行了更改。\n◎当网页保存的标签信息和源变量两者都消失时，你的标签信息就会消失。\n◎每次点进网页会同步二者。\n\n❗️【编辑订阅源->右上角三点->设置源变量】里有保存的标签，可以复制下来，给其他设备使用。\n\n❗️更新网页标签：\n在点击登录，弹出登录UI，在标签处填写打印的标签，点击更新网页标签，即可更新。【源变量保存了你的标签】",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m-static.jjwxc.net/images/wap/logo.png",
    "sourceName": "精确搜索【0319】",
    "sourceUrl": "https://m.jjwxc.net/assort#@js:cache.put(\"jqsearch\",\"1\",\"5\");java.longToast('加载中...请稍候...');let saveTag=\"\";if(!isL()){let wo= String(source.getVariable()??'');let script=`<script>let wo= \\`${wo}\\`;let iswo = /^🔼.*?@.*?#/.test(wo);let temp = localStorage.getItem('setTag'); let istemp =  /.*?@.*?#/.test(temp);let saveTag = temp;if(iswo)saveTag=wo.replace(/^🔼/,'');localStorage.setItem('setTag',saveTag);saveTag = localStorage.getItem('setTag'); </script>`;saveTag =java.webView(script,'https://m.jjwxc.net/assort#','saveTag');source.setVariable(saveTag)}else{saveTag = source.get(\"saveTag\");if(saveTag)source.setVariable(saveTag);}result",
    "type": 0,
    "variableComment": "\n想利用源变量更新标签请在最前面加上符号🔼\n如\n🔼新名字@xxxxx#我的标签@xxxxx#我的标签@xxxxx#"
  },
  {
    "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": 1775585231245,
    "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": "美涩",
    "sourceIcon": "https://img1.baidu.com/it/u=3056428239,816616493&fm=253&fmt=auto&app=138&f=PNG?w=237&h=237",
    "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": true,
    "lastUpdateTime": 1773236315593,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://s11.ax1x.com/2024/02/13/pF8aDmQ.png",
    "sourceName": "电子木鱼",
    "sourceUrl": "https://muyv.saop.cc/",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 27,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775644394969,
    "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": "涩图",
    "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": 0,
    "cacheFirst": false,
    "customOrder": 29,
    "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": "setTimeout(()=>{document.querySelector('.app-open-button').parentNode.removeChild(document.querySelector('.app-open-button'));},1000)",
    "lastUpdateTime": 1774100230316,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://lf3-cdn-tos.bytescm.com/obj/static/xitu_juejin_web/static/favicons/favicon-32x32.png",
    "sourceName": "稀土掘金",
    "sourceUrl": "https://juejin.cn/user/center/signin?avatar_menu",
    "style": ".app-open-button{display:none !important;}",
    "type": 0
  },
  {
    "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": 1775585169741,
    "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": "美涩",
    "sourceIcon": "https://18oc.life/18link/18j/images/favicon.ico",
    "sourceName": "18J-夜明空",
    "sourceUrl": "https://18oc.life/label/sort",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "2000",
    "customOrder": 30,
    "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/81.0.4044.138 Safari/537.36\"\n}",
    "injectJs": "// 获取基础元素\nvar baseUrl = window.location.href;\nif(/start=\\d+/.test(baseUrl) && !/page=1/.test(baseUrl)){\nvar title = document.querySelector('.article > h1');\ntitle = title ? title.outerHTML : '';\nvar topicDoc = document.querySelector('.topic-doc');\ntopicDoc = topicDoc ? topicDoc.outerHTML : '';\n\n// 获取最赞回应\nvar popularCommentsElements = document.querySelectorAll('#popular-comments .bg-img-green, #popular-comments .reply-quote .short, #popular-comments .comment-photos, #popular-comments .reply-content');\nvar popularComments = '';\nfor (var i = 0; i < popularCommentsElements.length; i++) {\n  popularComments += popularCommentsElements[i].outerHTML;\n}\n\n// 获取普通回应\nvar commentsElements = document.querySelectorAll('#comments .bg-img-green, #comments .reply-quote .short, #comments .comment-photos, #comments .reply-content');\nvar comments = '';\nfor (var j = 0; j < commentsElements.length; j++) {\n  comments += commentsElements[j].outerHTML;\n}\n\n// 获取分页器\nvar paginator = document.querySelector('.paginator');\npaginator = paginator ? paginator.outerHTML : '';\n\n// 构建新的HTML结构\nvar result = ''\n  + '<a href=\"' + baseUrl + '&page=1\">原文地址</a>'\n  + title\n  + topicDoc\n  + '<br><hr><h3>最赞回应：</h3>'\n  + popularComments\n  + '<br><hr><h3>回应：</h3>'\n  + comments\n  + paginator;\n\n// 应用内容处理规则\nif(baseUrl.match(/topic/)){\n  result = result\n    .replace(/[\\s\\S]+?◎◎◎◎◎◎◎/, '')\n    .replace(/style=\".*?\"|raw-style=\".*?\"/g, '')\n    .replace(/<div class=\"cmt-img\" >([\\s\\S]+?)<\\/div>/g, '<details><summary>查看图片</summary>$1</details>')\n    .replace(/<img/g, '<br><img')\n    .replace(/<h3>最赞回应：<\\/h3>\\s*<br><hr><h3>回应：<\\/h3>/, '');\n} else {\n  result = result.replace(/◎◎◎◎◎◎◎[\\s\\S]+/, '');\n}\n\n// 添加样式\nvar style = document.createElement('style');\nstyle.textContent = `\n.tag,a{\n  color:green;\n  text-decoration:none\n}\nimg,video{\n  width:100%;\n  height:auto\n}\nsummary{\n  color:red\n}\n.short{\n  color:#888;\n  margin-left:5px;\n  padding-left:5px;\n  border-left:2px solid green;\n}\nh3{\n  font-size:16px\n}\nh1{\n  font-size:20px\n}\n.topic-card{\n  background-color:#eee;\n  width:100%;\n  height:150px;\n  border:1px solid #ddd;\n}\n.topic-card .group-avatar img{\n  width:5%;\n  float:left\n}\n.topic-cover img{\n  width:20%;\n  float:right\n}\n.topic-bd,.group-avatar{\n  margin:0px 8px 0px 8px\n}\np{\n  text-indent:1.8em;\n  line-height:1.8em;\n}\n.bg-img-green{\n  border-top:1px solid #ddd\n}\nh4 .pubtime{\n  font-size:13px;\n  color:#666\n}\n`;\n\n// 返回处理后的结果\ndocument.documentElement.innerHTML = '<!DOCTYPE html><html><head>' + style.outerHTML + '</head><body>' + result + '</body></html>';\n}",
    "lastUpdateTime": 1774770712611,
    "loadWithBaseUrl": true,
    "loginUrl": "https://www.douban.com",
    "preload": false,
    "ruleArticles": "class.olt@tr[!0:5]||class.result||tag.div.1",
    "ruleContent": "<js>\nresult = result.replace(\n  /<div class=\"rich-content topic-richtext\">([\\s\\S]+?)<\\/div>/g,\n  function(match, innerContent) {\n    var modifiedContent = innerContent.replace(/\\n+/g, \"</p><p data-align=\\\"left\\\">\");  \n    return `<div class=\"rich-content topic-richtext\">${modifiedContent}</div>`;\n  }\n);\njava.setContent(result);\n</js>\n<button onclick=\"copy()\">一键复制</button>\n<textarea id=\"copy\" readonly>\n{{java.get('tit')}}::https://www.douban.com/group/{{/group\\/(.*?)\\/$/.test(baseUrl)?baseUrl.match(/group\\/(.*?)\\/$/)[1]:\"\"}}/discussion?start={{\"{\\{(page-1)*25}\\}\"}}\n</textarea>\n<script>\nfunction copy(){\n  var text = document.getElementById('copy');\n    // 选中文本\n    text.select()\n    // 复制\n    document.execCommand('copy')\nalert(\"复制成功，编辑订阅源粘贴至分类url\")\n}\n</script>\n<br><br><br>\n\n<h2>{{java.get('title')}}</h2>\n{{@@class.group-tags@a@html}}\n<br><br>\n{{@@class.group-intro@html}}\n◎◎◎◎◎◎◎\n<a href=\"{{baseUrl}}\">原文地址</a>\n{{@css:.article>h1@html}}\n{{@@class.topic-doc@html}}\n<br><hr><h3>最赞回应：</h3>\n{{@css:#popular-comments .bg-img-green,#popular-comments .reply-quote .short,#popular-comments .comment-photos,#popular-comments .reply-content@html}}\n<br><hr><h3>回应：</h3>\n{{@css:#comments .bg-img-green,#comments .reply-quote .short,#comments .comment-photos,#comments .reply-content@html}}{{@class.paginator@html}}\n<js>\nif(baseUrl.match(/topic/)){\nresult.replace(/[\\s\\S]+?◎◎◎◎◎◎◎/,'').replace(/style=\".*?\"|raw-style=\".*?\"/g,'').replace(/<div class=\"cmt-img\" >([\\s\\S]+?)<\\/div>/g,'<details><summary>查看图片</summary>$1</details>').replace(/<img/g,'<br><img').replace(/<h3>最赞回应：<\\/h3>\\s*<br><hr><h3>回应：<\\/h3>/,'')\n}else if(/你的账号存在安全隐患/.test(src)){\n\tresult = \"请登录后再试\"\n\t}else{\nresult.replace(/◎◎◎◎◎◎◎[\\s\\S]+/,'')\n}\n</js>",
    "ruleImage": "img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "@js:\n\tif(!/有异常请求从你的 IP 发出/.test(result)){\n\tlet start = Number(baseUrl.match(/start=(\\d+)/)[1])+25;\n\tresult = baseUrl.replace(/start=\\d+/g,'start='+start);\n}",
    "rulePubDate": "回复:{{@@class.r-count @text}}    时间:{{@@class.time@text}}{{@@class.info@text}}##回复:    时间:",
    "ruleTitle": "class.title@a@title||h3@text||tag.div@text@js:java.put(\"tit\",result)",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "GL百合小说研究所::https://www.douban.com/group/645360/discussion?start=0\n图片素材社::https://www.douban.com/group/lina0305/discussion?start=0\n小说打分器::https://www.douban.com/group/658662/discussion?start=0\n小说推荐::https://www.douban.com/group/196238/discussion?start=0\n善意的竞争::https://www.douban.com/group/751019/discussion?start=0\n\n种花后花园II百合区吃瓜组::https://www.douban.com/group/721670/discussion?start=0\n\n搜索小组::https://www.douban.com/group/search?cat=1019&q={{svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/><text x=\"200\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"70\" fill=\"#333\" font-weight=\"bold\">输入要搜索的小组</text></svg>`));if(page==1){let a=\"\";try{a=java.getVerificationCode('data:image/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()}source.setVariable(a);a}else{source.getVariable()};}}&start=0",
    "sourceComment": "访问频繁\n需登录",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/29/35/d1/2935d132-6fdc-042d-31e2-94d6a9098d24/AppIcon-0-0-1x_U007emarketing-0-7-0-85-220.png/492x0w.webp",
    "sourceName": "小组",
    "sourceUrl": "豆瓣小组",
    "style": "textarea{\nwidth:100%;\nheight:50px\n}\n.group-intro{\nbackground-color:#E5ECEF;\npadding:5px\n}\n.tag{\nbackground-color:#FFD800;\nfont-size:13px;\npadding:1px;\nmargin:0px 3px 8px 0px;\nborder-radius:10px;\n}\n.tag,a{\ncolor:green;\ntext-decoration:none\n}\nimg,video{\nwidth:100%;\nheight:auto\n}\nsummary{\ncolor:red\n}\n.short{\ncolor:#888;\nmargin-left:5px;\npadding-left:5px;\nborder-left:2px solid green;\n}\nh3{\nfont-size:16px\n}\nh1{\nfont-size:20px\n}\n.topic-card{\nbackground-color:#eee;\nwidth:100%;\nheight:150px;\nborder:1px solid #ddd;\n}\n.topic-card .group-avatar img{\nwidth:5%;\nfloat:left\n}\n\n.topic-cover img{\nwidth:20%;\nfloat:right\n}\n.topic-bd,.group-avatar{\nmargin:0px 8px 0px 8px\n}\np{\ntext-indent:1.8em;\nline-height:1.8em;\n}\n.bg-img-green{\nborder-top:1px solid #ddd\n}\nh4 .pubtime{\nfont-size:13px;\ncolor:#666\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 31,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773226094413,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/•/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('•');\nfor(i in list){\ntext=list[i].match(/《(.*?)》/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)《/)[1]\njson.push({text:text,index:index})\n}\n}else{\nlist=baseUrl.replace(/http.*?wd=/,'');\ntext=list.match(/《(.*?)》/)[1];\nindex=list.match(/^(\\d+、\\d+、)/)?list.match(/^(\\d+、\\d+、)/)[1]:list.match(/^(.*?)《/)[1];\njson.push({text:text,index:index})\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleDescription": "❗️0、0、开始❗️\n<script>jiexi=[//蓝奏云解析\n\n//格式：[\"解析名称\",\"请求链接\",\"链接参数\",\"密码参数\",\"下载参数\"],\n\n[\"默认解析\",\"https://apis.jxcxin.cn/api/lanzou\",\"url\",\"pwd\",\"type=down\"],\n[\"备用解析\",\"https://tool.bitefu.net/lanzou\",\"url\",\"pwd\",\"type=down\"],\n[\"备用解析\",\"https://lanzou.baihe.gay\",\"url\",\"pwd\",\"type=down\"],\n\n]</script>\n\n\n<br>\n<div class=\"url\">\n<p>资源链接/蓝奏云文件链接</p>\n<textarea rows=\"4\" placeholder=\"蓝奏云链接可以直接拼接密码\n格式：链接#密码\n例子：http://qiqi.lanzoub.com/b09tbdngh#666\" oninput=\"geturl()\"></textarea>\n</div>\n\n<br>\n<div class=\"pwd\">\n<p>如果是蓝奏云链接，请输入密码</p>\n<textarea placeholder=\"在上面写了/没有密码 留空即可\" oninput=\"geturl()\"></textarea>\n</div>\n\n<br>\n<div>\n<p>蓝奏解析接口</p>\n<div class=\"port\"></div>\n<hr>\n</div>\n\n\n\n<br>\n<div>\n<p>资源导入格式</p>\n<div class=\"path\">\n\t\t<button onclick=\"xuan(this,1)\" value=\"auto\"><b>自动识别</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"bookSource\"><b>书源导入</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"rssSource\"><b>订阅导入</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"replaceRule\"><b>替换净化</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"textTocRule\"><b>TXT目录</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"httpTTS\"><b>TTS朗读</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"theme\"><b>阅读主题</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"readConfig\"><b>阅读排版</b></button>\n</div>\n<hr>\n</div>\n\n<br>\n<div>\n<p>导入阅读</p>\n<textarea rows=\"6\" placeholder=\"请输入资源链接\" readonly></textarea>\n<div>\n\t\t<button onclick=\"copy(2)\"><b>复制链接</b></button>\n\t\t<button onclick=\"importu()\" style=\"float:right\"><b>导入阅读</b></button>\n</div>\n<hr>\n</div>\n\n\n\n<iframe hidden></iframe>\n<script>\n\n\n//选中标签\n$=(rule)=>document.querySelectorAll(rule);\n\n\n//获取textarea\ntextarea=(index)=>$('textarea')[index];\n\n\n//删除active\nomit=(A)=>Array.from(A,a=>a.className='');\n\n\n//复制链接\nfunction copy(index){\n\t\ttextarea(index).select();//选中文本\n\t\tdocument.execCommand('copy');//复制\n\t}\n\n\n//切换选择\nxuan=(item,type)=>{\n\t\ttype=type==0?'port':'path'\n\t\tbtn=$(`.${type} button.active`)\n\t\tif(item.value==btn[0].value)return;\n\t\tomit(btn)\n\t\titem.className='active'\n\t\tgeturl()\n\t}\n\n\n//获取value\ngetu=(type,index)=>{\n\t\tu=String($('.'+type+' button.active')[0].value).split(',')[index].trim();\n\nif(type=='path')u=`legado://import/${u}?src=`;\n\t\treturn u\n}\n\n\n//获取url\ngeturl=()=>{\n\t\turl = String(textarea(0).value).trim()\nif(/^\\s*$/.test(url))return textarea(2).value='';\n\nif(url.match(/lanzou/)){//蓝奏云url拼接\ntry{\n\t\tif(url.match(/#.+/)){\n\t\t\t\tpwd = url.split('#')[1]\n\t\t\t\turl = url.split('#')[0]\n\t\t\t}\n\t\telse{\n\t\t\t\tpwd = String(textarea(1).value).trim()\n\t\t\t}\n\t}\ncatch(err){pwd=''}\nurl = getu('port',0)+\n\t'?'+getu('port',1)+'='+url.replace('/tp/','/').replace(/[\\?#].*/g,'')+\n\t'&'+getu('port',2)+'='+pwd+\n\t'&'+getu('port',3);\n}\nreturn textarea(2).value=url=getu('path',0)+url\n}\n\n\n//导入阅读\nimportu=()=>{\n\t\tgeturl();\n\t\tif(!url)return;\n\t\treturn $('iframe')[0].src = url;\n\t}\n\n\n//初始化\n(()=>{\n\n//格式化解析\n\t\t$('.port')[0].innerHTML = '\\n\\t\\t'+jiexi.map(x=>`<button onclick=\"xuan(this,0)\" value=\"${x[1]},${x[2]},${x[3]},${x[4]}\"><b>${x[0]}</b></button>`).join('\\n\\t\\t')+'\\n'\n\n\t\t$('.port button')[0].className='active'\n\t\t$('.path button')[0].className='active'\n\t\treturn geturl()\n\t})()\n</script>\n<style>\n*{\n\tz-index:0;\n\tmargin:0;\n\tpadding:0;\n\twidth:100%;\n\theight:auto;\n}\n.port,.path{\n\toverflow-x:auto;\n\toverflow-y:hidden;\n\twhite-space:nowrap;\n}\nbutton{\n\twidth:30%;\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</style>\n❗️0、0、结束❗️\n\n\n\n——————分割线————————\n{{}}\n<js>\nindex='{{$.index}}';\nif(index.match(/\\d+、\\d+、/)){\nreg=eval('/❗️'+index+'开始❗️[\\\\s\\\\S]+?❗️'+index+'结束❗️/g');\nreg2=eval('/❗️'+index+'..❗️/g');\nresult=result.match(reg)?result.match(reg)[0]:'<br/>'\nresult.replace(reg2,'')}else{result=''}\n</js>",
    "ruleImage": "http://pp.myapp.com/ma_icon/0/icon_54155739_1657017481/256{{}}",
    "ruleLink": "$.id@js:\nurl=`{{$.url}}`\nif(result)url+=`/tp/{{$.id}}`;\nString(url).replace(/^蓝奏链接(.+com).*\\/(.+)/,'$1/tp/$2').replace(/^..导入/,'')",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "帮你导入::http://www.baidu.com?wd=0、0、《帮你导入v2(beta)》◎◎",
    "sourceComment": "帮你导入v2(beta)\n",
    "sourceGroup": "工具",
    "sourceIcon": "https://img2.baidu.com/it/u=3550540229,3606721659&fm=253&fmt=auto&app=138&f=JPEG?w=492&h=500",
    "sourceName": ".Thomas.直链生成",
    "sourceUrl": "帮你导入v2Thomas",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 32,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773226148479,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/•/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('•');\nfor(i in list){\ntext=list[i].match(/《(.*?)》/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)《/)[1]\njson.push({text:text,index:index})\n}\n}else{\nlist=baseUrl.replace(/http.*?wd=/,'');\ntext=list.match(/《(.*?)》/)[1];\nindex=list.match(/^(\\d+、\\d+、)/)?list.match(/^(\\d+、\\d+、)/)[1]:list.match(/^(.*?)《/)[1];\njson.push({text:text,index:index})\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleDescription": "❗️0、2、开始❗️\n<style>\nbutton,input{\nmargin:8px\n}\n#basic-addon1,#replaceSpan1{\nbackground-color:Azure;\npadding:5px\n}\ntextarea{\nbackground-color:GhostWhite;\nborder:0px basic-addon1\n}\n</style>\n<script>function $(selector) { return document.querySelector(selector); }\nfunction $$(selector) { return document.querySelectorAll(selector); }</script>\n\n————蓝奏云链接 生成直链————<br><br>\n✱✱输入蓝奏云文件链接：<br></p>\n <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n                        <textarea class=\"form-control\" onmouseover=\"this.focus();\" id=\"textSour\" name=\"textSour\" rows=\"10\" aria-describedby=\"basic-addon1 style=\"max-height: 2222px;\" placeholder=\"若这里已包含密码，则下面不需再输密码。\n以下格式皆可\nhttp://qiqi.lanzoub.com/b09tbdngh#666\nhttp://qiqi.lanzoub.com/b09tbdngh密码:666\nhttp://qiqi.lanzoub.com/b09tbdngh密码666\n或分两行也可\n下载地址：http://qiqi.lanzoub.com/b09tbdngh\n密码：666\"></textarea>\n                    </div>\n                </div>\n                <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n                        <div class=\"input-group\">\n                            <span>✱✱输入密码：</span>\n                            <input type=\"text\" class=\"form-control\" id=\"textPattern\" name=\"textPattern\" placeholder=\"若无密码 留空即可\" aria-describedby=\"basic-addon1\" style=\"width: 65%;\">\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"form-group\">\n                    <div class=\"col-sm-8\">\n                        <input type=\"button\" onclick=\"return onMatch()\" value=\"◎生成直链◎\" class=\"btn btn-success\">\n<button onclick=\"copyText()\">◎复制直链◎</button>\n                        <input type=\"button\" onclick=\"Empty();\" value=\" 清空输入框 \" class=\"btn btn-danger\">\n                    </div>\n\n                   <div class=\"col-sm-8\">\n<button onclick=\"href=copyText7()\">一键导入书源</button>\n\n<button onclick=\"href=copyText8()\">一键导入订阅</button>\n\n<button onclick=\"href=copyText9()\">一键导入净化</button>\n                    </div>\n                </div>\n\n                <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n<div id=\"textResult\"></div>\n                        <textarea onmouseover=\"this.focus();\" id=\"textMatchResult\" class=\"form-control\" rows=\"10\" style=\"max-height: 2222px;\" placeholder=\"直链作用：\n＃浏览器访问直链，直接下载蓝奏云文件。\n＃在阅读里可使用直链网络导入书源订阅源，无须先把蓝奏云文件下载到本地（书源订阅源文件需为txt文件上传到蓝奏云）。\n＃本工具依赖服务器配置，若服务器咕了，则本工具失效，直链失效。\n＃legado://import/auto?src=直接用这个自动判断语句会出错，懒得另外写判断，请用户自己人脑判断叭。\" readonly=\"readonly\"></textarea>\n                    </div>\n                </div>\n<div class=\"col-sm-12\">\nrssSource by.迷迭  <br>\nthk.Thomas提供 &金01461协助\n</div>\n<iframe id=\"source\" src=\"\" width=\"0px\" height=\"0px\" style=\"visibility:hidden\"></iframe>\n<script>\nvar copyText = function() {\n    var text = document.getElementById('input');\n    // 选中文本\n    text.select()\n    // 复制\n    document.execCommand('copy')\n}\n\n//🖤🖤🖤🖤生成直链🖤🖤🖤🖤\nfunction onMatch() {\n    var lanzurl = document.getElementById(\"textSour\").value.match(/#|密码/)? document.getElementById(\"textSour\").value.replace(/.*(http.*?)(#|\\s*密码).*/,'$1'): document.getElementById(\"textSour\").value; \n    var mima = document.getElementById(\"textSour\").value.match(/(#|密码)/)? document.getElementById(\"textSour\").value.replace(/.*(#|\\s*密码:|\\s*密码：|\\s*密码)(.*)/,'$2'): document.getElementById(\"textPattern\").value;\n    var textMatchResult = \"https://apis.jxcxin.cn/api/lanzou?type=down&url=\"+ lanzurl + \"&pwd=\" + mima;\n\ndocument.getElementById(\"textMatchResult\").value = textMatchResult;\nreturn textMatchResult;\n}\n\n//🖤🖤🖤🖤复制直链🖤🖤🖤🖤\nvar copyText = function() {\n    var text = document.getElementById('textMatchResult');\n    // 选中文本\n    text.select()\n    // 复制\n    document.execCommand('copy')\n}\n\n//🖤🖤🖤清空输入框🖤🖤🖤\nfunction Empty() {\n $(\"#textSour\").value=\"\";\n $(\"#textPattern\").value=\"\";\n    $(\"#textMatchResult\").value=\"\";\n    $(\"#textReplace\").value=\"\";\n    $(\"#textReplaceResult\").value=\"\";\n    $(\"#textSour\").select();\n}\n\n//💔legado://import/auto?src=并且不能用这个自动判断语句，会出错。懒得再搞判断书源/订阅源/净化规则了💔\n\n//❤️书源一键导入❤️\nvar copyText7 = function() {\n    document.getElementById(\"source\").src =\"legado://import/bookSource?src=\"+onMatch();\n}\n\n//❤️❤️订阅源一键导入❤️❤️\nvar copyText8 = function() {\n    document.getElementById(\"source\").src = \"legado://import/rssSource?src=\"+onMatch();\n}\n\n//❤️❤️❤️净化规则一键导入❤️❤️❤️\nvar copyText9 = function() {\n    document.getElementById(\"source\").src = \"legado://import/replaceRule?src=\"+onMatch();\n}\n\n</script>\n❗️0、2、结束❗️\n\n\n\n——————分割线————————\n{{}}\n<js>\nindex='{{$.index}}';\nif(index.match(/\\d+、\\d+、/)){\nreg=eval('/❗️'+index+'开始❗️[\\\\s\\\\S]+?❗️'+index+'结束❗️/g');\nreg2=eval('/❗️'+index+'..❗️/g');\nresult=result.match(reg)?result.match(reg)[0]:'<br/>'\nresult.replace(reg2,'')}else{result=''}\n</js>",
    "ruleImage": "<js>src=\"http://pp.myapp.com/ma_icon/0/icon_54155739_1657017481/256\"</js>",
    "ruleLink": "$.id@js:\nurl=`{{$.url}}`\nif(result)url+=`/tp/{{$.id}}`;\nString(url).replace(/^蓝奏链接(.+com).*\\/(.+)/,'$1/tp/$2').replace(/^..导入/,'')",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "蓝奏云直链::http://www.baidu.com/wd=0、2、《jxcxin线路》◎蓝奏云链接.生成直链◎",
    "sourceComment": "by.迷迭  用关耳订阅源框架硬改出来的\nthk.Thomas提供 &金01461协助\n\n没系统学过太难了。\n\n小说交流群462030508\nA群637775313不加人。若群炸了查看此群群资料找新家。\n\n内容取自网络，仅供学习参考试用，请24小时内删除。找到感兴趣的书籍请支持正版支持作者。",
    "sourceGroup": "工具",
    "sourceIcon": "https://img2.baidu.com/it/u=3550540229,3606721659&fm=253&fmt=auto&app=138&f=JPEG?w=492&h=500",
    "sourceName": "jxcxin蓝奏直链生成",
    "sourceUrl": "蓝奏云生成直链#md230302",
    "style": "#jhss a{\nfont-size:10px;\ncolor:red;\ntext-decoration:none;\n}\n\n#jhss p{\ndisplay:inline-block;\nwidth:8em;\n}\n\n#jhss p{\nmargin:0;\npadding:0;\ncolor:#666;\n}\n\n#jhss div{\nmargin:0;\npadding:10px;\n}\n\n#jhss h1{\nmargin:0;\npadding:9px;\nfont-size:20px;\n}\n\n#jhss input{\nmargin:2px;\npadding:2px 6px;\nfont-size: 1em;\nbackground-color:rgba(200,200,200,0.5);\ncolor:#A00;\nborder:0;\nborder-radius: 3px;\ntext-decoration: none;\ntext-align:center;\n}\ntextarea{\nwidth:100%\n}\n.menu {\n\tjustify-content: space-between;\n\tmax-width: 900px;\n\tmargin: 0 5px;\n}\n.menu .button {\n\twidth: 55px;\n\theight: 15px;\n\tmin-height: 5px;\n\tmargin: 5px 0px;\n\tcursor: pointer;\n}\n.button text {\n\ttext-anchor: middle;\n\tdominant-baseline: middle;\n}\n\n.button rect {\n\twidth: 100%;\n\theight: 100%;\n\tfill: transparent;\n\tstroke: #666;\n\tstroke-width: 2px;\n}\n.button rect.busy {\n\tstroke: #fD1850;\n\tstroke-dasharray: 30 90;\n\tanimation: stroker 1s linear infinite;\n}\n.tabbox {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-flow: column;\n}\n.tabtitle {\n\tdisplay: flex;\n\tz-index: 1;\n\tjustify-content: center;\n}\n.tabtitle>div {\n\tcursor: pointer;\n\tpadding: 1px 10px 0 10px;\n\tborder-bottom: 3px solid transparent;\n\tfont-weight: bold;\n}\n.tabtitle>.this {\n\tcolor: #4f9da6;\n\tborder-bottom-color: #4EBBE4;\n}\n.tabbody {\n\tflex: 1;\n\tdisplay: flex;\n\tmargin-top: -1px;\n\tborder: 1px solid #A9A9A9;\n\theight: 0;\n}\n.tabbody>* {\n\tflex: 1;\n\tflex-flow: column;\n\tdisplay: none;\n}\n.tabbody>.this {\n\tdisplay: flex;\n}\n.tabbody>*>.titlebar{\n\tdisplay: flex;\n}\n.tabbody>*>.titlebar>*{\n\tflex: 1;\n\tmargin: 1px 1px 1px 1px;\n}\n.tabbody>*>.context {\n\tflex: 1;\n\tflex-flow: column;\n\tborder: 0;\n\tpadding: 5px;\n\toverflow-y: auto;\n}\n.tabbody>*>.inputbox{\n\tborder: 0;\n\tborder-bottom: #A9A9A9 solid 1px;\n\theight: 15px;\n\ttext-align:center;\n}\n.link>* {\n\tdisplay: flex;\n\tmargin: 5px;\n\tborder-bottom: 1px solid;\n\ttext-decoration: none;\n}\n#RuleList>label>* {\n\tbackground: #eee;\n\tpadding-left: 3px;\n\tmargin: 2px 0;\n\tcursor: pointer;\n}\n#RuleList input[type=radio] {\n\tdisplay: none;\n}\n#RuleList input[type=\"radio\"]:checked+* {\n\tbackground: #15cda8;\n}\n.isError {\n\tcolor: #FF0000;\n}\n#RuleJsonString{\nheight:600px\n}\nsvg text{\nfont-size:10px\n}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 33,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1774475223761,
    "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>",
    "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",
    "sourceGroup": "美涩",
    "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": 0,
    "cacheFirst": false,
    "customOrder": 34,
    "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.item",
    "ruleContent": "tag.link@html&&class.entry@html\n##^##<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">",
    "ruleImage": "tag.img@src",
    "ruleLink": "class.item-title@tag.a@href",
    "ruleNextPage": "page",
    "rulePubDate": "🏷️ {{@@class.item-category@text}}　　　　⏱️ {{@@class.date@text}}",
    "ruleTitle": "class.item-title@tag.a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "Android::https://www.423down.com/wp-admin/admin-ajax.php,{\"body\": \"type=cat&page={{page}}&id=11&action=mobx_load_more\",\"method\": \"POST\"}\n搜索.右上.源变量::https://www.423down.com/search/{{key=source.getVariable();if(key==\"\"||key==null)source.setVariable('破解');source.getVariable()}}/page/{{page}}",
    "sourceComment": "频繁搜索有限制，当被限后，只能3分钟后再搜索。\n预设搜索词为“破解”。可在右上、设置源变量，输入你想搜索的软件，确定，然后下拉刷新，得到搜索结果。\n————————\n✱✱小说交流群462030508。\nA群637775313不加人。若家炸了查看此群群资料找新家。\n\n✱✱内容取自网络，仅供学习参考，请同学们在24小时内删除✱✱\n————————\n图标\nhttps://www.423down.com/favicon.ico\nlogo不适用\nhttps://www.423down.com/wp-content/plugins/wp-mobile-x/themes/mobx-default/images/newlogo.png\n————————\n📑 安卓软件下载：\n　　知名软件达人|423DOWN.COM,更新快、专注去广告类软件输出10年、个人IP品牌软件分享站\n————————\n\nAndroid::https://www.423down.com/wp-admin/admin-ajax.php,{\"body\": \"type=cat&page={{page}}&id=11&action=mobx_load_more\",\"method\": \"POST\"}\napk::https://www.423down.com/apk/page/{{page}}\n搜索0.右上.源变量::https://www.423down.com/search/{{key=source.getVariable();if(key==\"\"||key==null)source.setVariable('破解');source.getVariable()}}/page/{{page}}\n搜索1.右上.源变量::https://www.423down.com/search/{{source.getVariable()}}/page/{{page}}\n搜索2.改源分类URL::https://www.423down.com/search/破解/page/{{page}}",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://www.423down.com/favicon.ico",
    "sourceName": "㊦♛423 Down",
    "sourceUrl": "https://www.423down.com/wp-admin/admin-ajax.php,{\n  \"body\": \"type=index&page={{page}}&id=&action=mobx_load_more\",\n  \"method\": \"POST\"\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 36,
    "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": "<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\n@js:\nif(!result.match(/^http/) && !result.match(/\\d+、\\d+、/)){\nresult=\"https://www.coolapk.com/link?url=\"+encodeURIComponent(result)\n}else{result=result}",
    "ruleNextPage": "",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "💠 导航::https://knowsex.net/【https://i.niupic.com/images/2022/09/04/a4Yz.png】《知性》◎两性健康-开放式性教育网站◎ https://zztt34.com/【https://i.niupic.com/images/2022/09/04/a4Yv.png】《黑料不打烊》◎https://xxxmmm.email/◎ http://fabu.lwfuli.com:2095/fabu/fabu.php【https://i.niupic.com/images/2022/09/04/a4Yw.png】《老王福利导航》◎宅男第一福利导航站◎ https://wa3.xyz/【https://i.niupic.com/images/2022/09/04/a4Yx.png】《老三导航》◎全球华人成人导航◎ https://fulihttp.com/【https://i.niupic.com/images/2022/09/04/a4Yy.png】《第一福利导航》◎第一学术网😏◎ https://aiboy.cc/【https://i.niupic.com/images/2022/09/04/a4YA.png】《爱男孩帅哥网》◎图片、小说、电影、资讯◎ https://141jj.com/【https://i.niupic.com/images/2022/09/04/a4YB.png】《141JJ》◎🚀VPN｜很全的成人網站列表◎ https://theporndude.com/zh【https://i.niupic.com/images/2022/09/04/a4YC.png】《PornDude》◎🚀VPN｜色情视频网站列表◎ https://mygaysites.com/【https://i.niupic.com/images/2022/09/04/a4YD.png】《MyGaySites》◎🚀VPN｜同志色情网站聚合◎\n\n\n🌐 聚合::https://www.fuqpremium.com/zh/【https://i.niupic.com/images/2022/09/04/a4ZE.png】《FreePornTubes》◎免费色情视频◎ https://www.fuq.com/zh/【https://i.niupic.com/images/2022/09/04/a4ZG.png】《Fuq》◎百万免费视频在线看◎ https://www.tgtube.com/zh/【https://i.niupic.com/images/2022/09/04/a4ZF.png】《TGTube》◎油管风格的色情视频和电影◎ https://www.forhertube.com/zh/【https://i.niupic.com/images/2022/09/04/a4Zv.png】《ForHerTube》◎适合女性的色情视频◎ https://www.ixxx.com/zh/【https://i.niupic.com/images/2022/09/04/a4ZA.png】《iXXX》◎免费色情电影◎ https://www.tubegalore.com/zh/【https://i.niupic.com/images/2022/09/04/a4Zz.png】《TubeGalore》◎巨大的免费色情视频数据库◎ https://www.maturetube.com/zh/【https://i.niupic.com/images/2022/09/04/a4ZC.png】《MatureTube》◎辣妈、半老徐娘、奶奶等色情视频◎ https://www.gaymaletube.com/zh/【https://i.niupic.com/images/2022/09/04/a4ZB.png】《GayMaleTube》◎拥有最热门的同性恋色情视频◎ https://www.porzo.com/zh/【https://i.niupic.com/images/2022/09/04/a4Zx.png】《PORZO》◎超过1000种分类和数百万视频◎ https://www.dinotube.com/zh/【https://i.niupic.com/images/2022/09/04/a4ZD.png】《DinoTube》◎免费色情电影大合集◎ https://www.lobstertube.com/zh/【https://i.niupic.com/images/2022/09/04/a4Zy.png】《LobsterTube》◎数百万激情色情电影◎ https://www.tiava.com/zh/【https://i.niupic.com/images/2022/09/04/a4ZH.png】《Tiava》◎排名第一的100%免费高品质色情资源网站◎\n\n\n🎬 传媒::http://qqcav.vip/【https://i.niupic.com/images/2022/09/04/a50s.png】《青青草传媒》◎免费高清在线传媒视频◎ http://nyg24.xyz/【https://i.niupic.com/images/2022/09/04/a50z.png】《女优阁》◎小草资源在线观看视频◎ http://sqpb.xyz/【https://i.niupic.com/images/2022/09/04/a517.png】《AV福利社》◎提前到野生日本◎ http://bsjie.xyz/【https://i.niupic.com/images/2022/09/04/a519.png】《鲍湿街》◎日本免费AV视频◎ http://cysys.xyz/【https://i.niupic.com/images/2022/09/04/a51a.png】《少女馆》◎日本免费AV视频◎ http://wblav1.top/【https://i.niupic.com/images/2022/09/04/a50v.png】《忘不了AV》◎在线观看视频◎ https://rouv01.xyz/【https://i.niupic.com/images/2022/09/04/a51o.png】《肉视频》◎最新高品质国产AV◎ http://fangsung.com/【https://i.niupic.com/images/2022/09/04/a51p.png】《免费A片》◎免费A片视频◎ https://www.mdcm.tk/【https://i.niupic.com/images/2022/09/04/a51i.png】《麻豆精品》◎麻豆视频精选◎ https://9924.cf/【https://i.niupic.com/images/2022/09/04/a51c.png】《麻豆视频》◎原创影视聚合◎ https://www.aiwuav.xyz/【https://i.niupic.com/images/2022/09/04/a51j.png】《爱污传媒》◎https://www.aiwu.info/◎ https://kvotr.cc/【https://i.niupic.com/images/2022/09/04/a50u.png】《麻豆视频》◎海量高清VIP视频免费观看◎ http://qing123.co/【https://i.niupic.com/images/2022/09/04/a51k.png】《情趣之家》◎中村知惠免费观看◎ http://smyis.xyz/【https://i.niupic.com/images/2022/09/04/a51l.png】《稻妻影视》◎日本免费AV视频◎ http://qingydy.xyz/【https://i.niupic.com/images/2022/09/04/a50F.png】《青草精品》◎日本免费AV视频◎ http://qswyt.xyz/【https://i.niupic.com/images/2022/09/04/a50G.png】《波多大全》◎日本免费AV视频◎ https://cn3.ab101.icu/【https://i.niupic.com/images/2022/09/04/a50Y.png】《AVΗD101》◎高清在线谜片◎ https://jiuyaopei.com/【https://i.niupic.com/images/2022/09/04/a50Z.png】《九妖陪》◎高清AV资源在线看◎ https://byym26.com/【https://i.niupic.com/images/2022/09/04/a512.png】《水果派》◎中国首档的成人影片解说节目◎ http://www.saosss.com/【https://i.niupic.com/images/2022/09/04/a515.png】《高清视频》◎各大传媒高清视频◎\n\n\n🔞 成人::https://91av.pages.dev/【https://i.niupic.com/images/2022/09/04/a4Zl.png】《91AV聚合》◎无码、麻豆、糖果等聚合◎ https://soav.buzz/【https://i.niupic.com/images/2022/09/04/a50m.png】《SOAV》◎成人视频搜索◎ https://jifangge.vip/【https://i.niupic.com/images/2022/09/04/a4Z6.png】《集芳阁》◎免费的福利视频云搜平台◎ https://www.c234u.com/【https://i.niupic.com/images/2022/09/04/a4Z5.png】《四虎影院》◎https://www.4hu.tv/◎ https://qswyt.pw/【https://i.niupic.com/images/2022/09/04/a50g.png】《五月天》◎五月天综合网站提供福利视频◎ https://7m66.xyz/【https://i.niupic.com/images/2022/09/04/a50e.png】《萝莉姬》◎萝莉姬-7mav.xyz◎ https://jf16g.xyz/【https://i.niupic.com/images/2022/09/04/a4Z7.png】《蔡萝莉》◎https://88972.xyz/｜https://clla2.xyz/◎ https://8xx.live/【https://i.niupic.com/images/2022/09/04/a4Z8.png】《拔插拔插》◎https://github.com/8iosafri/kanpian◎ https://zuixin.fy311.com/【https://i.niupic.com/images/2022/09/04/a51n.png】《风月同天》◎https://www.ebay.com/usr/fengyuetongtian◎ https://www.avbus1.com/【https://i.niupic.com/images/2022/09/04/a4Za.png】《AV巴士》◎https://www.busfabu.xyz/◎ https://www.1024x.ga/【https://i.niupic.com/images/2022/09/04/a51s.png】《少女福利姬》◎少女福利姬-1024X.GA◎ https://bbluonu.vip/【https://i.niupic.com/images/2022/09/04/a51q.png】《B影院》◎https://github.com/Bcinema/Btv◎ http://zhiyin202206.xyz/【https://i.niupic.com/images/2022/09/04/a51r.png】《知阴》◎http://HuiJiaDiZhi.com/◎ https://5gse.buzz/【https://i.niupic.com/images/2022/09/04/a4Zd.png】《5G影院》◎天天5g天天爽◎ http://maomi201.buzz/【https://i.niupic.com/images/2022/09/04/a50H.png】《猫咪天堂》◎亚洲美女视频大尺寸在线观看◎ https://caomeisp.net/【https://i.niupic.com/images/2022/09/04/a50p.png】《草莓视频》◎麻豆精品亚洲永久免费精品◎ https://www.xvideos1.site/【https://i.niupic.com/images/2022/09/04/a51w.png】《XVideos高清》◎XVIDEOS免費成人視頻◎ https://avhd1.com/【https://i.niupic.com/images/2022/09/04/a4Zg.png】《HD高清AV》◎免費A片線上看◎ https://www.69crtt.gq/【https://i.niupic.com/images/2022/09/04/a50U.png】《69成人天堂》◎亚洲成人视频◎ https://www.xt6s.xyz/【https://i.niupic.com/images/2022/09/04/a4Z0.png】《XNXX》◎镜像｜免费成人视频｜https://c-xnxx.tk/◎ https://oxxav15.xyz/【https://i.niupic.com/images/2022/09/04/a4Zh.png】《OXXAV》◎国产自拍视频网站◎ https://nbpp.buzz/【https://i.niupic.com/images/2022/09/04/a50O.png】《奶爸视频》◎国产AV视频◎ https://www.gcjxdz.xyz/【https://i.niupic.com/images/2022/09/04/a50S.png】《国产精选》◎成人火爆视频收集全网各类成人视频◎ https://jav.javfinder.tk/【https://i.niupic.com/images/2022/09/04/a51t.png】《JAVFINDER》◎流行的亚洲色情电影◎ https://bi81.top/【https://i.niupic.com/images/2022/09/04/a4Zi.png】《Bi8.TV》◎高清无水印福利视频◎ https://2.258porn.cf/【https://i.niupic.com/images/2022/09/04/a50P.png】《258Porn》◎258PORN成人AV線上看◎ https://1012.91p51.live/index.php【https://i.niupic.com/images/2022/09/04/a4Zj.png】《91porn》◎91自拍视频◎ http://bnd25.com/【https://i.niupic.com/images/2022/09/04/a51u.png】《YouPorn》◎你的色情片◎ https://91porn.cf/【https://i.niupic.com/images/2022/09/04/a50N.png】《91国产视频》◎91国产视频◎ https://91guochan.net/【https://i.niupic.com/images/2022/09/04/a50K.png】《91国产视频》◎亚洲永久免费精品视频◎ https://zishijiaoxue3.xyz/【https://i.niupic.com/images/2022/09/04/a50L.png】《姿势教学》◎一夜夫妻https://www.yiyefuqi.com/◎ https://taoh2729.com/【https://i.niupic.com/images/2022/09/04/a50V.png】《桃红色界》◎给你一个激情世界◎ https://85videos.com/【https://i.niupic.com/images/2022/09/04/a51v.png】《85Videos》◎免费高清色情视频◎ https://playav.tv/【https://i.niupic.com/images/2022/09/04/a51B.png】《PlayAV》◎免費亞洲高清影片每日精選更新◎ http://hhdyw.buzz/【https://i.niupic.com/images/2022/09/04/a50I.png】《八点影院》◎日本AV视频◎\n\n\n🚀 翻墙::https://po18hub.com/【https://i.niupic.com/images/2022/09/04/a4YO.png】《Po18hub》◎https://po18av.vip/◎ https://www.xnxx.com/【https://i.niupic.com/images/2022/09/04/a4Z0.png】《XNXX》◎免费成人视频◎ https://zh.xhamster.com/【https://i.niupic.com/images/2022/09/04/a4Z1.png】《xHamster》◎免费成人视频◎ https://www.xvideos.com/【https://i.niupic.com/images/2022/09/04/a51w.png】《XVIDEOS》◎免费成人视频◎ https://cn.pornhub.com/【https://i.niupic.com/images/2022/09/04/a51x.png】《PornHub》◎全球最大免费性爱影片◎ https://jable.tv/【https://i.niupic.com/images/2022/09/04/a51y.png】《Jable》◎日本免費高清AV在线看、发布页：https://alldayj.com/◎ https://netflav.com/【https://i.niupic.com/images/2022/09/04/a4Z4.png】《Netflav》◎让您在线上观赏日本成人电影◎\n\n\n🈲 伦理::https://www.72dy.com/【https://i.niupic.com/images/2022/09/04/a4YU.png】《72电影》◎高清伦理在线观看◎ https://www.2345ti.com/【https://i.niupic.com/images/2022/09/04/a4YJ.png】《235影视》◎经典理伦片◎ https://www.tldyy.net/【https://i.niupic.com/images/2022/09/04/a4YK.png】《天狼影院》◎伦理影片◎ https://vip.eeussjt.com/【https://i.niupic.com/images/2022/09/04/a4YL.png】《EEUSS影院》◎免费快播电影◎ https://www.hense.cc/【https://i.niupic.com/images/2022/09/04/a50T.png】《很色视频》◎最新最快的视频分享数据◎ https://xn--ehqy0ag27f64i.xyz/【https://i.niupic.com/images/2022/09/04/a4YT.png】《韩三伦理小站》◎每日更新伦理影片◎\n\n\n🔥 耽影::https://www.fu210.top/【https://i.niupic.com/images/2022/09/04/a4YV.png】《爱妖灵》◎腐剧、耽美、泰剧暖光影视官网◎ https://www.bl210.top/【https://i.niupic.com/images/2022/09/04/a4YW.png】《曙光影视》◎腐剧、耽美、泰剧暖光影视官网◎ https://www.tj8.top/【https://i.niupic.com/images/2022/09/04/a4YW.png】《泰剧网》◎腐剧、耽美、泰剧暖光影视官网◎ https://www.bttwoo.com/【https://i.niupic.com/images/2022/09/04/a4YX.png】《两个BT》◎同性、发布页：https://www.bttwo.vip/◎ https://g.manmankan.com/【https://i.niupic.com/images/2022/09/04/a4YY.png】《漫漫看》◎男同影视大全◎",
    "sourceComment": "//图标qt后面加1可以替换成白底黑字。例：https://gitee.com/i-c/tc/raw/master/dy/tb/qt1.png\n//打不开的网站请使用科学上网工具\n//已停止维护更新",
    "sourceGroup": "美涩",
    "sourceIcon": "http://pic.y8l.com/up/2022-6/202262415595588.png",
    "sourceName": "63其他ǫᵀ",
    "sourceUrl": "其他影视#4",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "contentBlacklist": "https://lupic.cdn.bcebos.com/.*,\nhttps://cpro.baidu.com/.*,\nhttps://eclick.baidu.com/.*,\nhttps://sofire.baidu.com/.*,\nhttps://analytics.woozooo.com/.*,\nhttps://statics.woozooo.com/.*,\n\nhttps://po18,\nhttps://mimg.0c1q0l.cn,\nhttps://www.googletagmanager.com,\nhttps://www.google-analytics.com,\nhttps://mc.usihnbcq.cn,\nhttps://mg.g1mm3d.cn,\nhttps://mscs.svaeuzh.cn,\nhttps://cnzz.hhttm.top,\nhttps://tp.vinuxhome.com,\nhttps://cnzz.mmstat.com,\nhttps://www.baihuillq.com,\nhttps://s23.cnzz.com,\nhttps://z3.cnzz.com,\nhttps://c.cnzz.com,\nhttps://stj.v1vo.top,\nhttps://z12.cnzz.com,\nhttps://img.mosflower.cn,\nhttps://tips.gamevvip.com,\nhttps://ehwe.yhdtns.com,\nhttps://xdn.cqqc3.com,\nhttps://www.jixunkyy.cn,\nhttps://sp.chemacid.cn,\nhttps://hm.baidu.com,\nhttps://s9.cnzz.com,\nhttps://z6.cnzz.com,\nhttps://um.cavuc.com,\nhttps://mav.mavuz.com,\nhttps://wofwk.aoidf3.com,\nhttps://z5.cnzz.com,\nhttps://xc.hubeijieshikj.cn,\nhttps://tj.tianwenhu.com,\nhttps://xg.gars57.cn,\nhttps://k.jinxiuzhilv.com,\nhttps://cdn.bootcss.com,\nhttps://ppl.xunzhuo123.com,\nhttps://xomk.jiangjunmh.top,\nhttps://img.xunzhuo123.com,\nhttps://z1.cnzz.com,\nhttps://s13.cnzz.com,\nhttps://xg.huataisangao.cn,\nhttps://z7.cnzz.com,\nhttps://xg.huataisangao.cn,\nhttps://z2.cnzz.com,\nhttps://s96.cnzz.com,\nhttps://q11.cnzz.com,\nhttps://thy.dacedsfa.cn,\nhttps://xg.whsbpw.cn,\nhttps://s19.cnzz.com,\nhttps://z8.cnzz.com,\nhttps://s4.cnzz.com,\nhttps://f5w.as12df.top,\nhttps://ae01.alicdn.com,\nhttps://www.92424.cn,\nhttps://k.wudejia.com,\nhttps://vivovip.mmszxc.top,\nhttps://qiu.xixiqiu.com,\nhttps://cdnjs.hnfenxun.com,\nhttps://cms.qdwght.com",
    "customOrder": 37,
    "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": "<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\n@js:\nif(!result.match(/^http/) && !result.match(/\\d+、\\d+、/)){\nresult=\"https://www.coolapk.com/link?url=\"+encodeURIComponent(result)\n}else{result=result}",
    "ruleNextPage": "",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "💠 导航::https://fulihttp.com/【https://fulihttp.com/static/images/logo.svg】《第一福利导航》◎第一学术网😏◎ https://knowsex.net/【https://knowsex.net/main/contraception/img/contraceptive.jpg】《知性两性健康》◎两性健康-开放式性教育网站◎ https://aiboy.cc/【https://aiboy.cc/uploadfile/2021/0612/20210612014920789.jpg】《爱男孩帅哥网》◎同志、图片、小说、电影、资讯◎ https://抖淫.com/【https://d.0tcsi.bar/favicon.ico】《抖淫》◎抖淫短视频◎ https://www.zztt35.com/【https://static.zztt87.com/usr/uploads/2022/05/1824266711.png】《黑料不打烊》◎网红黑料、吃瓜🍉｜https://xxxmmm.email/◎ https://141jj.com/【https://files.catbox.moe/v2m4l7.png】《141JJ》◎🚀VPN｜很全的成人網站列表◎ https://theporndude.com/zh【https://media.porndudecdn.com/includes/images/mobile-logo-r.svg】《PornDude》◎🚀VPN｜色情视频网站列表◎ https://mygaysites.com/【https://mygaysites.com/includes/images/mobilegaylogo.svg】《MyGaySites》◎🚀VPN｜同志色情网站聚合◎\n\n\n🌐 聚合::https://www.fuqpremium.com/zh/【https://www.fuqpremium.com/templates/fuqpremium/images/icon.png】《FreePornTubes》◎🚀VPN｜优质色情视频导航◎ https://www.fuq.com/zh/【https://www.fuq.com/templates/fuq/images/logo.svg】《Fuq》◎🚀VPN｜色情电影导航◎ https://www.tgtube.com/zh/【https://www.tgtube.com/templates/tgtube/images/logo.svg】《TGTube》◎🚀VPN｜人妖色情油管视频导航◎ https://www.forhertube.com/zh/【https://www.forhertube.com/templates/forhertube/images/logo.svg】《ForHerTube》◎🚀VPN｜适合女性的色情视频导航◎ https://www.ixxx.com/zh/【https://www.ixxx.com/templates/ixxx/images/logo.svg】《iXXX》◎🚀VPN｜色情电影导航◎ https://www.tubegalore.com/zh/【https://www.tubegalore.com/templates/tubegalore/images/logo.svg】《TubeGalore》◎🚀VPN｜色情电视导航◎ https://www.maturetube.com/zh/【https://www.maturetube.com/templates/maturetube/images/logo.svg】《MatureTube》◎🚀VPN｜辣妈、MILF、奶奶色情导航◎ https://www.gaymaletube.com/zh/【https://www.gaymaletube.com/templates/gaymaletube/images/logo.svg】《GayMaleTube》◎🚀VPN｜同性恋色情视频导航◎ https://www.porzo.com/zh/【https://www.porzo.com/templates/porzo/images/logo.svg】《PORZO》◎🚀VPN｜色情视频导航◎ https://www.dinotube.com/zh/【https://www.dinotube.com/templates/dinotube/images/logo.svg】《DinoTube》◎🚀VPN｜色情视频导航◎ https://www.tiava.com/zh/【】《Tiava》◎🚀VPN｜色情电影导航◎ https://www.lobstertube.com/zh/【https://www.lobstertube.com/templates/lobstertube/images/icon.png】《LobsterTube》◎🚀VPN｜性爱、电影、电视导航◎\n\n\n🎬 传媒::https://playav.tv/【】《PlayAV》◎亚洲高清影片◎ https://thtv168.com/【】《桃红色界》◎教室诱惑、浴室激情◎ https://www.tkbcs8.life/【】《脱裤吧》◎https://tuoku9.com/◎ https://byym26.com/【https://s1.ax1x.com/2023/01/26/pSNmjD1.png】《水果派》◎成人影片解说节目◎ https://baozouj8.com/【https://baozouj8.com/images/headimg_dl.jpg】《暴走J8》◎一夜夫妻◎ https://www.aiwuav.xyz/index.php/label/new.html【https://www.aiwuav.xyz/template/aiw/favicon.ico】《爱污传媒》◎传媒视频聚合｜https://www.aiwu.info/◎ https://kvotr.cc/【https://kvotr.cc/template/mdapp.icu2/images/favicon.ico】《麻豆视频》◎海量高清视频◎ https://avhd1.com/【https://avhd1.com/img/logo_icon_avhd1.png】《HD高清AV》◎日本AV视频◎ https://yelai.cf/【https://b2less.dongshouji.com/file/pic001/images/icons/jiuyaop/icon-512x512.png】《91自拍》◎日本AV视频◎ http://hhdyw.buzz/【http://hhdyw.buzz/template/c25//images/play-logo.png】《八点影院》◎日本AV视频◎ http://smyis.xyz/【】《稻妻影视》◎日本AV视频◎ https://mizhan.tv/【】《咪站HD》◎日本AV视频◎ https://85videos.com/【】《85Videos》◎日本AV视频◎\n\n\n🚫 成导::https://集芳阁.com/【https://集芳阁.com/static/logo.svg】《集芳阁》◎集芳阁云搜◎ https://porn研究所.com/【https://porn研究所.com/img/logo.svg】《Porn研究所》◎福利视频◎ https://laowangyy.cc/【https://qq.com.xva06.xyz/static/images/logo.svg】《SEAV在线》◎成人视频◎ https://91av.pages.dev/【】《91AV聚合》◎视频导航◎ http://91dh.cf/【】《91AV导航》◎宅男导航◎ http://www.wangzhi.mom/【】《影库资源》◎视频导航◎\n\n\n🔞 成人::https://www.a567ap.com/【https://www.a234kb.com/skin/play.png】《四虎影院》◎福利视频｜http://www.4hu.tv/◎ https://sisav.cf/【https://sisav.cf/favicon.png】《色中色AV》◎福利视频◎ https://7m01.tk/【https://7m01.tk/template/688_m/images/play.png】《萝莉姬》◎福利视频◎ https://97d77.xyz/【https://6dbh1.xyz/favicon.ico】《蔡萝莉》◎成人影院◎ https://8xx.live/【https://8xamn.top/p/favicon-32x32.png】《拔插拔插》◎成人视频◎ https://www.niuzi1.com/【https://www.niuzi1.com/template/fytt/statics/img/favicon.ico】《风月同天》◎成人视频｜http://www.fyttdz.com/◎ https://www.avbus1.com/channels-index/new/【https://www.avbus1.com/favicon-32x32.png】《AV巴士》◎成人视频◎ https://bjinshen.xyz/【https://bjinshen.xyz/favicon.ico】《B影院》◎成人视频｜https://github.com/Bcinema/Btv◎ http://zhiyin202207.xyz/【https://static.yximgs.com/bs2/adcarsku/sku4acf4856-62b0-4734-8525-92bde28e9ad4.jpeg】《知阴》◎成人视频｜http://HuiJiaDiZhi.com/◎ https://5gamq.top/【https://plgku.86398ti.buzz:8443/favicon-32x32.png】《5G影院》◎成人视频◎ https://nbpp.buzz/【https://nbpp.bar/MDassets/images/placeholder-lg.jpg】《奶爸视频》◎成人视频◎ http://www.aqdlt.com/【https://img13.360buyimg.com/ddimg/jfs/t1/180015/34/30499/3188/635abb87E47815c6a/bdb7d18fcb5281a0.png】《爱情岛论坛》◎自拍视频◎ http://san72.com/【https://js.weilekangnet.com:59988/img/favicon_all.ico】《YouPorn》◎成人视频◎ https://www.xiaobi105.com/【】《蝌蚪窝》◎成人电影｜https://www.dizhi.fun/◎ https://2.258porn.cf/【】《258Porn》◎成人AV◎\n\n\n🚀 翻墙::https://po18.fans:1234/【https://po18.love:2345/template/conch/asset/img/load.gif】《Po18hub》◎激情视频导航｜https://po18av.vip/◎ https://cn.pornhub.com/【https://static.yximgs.com/bs2/adcarsku/sku6b1a883c-115f-413f-9e95-7ce7cfba66b1.png】《PornHub》◎🚀VPN｜色情视频及性爱影片◎ https://zh.xhamster.com/【https://static-lvlt.xhcdn.com/xh-desktop/images/logo/logo.svg】《xHamster》◎🚀VPN｜成人视频◎ https://netflav.com/【https://netflav.com/static/assets/logo.svg】《Netflav》◎🚀VPN｜日本成人电影◎ https://jable.tv/【】《Jable》◎🚀VPN｜日本高清AV｜https://alldayj.com/◎ https://bi81.top/【】《Bi8.TV》◎🚀VPN｜福利视频◎\n\n\n🈲 伦理::https://www.72dy.com/【https://static.tvcache.com//icon/72dy/favicon.png】《72电影》◎高清伦理◎ https://www.2345ti.com/【】《235影视》◎经典理伦片◎ https://vip.eeussjt.com/【】《EEUSS影院》◎快播电影、伦理◎ https://伦理小站.com/【https://伦理小站.com/statics/img/logo.svg】《韩三伦理小站》◎伦理影片◎ https://www.kxdyy.com/【】《开心电影院》◎高清电影、伦理◎\n\n\n🔥 耽影::https://www.fuju1.tv/【https://www.fuju1.tv/template/mytheme/statics/img/load.png】《腐剧TV》◎腐剧、BL动漫、同性电影、百合◎ https://www.bl210.top/【】《曙光影视》◎腐剧、耽美、泰剧暖光影视官网◎ https://www.tj8.top/【】《泰剧网》◎腐剧、耽美、泰剧暖光影视官网◎ https://www.bttwoo.com/【】《两个BT》◎同性｜https://www.bttwo.vip/◎ https://g.manmankan.com/【】《漫漫看》◎男同影视大全◎\n\n\n🎨 漫画::https://漫香阁.com/【https://漫香阁.com/favicon.ico】《漫香阁》◎成人H漫画◎ 【】《》◎韩国、日本漫画◎",
    "sourceComment": "",
    "sourceGroup": "美涩",
    "sourceIcon": "http://pic.y8l.com/up/2022-6/202262415595588.png",
    "sourceName": "92其他ǫᵀ",
    "sourceUrl": "其他影视92",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 37,
    "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=de7f377235b8f6a0fbc001c358691bbff1600348768\"\n}",
    "lastUpdateTime": 1774475247594,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.videobrickwrap@class.videobrick",
    "ruleContent": "@js:\nheader={\"Referer\":baseUrl};\nheaders={\"headers\":JSON.stringify(header)}\nvar doc = org.jsoup.Jsoup.parse(result);\nvar spt = doc.select(\"script\").toString();\nvar src = spt.match(/\"https.*.mp4.*\"/);\nvar video='<iframe src='+src+' width=\"100%\" height=\"560\" frameborder=\"no\" allowfullscreen=\"true\">'  \nresult = video",
    "ruleImage": "tag.img@src",
    "ruleLink": "class.interlink@tag.a@href",
    "ruleNextPage": "page",
    "rulePubDate": "@js:\nvar doc = org.jsoup.Jsoup.parse(result)\nvar text = doc.select(\"div.videointro\").text();\nvar info = String(text).replace(/\\|/,\"   喜欢:\");\nresult = \"观看: \"+info",
    "ruleTitle": "tag.img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "无码::https://ohentai.org/tagsearch.php?tag=Uncensored&p={{page}}\n1080p::https://ohentai.org/tagsearch.php?tag=1080p&p={{page}}\n游戏CG::https://ohentai.org/tagsearch.php?tag=Game&p={{page}}\n熟女::https://ohentai.org/tagsearch.php?tag=Milf&p={{page}}\n束缚::https://ohentai.org/tagsearch.php?tag=Rape&p={{page}}\n口交::https://ohentai.org/tagsearch.php?tag=Blow%20Job&p={{page}}\n纯爱::https://ohentai.org/tagsearch.php?tag=Vanilla&p={{page}}",
    "sourceGroup": "美涩",
    "sourceIcon": "https://i.postimg.cc/wxQpYXF9/1660809059840.png",
    "sourceName": "☪Ohentai",
    "sourceUrl": "https://ohentai.org/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 38,
    "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": 1774475256629,
    "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": "美涩",
    "sourceIcon": "https://i.postimg.cc/wxQpYXF9/1660809059840.png",
    "sourceName": "☪hentai~c",
    "sourceUrl": "https://www.hentaicloud.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 40,
    "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}",
    "injectJs": "//是蓝奏云链接时\nif(/lanzou/.test(window.location.href)){\n//屏蔽广告\nArray.from(document.querySelectorAll(`\n\t.mt2:last-of-type,\n\t.mb>div:nth-last-child(3)\n`),$=>$.style.display='none');\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "@js:\ntry{\n\t$=JSON.parse(src).text\n\tif($==\"no file\")$=[];\n\t}\ncatch(err){\n\n\n//网站整合\nif(baseUrl.match(/^https?\\:\\/\\/(www.)?baidu.com\\?wd=\\s*/)){\n\t\t$=[]\n\t\tbaseUrl.replace(/^.*?wd=\\s*/,'').\n\t\tsplit('♞♞').map($$=>$.push({\n\t\t\t\tname_all: $$.match(/《(.*?)》/)[1],\n\t\t\t\ttime: $$.match(/◎(.*?)◎/)[1].replace(/■/,'■■■■■■■■■■■■■■■■'),\n\t\t\t\turi: $$.match(/【(.*?)】/)[1],\n\t\t\t\turl: $$.match(/^(.*?)【/)[1]\n\t\t\t}));\n\t}\n\n\n\n//蓝奏云\nelse{\n\n//蓝奏云非分组链接\nif(String(java.getString('text.举报文件@href')).length){$=[{\n\t\tname_all: String(java.getString('class.md@textNodes')),\n\t\ticon: String(java.getString('class.md@textNodes')).replace(/.*\\./,''),\n\t\tsize: String(java.getString('class.mtt@text')).replace(/\\( /,'').replace(/ \\)/,''),\n\t\ttime: String(java.getString('class.mf@textNodes')).replace(/.*\\n/,''),\n\t\turi: baseUrl.replace(/^(.+com).*\\/(.+)$/,'$2'),\n\t\turl: baseUrl.replace(/^(.+com).*\\/(.+)$/,'$1/tp/$2')\n\t}]}\n\n\n\n//蓝奏云分组链接\nelse{\nmat = baseUrl.match(/^(.*?com)[^##]*\\/(.+)$/)\n\t\turl = mat[1]\n\t\turi = mat[2]\nfunction $(reg){\n\t\treturn uri.match(reg)?true:false\n\t}\n\n\n//get【pwd】(链接提取码)\npwd = \n\n//蓝奏云密码\n$(/##/)?  baseUrl.match(/##(.*?)(【|$)/)[1]:\n\n//‼️Thomas密码。密码写这里也行，列表链接那里不写。\n//‼️$(/b03p9ftpc/)?  \"read\":\n\n\"\";\n\n\n//get 【body】\neval(src.match(/var pgs;([\\s\\S]*?pgs.+;)/)[1])\neval('body=\"\";$='+src.match(/data :([\\s\\S]*?\\})/)[1])\nfor(key in $)body+=key+'='+$[key]+'&';\nbody=String(body).replace(/&$/,'')\n\n\n//补全【url】\nurl += `/filemoreajax.php,{\"method\":\"POST\",\"body\":\"${body}\",\"uri\":\"${uri}\"}`\n\n\n//ajax\n$=JSON.parse(java.ajax(baseUrl=url));\n$=$.text!=0?$.text:\n\n//密码错误提示\n[{name_all:$.info,time:uri+$.info,url:uri+$.info}];\n}\n\n}}\njava.put('url', baseUrl)\n$.map($=>JSON.stringify($))",
    "ruleContent": "",
    "ruleDescription": "❗️0、0、开始❗️\n111\n❗️0、0、结束❗️❗️0、1、开始❗️\n<title>{{$.name_all}}</title><style>\ninput{\n\toutline:0;\n\ttext-indent:10px;\n\tborder:1px solid #000;\n\twidth:60%;\n\theight:35px;\n\tposition:absolute;\n\ttop:35%;\n\tleft:10%;\n\tborder-top-left-radius:10px;\n\tborder-bottom-left-radius:10px\n}\nbutton{\n\toutline:none;\n\twidth:20%;\n\theight:35px;\n\tposition:absolute;\n\ttop:35%;\n\tright:10%;\n\tborder-top-right-radius:10px;\n\tborder-bottom-right-radius:10px\n}\nh3{text-align:center}\n</style>\n\n\n<br><h3>帮你导入</h3>\n<input type=\"text\" id=\"src\" placeholder=\"输入正确的资源链接...\">\n<button onclick=\"clickme()\">一键导入</button>\n<iframe id=\"iframe\" src=\"\" hidden></iframe>\n\n<script>\nfunction clickme(){\n\tdocument.getElementById('iframe').src = \"legado://import/auto?src=\"+document.getElementById('src').value\n}\n</script>\n❗️0、1、结束❗️\n\n{{}}@js:\nurl=String(java.getString('$.url'))\n\n//一键导入html\nif(url.match(/^一键导入/)){\nurl=String(url).replace('一键导入','')\n\nurl=url.match(/^legado\\:\\/\\//)?url:'legado://import/auto?src='+url\n\n\nresult=`<title>{{$.name_all}}</title>\n<iframe src=\"${url}\" hidden></iframe>\n<br><h3>{{$.name_all}}</h3>\n<h5>导入不成功？多导入几次试试</h5>\n<h6><b>\n↓资源链接，点击复制\n<a href=\"${url}\">一键导入</a>\n<textarea id=\"copy\" onclick=\"copy()\">${String(url).replace(/legado.*?src=/,'')}</textarea>\n{{$.time}}\n</b></h6><style>\na{float:right;text-decoration:none}\nh3,h5{text-align:center}\nh6{margin:0 2;position:sticky;top:30%}\ntextarea{width:100%;border-radius:5px}\n</style><script>\nfunction copy(){\n\tdocument.getElementById('copy').select()\n\tdocument.execCommand('copy')\n\talert(\"复制成功\")\n}\n</script>`}\n\n//自定义html\nelse if(url.match(/\\d+、\\d+、/)){\nreg=new RegExp('❗️'+url+'开始❗️\\\\s*([\\\\s\\\\S]+?)\\\\s*❗️'+url+'结束❗️')\n\n//默认禁用放大缩小按钮\nresult=result.match(reg)?'<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">'+result.match(reg)[1]:'<br>未找到对应html'\n}else{result=''}",
    "ruleImage": "$.uri\n@js:\n\nu=String(java.get('url'));\nuri = String(result) || (u.match(/uri\":\"([^\"]+)/)?u.match(/uri\":\"([^\"]+)/)[1]:\"\");\n\n\nfunction $(reg){\n\t\treturn uri.match(reg)?true:false\n\t}\n\nsrc =\n\n//蓝奏云列表图标\n$(/【/)?  baseUrl.match(/【(.*?)(】|$)/)[1]:\n\n//酷安用户简化图标\n$(/http|^\\d{3}(\\/\\d\\d){3}$/)?  uri:\n\n//一程简化图标\n$(/^\\/[^\\.]*\\.png$/)?  uri:\n\n//4⃣️423图标。\nbaseUrl.match(/423down/)?  \"https://pic.616pic.com/ys_b_img/00/04/50/svvOHW89bj.jpg\":\n\n//‼️▶️影视仓/多仓。图标写这里也行，列表那里不写。\n//‼️$(/b09svqv1c/)?  \"http://pic.y8l.com/up/2022-6/202262415595588.png\":\n\n//默认封面\n\"https://android-artworks.25pp.com/fs08/2021/08/02/7/110_578817aeea22639f2b3e99603deae43d_con_130x130.png\";\n\n//补全酷安用户图标链接\nsrc.match(/^\\d{3}(\\/\\d\\d){3}$/) ? `http://avatar.coolapk.com/data/${src}_avatar_middle.jpg` :  \n//补全一程图标链接\nsrc.match(/^\\/[^\\.]*\\.png$/) ? `https://gitee.com/i-c/tc/raw/master/dy/yd${src}` : \nsrc",
    "ruleLink": "$.id@js:\nurl=`{{$.url}}`\nif(result)url+=`/tp/{{$.id}}`;\nString(url).replace(/^蓝奏链接(.+com).*\\/(.+)/,'$1/tp/$2').replace(/^..导入/,'')",
    "ruleNextPage": "@js:\ntry{\n\t\tu = String(java.get('url'))\n\t\tp = u.match(/pg=(\\d+)&/)[1]\n\t\tp = 'pg='+(parseInt(p)+1)+'&'\n\t\turl = u.replace(/pg=(\\d+)&/,p)\n\t}\ncatch(err){url=\"\"}\nurl",
    "rulePubDate": "💾 {{$.icon}}　📥 {{$.size}}　⏱️ {{$.time}}\n##💾 　📥 　⏱️\\s*",
    "ruleTitle": "$.name_all",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📗相关::http://www.baidu.com?wd=https://legado.cn/【/yd3.png】《❤️阅读论坛cn》◎legado.cn◎♞♞https://legado.cc/【/yd3.png】《❤️阅读论坛cc》◎legado.cc◎♞♞https://www.yuque.com/legado【/yq.png】《❤️阅读手册》◎使用说明、源制作、官方公告。◎♞♞https://yuedu.juhua.fun/tool【/fxmh.png】《❤️发现美化》◎阅读｜正则小工具◎♞♞https://m.w3cschool.cn/regex_rmjc/regex_rmjc-n5a328cn.html【/bcs.png】《❤️正则表达式》◎w3cschool编程狮◎♞♞https://data.newrank.cn/m/s.html?s=NykyOzI9MS5LNQ%3D%3D【/ydlogo.png】《阅读公众号搜索》◎◎\n\n\n📥下书::http://www.baidu.com?wd=https://new.shuge.org/【/sg.png】《书格》◎有品格的数字古籍图书馆◎♞♞http://zxcs.me/【/zxcs.png】《知轩藏书》◎藏尽网络中最好的精校小说◎♞♞https://m.zxcs.info/【/zxjj.png】《知轩精校》◎精校小说◎♞♞https://m.huangdizhijia.com/【/hdzj.png】《皇帝之家》◎精品全本电子书◎♞♞https://book.gouyg.com/【/ggdzs.png】《狗狗电子书》◎小说下载、电子书搜索◎♞♞http://m.s5l.com/index.php?c=home【/xssq.png】《小说社区》◎精校小说社区◎♞♞http://m.zntxt.com/【/znxs.png】《宅男小说》◎完结小说下载◎♞♞http://m.jjxsz.cn/【/swxs.png】《搜我小说》◎TXT全本小说下载◎♞♞https://sj.qubook.cc/【/qsw.png】《手机趣书》◎免费TXT小说下载◎♞♞http://m.84sk.com/【/bssk.png】《巴士书库》◎言情小说下载◎♞♞https://www.15huang.com/【/shw.png】《书荒网》◎完结小说推荐和TXT小说下载◎♞♞https://m.zei8.vip/【/zbw.png】《贼吧网》◎（旧书）全本精校小说下载◎♞♞http://www.12z.cn/【/mfxs.png】《免费小说》◎精校、完结、无错小说下载◎♞♞https://www.qiantxt.com/【/qsxs.png】《千书小说》◎完本小说TXT下载站◎♞♞https://m.ijjxs.com/【/ajjxs.png】《爱久久小说》◎电子书资源免费下载◎♞♞https://www.jingjiaoba.com/【/jjb.png】《精校吧》◎校对全本TXT小说下载◎♞♞https://www.downtxts.com/【/txtxz.png】《TXT下载》◎TXT小说网盘下载◎♞♞https://noveless.com/【/shbl.png】《书荒部落》◎精校全本◎♞♞https://www.sxpdf.com/【/sxtx.png】《书行天下》◎PDF电子书学习下载站◎♞♞https://tuostudy.com/【/toxx.png】《图欧学习资源库》◎B站某UP主整合的学习资源◎\n\n\n🌟拾遗::http://www.baidu.com?wd=https://data.newrank.cn/m/s.html?s=Py8yOTE5KDE4【/xssy.png】《🔎小说拾遗》◎小说拾遗公众号-号内搜索◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319671603470581762&__biz=MzI2MDg2NjAwMg==#wechat_redirect【/sd.png】《精选书单》◎主推优质完结和连载100万字以上小说◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319666229510193155&__biz=MzI2MDg2NjAwMg==#wechat_redirect【/xs.png】《潜力新书》◎主推大神新书和20～100万字的优质新书◎♞♞http://mp.weixin.qq.com/mp/homepage?__biz=MzI2MDg2NjAwMg==&hid=11&sn=c55d27329c109430838bc5b5f5b615b7&scene=18#wechat_redirect【/gf.png】《高分必看》◎高分完本合集◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319668267623170050&__biz=MzI2MDg2NjAwMg==#wechat_redirect【/wj.png】《近期完结》◎主推近一段时间内优质的完结小说◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319673664333463554&__biz=MzI2MDg2NjAwMg==#wechat_redirect【/np.png】《女频书单》◎主推女频优质小说◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319675692849872897&__biz=MzI2MDg2NjAwMg==#wechat_redirect【/hg.png】《后宫精选》◎后宫精选合集◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI2MDg2NjAwMg==&action=getalbum&album_id=1651826809002328065#wechat_redirect【/nt.png】《年终推荐》◎精选优质完结和连载100万字以上小说◎\n\n\n⚡赤戟::http://www.baidu.com?wd=https://mp.weixin.qq.com/mp/homepage?__biz=MzI5NTA4NjgwNw==&hid=1&sn=0fcecdc85b8c23e596880f8c895b901d&scene=18&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=59&session_us=gh_2aa0f3c6dd8f&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【/cjdshjjs.png】《赤戟的书荒救济所》◎最新热门分类◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319454340050157569&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【/sd.png】《网文书单》◎每期三本-新书速递、养肥佳作、完本好书◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319393737944170497&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【/fl.png】《分类推书》◎分类大盘点◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319471313224040448&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【/jx.png】《澎湃精选》◎超过50万字，连载或完本的优秀作品◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1325500020388626432&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【/sj.png】《优书数据》◎月度大数据推书◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1333946780098330626&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【/zt.png】《网文杂谈》◎一些吃瓜趣闻，网文闲谈◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1526356920989712387&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【/nd.png】《年度盘点》◎年度盘点各分类中诞生的新书、完本书◎♞♞https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319335766203662337&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【/qs.png】《网文趣事弹》◎各类和网文相关的趣事-每月一期◎\n\n\n📊书单::http://www.baidu.com?wd=https://vt.sm.cn/api/novelStarReco/index【/xyts.png】《星云推书》◎书荒搜书神器◎♞♞https://shenmezhidedu.com/【/smzdd.png】《什么值得读》◎互联网人的书单库◎♞♞https://www.yousuu.com/【/ysbd.png】《优书网》◎优书网书单◎♞♞https://www.tuishujun.com/【/tsj.png】《推书君》◎书荒求书就找推书君◎♞♞https://quark.sm.cn/api/rest?method=Novelnew.home&format=html&schema=v2&gender=male&cate=%E5%85%A8%E9%83%A8&rank=rank_hot&pv=2420440【/kkbd.png】《夸克榜单》◎夸克浏览器小说榜单◎♞♞https://m.baidu.com/sf?openapi=1&dspName=iphone&dsp=iphone&from_sf=1&pd=bookstore&resource_id=5077&type=2&card_id=5143&word=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&title=%E6%9B%B4%E5%A4%9A%E6%8E%A8%E8%8D%90&tag1=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&lid=11549307334103749569&referlid=11549307334103749569&ms=1&frsrcid=5143&frorder=4【/bdbd.png】《百度榜单》◎百度浏览器小说榜单◎♞♞https://m.qidian.com/rank/【/qdbd.png】《起点榜单》◎起点中文网榜单◎♞♞http://saowen.net/【/swxy.png】《扫文小院》◎🔎登录｜耽美小说扫文网站◎♞♞https://www.basequan.com/【/bsq.png】《芭莳圈》◎好看的言情小说推荐◎\n\n\n💰 正版::http://www.baidu.com?wd=https://wap.faloo.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/flxs.png】《飞卢小说》◎同人免费小说在线阅读与下载◎♞♞https://h5.17k.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/17kxs.png】《17K小说》◎集创作、阅读于一体的在线阅读网站◎♞♞https://m.qidian.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/qdzw.png】《起点中文》◎阅文集团旗下网站◎♞♞https://wap.jjwxc.net/【https://gitee.com/i-c/tc/raw/master/dy/yd/jjwx.png】《晋江文学》◎女性网络文学原创基地◎♞♞https://m.zongheng.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/zhzw.png】《纵横中文》◎最热门的免费小说网站◎♞♞http://m.shuhai.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/shxs.png】《书海小说》◎书海小说网◎♞♞http://www.xmkanshu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/xmks.png】《熊猫看书》◎好看的小说阅读网站◎♞♞https://m.zhangyue.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/zy.png】《掌阅》◎好看的原创小说网◎♞♞https://t.shuqi.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/sqxs.png】《书旗小说》◎阿里巴巴集团旗下阅读平台◎♞♞https://wap.cmread.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/mgyd.png】《咪咕阅读》◎原创网络文学◎♞♞https://yd.baidu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/bdyd.png】《百度阅读》◎全网最全小说，让时间更有价值◎♞♞https://ubook.reader.qq.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/qqyd.png】《QQ阅读》◎QQ阅读官方网站◎♞♞https://www.ihuaben.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hbxs.png】《话本小说》◎首创气泡对话小说，写小说原创社区◎♞♞https://wenxue.m.iqiyi.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/aqywx.png】《爱奇艺文学》◎影视原著小说推荐◎♞♞https://m.xxsy.net/【https://gitee.com/i-c/tc/raw/master/dy/yd/xxsy.png】《潇湘书院》◎免费言情小说◎♞♞https://m.gongzicp.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/cpwx.png】《长佩文学》◎更懂你的女性向阅读交流平台◎♞♞https://m.hongxiu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hxtx.png】《红袖添香》◎阅文集团旗下网站◎♞♞http://h5.lc1001.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/lcds.png】《连城读书》◎华语原创小说旗帜门户◎♞♞http://m.cread.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/zwsc.png】《中文书城》◎热门的网络小说◎♞♞https://m.youdubook.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/ggyd.png】《咕咕阅读》◎有毒小说网◎♞♞http://wap.hanwujinian.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hwjn.png】《寒武纪年》◎原创耽美小说有声广播剧◎♞♞https://m.ruochu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/rcwx.png】《若初文学》◎好看的小说推荐◎♞♞https://m.hongshu.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/hsyd.png】《红薯阅读》◎红薯中文网◎♞♞https://m.sfacg.com/【https://gitee.com/i-c/tc/raw/master/dy/yd/sfqxs.png】《SF轻小说》◎SF轻小说网◎\n\n\n🎨漫画::http://www.baidu.com?wd=http://www.vomicmh.com/#/home【/vomic.png】《vomic漫画》◎漫画聚合◎♞♞https://m.dongmanmanhua.cn/【/dmmh.png】《咚漫漫画》◎全球数字漫画服务平台◎♞♞https://m.dmzj.com/【/dmzj.png】《动漫之家》◎海量漫画在线看◎♞♞http://m.6mh66.com/【/lmhw.png】《六漫画网》◎六漫画免费在线观看◎♞♞https://m.bnmh.cc/【/bnmh.png】《百年漫画》◎言情漫画、少女爱情等类型的漫画◎♞♞https://cn.baozimh.com/【/bzmh.png】《包子漫画》◎超多优质漫画阅读◎♞♞https://m.ythuiju.com/【/pfmh.png】《扑飞漫画》◎主打免费漫画阅读◎♞♞https://m.hmba.vip/【/hmb.png】《韩漫吧》◎免费的韩漫网◎♞♞http://qiman56.com/【/qmw.png】《奇漫屋》◎当下热门漫画免费观看◎♞♞https://m.zuimh.com/【/zmh.png】《最漫画》◎热血漫画、科幻漫画、武侠漫画◎♞♞https://kanmanhuala.com/【/kmhl.png】《看漫画啦》◎土豪漫画-最新漫画大全◎♞♞https://m.123gf.com/【/gfmh.png】《古风漫画》◎古风漫画、言情漫画、少女爱情◎\n\n\n🎧 有声::http://www.baidu.com?wd=http://m.ysxs8.vip/【/ysxsb.png】《有声小说吧》◎有声小说◎♞♞https://m.70ts.cc/【/tsb.png】《麒麟听书》◎有声小说◎♞♞http://m.tingshubao.com/【/tsb.png】《听书宝》◎有声小说◎♞♞http://m.ting74.com/【/tsb.png】《74听书》◎有声小说◎♞♞http://m.ting56.cc/【/56ts.png】《56听书》◎有声小说◎♞♞https://m.tingzh.com/【/zwts.png】《中文听书》◎有声小说◎♞♞https://www.qmtsw.com/【/qmts.png】《全民听书》◎有声小说◎♞♞https://mitingshu.com/【/xmts.png】《小米听书》◎有声小说◎♞♞http://m.ixinmo.com/【/xmts1.png】《心魔听书》◎有声小说◎\n\n\n📖小说::http://www.baidu.com?wd=https://kukecun.com/【/kkc.png】《酷客村》◎🎉优选｜传统文学、网络文学◎♞♞http://m.kujiang.com/【/kjw.png】《酷匠网》◎手机阅读｜精品阅读时光◎♞♞https://m.9kus.com/【/jkwx.png】《九库文学》◎🎉优选｜免费小说阅读网站◎♞♞https://m.xuribook.com/【/xrxs.png】《旭日小说》◎🎉优选｜网络小说、耽美小说◎♞♞https://m.56ting.net/【/56tsw.png】《56听书网》◎🎉优选｜56听书免费小说阅读网◎♞♞https://www.henhaoso.org/【/htss.png】《海棠搜书》◎💗女频｜自由的小说搜索网站◎♞♞https://m.fmias.com/【/aeyq.png】《AE言情》◎💗女频｜言情小说网◎♞♞http://m.ndlib.cn/【/ydyd.png】《移动阅读》◎📚出版｜公共数字文化工程移动阅读◎♞♞https://www.mzhu8.com/wap/【/mzyd.png】《名著阅读》◎📚出版｜全本名著小说阅读网◎♞♞https://www.yodu.org/【/ydzww.png】《有度中文》◎🔎登录｜汇集精品图书小说◎♞♞https://next.acgdmzy.com/home【/qsj.png】《轻书架》◎🔎登录｜轻小说发布地◎\n\n\n📚Thomas/阅读源::https://wwr.lanzoui.com/b03p9ftpc##read【http://img2.baidu.com/it/u=479193693,3885643124&fm=253&fmt=auto&app=138&f=JPEG?w=307&h=210】\n\n▶️TVBox/终南::https://wws.lanzouv.com/b03j4ulyh##999【https://pic.yidown.com/uploadfile/2022/1129/20221129010510248.png】\n\nℹ️软件若有推群弹窗,::https://lanzoul.com/s/gk123\n🎮分享不发,返回,::https://lanzoul.com/b0e94dqob##【https://android-artworks.25pp.com/fs08/2022/09/01/10/110_e567c7eefee644e1206852e8b574f5c1_con_130x130.png】\n\n💀🎮也算分享成功。::https://lanzoul.com/b0ea7uq6j##【https://android-artworks.25pp.com/fs08/2022/01/13/5/123_4354f8163cf3b486a8451db4a93adc71_con_130x130.png】\n💀勿信广告博彩诈骗::https://lanzoux.com/b02cy1lzg##【https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png】\n\nps2模拟器::https://xianuani.lanzoul.com/b02in8lqj##5fxg\n李跳跳::https://wwe.lanzouw.com/b01v0g3wj##1233\nES浏览器::https://lanzoui.com/b00ze62be\n",
    "sourceComment": "23.1.7 v2\n这个订阅源版本使用m页面，把w页版中蓝奏云有问题的列表放这了。以及一些少用不用的蓝奏云。\n并加上一程订阅源中的部分列表（迷迭自己觉得较常用的）。每人偏好不同，小伙伴直接浏览一程订阅源吧，内容很多。\n\n在Thomas订阅源基础上修改列表内容，\n——————————————\n✱✱交流群462030508。\nA群637775313不加人。若家炸了查看此群群资料找新家。\n✱✱内容取自网络，仅供学习参考，请同学们在24小时内删除✱✱\n——————————————",
    "sourceGroup": "书源",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_52437554_1640934578/256",
    "sourceName": "阅读/其他蓝奏云m",
    "sourceUrl": "https://www.lanzoux.com/#23.1.7other",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 43,
    "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": "<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": "",
    "ruleDescription": "",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "ruleNextPage": "",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "🎥-影视▪️影院::https://www.o8tv.com/【https://i.postimg.cc/Gt9kN6VT/de6a398e2e6f25cd8fea8814651e2403.png】《555影院®》◎在线影院◎ https://app.movie/【https://i.postimg.cc/nzjWQ5SG/1657028424447.png】《App影院®》◎在线影院◎ https://fullxcinema-com.translate.goog/category/celebrity-porn-videos/?_x_tr_sl=auto&_x_tr_tl=zh-CN&_x_tr_hl=zh-CN【https://i.postimg.cc/P5L9Z6Hw/141e2972743b1e14db0c2fe409fd3fda.png】《全电影网》◎电影网站◎ https://www.novipnoad.com/【https://i.postimg.cc/Y2y7w6rm/1657177866100.png】《Novipnoad®》◎在线影院◎ https://www.ikanbot.com/【https://i.postimg.cc/L5FKJwJY/1657464485475.png】《爱看机器人®》◎影视直播◎ https://user.misakanetworks.icu/user【https://i.postimg.cc/6q7P40T7/1657171372253.png】《御坂网络®》◎VPN登录界面◎ http://m.nvzox1.com/【https://i.postimg.cc/Gh5M40BM/1660216319238.png】《观影时光®》◎在线影院◎ https://www.wzblmjg.com/【https://i.postimg.cc/90YS3Vq5/1657217561547.png】《策驰影院®》◎影院在线◎ https://www.9sha.com/【https://i.postimg.cc/Mp52b9rZ/1658047723416.png】《九杀影院®》◎在线影院◎ http://www.aiqingtv.com:8/【https://i.postimg.cc/hjjpKYNg/1657448947985.png】《爱情.TV®》◎AV视频网站◎ https://www.pkmp4.com/【https://i.postimg.cc/W4T8QvbP/1657585183153.png】《片库影院®》◎在线影院◎ https://ddrk.me/【https://i.postimg.cc/Zq0kncDk/1658839233937.png】《低端影院®》◎在线影院◎ https://www.bpzhe.com/【https://i.postimg.cc/wMytDpgh/1657021317616.png】《B~白嫖者®》◎电影网站◎ https://www.pbpb.tv/【https://i.postimg.cc/8kxfghJX/1657179241087.png】《片吧影院®》◎在线影院◎\n🔲-图片▪️套图::https://heaven.porn/【https://i.postimg.cc/gj5D3V3t/1637729257404.png】《Heaven》◎全球套图精选◎ https://www.pornpics.com/【https://i.postimg.cc/V6HtGBmL/ac28d790f21bb18524b5bab2496e361f.png】《Pornpics》◎中外图库[高清大图]◎ https://www.nudexxx.pics/categories/babe/【https://i.postimg.cc/28FX9mTf/1657271779518.png】《Nudexxx》◎在线图片◎ https://www.xxxftvgirls.com/【https://i.postimg.cc/QM3pzCY7/1655781876454.png】《Xxxftvgirls》◎全球套图精选◎ https://www.gravurehunter.com/【https://i.postimg.cc/mgBQv38B/c144ea102b481a06e2cfbff4eecbb1b9.png】《Gravure》◎在线图片◎ https://sexynude.pics/【https://i.postimg.cc/dV7qX4Pg/1655823076713.png】《Sexynude》◎在线图片◎ https://www.hqseek.com/【https://i.postimg.cc/Qtf8mGyQ/1656046620044.png】《Hqseek》◎在线图片◎ https://nakedwomen.pics/【https://i.postimg.cc/131j1j0v/1638332202023.png】《Nakedwomen》◎在线图片◎ https://latestones.com/models【https://i.postimg.cc/15qw8YBz/e70b08733fceb554437154b2ea2b5a53.png】《Latestones》◎高清写真◎ https://www.eroticbeauties.net/【https://i.postimg.cc/1Xd6bLng/1636528074158.png】《eroticbeauties》◎在线图片◎ https://www.freexcafe.com/?ref=porndude【https://i.postimg.cc/kX35Jpx4/1655983982372.png】《Freexcafe.com》◎在线图片◎ https://www.freebigtitpornpics.com/【https://i.postimg.cc/7PTBbdtR/1656073522948.png】《Bigtitpornpics》◎国际图片◎ https://www.jpbeauties.com/【https://i.postimg.cc/BZDtwf7C/1637918486763.png】《JPbeauties》◎日本图片◎ https://www.eastbabes.com/【https://i.postimg.cc/bvJLc0qZ/1656221729360.png】《Eastbabes》◎在线图片◎ https://www.erosberry.com/?ref=porndude【https://i.postimg.cc/4NXqnm2v/b36328b476f62c28399930a8a7b98030.png】《Erosberry.com》◎在线图片◎\n🔳-传媒▪️日系::https://www.helloavgirls.com/?qingse.one【https://i.postimg.cc/nhRvftvn/1637637245085.png】《Hello~avgirls》◎日系av视频网站◎ https://www.fellatiojapan.com/en/?ref=1860c830【https://i.postimg.cc/jdhFZbMb/1655657370807.png】《Fellatiojapan》◎日系demo~可下载◎ https://netflav.com/?qingse.one【https://i.postimg.cc/B68nz9r5/9b463e356784d62007bbfa9ab669d88e.png】《Netflav》◎日系资源~浏览器打开◎ https://www.fuq.com/zh/【https://i.postimg.cc/pL082scx/1656697944724.png】《Fuq.com》◎在线视频◎ https://www.tubev.sex/【https://i.postimg.cc/3Jc0Mxv8/1655872958452.png】《Tubev.sex》◎日系视频◎ https://pigav.com/【https://i.postimg.cc/5ytmqkJ5/1636714890664.png】《Pigav.com》◎视频网站◎ https://www.atube.xxx/?hl=zh【https://i.postimg.cc/htNQd8pH/1656748079978.png】《Dtube.xxx》◎在线视频◎ https://www.copye.cc/【https://i.postimg.cc/1tcn0fX7/a139d7adf597e53efc35411870cb9e62.png】《曹丕在线》◎在线视频◎ https://avhd101.com/【https://i.postimg.cc/qqJqngpX/a1c375a47f312841f8fa6eec14ed61cc.png】《国产视频》◎在线视频◎ https://hhhjav.com/【https://i.postimg.cc/bJty35ns/1656074689383.png】《三H视频》◎综合视频◎ https://www.fengyuetongtian.com/【https://i.postimg.cc/7ZnG4jsL/1655829430458.png】《风月同天》◎国产视频◎ https://www.rtmm6.com/video/1/【https://i.postimg.cc/rw4G8443/1657012825802.png】《人体美媚》◎综合网站◎ http://hense66.sexurl.xyz/【https://i.postimg.cc/bwqBpTPw/1636964897703.png】《很涩视频》◎综合视频◎ https://www.bus13.com/【https://i.postimg.cc/bwWMLL57/1655688619355.png】《艾薇巴士》◎视频影院◎ https://avhd1.com/index.html【https://i.postimg.cc/R04Ps1FK/1655817933907.png】《AV视频》◎在线视频◎\n🈂-动漫▪️漫画::https://www-hentaicloud-com.translate.goog/videos?o=mr&_x_tr_sl=auto&_x_tr_tl=zh-CN&_x_tr_hl=zh-CN【https://i.postimg.cc/cLxmt8qt/1657264255748.png】《Hentaicloud》◎在线漫画◎ https://hentaidude.com/【https://i.postimg.cc/VLRc1YRt/1657024067326.png】《hentaidude》◎在线动漫◎ https://www.animehentaivideos.xxx/【https://i.postimg.cc/hj2wwX1T/1657216924243.png】《Hentai~VI》◎日系动漫◎ https://animeidhentai.com/【https://i.postimg.cc/G2Sfn4Ww/1656838030280.png】《Animeid》◎日系动漫◎ http://hkmh.site/plus/list-1.html【https://i.postimg.cc/1zBgGkj0/1657010517944.png】《好看漫画》◎在线漫画◎ http://www.177picyy.com/html/category/cg/cg-cn/【https://i.postimg.cc/qgfhYGQt/1656838187853.png】《177漫画》◎在线漫画◎ http://www.kxkmh.com/【https://i.postimg.cc/sfYtC7st/1657263526600.png】《开心漫画》◎在线漫画◎ https://www.ho5ho.com/?ref=porndude【https://i.postimg.cc/Kzcw2rKV/1658321960709.png】《全彩H漫》◎在线漫画◎ https://www.hentairules.net/category/incest/【https://i.postimg.cc/PJ34ypKS/1656921716625.png】《hentairules》◎在线漫画◎ https://asmhentai.com/【https://i.postimg.cc/cHCkjmMF/1656747410145.png】《Asmhentai》◎在线漫画◎ https://www.cartoonpornvideos.com/【https://i.postimg.cc/PxBHqhpx/1656917164314.png】《Cartoon~P》◎在线动漫◎ https://h-ciyuan.com/【https://i.postimg.cc/R0djvfpk/1657800089071.png】《H~ciyuan》◎在线动漫◎ https://hentaidock.com/【https://i.postimg.cc/zvTCGjfx/3761b8bde0f4a3f5d6fc633fd54f0fc6.png】《hentai~d》◎漫画网站◎ https://doujins.com/【https://i.postimg.cc/QdxnMzSN/a6222dd9366f54f87b8f7870bfe43089.png】《Doujins》◎在线动漫◎\n🎥-VR▪️博客::https://sharesome.com/news/【https://i.postimg.cc/gj4HKk9B/1636708458829.png】《Sharesone™》◎时尚博客直播◎ https://nudebabes.tube/【https://i.postimg.cc/FRZThKzw/1637547515349.png】《Nudebabes》◎在线影院◎ https://m.livejasmin.com/en/list/girl/www.cavhot.com【https://i.postimg.cc/3RDq1WJm/1638681569437.png】《Livejasmin》◎欧美在线直播◎ https://m-chaturbate-com.translate.goog/?_x_tr_sl=auto&_x_tr_tl=zh-CN&_x_tr_hl=zh-CN【https://i.postimg.cc/Mp58kP1S/1656736242263.png】《Chaturbate》◎欧美直播網站◎ https://xn--zp3-xxxsspcom-yp8ve33bkpevz1kpxq.xn--yetv14dbin23n.com/?fulione【https://i.postimg.cc/mrzDLSN0/1657067668701.png】《xxxsspcom™》◎中文抖淫◎ https://viralporn.com/【https://i.postimg.cc/zfGYVCJx/1657014358637.png】《Viralporn》◎欧美直播網站◎ https://www.ta770.com/【https://i.postimg.cc/MGJHYjQK/df8abf301d246c79be2416cb2d382e3c.png】《爱福利视频》◎在线视频◎ https://vrporn.com/?a=634574【https://i.postimg.cc/JzKcYQdk/1655469952522.png】《Vrporn.com[VR]》◎VR视频站◎ https://virtualrealporn.com/?nats=OTk5MTAwMDMuNS44LjEwLjAuMC4wLjAuMA【https://i.postimg.cc/FFJ2fFfW/1655542912385.png】《virualrealporn[VR]》◎VR视频站◎ https://m.instantfap.com/?ref=porndude【https://i.postimg.cc/NM7v3FWG/1636714420842.png】《Instantfap》◎欧美在线视频直播站[优质画面]◎ https://www.sex.com/【https://i.postimg.cc/N0zRGwXh/1655566034717.png】《Sex.com》◎欧美在线视频直播站[优质画面]◎ https://www.xfree.com/?popularFeed=150672【https://i.postimg.cc/Kj0rSZ00/1b675b5fcb22bb8c84bf3682ebad5759.png】《Xfree.com》◎博客直播[优质画面]◎ https://fikfap.com/?ref=porndude【https://i.postimg.cc/DyVy8K9r/1655654233967.png】《Fikfap.com》◎博客直播[优质画面]◎ https://xxxtik.com/?ref=porndude【https://i.postimg.cc/mkxbZNW4/a2b0d5776f5161f168d8394f3bd37074.png】《Xxxtik.com》◎博客直播[优质画面]◎ https://tik.porn/video/216500【https://i.postimg.cc/9XBRnLsy/1655648357308.png】《Tik.porn》◎博客直播[优质画面]◎\n🔞-在线【宽屏】::https://cn.pornhub.com/view_video.php?viewkey=ph5f5367cd02a9a【https://i.postimg.cc/PfZcf8W1/1637937252627.png】《Pornhub》◎🇨🇦在线视频◎ https://www.xvideos.com/【https://i.postimg.cc/L6yQskbQ/1637936393141.png】《Xvideos》◎🇨🇿在线视频◎ https://www.bookofp.com/zh/celebrities/【https://i.postimg.cc/xd72QNs4/1659110706030.png】《Bookofp》◎🇱🇷在线视频◎ https://beeg.com/?ref=porndude【https://i.postimg.cc/T17T3Lm8/1637937050924.png】《Beeg.com》◎🇬🇳在线视频◎ https://m.shameless.com/【https://i.postimg.cc/8CWvGJ1v/1655955946009.png】《shameless》◎🇮🇸在线视频◎ https://txxx.com/【https://i.postimg.cc/CKS3NdBC/1656841152906.png】《Txxx.com》◎🇨🇿在线视频◎ https://m.tnaflix.com/【https://i.postimg.cc/Jzw65BYB/1657106388720.png】《Tnaflix.com》◎🇭🇺在线视频◎ https://fuqer.mobi/【https://i.postimg.cc/FzRB7zqf/2096f0a90436c081102ce000cb1b82b9.png】《Fuqer.mobi》◎🇩🇪在线视频◎ https://teenxmovies.net/【https://i.postimg.cc/MGfGBqPJ/1655986800440.png】《Teenxmovies》◎🇩🇪在线视频◎ https://www.xnxx.com/【https://i.postimg.cc/3NT7QXZF/1638079383739.png】《Xnxx.com》◎🇺🇸在线视频◎ https://www.joysporn.com/?ref=porndude【https://i.postimg.cc/ydy26fDV/1656468812234.png】《Joysporn》◎🇭🇺在线视频◎ https://www.youporn.com/【https://i.postimg.cc/g21CS5TH/1658916855443.png】《Youporn》◎🇨🇴在线视频◎ https://www.gotporn.com/【https://i.postimg.cc/N0hGHFZf/1658840245284.png】《Gotporn.com》◎🇭🇺在线视频◎ https://4kporn.xxx/【https://i.postimg.cc/ht2r3jht/1638700576004.png】《4Kporn.xxx》◎🇳🇴在线视频◎ https://porndoe.com/?utm_campaign=theporndude&utm_medium=trafficbuy&utm_source=theporndude【https://i.postimg.cc/hG3NT5Vz/1637931210565.png】《Porndoe》◎🇫🇷在线视频◎\n🔞-在线【欧美】::http://www.incestflix.com/?ref=porndude【https://i.postimg.cc/G36dHWwM/1638705175642.png】《Incestflix》◎🇮🇩在线视频◎ https://crazyshit.com/category/random-nudity/【https://i.postimg.cc/dtjdr2pM/357020e158482026a20a7e713f6b6279.png】《Crayshit.com》◎🇦🇽在线视频◎ https://motherless.com【https://i.postimg.cc/LXZynXtV/1656205674304.png】《Motherless》◎🇻🇪在线视频◎ https://zh.xhamster.com/【https://i.postimg.cc/VLd9cpxN/1638625257182.png】《Xhameter》◎🇹🇳在线视频◎ https://www.ixxx.com【https://i.postimg.cc/7PjrhdTS/1656846388876.png】《Ixxx.com》◎🇹🇳在线视频◎ https://fuqqt.com/videos/babe【https://i.postimg.cc/TwQzJhLv/1656205530357.png】《Fuqqt.com》◎🇭🇺在线视频◎ https://shooshtime.com/【https://i.postimg.cc/DZzSwpJk/1656294092715.png】《Shooshtime》◎🇫🇮在线视频◎ https://fapster.xxx/categories/【https://i.postimg.cc/zf5fxnkx/1656330613273.png】《Fapster.xxx》◎🇮🇩在线视频◎ https://pornone.com/【https://i.postimg.cc/RZj3rKJD/1656981369071.png】《Pornone.com》◎🇮🇩在线视频◎ https://www.porntube.com/?cid=2930【https://i.postimg.cc/442qfqDm/1638143733789.png】《Porntube》◎🇲🇸在线视频◎ https://www.eporner.com/【https://i.postimg.cc/FscqrGTv/1656079279240.png】《Epornet》◎🇰🇿在线视频◎ https://www.redtube.com/【https://i.postimg.cc/Wp8NN7yM/1656336459126.png】《Redtube》◎🇬🇦在线视频◎ https://www.pornhd.com/【https://i.postimg.cc/HLWTf1T9/47dd395f818d744f5f6b897508d3309f.png】《Pornhd》◎🇮🇩在线视频◎ https://www.pornktu.be/videos/【https://i.postimg.cc/v83FXZLS/1656123183464.png】《Pornktu》◎🇾🇪在线视频◎ https://pornkai.com/【https://i.postimg.cc/C5gR1VJC/1656347595775.png】《Pornkai》◎🇨🇦在线视频◎\n🔞-在线【备选】::https://pornontube.com/zh-cn/【https://i.postimg.cc/SRZHh6nJ/1657441598978.png】《Pornontube》◎在线电影◎ https://es.iporntv.net/search/%E4%B8%AD+%E6%96%87+%E9%9F%B3%E5%A3%B0+asmr【https://i.postimg.cc/0Nvm3sM8/1657504985437.png】《中文音声》◎在线音频网站🎧◎ https://pmatehunter.com/【https://i.postimg.cc/251kXxS9/1657442432339.png】《Pmate~H》◎国际图片◎ https://www.tubegalore.com/zh/【https://i.postimg.cc/8cyY5pTK/1665305809050.png】《Tubegalore》◎在线视频◎ https://spankbang.com/【https://i.postimg.cc/mrHj6MxN/1657449171627.png】《Spankbang》◎视频网站◎ https://www.qpornosite.com/【https://i.postimg.cc/zXXc4mKS/647a65f79ad84414ec8ef7037833ee62.png】《qpornosite》◎视频网站◎ https://www.fuqpremium.com/zh/【https://i.postimg.cc/3RYktqSK/c424aec60f743d6db1474dade05b3173.png】《fuqpremium》◎在线视频◎ https://www.lobstertube.com/zh/【https://i.postimg.cc/CMcXFYLT/0b02fc4ba24b38f90f62c54142be537c.png】《LobsterTube》◎数百万激情色情电影◎ https://familyporn.tv/【https://i.postimg.cc/QMGcdFZv/1656904673161.png】《家庭porn》◎在线视频网站◎ https://www.metarthunter.com/most-viewed/【https://i.postimg.cc/28C8L5vd/c1c46f7c390245ed8325cf5cbcdfa54d.png】《Metarthunter》◎花花公子图片站◎ https://www.handjobjapan.com/en/?ref=a2f6354a【https://i.postimg.cc/9XBBBLTK/1657198533076.png】《Handjobjaan》◎日系手活◎ https://www.127mall7.com/【https://i.postimg.cc/vHxx4vvL/4a5598a52051c218df11b814646b1bae.png】《X站中文》◎X站中文频道◎ https://www.18porn.sex/【https://i.postimg.cc/tJ4x5bFj/1665130749332.png】《18porn.sex》◎在线视频◎ https://www.porzo.com/zh/【https://i.postimg.cc/htbRGgLV/1657444600756.png】《Porzo.com》◎在线视频◎ https://pornsites.xxx/zh/best-porn-tubes【https://i.postimg.cc/sx2PrBwC/1657560491814.png】《顶级链接》◎链接导航网站◎\n📖-书单▪️榜单®::https://vt.sm.cn/api/novelStarReco/index【https://i.postimg.cc/3Ng0mjYb/1642215764921.png】《星云推书》◎书荒搜书神器◎ https://m.qidian.com/rank/【https://i.postimg.cc/Bb6H9P0h/1643185593580.png】《起点榜单》◎起点中文网榜单◎ https://quark.sm.cn/api/rest?method=Novelnew.home&format=html&schema=v2&gender=male&cate=%E5%85%A8%E9%83%A8&rank=rank_hot&pv=2420440【https://i.postimg.cc/XqXmn23H/1656398173543.png】《夸克榜单》◎夸克浏览器小说榜单◎ https://m.baidu.com/sf?openapi=1&dspName=iphone&dsp=iphone&from_sf=1&pd=bookstore&resource_id=5077&type=2&card_id=5143&word=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&title=%E6%9B%B4%E5%A4%9A%E6%8E%A8%E8%8D%90&tag1=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&lid=11549307334103749569&referlid=11549307334103749569&ms=1&frsrcid=5143&frorder=4【https://i.postimg.cc/YS5CqKk1/1643192297572.png】《百度榜单》◎百度浏览器小说榜单◎ https://www.yousuu.com【https://i.postimg.cc/ZqV9LKk4/d6460ce69df5934d47ec2e184264d447.png】《优书榜单》◎优书网书单◎ https://data.newrank.cn/m/s.html?s=Py8yOTE5KDE4【https://i.postimg.cc/nLWpBQzP/1656640745508.png】《小说拾遗》◎小说拾遗公众号-号内搜索◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319671603470581762&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/Wp7cCtpP/9afbe88df402cbaacd6a1f34bb95451a.png】《精选书单》◎主推优质完结和连载100万字以上小说◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319666229510193155&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/dtW1vnvq/1656158438840.png】《潜力新书》◎主推大神新书和20～100万字的优质新书◎ http://mp.weixin.qq.com/mp/homepage?__biz=MzI2MDg2NjAwMg==&hid=11&sn=c55d27329c109430838bc5b5f5b615b7&scene=18#wechat_redirect【https://i.postimg.cc/Nf2g2B79/d7844cc4a188295fb56ff7ee13e7c518.png】《高分必看》◎高分完本合集◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319668267623170050&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/YCYjTCQ1/1643194013372.png】《近期完结》◎主推近一段时间内优质的完结小说◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319675692849872897&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/MHJwdrSX/f3406e1fcc20a92dcaf944c71b0d67ab.png】《后宫精选》◎后宫精选合集◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319454340050157569&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/tTF4MXws/1643177963800.png】《网文书单》◎每期三本-新书速递、养肥佳作、完本好书◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319471313224040448&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/8c9D4yHY/1657563183687.png】《澎湃精选》◎超过50万字，连载或完本的优秀作品◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1526356920989712387&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/FRH068g6/1656311375852.png】《年度盘点》◎年度盘点各分类中诞生的新书、完本书◎ https://mp.weixin.qq.com/mp/homepage?__biz=MzI5NTA4NjgwNw==&hid=1&sn=0fcecdc85b8c23e596880f8c895b901d&scene=18&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=59&session_us=gh_2aa0f3c6dd8f&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/TP7Md7D4/1657562436540.png】《赤戟资源》◎最新热门分类◎",
    "sourceComment": "",
    "sourceGroup": "美涩",
    "sourceIcon": "https://i.postimg.cc/tT45zyZQ/9399ca50f4495079a2c4f54f268dcad6.gif",
    "sourceName": "㊣集装箱®",
    "sourceUrl": "Online <1.95>",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "customOrder": 44,
    "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": "<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": "",
    "ruleDescription": "",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "ruleNextPage": "",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "🎥-影视▪️影院::https://www.o8tv.com/【https://i.postimg.cc/Gt9kN6VT/de6a398e2e6f25cd8fea8814651e2403.png】《555影院®》◎在线影院◎ https://app.movie/【https://i.postimg.cc/nzjWQ5SG/1657028424447.png】《App影院®》◎在线影院◎ https://fullxcinema-com.translate.goog/category/celebrity-porn-videos/?_x_tr_sl=auto&_x_tr_tl=zh-CN&_x_tr_hl=zh-CN【https://i.postimg.cc/P5L9Z6Hw/141e2972743b1e14db0c2fe409fd3fda.png】《全电影网》◎电影网站◎ https://www.novipnoad.com/【https://i.postimg.cc/Y2y7w6rm/1657177866100.png】《Novipnoad®》◎在线影院◎ https://www.ikanbot.com/【https://i.postimg.cc/L5FKJwJY/1657464485475.png】《爱机器人®》◎影视直播◎ http://m.360live.cc/【https://i.postimg.cc/6q7P40T7/1657171372253.png】《爱看卫视》◎卫视在线直播◎ http://www.aiqingtv.com:8/【https://i.postimg.cc/Gh5M40BM/1660216319238.png】《爱情.TV》◎在线影院◎ https://xiaoyakankan.com/cat/15.html【https://i.postimg.cc/Mp52b9rZ/1658047723416.png】《小鸭看看®》◎在线影院◎ https://www.pkmp4.com/【https://i.postimg.cc/W4T8QvbP/1657585183153.png】《片库影院®》◎在线影院◎ https://ddrk.me/【https://i.postimg.cc/Zq0kncDk/1658839233937.png】《低端影院®》◎在线影院◎ http://www.renren.pro/【https://i.postimg.cc/wMytDpgh/1657021317616.png】《人人影视®》◎电影网站◎ https://www.pbpb.tv/【https://i.postimg.cc/8kxfghJX/1657179241087.png】《片吧影院®》◎在线影院◎ http://hense66.sexurl.xyz/【https://i.postimg.cc/8CbGXPcg/1678704603667.png】《很涩视频》◎在线视频◎ https://www.libvio.me/【https://i.postimg.cc/2jZWSPmM/5b55c5e231aca321b58fe16d59c3ee75.png】《Libvio.me》◎在线影院◎ https://www.66.ca/forum.php?fid=56&mod=forumdisplay【https://i.postimg.cc/90YS3Vq5/1657217561547.png】《华人社区》◎社区阅读网站◎\n☸-文娱▪️阅读::https://mp3-banana.pro/【https://i.postimg.cc/d3HR8qqW/1636542691088.png】《俄语音乐》◎俄站步非烟◎ https://siyufm.net/lists/?page=2&author=12【https://i.postimg.cc/zXHKN1nK/1637811407315.png】《私语电台》◎私密电台◎ https://asmrs.live/category/%E6%AD%A5%E9%9D%9E%E7%83%9F%E7%AC%AC%E4%B8%80%E5%AD%A3【https://i.postimg.cc/15yTD2t8/1643175843924.png】《Asmrs~🎧》◎在线音频◎ https://es.iporntv.net/search/%E4%B8%AD+%E6%96%87+%E9%9F%B3%E5%A3%B0+asmr【https://i.postimg.cc/kGSc5QGT/1657418160867.png】《中文音声》◎资源网站◎ https://m.xingdiantai.com/freeradio/【https://i.postimg.cc/tJWDWsS9/1636543129910.png】《杏吧电台》◎免费电台网站◎ http://hja27.com/【https://i.postimg.cc/KjNH5kQJ/8e5e7fc946028dcf4f32a2173ae4c319.png】《海角社区》◎登录在线社区◎ https://heiliao6.pro/【https://i.postimg.cc/MGJHYjQK/df8abf301d246c79be2416cb2d382e3c.png】《黑料链接®》◎链接网站◎ https://www.g718.sx/【https://i.postimg.cc/nhRTwV51/60caf55a7c86f32a0ffd3252d718353e.png】《718车友会®》◎在线论坛◎ https://www.51cg1.com/【https://i.postimg.cc/63K4SCLn/1657033842033.png】《51吃瓜网》◎在线论坛◎ https://jav.gallery/【https://i.postimg.cc/fL1fHJWz/1655687656501.png】《動宝在线》◎在线视频网站◎ https://qq.com.tiege03.xyz/?uid=128879【https://i.postimg.cc/CLH3C2fH/1639307031234.png】《铁哥TV》◎在线网站◎ https://www.pornfind.org/【https://i.postimg.cc/1RL5Vrbx/1643170566233.png】《搜索引擎》◎导航网站◎ https://qq.com.lsck01.xyz/【https://i.postimg.cc/15pk15cJ/22f1c92cf8ecb6af575fb4e502a91ebd.png】《绿色仓库》◎视频导航网站◎ https://qq.com.tieniux15.top/【https://i.postimg.cc/m2TDkYx5/1655817959914.png】《铁牛资源》◎导航链接◎ https://qq.com.beiwotv.xyz/【https://i.postimg.cc/G2dbSRjm/1655822701904.png】《被窝TV》◎导航网站◎\n🔲-图片▪️套图::https://heaven.porn/【https://i.postimg.cc/gj5D3V3t/1637729257404.png】《Heaven》◎全球套图精选◎ https://www.pornpics.com/【https://i.postimg.cc/V6HtGBmL/ac28d790f21bb18524b5bab2496e361f.png】《Pornpics》◎中外图库[高清大图]◎ https://www.nudexxx.pics/categories/babe/【https://i.postimg.cc/131j1j0v/1638332202023.png】《Nudexxx》◎在线图片◎ https://www.xxxftvgirls.com/【https://i.postimg.cc/QM3pzCY7/1655781876454.png】《Xxxftvgirls》◎全球套图精选◎ https://www.gravurehunter.com/【https://i.postimg.cc/mgBQv38B/c144ea102b481a06e2cfbff4eecbb1b9.png】《Gravure》◎在线图片◎ https://sexynude.pics/【https://i.postimg.cc/dV7qX4Pg/1655823076713.png】《Sexynude》◎在线图片◎ https://nakedwomen.pics/【https://i.postimg.cc/28FX9mTf/1657271779518.png】《Nakedwomen》◎在线图片◎ https://thotsbay.tv/?fulione【https://i.postimg.cc/CLnhg9hR/1678630353262.png】《Thotsbay》◎在线图片◎ https://latestones.com/models【https://i.postimg.cc/rFFTYphv/10c7bcd9cd616a05b07a8e5155ff568e.png】《Latestones》◎高清写真◎ https://www.eroticbeauties.net/【https://i.postimg.cc/15qw8YBz/e70b08733fceb554437154b2ea2b5a53.png】《eroticbeauties》◎在线图片◎ https://www.metarthunter.com/most-viewed/【https://i.postimg.cc/Gp4T8xSs/cae05c94e7c8ffae80289e7bc24b3f34.png】《Metarthunter》◎花花公子图片站◎ https://www.hqseek.com/【https://i.postimg.cc/1Xd6bLng/1636528074158.png】《Hqseek》◎在线图片◎ https://www.freexcafe.com/?ref=porndude【https://i.postimg.cc/kX35Jpx4/1655983982372.png】《Freexcafe.com》◎在线图片◎ https://www.freebigtitpornpics.com/【https://i.postimg.cc/7PTBbdtR/1656073522948.png】《Bigtitpornpics》◎国际图片◎ https://www.jpbeauties.com/【https://i.postimg.cc/BZDtwf7C/1637918486763.png】《JPbeauties》◎日本图片◎ https://www.eastbabes.com/【https://i.postimg.cc/bvJLc0qZ/1656221729360.png】《Eastbabes》◎在线图片◎ https://www.erosberry.com/?ref=porndude【https://i.postimg.cc/4NXqnm2v/b36328b476f62c28399930a8a7b98030.png】《Erosberry.com》◎在线图片◎\n🔳-传媒▪️日系::https://www.helloavgirls.com/?qingse.one【https://i.postimg.cc/nhRvftvn/1637637245085.png】《Hello~avgirls》◎日系av视频网站◎ https://www.tw0913.com/index/index_1.html【https://i.postimg.cc/jdhFZbMb/1655657370807.png】《AV中文》◎短视频网站◎ https://netflav.com/?qingse.one【https://i.postimg.cc/B68nz9r5/9b463e356784d62007bbfa9ab669d88e.png】《Netflav》◎日系资源~浏览器打开◎ https://www.fuq.com/zh/【https://i.postimg.cc/pL082scx/1656697944724.png】《Fuq.com》◎在线视频◎ https://www.tubev.sex/【https://i.postimg.cc/3Jc0Mxv8/1655872958452.png】《Tubev.sex》◎日系视频◎ https://pigav.com/【https://i.postimg.cc/5ytmqkJ5/1636714890664.png】《Pigav.com》◎视频网站◎ https://www.atube.xxx/?hl=zh【https://i.postimg.cc/YCGJ5q3P/1636849542518.png】《Dtube.xxx》◎在线视频◎ https://www.pfree.one/【https://i.postimg.cc/1tcn0fX7/a139d7adf597e53efc35411870cb9e62.png】《Pfree.one》◎在线视频◎ https://foxlibrary.xyz/【https://i.postimg.cc/qqJqngpX/a1c375a47f312841f8fa6eec14ed61cc.png】《FoxLibrary》◎在线视频◎ https://www.rtmm6.com/video/1/【https://i.postimg.cc/rw4G8443/1657012825802.png】《人体美媚》◎综合网站◎ https://hhhjav.com/【https://i.postimg.cc/Qtf8mGyQ/1656046620044.png】《三H视频》◎综合视频◎ https://fyptt.to/【https://i.postimg.cc/8c9D4yHY/1657563183687.png】《海外抖音》◎海外抖音网站◎ https://eden01.com/【https://i.postimg.cc/bJty35ns/1656074689383.png】《伊甸园网》◎综合视频◎ https://www.fengyuetongtian.com/【https://i.postimg.cc/7ZnG4jsL/1655829430458.png】《风月同天》◎国产视频◎ https://www.bus13.com/【https://i.postimg.cc/bwWMLL57/1655688619355.png】《艾薇巴士》◎视频影院◎ https://avhd1.com/index.html【https://i.postimg.cc/R04Ps1FK/1655817933907.png】《AV视频》◎在线视频◎\n🈂-动漫▪️漫画::https://www-hentaicloud-com.translate.goog/videos?o=mr&_x_tr_sl=auto&_x_tr_tl=zh-CN&_x_tr_hl=zh-CN【https://i.postimg.cc/cLxmt8qt/1657264255748.png】《Hentaicloud》◎在线漫画◎ https://hentaidude.com/【https://i.postimg.cc/VLRc1YRt/1657024067326.png】《hentaidude》◎在线动漫◎ https://www.animehentaivideos.xxx/【https://i.postimg.cc/hj2wwX1T/1657216924243.png】《Hentai~VI》◎日系动漫◎ https://animeidhentai.com/【https://i.postimg.cc/G2Sfn4Ww/1656838030280.png】《Animeid》◎日系动漫◎ https://porcore.com/【https://i.postimg.cc/1zBgGkj0/1657010517944.png】《Porcore》◎在线漫画◎ http://www.177picyy.com/html/category/cg/cg-cn/【https://i.postimg.cc/qgfhYGQt/1656838187853.png】《177漫画》◎在线漫画◎ https://porn3dx.com/【https://i.postimg.cc/sfYtC7st/1657263526600.png】《Porn3dx》◎在线漫画◎ https://www.ho5ho.com/?ref=porndude【https://i.postimg.cc/Kzcw2rKV/1658321960709.png】《全彩H漫》◎在线漫画◎ https://www-hentairules-net.translate.goog/category/incest/?_x_tr_sl=auto&_x_tr_tl=zh-CN&_x_tr_hl=zh-CN【https://i.postimg.cc/PJ34ypKS/1656921716625.png】《hentairules》◎在线漫画◎ https://doujins.com/【https://i.postimg.cc/QdxnMzSN/a6222dd9366f54f87b8f7870bfe43089.png】《Doujins》◎在线动漫◎ https://asmhentai.com/【https://i.postimg.cc/QMGcdFZv/1656904673161.png】《Asmhentai》◎在线漫画◎ https://comics.8muses.com/comics【https://i.postimg.cc/cHCkjmMF/1656747410145.png】《8muses.com》◎在线动漫◎ https://www.cartoonpornvideos.com/【https://i.postimg.cc/PxBHqhpx/1656917164314.png】《Cartoon~P》◎在线动漫◎ https://h-ciyuan.com/【https://i.postimg.cc/R0djvfpk/1657800089071.png】《H~ciyuan》◎在线动漫◎ https://hanime1.me/【https://i.postimg.cc/zvTCGjfx/3761b8bde0f4a3f5d6fc633fd54f0fc6.png】《hanime1.me》◎漫画网站◎\n🎥-VR▪️博客::https://sharesome.com/news/【https://i.postimg.cc/gj4HKk9B/1636708458829.png】《Sharesone™》◎时尚博客直播◎ https://nudebabes.tube/【https://i.postimg.cc/FRZThKzw/1637547515349.png】《Nudebabes》◎在线影院◎ https://m.livejasmin.com/en/list/girl/www.cavhot.com【https://i.postimg.cc/3RDq1WJm/1638681569437.png】《Livejasmin》◎欧美在线直播◎ https://m-chaturbate-com.translate.goog/?_x_tr_sl=auto&_x_tr_tl=zh-CN&_x_tr_hl=zh-CN【https://i.postimg.cc/Mp58kP1S/1656736242263.png】《Chaturbate》◎欧美直播網站◎ https://xn--zp3-xxxsspcom-yp8ve33bkpevz1kpxq.xn--yetv14dbin23n.com/?fulione【https://i.postimg.cc/mrzDLSN0/1657067668701.png】《xxxsspcom™》◎中文抖淫◎ https://viralporn.com/【https://i.postimg.cc/zfGYVCJx/1657014358637.png】《Viralporn》◎欧美直播網站◎ https://51papaya.com/【https://i.postimg.cc/sDLntHFK/1678275099518.png】《51papaya》◎在线短视频◎ https://vrporn.com/?a=634574【https://i.postimg.cc/JzKcYQdk/1655469952522.png】《Vrporn.com[VR]》◎VR视频站◎ https://virtualrealporn.com/?nats=OTk5MTAwMDMuNS44LjEwLjAuMC4wLjAuMA【https://i.postimg.cc/FFJ2fFfW/1655542912385.png】《virualrealporn[VR]》◎VR视频站◎ https://m.instantfap.com/?ref=porndude【https://i.postimg.cc/NM7v3FWG/1636714420842.png】《Instantfap》◎欧美在线视频直播站[优质画面]◎ https://www.sex.com/【https://i.postimg.cc/N0zRGwXh/1655566034717.png】《Sex.com》◎欧美在线视频直播站[优质画面]◎ https://www.xfree.com/?popularFeed=150672【https://i.postimg.cc/Kj0rSZ00/1b675b5fcb22bb8c84bf3682ebad5759.png】《Xfree.com》◎博客直播[优质画面]◎ https://fikfap.com/?ref=porndude【https://i.postimg.cc/DyVy8K9r/1655654233967.png】《Fikfap.com》◎博客直播[优质画面]◎ https://xxxtik.com/?ref=porndude【https://i.postimg.cc/mkxbZNW4/a2b0d5776f5161f168d8394f3bd37074.png】《Xxxtik.com》◎博客直播[优质画面]◎ https://tik.porn/video/216500【https://i.postimg.cc/9XBRnLsy/1655648357308.png】《Tik.porn》◎博客直播[优质画面]◎\n🔞-在线【宽屏】::https://cn.pornhub.com/view_video.php?viewkey=ph5f5367cd02a9a【https://i.postimg.cc/PfZcf8W1/1637937252627.png】《Pornhub》◎🇨🇦在线视频◎ https://www.xvideos.com/【https://i.postimg.cc/L6yQskbQ/1637936393141.png】《Xvideos》◎🇨🇿在线视频◎ https://www.bookofp.com/zh/celebrities/【https://i.postimg.cc/xd72QNs4/1659110706030.png】《Bookofp》◎🇱🇷在线视频◎ https://beeg.com/?ref=porndude【https://i.postimg.cc/T17T3Lm8/1637937050924.png】《Beeg.com》◎🇬🇳在线视频◎ https://m.shameless.com/【https://i.postimg.cc/8CWvGJ1v/1655955946009.png】《shameless》◎🇮🇸在线视频◎ https://txxx.com/【https://i.postimg.cc/CKS3NdBC/1656841152906.png】《Txxx.com》◎🇨🇿在线视频◎ https://m.tnaflix.com/【https://i.postimg.cc/Jzw65BYB/1657106388720.png】《Tnaflix.com》◎🇭🇺在线视频◎ https://fuqer.mobi/【https://i.postimg.cc/FzRB7zqf/2096f0a90436c081102ce000cb1b82b9.png】《Fuqer.mobi》◎🇩🇪在线视频◎ https://teenxmovies.net/【https://i.postimg.cc/MGfGBqPJ/1655986800440.png】《Teenxmovies》◎🇩🇪在线视频◎ https://www.xnxx.com/【https://i.postimg.cc/3NT7QXZF/1638079383739.png】《Xnxx.com》◎🇺🇸在线视频◎ https://www.joysporn.com/?ref=porndude【https://i.postimg.cc/ydy26fDV/1656468812234.png】《Joysporn》◎🇭🇺在线视频◎ https://www.youporn.com/【https://i.postimg.cc/g21CS5TH/1658916855443.png】《Youporn》◎🇨🇴在线视频◎ https://www.gotporn.com/【https://i.postimg.cc/N0hGHFZf/1658840245284.png】《Gotporn.com》◎🇭🇺在线视频◎ https://4kporn.xxx/【https://i.postimg.cc/ht2r3jht/1638700576004.png】《4Kporn.xxx》◎🇳🇴在线视频◎ https://porndoe.com/?utm_campaign=theporndude&utm_medium=trafficbuy&utm_source=theporndude【https://i.postimg.cc/hG3NT5Vz/1637931210565.png】《Porndoe》◎🇫🇷在线视频◎\n🔞-在线【欧美】::http://www.incestflix.com/?ref=porndude【https://i.postimg.cc/G36dHWwM/1638705175642.png】《Incestflix》◎🇮🇩在线视频◎ https://crazyshit.com/category/random-nudity/【https://i.postimg.cc/dtjdr2pM/357020e158482026a20a7e713f6b6279.png】《Crayshit.com》◎🇦🇽在线视频◎ https://motherless.com【https://i.postimg.cc/LXZynXtV/1656205674304.png】《Motherless》◎🇻🇪在线视频◎ https://zh.xhamster.com/【https://i.postimg.cc/VLd9cpxN/1638625257182.png】《Xhameter》◎🇹🇳在线视频◎ https://www.ixxx.com【https://i.postimg.cc/7PjrhdTS/1656846388876.png】《Ixxx.com》◎🇹🇳在线视频◎ https://fuqqt.com/videos/babe【https://i.postimg.cc/TwQzJhLv/1656205530357.png】《Fuqqt.com》◎🇭🇺在线视频◎ https://shooshtime.com/【https://i.postimg.cc/DZzSwpJk/1656294092715.png】《Shooshtime》◎🇫🇮在线视频◎ https://fapster.xxx/categories/【https://i.postimg.cc/zf5fxnkx/1656330613273.png】《Fapster.xxx》◎🇮🇩在线视频◎ https://pornone.com/【https://i.postimg.cc/RZj3rKJD/1656981369071.png】《Pornone.com》◎🇮🇩在线视频◎ https://www.porntube.com/?cid=2930【https://i.postimg.cc/442qfqDm/1638143733789.png】《Porntube》◎🇲🇸在线视频◎ https://www.eporner.com/【https://i.postimg.cc/FscqrGTv/1656079279240.png】《Epornet》◎🇰🇿在线视频◎ https://www.redtube.com/【https://i.postimg.cc/Wp8NN7yM/1656336459126.png】《Redtube》◎🇬🇦在线视频◎ https://www.pornhd.com/【https://i.postimg.cc/HLWTf1T9/47dd395f818d744f5f6b897508d3309f.png】《Pornhd》◎🇮🇩在线视频◎ https://www.18porn.sex/【https://i.postimg.cc/v83FXZLS/1656123183464.png】《18porn.sex》◎🇾🇪在线视频◎ https://pornkai.com/【https://i.postimg.cc/C5gR1VJC/1656347595775.png】《Pornkai》◎🇨🇦在线视频◎\n🔞-在线【备选】::https://pornontube.com/zh-cn/【https://i.postimg.cc/SRZHh6nJ/1657441598978.png】《Pornontube》◎在线电影◎ https://www.fellatiojapan.com/en/?ref=1860c830【https://i.postimg.cc/0Nvm3sM8/1657504985437.png】《Fellatiojapan》◎在线视频网站◎ https://pmatehunter.com/【https://i.postimg.cc/251kXxS9/1657442432339.png】《Pmate~H》◎国际图片◎ https://www.tubegalore.com/zh/【https://i.postimg.cc/8cyY5pTK/1665305809050.png】《Tubegalore》◎在线视频◎ https://m.porn555.com/【https://i.postimg.cc/mrHj6MxN/1657449171627.png】《Porn555.com》◎视频网站◎ https://www.qpornosite.com/【https://i.postimg.cc/zXXc4mKS/647a65f79ad84414ec8ef7037833ee62.png】《qpornosite》◎视频网站◎ https://www.fuqpremium.com/zh/【https://i.postimg.cc/3RYktqSK/c424aec60f743d6db1474dade05b3173.png】《fuqpremium》◎在线视频◎ https://www.lobstertube.com/zh/【https://i.postimg.cc/CMcXFYLT/0b02fc4ba24b38f90f62c54142be537c.png】《LobsterTube》◎数百万激情色情电影◎ https://familyporn.tv/【https://i.postimg.cc/hjjpKYNg/1657448947985.png】《家庭porn》◎在线视频网站◎ https://www.tube8.com/【https://i.postimg.cc/28C8L5vd/c1c46f7c390245ed8325cf5cbcdfa54d.png】《Tybe.8.com》◎在线直播网站◎ https://www.handjobjapan.com/en/?ref=a2f6354a【https://i.postimg.cc/9XBBBLTK/1657198533076.png】《Handjobjaan》◎日系手活◎ https://jav.javfinder.tk/【https://i.postimg.cc/tJ4x5bFj/1665130749332.png】《Javfinder.tk》◎在线视频◎ https://www.porzo.com/zh/【https://i.postimg.cc/htbRGgLV/1657444600756.png】《Porzo.com》◎在线视频◎ https://aboutporno.net/【https://i.postimg.cc/sx2PrBwC/1657560491814.png】《aboutporno.net》◎视频网站◎ https://adultdeepfakes.com/【https://i.postimg.cc/rmsLp1bX/1657442859439.png】《Adultdeepfakes》◎影院在线◎\n📖-书单▪️榜单®::https://vt.sm.cn/api/novelStarReco/index【https://i.postimg.cc/3Ng0mjYb/1642215764921.png】《星云推书》◎书荒搜书神器◎ https://m.qidian.com/rank/【https://i.postimg.cc/Bb6H9P0h/1643185593580.png】《起点榜单》◎起点中文网榜单◎ https://quark.sm.cn/api/rest?method=Novelnew.home&format=html&schema=v2&gender=male&cate=%E5%85%A8%E9%83%A8&rank=rank_hot&pv=2420440【https://i.postimg.cc/XqXmn23H/1656398173543.png】《夸克榜单》◎夸克浏览器小说榜单◎ https://m.baidu.com/sf?openapi=1&dspName=iphone&dsp=iphone&from_sf=1&pd=bookstore&resource_id=5077&type=2&card_id=5143&word=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&title=%E6%9B%B4%E5%A4%9A%E6%8E%A8%E8%8D%90&tag1=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&lid=11549307334103749569&referlid=11549307334103749569&ms=1&frsrcid=5143&frorder=4【https://i.postimg.cc/YS5CqKk1/1643192297572.png】《百度榜单》◎百度浏览器小说榜单◎ https://www.yousuu.com【https://i.postimg.cc/ZqV9LKk4/d6460ce69df5934d47ec2e184264d447.png】《优书榜单》◎优书网书单◎ https://data.newrank.cn/m/s.html?s=Py8yOTE5KDE4【https://i.postimg.cc/nLWpBQzP/1656640745508.png】《小说拾遗》◎小说拾遗公众号-号内搜索◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319671603470581762&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/Wp7cCtpP/9afbe88df402cbaacd6a1f34bb95451a.png】《精选书单》◎主推优质完结和连载100万字以上小说◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319666229510193155&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/dtW1vnvq/1656158438840.png】《潜力新书》◎主推大神新书和20～100万字的优质新书◎ http://mp.weixin.qq.com/mp/homepage?__biz=MzI2MDg2NjAwMg==&hid=11&sn=c55d27329c109430838bc5b5f5b615b7&scene=18#wechat_redirect【https://i.postimg.cc/Nf2g2B79/d7844cc4a188295fb56ff7ee13e7c518.png】《高分必看》◎高分完本合集◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319668267623170050&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/YCYjTCQ1/1643194013372.png】《近期完结》◎主推近一段时间内优质的完结小说◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319675692849872897&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/MHJwdrSX/f3406e1fcc20a92dcaf944c71b0d67ab.png】《后宫精选》◎后宫精选合集◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319454340050157569&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/tTF4MXws/1643177963800.png】《网文书单》◎每期三本-新书速递、养肥佳作、完本好书◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319471313224040448&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/htNQd8pH/1656748079978.png】《澎湃精选》◎超过50万字，连载或完本的优秀作品◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1526356920989712387&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/FRH068g6/1656311375852.png】《年度盘点》◎年度盘点各分类中诞生的新书、完本书◎ https://mp.weixin.qq.com/mp/homepage?__biz=MzI5NTA4NjgwNw==&hid=1&sn=0fcecdc85b8c23e596880f8c895b901d&scene=18&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=59&session_us=gh_2aa0f3c6dd8f&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/TP7Md7D4/1657562436540.png】《赤戟资源》◎最新热门分类◎",
    "sourceComment": "",
    "sourceGroup": "美涩",
    "sourceIcon": "https://i.postimg.cc/tT45zyZQ/9399ca50f4495079a2c4f54f268dcad6.gif",
    "sourceName": "㊣集装箱®",
    "sourceUrl": "Online <2.32>",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 46,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "",
    "ruleTitle": "",
    "showWebLog": false,
    "singleUrl": true,
    "sortUrl": "",
    "sourceGroup": "游戏",
    "sourceIcon": "",
    "sourceName": "格斗出招表",
    "sourceUrl": "https://www.spmoves.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 53,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773227419379,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://cg.163.com/favicon.ico",
    "sourceName": "let's go 领取云手机+云电脑一台~需注册登陆(每天免费玩2h+签到15min)",
    "sourceUrl": "https://cg.163.com/#/game/other",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 56,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773227459462,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://i.postimg.cc/ZRXvkz27/gF2H6e.gif",
    "sourceName": "爱看机器人🤖",
    "sourceUrl": "https://www.ikanbot.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 58,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765536809182,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.comics.*||$.data.*",
    "ruleImage": "$.ComicCover",
    "ruleLink": "@json:/b/{$.FolderName}",
    "ruleNextPage": "page",
    "rulePubDate": "$.LastChapterTitle",
    "ruleTitle": "$.ComicName",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "更新::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=-1\n热血::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=1\n校园::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=2\n推理::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=3\n机战::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=4\n冒险::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=5\n运动::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=6\n耽美::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=7\n搞笑::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=8\n科幻::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=9\n魔幻::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=10\n恐怖::https://mm.sfacg.com/ajax/Common.ashx?op=getLatest&pageIndex={{page-1}}&tid=11",
    "sourceGroup": "动漫漫画",
    "sourceIcon": "http://q1.qlogo.cn/g?b=qq&s=640&nk=2802580445",
    "sourceName": "SF漫画",
    "sourceUrl": "https://mm.sfacg.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 59,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.cate-comic-list clearfix@class.common-comic-item",
    "ruleContent": "",
    "ruleImage": "class.lazy@data-src",
    "ruleLink": "class.cover@href",
    "ruleNextPage": "page",
    "rulePubDate": "class.comic-update@text##更至：",
    "ruleTitle": "class.comic__title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "修真::https://www.mkzhan.com/category/?theme_id=2&page={{page}}\n恋爱::https://www.mkzhan.com/category/?theme_id=3&page={{page}}\n校园::https://www.mkzhan.com/category/?theme_id=4&page={{page}}\n冒险::https://www.mkzhan.com/category/?theme_id=5&page={{page}}\n搞笑::https://www.mkzhan.com/category/?theme_id=6&page={{page}}\n生活::https://www.mkzhan.com/category/?theme_id=7&page={{page}}\n热血::https://www.mkzhan.com/category/?theme_id=8&page={{page}}\n架空::https://www.mkzhan.com/category/?theme_id=9&page={{page}}\n后宫::https://www.mkzhan.com/category/?theme_id=10&page={{page}}\n耽美::https://www.mkzhan.com/category/?theme_id=11&page={{page}}\n玄幻::https://www.mkzhan.com/category/?theme_id=12&page={{page}}\n悬疑::https://www.mkzhan.com/category/?theme_id=13&page={{page}}\n恐怖::https://www.mkzhan.com/category/?theme_id=14&page={{page}}\n灵异::https://www.mkzhan.com/category/?theme_id=15&page={{page}}\n动作::https://www.mkzhan.com/category/?theme_id=16&page={{page}}\n科幻::https://www.mkzhan.com/category/?theme_id=17&page={{page}}",
    "sourceGroup": "动漫漫画",
    "sourceIcon": "https://note.youdao.com/yws/public/resource/bc48248f2c3431cb06447ab7ec93741e/xmlnote/d477b174db98bac52823081bac32c1a4/360",
    "sourceName": "漫画客栈~有请大佬修复内容规则",
    "sourceUrl": "https://www.mkzhan.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 60,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767884278740,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.topics||$.data.cards||$.hits.topicMessageList||$.hits",
    "ruleImage": "$.vertical_image_url||$.image_url||$.cover_image_info.images[*].url",
    "ruleLink": "$.id||$.topic_id@js:\"http://m.kuaikanmanhua.com/mobile/\"+result+\"/list/\"",
    "ruleNextPage": "page",
    "ruleTitle": "$.title.text||$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "国漫榜::http://m.kuaikanmanhua.com/mini/v1/comic/mkuaikan/rank_list?since={{24*(page-1)}}&limit=24&need_ranks=true&rank_id=9\n日漫榜::http://m.kuaikanmanhua.com/mini/v1/comic/mkuaikan/rank_list?since={{24*(page-1)}}&limit=24&need_ranks=true&rank_id=10\n韩漫榜::http://m.kuaikanmanhua.com/mini/v1/comic/mkuaikan/rank_list?since={{24*(page-1)}}&limit=24&need_ranks=true&rank_id=11\n少女榜::http://m.kuaikanmanhua.com/mini/v1/comic/mkuaikan/rank_list?since={{24*(page-1)}}&limit=24&need_ranks=true&rank_id=6\n少年榜::http://m.kuaikanmanhua.com/mini/v1/comic/mkuaikan/rank_list?since={{24*(page-1)}}&limit=24&need_ranks=true&rank_id=5\n青女榜::http://m.kuaikanmanhua.com/mini/v1/comic/mkuaikan/rank_list?since={{24*(page-1)}}&limit=24&need_ranks=true&rank_id=7\n青年榜::http://m.kuaikanmanhua.com/mini/v1/comic/mkuaikan/rank_list?since={{24*(page-1)}}&limit=24&need_ranks=true&rank_id=8\n新作榜::http://m.kuaikanmanhua.com/mini/v1/comic/mkuaikan/rank_list?since={{24*(page-1)}}&limit=24&need_ranks=true&rank_id=2",
    "sourceGroup": "动漫漫画",
    "sourceIcon": "http://img2.baidu.com/it/u=1588216413,1643836872&fm=253&app=138&f=JPEG?w=500&h=500",
    "sourceName": "快看漫画~有情大佬修复内容规则",
    "sourceUrl": "http://m.kuaikanmanhua.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 61,
    "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": "首页::http://yuedu.miaogongzi.net/gx.html",
    "sourceGroup": "书源",
    "sourceIcon": "https://i.postimg.cc/2jc7y2L5/1666783731328.png",
    "sourceName": "喵公子书源管理",
    "sourceUrl": "http://yuedu.miaogongzi.net/gx.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 62,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765536994252,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".post-item||.news_block",
    "ruleLink": ".post-item-title@href||h2@a@href",
    "ruleNextPage": "page",
    "rulePubDate": "p@text||.entry_summary@text",
    "ruleTitle": ".post-item-title@text||h2@a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "新闻::https://news.cnblogs.com/n/page/{{page}}/\njscript::https://www.cnblogs.com/cate/javascript/{{page}}\nhtml/css::https://www.cnblogs.com/cate/web/{{page}}\nHTML5::https://www.cnblogs.com/cate/html5/{{page}}\njquery::https://www.cnblogs.com/cate/jquery/{{page}}\nWindows::https://www.cnblogs.com/cate/win7/{{page}}\nWindows service::https://www.cnblogs.com/cate/winserver/\n精华区::https://www.cnblogs.com/pick/{{page}}\n",
    "sourceGroup": "新闻",
    "sourceIcon": "https://www.cnblogs.com/images/logo.svg?v=R9M0WmLAIPVydmdzE2keuvnjl-bPR7_35oHqtiBzGsM",
    "sourceName": "博客园（求优化）",
    "sourceUrl": "https://www.cnblogs.com/cate/javascript/{{page}}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 63,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767885133732,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "id.threadlisttableid@tbody",
    "ruleLink": "tag.th@class.s xst@href##^##https://www.神秘网.com/",
    "ruleNextPage": "class.nxt@href",
    "rulePubDate": "tag.td.1@em@text",
    "ruleTitle": "tag.th@class.s xst@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "灵异事件::https://www.神秘网.com/forum-2-1.html&&\r灵异作品::https://www.神秘网.com/forum-78-1.html&&UFO与USO::https://www.神秘网.com/forum-45-1.html&&\r\n接触外星人::https://www.神秘网.com/forum-46-1.html&&\r\n科幻作品::https://www.神秘网.com/forum-79-1.html&&奇人::https://www.神秘网.com/forum-48-1.html&&\r\n神奇的人体现象::https://www.神秘网.com/forum-49-1.html&&\r\n奇怪的疾病::https://www.神秘网.com/forum-50-1.html&&神奇的生物::https://www.神秘网.com/forum-51-1.html&&\r\n神秘的地理::https://www.神秘网.com/forum-52-1.html&&神秘的人文::https://www.神秘网.com/forum-53-1.html&&\r\n惊人的考古发现::https://www.神秘网.com/forum-54-1.html&&\r\n不为人知的历史::https://www.神秘网.com/forum-55-1.html&&魔术视频::https://www.神秘网.com/forum-56-1.html&&\r\n魔术交流::https://www.神秘网.com/forum-57-1.html&&科技与探索::https://www.神秘网.com/forum-65-1.html&&\r\n其他作品::https://www.神秘网.com/forum-61-1.html&&\r\n搞笑雷人::https://www.神秘网.com/forum-59-1.html&&\r\n帝版::https://www.神秘网.com/forum-58-1.html&&\r\n真我秀::https://www.神秘网.com/forum-60-1.html&&",
    "sourceGroup": "新闻",
    "sourceIcon": "https://www.q10drfc.com/wp-includes/images/w-logo-blue-white-bg.png",
    "sourceName": "神秘网",
    "sourceUrl": "https://www.神秘网.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 64,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765537611717,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "id.content@article",
    "ruleDescription": "class.entry-content@html",
    "ruleImage": "class.wp-block-image@img@src",
    "ruleLink": "class.entry-content@a@href",
    "ruleNextPage": "class.nextpostslink@href",
    "rulePubDate": "class.entry-meta@a@text##\\n##·",
    "ruleTitle": "h1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://i01piccdn.sogoucdn.com/87471fed709dfb95",
    "sourceName": "有趣网址之家",
    "sourceUrl": "https://youquhome.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 64,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775585390755,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/003.webp",
    "sourceName": "樱花电影",
    "sourceUrl": "http://yhxdny.com/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 69,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n    'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 12; M2012K11AC Build/SKQ1.211006.001)'\n}",
    "lastUpdateTime": 1773236369157,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.res.vertical[*]",
    "ruleContent": "@js:\na=baseUrl;\nb='<img src=\"'+a+'\"';\nc='<html><head><meta charset=\"utf-8\"><title>壁纸喵</title><style>body{background-color:#ffffff}</style></head><body>'+b+' width=\"100%\" height=\"auto\" controls=\"controls\" <\"></video></body></html>'",
    "ruleImage": "$.img",
    "ruleLink": "$.img",
    "ruleNextPage": "page",
    "rulePubDate": "❤️{{$.favs}}",
    "ruleTitle": "$.store",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::http://service.picasso.adesk.com/v1/vertical/vertical?disorder=true&limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fvertical&order=hot\n美女::http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000000/vertical?limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fcategory%2F4e4d610cdf714d2966000000%2Fvertical&order=new\n动漫::http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000003/vertical?limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fcategory%2F4e4d610cdf714d2966000003%2Fvertical&order=new\n风景::http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000002/vertical?limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fcategory%2F4e4d610cdf714d2966000002%2Fvertical&order=new\n游戏::http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000007/vertical?limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fcategory%2F4e4d610cdf714d2966000007%2Fvertical&order=new\n文字::http://service.picasso.adesk.com/v1/vertical/category/5109e04e48d5b9364ae9ac45/vertical?limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fcategory%2F5109e04e48d5b9364ae9ac45%2Fvertical&order=new",
    "sourceComment": "\"700px\"",
    "sourceGroup": "资源绘",
    "sourceIcon": "http://gchat.qpic.cn/gchatpic_new/0/0-0-91D8938EB5E07D8E301B9A48885928C7/0?term=2",
    "sourceName": "壁纸喵",
    "sourceUrl": "http://service.picasso.adesk.com",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 72,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765537085830,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": false,
    "sourceComment": "巴士",
    "sourceGroup": "美涩",
    "sourceIcon": "https://z3.ax1x.com/2021/02/07/ytDpOe.jpg",
    "sourceName": "Ssr~Bus",
    "sourceUrl": "https://rsshub.app/javbus/home",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 74,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.line_bottom",
    "ruleContent": "class.entry@html",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "span@text",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceComment": "久久文学",
    "sourceGroup": "美涩",
    "sourceIcon": "https://i.postimg.cc/W1LpkLDV/y4cyUP.gif",
    "sourceName": "23uup（小说）",
    "sourceUrl": "https://www.23uup.com/e/action/ListInfo/index.php?page={{page}}&classid=1",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 79,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "",
    "ruleDescription": "",
    "ruleImage": "",
    "ruleLink": "",
    "ruleNextPage": "",
    "rulePubDate": "",
    "ruleTitle": "",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "https://static.zhihu.com/heifetz/favicon.ico",
    "sourceName": "知乎每日精选",
    "sourceUrl": "https://www.zhihu.com/rss",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 80,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\r\n\"User-Agent\": \"Dalvik/2.1.0 (Linux; U; Android 7.1.2; BAH3-W09 Build/N2G47H)\"\r\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.result.newsList",
    "ruleContent": "<js>\nhtml='';\r\nnurl=[];\r\nbase=\"https://www.banyuetanapp.com/\";\r\nnurl.push(base+\"{{$.result.htmlUrl}},{'retry':16}\")\t\r\njava.log(base+\"{{$.result.htmlUrl}},{'retry':16}\")\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>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n{{result}}",
    "ruleImage": "https://www.banyuetanapp.com/{{$.imgUrlForList}}",
    "ruleLink": "https://www.banyuetanapp.com/byt-api/news/newsDetail?newsId={{$.id}}",
    "ruleNextPage": "page",
    "rulePubDate": "{{java.timeFormatUTC(java.getString(\"startTime\"),\"YYYY-MM-dd HH:mm:ss\",8)}}",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "今日谈::byt-api/news/newsListV2?startTime=0&channelId=100000001&pageNo={{page}}&pageSize=1000\n时政讲解::byt-api/news/newsListV2?startTime=0&channelId=100000002&pageNo={{page}}&pageSize=1000\n军事::byt-api/news/newsListV2?startTime=0&channelId=100000020&pageNo={{page}}&pageSize=1000\n国际::byt-api/news/newsListV2?startTime=0&channelId=100000027&pageNo={{page}}&pageSize=1000\n基层治理::byt-api/news/newsListV2?startTime=0&channelId=100000015&pageNo={{page}}&pageSize=1000\n文化::byt-api/news/newsListV2?startTime=0&channelId=100000004&pageNo={{page}}&pageSize=1000\n教育::byt-api/news/newsListV2?startTime=0&channelId=100000005&pageNo={{page}}&pageSize=1000\n经济::byt-api/news/newsListV2?startTime=0&channelId=100000017&pageNo={{page}}&pageSize=1000\n人物::byt-api/news/newsListV2?startTime=0&channelId=100000019&pageNo={{page}}&pageSize=1000\n思想::byt-api/news/newsListV2?startTime=0&channelId=100000022&pageNo={{page}}&pageSize=1000\n民生::byt-api/news/newsListV2?startTime=0&channelId=100000032&pageNo={{page}}&pageSize=1000",
    "sourceGroup": "新闻",
    "sourceIcon": "https://www.banyuetanapp.com/source/image/logo/um_share_logo.png",
    "sourceName": "半月谈",
    "sourceUrl": "https://www.banyuetanapp.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 81,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "//entry",
    "ruleDescription": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n<title>{{//title/text()}}</title>\n{{//content /text()}}",
    "ruleLink": "/link@href",
    "ruleNextPage": "page",
    "rulePubDate": "//published/text()",
    "ruleTitle": "//title/text()",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "http://www.ruanyifeng.com/favicon.ico",
    "sourceName": "阮一峰的网络日志",
    "sourceUrl": "http://www.ruanyifeng.com/blog/atom.xml",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 83,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765537635129,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "ul li",
    "ruleLink": "a@href",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "工具",
    "sourceIcon": "https://7nsts.w3cschool.cn/images/w3c/app-logo.png",
    "sourceName": "正则表达式",
    "sourceUrl": "https://m.w3cschool.cn/zhengzebiaodashi/regexp-tutorial.html",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 84,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "<js>\nJSON.stringify({\n\t\"User-Agent\": java.getWebViewUA()\n\t});\n</js>",
    "jsLib": "{\"getHtml\": \"https://gitee.com/pjdkj/src/raw/main/legado/rssSource/pictureHtml.js\"}",
    "lastUpdateTime": 1775644581123,
    "loadWithBaseUrl": true,
    "loginUi": "[\n    {\n        name: \"背景#RGB格式\",\n        type: \"text\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        name: \"设置背景\",\n        type: \"button\",\n        action: \"login()\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.45\n        }\n    },\n    {\n        name: \"切换主题\",\n        type: \"button\",\n        action: \"setTheme()\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.45\n        }\n    },\n    {\n        name: \"图片左右页边距\",\n        type: \"button\",\n        action: \"logT(1)\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        name: \"减小\",\n        type: \"button\",\n        action: \"zuoyou(0)\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.45\n        }\n    },\n    {\n        name: \"增大\",\n        type: \"button\",\n        action: \"zuoyou(1)\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.45\n        }\n    },\n    {\n        name: \"图片上下间距\",\n        type: \"button\",\n        action: \"logT(2)\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        name: \"减小\",\n        type: \"button\",\n        action: \"shangxia(0)\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.45\n        }\n    },\n    {\n        name: \"增大\",\n        type: \"button\",\n        action: \"shangxia(1)\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.45\n        }\n    },\n    {\n        name: \"图片圆角\",\n        type: \"button\",\n        action: \"logT(3)\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        name: \"减小\",\n        type: \"button\",\n        action: \"yuanjiao(0)\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.45\n        }\n    },\n    {\n        name: \"增大\",\n        type: \"button\",\n        action: \"yuanjiao(1)\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.45\n        }\n    },\n    {\n        name: \"同步远程代码\",\n        type: \"button\",\n        action: \"pull()\",\n        style: {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    }\n]",
    "loginUrl": "function login() {\n    let bgColor = String(result[\"背景#RGB格式\"]);\n    const rgbRegex = /^#([0-9A-Fa-f]{3,8})$/;\n    if (rgbRegex.test(bgColor)) {\n        cache.put(\"_BACK_GROUND_COLOR_\", bgColor);\n        java.log(`当前背景：${bgColor}`);\n        java.toast(`当前背景：${bgColor}`);\n    } else {\n        java.log(\"颜色格式不合法\");\n        java.toast(\"颜色格式不合法\");\n    }\n}\nfunction setTheme() {\n    if (cache.get(\"_BACK_GROUND_COLOR_\") == \"floralwhite\") {\n        cache.put(\"_BACK_GROUND_COLOR_\", \"#151924\");\n        java.toast(\"当前暗色主题\");\n    }\n    else {\n        cache.put(\"_BACK_GROUND_COLOR_\", \"floralwhite\");\n        java.toast(\"当前亮色主题\");\n    }\n}\nfunction logT(n) {\n    if (n == 1) {\n        let zy = cache.get(\"_PICTURE_MARGIN_LEFT_RIGHT_\") || 95;\n        java.toast(`图片左右页边距：${100 - zy}%`);\n    }\n    else if (n == 2) {\n        let sx = cache.get(\"_PICTURE_MARGIN_TOP_BOTTOM_\") || 10;\n        java.toast(`图片上下间距：${sx}px`);\n    }\n    else if (n == 3) {\n        let yj = cache.get(\"_PICTURE_BORDER_RADIUS_\") || 10;\n        java.toast(`图片圆角：${yj}px`);\n    }\n}\nfunction zuoyou(n) {\n    let zy = cache.get(\"_PICTURE_MARGIN_LEFT_RIGHT_\") || 95;\n    if (n === 0) {\n        zy++;\n        if (zy > 100) {\n            zy = 100;\n        }\n    } else {\n        zy--;\n        if (zy < 0) {\n            zy = 0;\n        }\n    }\n    cache.put(\"_PICTURE_MARGIN_LEFT_RIGHT_\", zy);\n    if (zy === 100) {\n        java.toast(\"无页边距\");\n    } else if (zy === 0) {\n        java.toast(\"不能为100%\");\n    } else {\n        java.toast(`图片左右页边距：${100 - zy}%`);\n    }\n}\nfunction shangxia(n) {\n    let sx = cache.get(\"_PICTURE_MARGIN_TOP_BOTTOM_\") || 10;\n    if (n == 0) {\n        sx--;\n        if (sx < 0) {\n            sx = 0;\n            cache.put(\"_PICTURE_MARGIN_TOP_BOTTOM_\", sx);\n            java.toast(\"间距不能小于0px\");\n        }\n        else {\n            cache.put(\"_PICTURE_MARGIN_TOP_BOTTOM_\", sx);\n            java.toast(`图片上下间距：${sx}px`);\n        }\n    }\n    else {\n        sx++;\n        cache.put(\"_PICTURE_MARGIN_TOP_BOTTOM_\", sx);\n        java.toast(`图片上下间距：${sx}px`);\n    }\n}\nfunction yuanjiao(n) {\n    let yj = cache.get(\"_PICTURE_BORDER_RADIUS_\") || 10;\n    if (n == 0) {\n        yj--;\n        if (yj < 0) {\n            yj = 0;\n            cache.put(\"_PICTURE_BORDER_RADIUS_\", yj);\n            java.toast(\"无圆角\");\n        }\n        else {\n            cache.put(\"_PICTURE_BORDER_RADIUS_\", yj);\n            java.toast(`图片圆角：${yj}px`);\n        }\n    }\n    else {\n        yj++;\n        cache.put(\"_PICTURE_BORDER_RADIUS_\", yj);\n        java.toast(`图片圆角：${yj}px`);\n    }\n}\nfunction pull() {\n    let url = \"https://gitee.com/pjdkj/src/raw/main/legado/rssSource/pictureHtml.js\";\n    cache.delete(java.md5Encode16(url));\n    java.toast(\"已同步\");\n}",
    "preload": false,
    "ruleArticles": "li@figure@a.0\n<js>\nlet html = \"\";\nfor (item of result){\n\tif(!/<\\/video>/.test(String(item))){\n\t\thtml += String(item);\n\t\t}\n\t}\njava.setContent(html)\njava.getElements(\"a\");\n</js>",
    "ruleContent": "class.list-gallery@li@a@data-srcset||class.list-gallery@li@a@img@srcset\n<js>\nlet list = String(result).split('\\n');\nlet urlList= list.map(item => item.split(',')[0].replace(/\\d+w/, ''));\nresult=urlList.join('\\n');\n\ndanyeHtml(result);\n</js>",
    "ruleImage": "img@srcset\n<js>\nString(result).split(',')[0].replace(/\\d+w/, '');\n</js>",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "ruleTitle": "a.0@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "Trend::{{page == 1? source.getKey() + \"/sort/trending/\" : source.getKey() + \"/gridapi/?content=updates&sort=trending&mpage=\" + page}}\n\t\nNewest::{{page == 1? source.getKey() + \"/sort/newest/\" : source.getKey() + \"/gridapi/?content=updates&sort=newest&mpage=\" + page}}\n\t\nPopular::{{page == 1? source.getKey() + \"/sort/popular/\" : source.getKey() + \"/gridapi/?content=updates&sort=popular&mpage=\" + page}}\n\t\nPopular-month::{{page == 1? source.getKey() + \"/sort/popular-month/\" : source.getKey() + \"/gridapi/?content=updates&sort=popular-month&mpage=\" + page}}\n\t\nPopular-week::{{page == 1? source.getKey() + \"/sort/popular-week/\" : source.getKey() + \"/gridapi/?content=updates&sort=popular-week&mpage=\" + page}}",
    "sourceComment": "//正文不分页示例",
    "sourceGroup": "涩图",
    "sourceIcon": "https://cdn.elitebabes.com/content/260138/1805532_masonry_1200.jpg",
    "sourceName": "EliteBabes",
    "sourceUrl": "https://www.elitebabes.com##平静",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 88,
    "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,
    "loginUi": "[\n{name:\"接口\",type:\"text\"}\n,{name:\"　　　  设置填写的接口为当前接口  　　　\",type:\"button\",action:\"$()\"}\n,{name:\"　 log当前接口 　\",type:\"button\",action:\"look(0)\"}\n,{name:\"　确定启用接口　\",type:\"button\",action:\"yes()\"}\n,{name:\"　 log历史接口 　\",type:\"button\",action:\"look(1)\"}\n,{name:\"　　　　   ༺ˇ»`ʚ  Ⓐ 优质  ɞ´«ˇ༻   　　　　\",type:\"button\"}\n,{name:\"⓪ 量子Ⓐ\",type:\"button\",action:\"$(0)\"}\n,{name:\"① 非凡Ⓐ\",type:\"button\",action:\"$(1)\"}\n,{name:\"② 卧龙Ⓐ\",type:\"button\",action:\"$(2)\"}\n,{name:\"③ 三九Ⓐ\",type:\"button\",action:\"$(3)\"}\n,{name:\"④ 乐活Ⓐ\",type:\"button\",action:\"$(4)\"}\n,{name:\"⑤ 酷点Ⓐ\",type:\"button\",action:\"$(5)\"}\n,{name:\"⑥ 无尽Ⓐ\",type:\"button\",action:\"$(6)\"}\n,{name:\"⑦ 飘零Ⓐ\",type:\"button\",action:\"$(7)\"}\n,{name:\"⑧ 飞速Ⓐ\",type:\"button\",action:\"$(8)\"}\n,{name:\"⑨ FOXⒶ \",type:\"button\",action:\"$(9)\"}\n,{name:\"⑩ iKunⒶ\",type:\"button\",action:\"$(10)\"}\n,{name:\"⑪ UKUⒶ \",type:\"button\",action:\"$(11)\"}\n,{name:\"⑫ 天空Ⓐ\",type:\"button\",action:\"$(12)\"}\n,{name:\"⑬ 闪电Ⓐ\",type:\"button\",action:\"$(13)\"}\n,{name:\"⑭ 映迷Ⓐ\",type:\"button\",action:\"$(14)\"}\n,{name:\"　　　　   ༺ˇ»`ʚ  Ⓑ 普通  ɞ´«ˇ༻   　　　　\",type:\"button\"}\n,{name:\"⑮ 天猫Ⓑ\",type:\"button\",action:\"$(15)\"}\n,{name:\"⑯ 金鹰Ⓑ\",type:\"button\",action:\"$(16)\"}\n,{name:\"⑰ 鱼乐Ⓑ\",type:\"button\",action:\"$(17)\"}\n,{name:\"⑱ 红牛Ⓑ\",type:\"button\",action:\"$(18)\"}\n,{name:\"⑲ 光速Ⓑ\",type:\"button\",action:\"$(19)\"}\n,{name:\"⑳ 樱花Ⓑ\",type:\"button\",action:\"$(20)\"}\n,{name:\"　　　　   ༺ˇ»`ʚ  Ⓒ 较差  ɞ´«ˇ༻   　　　　\",type:\"button\"}\n,{name:\"　㉑ 汤姆资源Ⓒ　\",type:\"button\",action:\"$(21)\"}\n,{name:\"　㉒ 星海资源Ⓒ　\",type:\"button\",action:\"$(22)\"}\n,{name:\"　㉓ 仓库资源Ⓒ　\",type:\"button\",action:\"$(23)\"}\n,{name:\"　㉔ 七七韩剧Ⓒ　\",type:\"button\",action:\"$(24)\"}\n,{name:\"　　　　   ༺ˇ»`ʚ  Ⓓ 正版  ɞ´«ˇ༻   　　　　\",type:\"button\"}\n,{name:\"　㉕ 影图解析Ⓓ　\",type:\"button\",action:\"$(25)\"}\n,{name:\"　㉖ 百淘影视Ⓓ　\",type:\"button\",action:\"$(26)\"}\n,{name:\"　㉗ 追剧达人Ⓓ　\",type:\"button\",action:\"$(27)\"}\n,{name:\"　㉘ 小鸟动漫Ⓓ　\",type:\"button\",action:\"$(28)\"}\n]",
    "loginUrl": "//请求头参数说明\n//i=>当前选中\n//ci0=>当前使用\n//ci1-ci3=>历史使用\n//api=>资源链接\n\n$$$ = JSON.parse(JSON.stringify(source.getLoginHeaderMap()));\nif($$$==null)$$$={};//初始化\nnnn = '\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n';\nkkk = '　　　　　　　　　　';\n\n\n//保存请求头\nfunction put(json){\n\t\treturn source.putLoginHeader(\n\t\t\tJSON.stringify(json)\n\t\t);\n\t}\n\n\n//获取参数对应的api名称\nfunction name(i){\n\t\tif(i==undefined)i=0;//默认接口\n\t\treturn x[i]+' 【'+$$[i][0].replace(/([^\\.])$/,'$1资源').replace(/\\.$/,'')+'】 '\n\t}\n\n\n//log字符串\nfunction login(t){\n\t\tif(t==undefined)return;\n\t\tjava.log(t+kkk+kkk+nnn);\n\t\tjava.toast(t+kkk+kkk+nnn+nnn);\n\t}\n\n\n//log当前接口\nfunction look(type){\n\t\tif(type==0){\n\t\treturn login('【查看当前接口】\\n\\n\\n　　当前接口为序号'+name($$$.ci0));\n\t\t}else{\n\t\treturn login('【查看历史接口】\\n\\n\\n　　ci1:　'+name($$$.ci1)+'\\n\\n　　ci2:　'+name($$$.ci2)+'\\n\\n　　ci3:　'+name($$$.ci3)+'\\n');\n\t\t}\n\t}\n\n\n//put接口序号\nfunction $(i){\n\tif(i==undefined)i=result.接口;\n\tif(/^ci[123]$/.test(i))eval('i=$$$.'+i);\n\n\n//接口错误\nif( /\\D|^$/.test(i) || i<0 || i>=$$.length ){\n\t\treturn login('【接口错误提示】\\n\\n\\n　　无法获取填写的接口');\n\t}\nelse if(i==$$$.i){\n\t\tlogin('【取消选中提示】\\n\\n\\n　　已取消选中');\n\t\tdelete $$$.i\n\t\treturn put($$$);\n\t}\nelse if(i==$$$.ci0){\n\t\tlogin('【无法选中提示】\\n\\n\\n　　正在使用此接口，无需更换');\n\t\tdelete $$$.i\n\t\treturn put($$$);\n\t}\n\n\t\tlogin('【确定选择提示】\\n\\n\\n　　确定选择序号'+name(i)+'为当前接口吗？\\n\\n\\n　　点击上方 【确定启用接口】 按钮启用');\n\t\t$$$.i=i\n\t\treturn put($$$);\n}\n\n\n//确定启用接口\nfunction yes(){\n\t\ti = $$$.i\n\t\tif(i==undefined){\n\t\t\treturn login('【接口启用提示】\\n\\n\\n　　启用失败，没有选中接口');\n\t\t\t}\n\t\telse{\n\t\tdelete $$$.i;\n\t\tif(i==$$$.ci0){\n\t\t\t\tlogin('【接口启用提示】\\n\\n\\n　　正在使用此接口，无需启用');\n\t\t\t\treturn put($$$);\n\t\t\t}\n\n\t\tlogin('【接口启用提示】\\n\\n\\n　　启用成功，已选择序号'+name(i)+'为当前接口\\n\\n\\n\\n\\n　　退出/成功登录后  -  右上角设置  -  刷新分类即可');\n\t\t$$$.api = $$[i][1]\n\t\t$$$.ci3 = $$$.ci2\n\t\t$$$.ci2 = $$$.ci1\n\t\t$$$.ci1 = $$$.ci0\n\t\t$$$.ci0 = i\n\t\treturn put($$$);\n\t}\n}\n\n\n//资源链接\nx=\"⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳\";$$=[\n[\"量子\",\"https://cj.lziapi.com\"],\n[\"非凡\",\"https://cj.ffzyapi.com\"],\n[\"卧龙\",\"https://collect.wolongzyw.com\"],\n[\"三九\",\"https://www.39kan.com\"],\n[\"乐活\",\"https://lehootv.com\"],\n[\"酷点\",\"https://kudianzy.com\"],\n[\"无尽\",\"https://api.wujinapi.net\"],\n[\"飘零\",\"https://p2100.net\"],\n[\"飞速\",\"https://www.feisuzy.com\"],\n[\"FOX\",\"https://api.foxzyapi.com\"],\n[\"iKun\",\"https://ikunzyapi.com\"],\n[\"UKU\",\"https://api.ukuapi.com\"],\n[\"天空\",\"https://api.tiankongapi.com\"],\n[\"闪电\",\"https://sdzyapi.com\"],\n[\"映迷\",\"https://www.inmi.app\"],\n[\"天猫\",\"https://www.tianmaozy.com\"],\n[\"金鹰\",\"https://jyzyapi.com\"],\n[\"鱼乐\",\"https://api.ylzy1.com\"],\n[\"红牛\",\"https://hongniuzy2.com\"],\n[\"光速\",\"https://api.guangsuapi.com\"],\n[\"樱花\",\"https://m3u8.apiyhzy.com\"],\n[\"汤姆采集.\",\"https://api.tomcaiji.com\"],\n[\"星海资源.\",\"https://xhzy01.com\"],\n[\"菲菲六七.\",\"https://feifei67.com\"],\n[\"七七韩剧.\",\"https://www.77hanju.com\"],\n[\"影图解析.\",\"https://cj.vodimg.top\"],\n[\"百淘影视.\",\"http://ys.58g8.com\"],\n[\"追剧达人.\",\"http://zjdr.tv\"],\n[\"小鸟动漫.\",\"http://xydm.baicai.buzz\"] ];",
    "preload": false,
    "ruleArticles": "$.list",
    "ruleContent": "",
    "ruleDescription": "<js>//解析列表，自行按格式添加\njiexi = [ [\"Ⓧ 禁用\",\"\"],\n\n//S 可以换线路\n[\"Ⓢ Wandhi\",\"http://vip.wandhi.com/?v=\"],\n[\"Ⓢ 酷云\",\"http://jx.kuvun.com/?v=\"],\n[\"Ⓢ 星辰\",\"https://www.gchaucer.com/jiexi/jiexi-gf/?url=\"],\n[\"Ⓢ 奇米\",\"http://www.qimiqimi.net/jiexi/?url=\"],//有上次观看记录\n\n//A ui好\n[\"Ⓐ AG解析\",\"https://www.codjx.com/?url=\"],\n[\"Ⓐ Aliplayer\",\"https://zy.aoxtv.com/m3u8.php?url=\"],\n[\"Ⓐ 追剧啦\",\"https://www.zhuiju.la/player/?url=\"],//有弹幕(和视频无关)\n[\"Ⓐ 云解析\",\"https://www.jiexila.com/?url=\"],\n[\"Ⓐ 猪蹄解析\",\"https://jx.iztyy.com/svip/?url=\"],\n\n//B 普通\n[\"Ⓑ 无尽解析\",\"https://jx.wujinkk.com/dplayer/?url=\"],\n[\"Ⓑ 无名解析\",\"https://jx.bozrc.com:4433/player/?url=\"],\n[\"Ⓑ 九单解析\",\"https://y.9dan.cc/dp/?url=\"],\n[\"Ⓑ 03+解析\",\"https://api.leeleo.cn/api3.php?url=\"],\n[\"Ⓑ Bplayer\",\"https://api.tinga88.com/?url=\"],\n\n//C 较差\n[\"Ⓒ 鸭奈飞\",\"https://netflixvip.4kya.com/?url=\"],//暂停有广告\n[\"Ⓒ 冰豆解析\",\"https://api.qianqi.net/vip/?url=\"],//暂停有广告\n[\"Ⓒ OK解析♳\",\"https://okjx.cc/?url=\"],//可以换线路，高频弹窗跳转APP\n[\"Ⓒ OK解析♴\",\"https://api.okjx.cc:3389/jx.php?url=\"],//同上\n\n\n].map($=>'\\t\\t<button onclick=\"jiexi(this)\" value=\"'+$[1]+'\"><b>'+$[0]+'</b></button>').join('\\n');\n\n\n\n//获取接口\njiekou = String(src.vod_play_from).split('$$$').map(($,i)=>'\\t\\t<button onclick=\"jiekou('+i+')\"><b>'+$+'</b></button>').join('\\n');\n\n\n\n//获取集数\njishu = String(src.vod_play_url).split('$$$').map((a,i)=>{\n\t\ta = a.split('#').map((a,i)=>{\n\t\t\t\ta = String(a).split('$')\n\t\t\t\tif(a.length>1){\n\t\t\t\t\t\tvalue = a[1]\n\t\t\t\t\t\tname = /\\S/.test(a[0])?a[0]:i+1\n\t\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t\tvalue = a[0]\n\t\t\t\t\t\tname = i+1\n\t\t\t\t\t}\n\t\t\t\tif(i==0)java.put('value',value);\n\t\t\t\treturn '\\t\\t<button onclick=\"jishu(this)\" value=\"'+value+'\"><b>'+name+'</b></button>'\n\t\t\t}).join('\\n');\n\t\treturn '<div>\\n'+a+'\\n</div>';\n\t}).join('\\n');\n\n\n\n//返回json\nJSON.stringify({\n\tjiexi: '<div>\\n'+jiexi+'\\n</div>',\n\tjiekou: '<div>\\n'+jiekou+'\\n</div>',\n\tjishu: jishu\n})\n</js><title>{{$.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\n\n<iframe frameborder=\"no\" allowfullscreen></iframe>\n<p></p>\n<hr>\n\n\n\n<details>\n<summary><h3>{{$.vod_name}}</h3></summary>\n<br><img src=\"{{$.vod_pic}}\" onerror=\"this.src='{{source.sourceIcon}}'\">\n<p>导演：{{$.vod_director##\\n|,##, }}</p>\n<p>编剧：{{$.vod_writer##\\n|,##, }}</p>\n<p>主演：{{$.vod_actor##\\n|,##, }}</p>\n<p>地区：{{$.vod_area}}</p>\n<p>年代：{{$.vod_year}}</p>\n<p>语言：{{$.vod_lang}}</p>\n<p>标签：{{$.type_name&&$.vod_tag&&$.vod_class##\\n|,##, }}</p>\n<p>评分：网站{{$.vod_score}} | 豆瓣{{$.vod_douban_score}}</p>\n<p>@get:{p}{{$.vod_time## .*}}</p>\n<p>简介：{{$.vod_content}}</p>\n<br><br>\n</details>\n<hr>\n\n\n<div class=\"jiexi\">\n<p>解析</p>\n{{JSON.parse(result).jiexi}}\n</div>\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<script>\n//选中标签\nfunction $(rule){\n\t\treturn document.querySelectorAll(rule);\n\t}\n//删除选中标签的class\nfunction omit(items){\n\t\treturn Array.from(items,(item)=>{\n\t\t\t\treturn item.className=\"\";\n\t\t\t});\n\t}\n//选中标签的class增加active\nfunction active(items,index){\n\t\treturn items[index].className=\"active\";\n\t}\n\n\n//点击按钮时调用的函数\nfunction jiekou(index){\n\t\tomit($('.jiekou .active, .jishu div.active'));\n\t\tactive($('.jiekou button'),index);\n\t\treturn active($('.jishu>div'),index);\n\t}\nfunction jishu(item){\n\t\tomit($('.jishu button.active'));\n\t\titem.className=\"active\";\n\t\treturn geturl();\n\t}\nfunction jiexi(item){\n\t\tomit($('.jiexi .active'));\n\t\titem.className=\"active\";\n\t\treturn geturl();\n\t}\n\n\n//获取视频URL\nfunction geturl(){\n\t\tjxurl = $(\".jiexi .active\")[0].value;\n\t\tzyurl = $(\".jishu button.active\")[0].value;\n\t\tpjurl = jxurl+zyurl;\n\t\tvideo = $('iframe')[0];\n//防止链接重复导致重新加载\n\t\tif(video.src==pjurl)return;\n\t\t$(\"body>p\")[0].innerText=pjurl;\n\t\treturn video.src=pjurl\n\t}\n\n\n//初始化，默认启用第一个\n(()=>{\n\t\tactive($('.jiexi button'),0);\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>",
    "ruleImage": "$.vod_pic",
    "ruleLink": "{{eval(String(source.sourceComment));api}}?ac=detail&ids={{$.vod_id}}",
    "ruleNextPage": "page",
    "rulePubDate": "@js:java.log(src)\nfunction $(type){\n\t\treturn String(eval('src.vod_'+type))\n\t}\n\na=$('duration')\nif(/\\d\\:\\d/.test(a)){\n\t\tp='时长：'+a\n\t\ta='⏱️ '+a\n\t}\nelse{\n\t\ta=$('remarks')\n\t\tif(/\\S/.test(a)){\n\t\t\t\tp=`最新：${a} / 共{{$.vod_total}}集`\n\t\t\t\ta='🔖 '+a\n\t\t\t}\n\t\telse{\n\t\t\t\ta=$('state')\n\t\t\t\tif(/\\S/.test(a)){\n\t\t\t\t\t\tp='视频：'+a\n\t\t\t\t\t\ta='📺 '+a\n\t\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t\tp=''\n\t\t\t\t\t\ta='🔖 '+$('score')+'分'\n\t\t\t\t\t}\n\t\t\t}\n\t}\njava.put('p',String(p).replace(/ \\/ 共(\\s*0+)?\\s*集/,'').replace(/(.+)/,'$1 • ').replace(/^$/,'最新：'));\na+`　📆 {{$.vod_time## .*}}`",
    "ruleTitle": "$.vod_name##\\.mp4$",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\neval(String(source.sourceComment));\nurl=api+\"?ac=detail&pg={{page}\\}\";\n\n\n//刷新分类时弹窗当前api\njava.toast(String(api).replace(/\\/api\\.php.*/,''))\n\n\n//搜索url\nfunction surl(){\nkey=source.getVariable()\nif(key==\"\"||key==null){\nsource.setVariable('伍六七');//默认搜索关键词\n\t}\nkey=source.getVariable()\nreturn \"变量搜索::\"+url+\"&wd=\"+key+\"\\n\";\n}\n\n\n//分类url\nsort=cache.get(api);\nif(sort==null){//分类无缓存时调用\nsort=\"\";x=0\njava.toast(\"api no put cache\\n　get Sort ing...\")\n\n//获取分类URL\nfunction getUrls(){\ntry{\n\t\turllist = []\n\t\tI = JSON.parse(java.ajax(api)).class.map($=>{\n\t\t\t\tturl = url+\"&t=\"+$.type_id;\n\t\t\t\turllist.push(turl);\n\t\t\t\treturn $.type_name+\"::\"+turl;\n\t\t\t}).join('\\n').split('\\n');\n\t\tx = 0\n\t\tjava.toast('Yes  get Urls\\n　Urls is now being verified')\n\t\treturn verifyUrls()\n\t}\ncatch(e){//ajax失败会重新请求两次\n\t\tx++\n\t\tif(x<3){\n\t\t\t\tjava.toast('ajax err\\n　Try again  get Urls '+x)\n\t\t\t\treturn getUrls()\n\t\t\t}\n\t\telse{\n\t\t\t\treturn java.toast('No  get Urls\\n　Sort  acquisition failure')\n\t\t\t}\n\t}\n}\n\n//校验分类URL\n//加载urllist的链接，测试能否获取name，如果无法获取name就定义为失效分类，保存剩下的有效分类在sort\nfunction verifyUrls(){\ntry{\n\t\tjava.ajaxAll(urllist).map((a,i)=>{\n\t\t\t\ttry{\n\t\t\t\t\t\ta = JSON.parse(a.body()).list[0].vod_name;\n\t\t\t\t\t}\n\t\t\t\tcatch(e){\n\t\t\t\t\t\ta = undefined\n\t\t\t\t\t}\n\t\t\t\tsort += a!=undefined?\"\\n\"+I[i]:\"\";\n\t\t\t});\n\t\tcache.put(api,sort)\n\t\treturn java.toast('Yse  verify Urls\\n　Sort  acquires success')\n\t}\ncatch(e){//ajaxAll失败会重新加载两次\n\t\tx++\n\t\tif(x<3){\n\t\t\t\tjava.toast('ajaxAll err\\n　Try again  verify Urls '+x)\n\t\t\t\treturn verifyUrls()\n\t\t\t}\n\t\telse{\n\t\t\t\treturn java.toast('No  verify Urls\\n　Sort  acquisition failure')\n\t\t\t}\n\t}\n}\n\t\tgetUrls()\n\t}\n\n\n//最后拼接，删掉\"surl()+\"可以关闭搜索\n\"最近更新::\"+url+'\\n'+\nsurl()+\nsort",
    "sourceComment": "//v2.0\n\n//登录接口填写ci1/ci2/ci3可调用历史接口\n\n//更改搜索关键词后需要刷新分类才能重新搜索\n\n\n//获取当前接口\ntry{\n\t\tapi = source.getLoginHeaderMap().api\n\t}\ncatch(e){\n\t\tapi = undefined\n\t}\n\n//默认接口，序号⓪ 【量子资源】\nif(api==undefined){\n\t\tapi = \"https://cj.lziapi.com\"\n\t}\n\napi += \"/api.php/provide/vod\"",
    "sourceGroup": "影视",
    "sourceIcon": "https://imgapi.cn/api.php?zd=zsy&fl=fengjing",
    "sourceName": "资源采集㊣",
    "sourceUrl": "资源采集㊣",
    "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:1;\n}\niframe{\n\tposition:sticky;top:0;\n\tbackground:#000;color:#fff;\n\theight:285px;\n\tz-index:1;\n}\ndetails{\n\twidth:90%;\n\tmargin:0 5%;\n\tpadding:10px 0;\n}\nsummary{\n\twidth:90%;\n\tmargin:0 5%;\n\toutline:none;\n\ttext-align:center;\n}\nsummary::-webkit-details-marker {\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{\n\tdisplay:none;\n\ttext-align:center;\n}\n.jishu>div.active{\n\tdisplay:inline;\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}\nbutton.active{\n\tcolor:#166188;\n\tposition:sticky;\n\tleft:0;right:0;\n}\n.jishu button.active{\n\ttop:300;bottom:0;\n}",
    "type": 0,
    "variableComment": "【确定后】要【刷新分类】才能重新搜索"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 97,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775592128177,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.olt@tr",
    "ruleContent": "class.article@all&&class.paginator@all##<div class=\"operation_div[\\s\\S]+?App[\\s\\S]+?</div>|你的回应[\\s\\S]+|<div id=\"link-report_group\">[\\s\\S]+?只看楼主|<div class=\"operation_div[\\s\\S]+?回应</a>##<hr>",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "text.后页>@href",
    "rulePubDate": "回复:{{@@class.r-count @text}}    时间:{{@@class.time@text}}",
    "ruleTitle": "class.title@a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "推书点评",
    "sourceIcon": "https://p1.ssl.qhimgs1.com/bdr/460__/t01a611e7a6c898dd67.webp",
    "sourceName": "豆瓣打分",
    "sourceUrl": "https://www.douban.com/group/658662/discussion?start=0",
    "style": "body{padding:10px;line-height:2em;letter-spacing: 2px;background:floralwhite;font-family:sans-serif-Helvetica;word-wrap: break-word}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 107,
    "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://niutv22.com/index.php/vod/type/id/6/page/{{page}}.html\n强奸::https://niutv22.com/index.php/vod/type/id/20/page/{{page}}.html\n无码::https://niutv22.com/index.php/vod/type/id/21/page/{{page}}.html\n人妻::https://niutv22.com/index.php/vod/type/id/24/page/{{page}}.html\n动漫::https://niutv22.com/index.php/vod/type/id/26/page/{{page}}.html\n萝莉::https://niutv22.com/index.php/vod/type/id/13/page/{{page}}.html\n大秀::https://niutv22.com/index.php/vod/type/id/10/page/{{page}}.html\n日韩::https://niutv22.com/index.php/vod/type/id/7/page/{{page}}.html\n欧美::https://niutv22.com/index.php/vod/type/id/8/page/{{page}}.html",
    "sourceComment": "niuniuyingshi.com",
    "sourceGroup": "影视",
    "sourceIcon": "https://z3.ax1x.com/2021/02/07/ytyEf1.png",
    "sourceName": "牛牛影视",
    "sourceUrl": "https://niutv22.com/index.php/vod/type/id/6/page/1.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 109,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775644643368,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.line_bottom@tr",
    "ruleContent": "class.entry@html",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "text",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::https://enpeta.com/e/action/ListInfo/index.php?page={{page}}&classid=1",
    "sourceGroup": "涩图",
    "sourceIcon": "https://z3.ax1x.com/2021/01/28/ySn1UA.png",
    "sourceName": "图Ssr~enpeta",
    "sourceUrl": "https://enpeta.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 111,
    "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}",
    "lastUpdateTime": 1773229521966,
    "loadWithBaseUrl": true,
    "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$.[*]",
    "ruleImage": "$.src",
    "ruleLink": "$.index\n@js:\nif(!result.match(/^http/) && !result.match(/\\d+、\\d+、/)){\nresult=\"https://www.coolapk.com/link?url=\"+encodeURIComponent(result)\n}else{result=result}",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "Ⓜ️网站资源::https://m.youtube.com/?noapp=1【https://i.postimg.cc/Gt9kN6VT/de6a398e2e6f25cd8fea8814651e2403.png】《YouTube》◎油管网页版◎ https://m.vk.com/avchina?from=groups%253Fact%253Dlist【https://i.postimg.cc/nzjWQ5SG/1657028424447.png】《VK.社区》◎VK社区网页版◎ http://m.aikantv.org/【https://i.postimg.cc/P5L9Z6Hw/141e2972743b1e14db0c2fe409fd3fda.png】《爱看卫视®》◎在线卫视直播◎ http://www.yckceo.com/yuedu/rssyuan/index.html【https://i.postimg.cc/L5FKJwJY/1657464485475.png】《仓库订阅®》◎源仓库订阅源◎ https://bytiemoe.ru/devushki-dnja/【https://i.postimg.cc/Y2y7w6rm/1657177866100.png】《Bytiemoe》◎社会瓜社区◎ https://ting.yeyulingfeng.com/【https://i.postimg.cc/Mp52b9rZ/1658047723416.png】《夜雨聆风®》◎在线音乐网站◎ https://www.tumblr.com/dashboard【https://i.postimg.cc/jdhKPNH8/1657091682128.png】《Tumblr.com》◎汤不热网页版◎ https://mail.google.com/mail/mu/mp/596/#tl/priority/%5Esmartlabel_personal【https://i.postimg.cc/1RDjtyBr/0edebe6d3b86032bbb69ef1f60022edc.png】《Gmail》◎谷歌邮箱◎ https://mobile.twitter.com/home【https://i.postimg.cc/6q7P40T7/1657171372253.png】《Twitter.com》◎推特网页版◎ https://lemuzika.pro/search/【https://i.postimg.cc/3R2d9dXg/1657263326058.png】《Lemuzika》◎俄文音乐在线◎ https://www.instagram.com/【https://i.postimg.cc/x8VDDrcg/1657154820429.png】《Instagram》◎Instagram网页版◎ https://www.reddit.com/【https://i.postimg.cc/90YS3Vq5/1657217561547.png】《Reddit.com》◎红迪网在线◎ https://m.lenta.ru/rubrics/culture/【https://i.postimg.cc/2jZWSPmM/5b55c5e231aca321b58fe16d59c3ee75.png】《Lenta.Ru》◎新闻俄罗斯频道◎ https://iteroni.com/feed/subscriptions【https://i.postimg.cc/9XBBBLTK/1657198533076.png】《Invidious.com》◎YouTube下载◎ https://yandex.com/【https://i.postimg.cc/8kxfghJX/1657179241087.png】《Yandex.com》◎俄文搜索◎\n🔺备选网站::https://pornontube.com/zh-cn/【https://i.postimg.cc/SRZHh6nJ/1657441598978.png】《Pornontube》◎在线电影◎ https://www.sunporno.com/【https://i.postimg.cc/W4T8QvbP/1657585183153.png】《Sunpornno》◎视频网站◎ https://latestones.com/models【https://i.postimg.cc/251kXxS9/1657442432339.png】《Latestones》◎全球套图精选◎ https://www.handjobjapan.com/en/?ref=a2f6354a【https://i.postimg.cc/65qgGVBY/1657443963833.png】《Handjobjaan》◎日系手活◎ https://www.metarthunter.com/most-viewed/【https://i.postimg.cc/rmsLp1bX/1657442859439.png】《Metarthunter》◎花花公子图片站◎ https://www.youjizz.com/categories/chinese-1.html【https://i.postimg.cc/7PBCP4Bj/1657443621814.png】《Youjizz.com》◎综合网站◎ https://spankbang.com/【https://i.postimg.cc/mrHj6MxN/1657449171627.png】《Spankbang》◎视频网站◎ https://zhiyin6.xyz/【https://i.postimg.cc/wMytDpgh/1657021317616.png】《知阴网站》◎视频网站◎ https://www.127mall7.com/【https://i.postimg.cc/vHxx4vvL/4a5598a52051c218df11b814646b1bae.png】《X站中文》◎X站中文频道◎ https://es.iporntv.net/search/%E4%B8%AD+%E6%96%87+%E9%9F%B3%E5%A3%B0+asmr【https://i.postimg.cc/0Nvm3sM8/1657504985437.png】《中文音声》◎在线音频网站🎧◎ https://freehdinterracialporn.in/zh/【https://i.postimg.cc/hjjpKYNg/1657448947985.png】《异族色情》◎在线视频网站◎ https://familyporn.tv/【https://i.postimg.cc/YSWSxRPt/1657445429571.png】《家庭porn》◎在线视频网站◎ https://pornsites.xxx/zh/best-porn-tubes【https://i.postimg.cc/htbRGgLV/1657444600756.png】《顶级链接》◎导航链接网站◎ https://www.qpornosite.com/【https://i.postimg.cc/PJk9GTN4/1657937081918.png】《qpornosite》◎视频网站◎ https://pmatehunter.com/【https://i.postimg.cc/sx2PrBwC/1657560491814.png】《Pmate~H》◎国际图片◎\n📖 书单资源®::https://vt.sm.cn/api/novelStarReco/index【https://i.postimg.cc/3Ng0mjYb/1642215764921.png】《星云推书》◎书荒搜书神器◎ https://m.qidian.com/rank/【https://i.postimg.cc/Bb6H9P0h/1643185593580.png】《起点榜单》◎起点中文网榜单◎ https://quark.sm.cn/api/rest?method=Novelnew.home&format=html&schema=v2&gender=male&cate=%E5%85%A8%E9%83%A8&rank=rank_hot&pv=2420440【https://i.postimg.cc/XqXmn23H/1656398173543.png】《夸克榜单》◎夸克浏览器小说榜单◎ https://m.baidu.com/sf?openapi=1&dspName=iphone&dsp=iphone&from_sf=1&pd=bookstore&resource_id=5077&type=2&card_id=5143&word=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&title=%E6%9B%B4%E5%A4%9A%E6%8E%A8%E8%8D%90&tag1=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&lid=11549307334103749569&referlid=11549307334103749569&ms=1&frsrcid=5143&frorder=4【https://i.postimg.cc/YS5CqKk1/1643192297572.png】《百度榜单》◎百度浏览器小说榜单◎ https://www.yousuu.com【https://i.postimg.cc/ZqV9LKk4/d6460ce69df5934d47ec2e184264d447.png】《优书榜单》◎优书网书单◎ https://data.newrank.cn/m/s.html?s=Py8yOTE5KDE4【https://i.postimg.cc/nLWpBQzP/1656640745508.png】《小说拾遗》◎小说拾遗公众号-号内搜索◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319671603470581762&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/Wp7cCtpP/9afbe88df402cbaacd6a1f34bb95451a.png】《精选书单》◎主推优质完结和连载100万字以上小说◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319666229510193155&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/dtW1vnvq/1656158438840.png】《潜力新书》◎主推大神新书和20～100万字的优质新书◎ http://mp.weixin.qq.com/mp/homepage?__biz=MzI2MDg2NjAwMg==&hid=11&sn=c55d27329c109430838bc5b5f5b615b7&scene=18#wechat_redirect【https://i.postimg.cc/Nf2g2B79/d7844cc4a188295fb56ff7ee13e7c518.png】《高分必看》◎高分完本合集◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319668267623170050&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/YCYjTCQ1/1643194013372.png】《近期完结》◎主推近一段时间内优质的完结小说◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319675692849872897&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/MHJwdrSX/f3406e1fcc20a92dcaf944c71b0d67ab.png】《后宫精选》◎后宫精选合集◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319454340050157569&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/tTF4MXws/1643177963800.png】《网文书单》◎每期三本-新书速递、养肥佳作、完本好书◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319471313224040448&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/8c9D4yHY/1657563183687.png】《澎湃精选》◎超过50万字，连载或完本的优秀作品◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1526356920989712387&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/FRH068g6/1656311375852.png】《年度盘点》◎年度盘点各分类中诞生的新书、完本书◎ https://mp.weixin.qq.com/mp/homepage?__biz=MzI5NTA4NjgwNw==&hid=1&sn=0fcecdc85b8c23e596880f8c895b901d&scene=18&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=59&session_us=gh_2aa0f3c6dd8f&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://i.postimg.cc/TP7Md7D4/1657562436540.png】《赤戟资源》◎最新热门分类◎\n🎥-影视资源®::https://www.cechicc.com/【https://i.postimg.cc/Y23r2d8f/36cf2ec5a6187c14e09c3055662d45ad.png】《策驰电影》◎在线影院◎ https://ddrk.me/【https://i.postimg.cc/YCGJ5q3P/1636849542518.png】《低端影院》◎在线影院◎ https://www.bpzhe.com/【https://i.postimg.cc/FHv36SV3/1657852264274.png】《B~白嫖者》◎在线影院◎ https://www.o8tv.com/【https://i.postimg.cc/C1j992df/1657560014059.png】《©555电影》◎在线影院◎ http://m.nvzox1.com【https://i.postimg.cc/yN1M8nXD/1657709190817.png】《观影时光》◎在线影院◎ https://app.movie/【https://i.postimg.cc/kMKqrt93/1657565246707.png】《APP-影院》◎在线影院◎ https://www.xhsyy.com/【https://i.postimg.cc/1tKDkRH1/790d23cd18953d9c2b98642a6443293d.png】《九杀影院》◎在线影院◎ https://tvgou.org/frim/26-104.html【https://i.postimg.cc/BZYSh9yD/687cf285f127379bf829737153a87066.png】《手机影院》◎在线影院◎ https://www.pianba.tv/【https://i.postimg.cc/5NKDcb7z/a69d58f3d1cf39307e60fe2ff8d32c7c.png】《片吧影院》◎在线影院◎ https://www.novipnoad.com/【https://i.postimg.cc/sxhWm274/a1c375a47f312841f8fa6eec14ed61cc.png】《Novipnoad》◎在线影院◎ https://www.pkmp4.com/【https://i.postimg.cc/R0djvfpk/1657800089071.png】《片库影院》◎在线影院◎ https://www.libvio.me/【https://i.postimg.cc/QtcW24Ty/1657704764879.png】《Libvio.me》◎在线影院◎ https://fullxcinema.com/【https://i.postimg.cc/QtxbzbJ2/1657784197218.png】《全球影院》◎在线电影◎",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://i.postimg.cc/qBnJXVFP/1655307364216.png",
    "sourceName": "☯集装箱®",
    "sourceUrl": "Online~1.45",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 116,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.cards",
    "ruleContent": "$.data.longTextContent\n@js:id=baseUrl.match(/(\\d+)/)[1];\nvar b=\"https://m.weibo.cn/detail/\"+id;\nvar html=String(java.ajax(b));\n\nif(html.indexOf('\"media_info\"')>-1){\nurls=JSON.parse(html.match(/\"urls\": ({[\\s\\S]+?})/)[1]);\nmedia_info=JSON.parse(html.match(/\"media_info\": ({[\\s\\S]+?})/)[1]);\n\nif(urls.mp4_720p_mp4){a=urls.mp4_720p_mp4}else if(urls.mp4_hd_mp4){a=urls.mp4_hd_mp4}else if(media_info.stream_url_hd){a=media_info.stream_url_hd}else{a=media_info.stream_url}\n\nresult=result.replace(/data-url=\"([^\"]+)\"\\s*href=\"([^\"]+)\"/,\"data-url=\\\"$1\\\" href=\\\"\"+a+\"\\\"\");\ndimg=html.match(/\"page_pic\":[\\s\\S]+?\"url\":\\s*\"([^\"]+)\"/)[1];\n\nresult=result+\"<video src=\\\"\"+a+\"\\\" width=100% height=auto controls=\\\"controls\\\"  poster=\\\"\"+dimg+\"\\\"></video>\";\n}else if(html.match(/\"size\":\\s*\"large\",\\s*\"url\":\\s*\"[^\"]+\"/g)){\na=html.match(/\"size\":\\s*\"[^\"]+\",\\s*\"url\":\\s*\"[^\"]+\"/g);\n    var cimg=[];\n    for (i=0;i<a.length;i++){\n       cimg.push(a[i].match(/url\":\\s*\"([^\"]+)\"/)[1]);\n    };\n    var bimg=\"\";\n    for (i=0;i<cimg.length;i++){\n        bimg=bimg+\"<p></p><img src=\"+cimg[i]+\"><img>\"\n    }\nresult=result+bimg; \n}else{result=result}\n\n\nif(JSON.parse(java.ajax(\"https://m.weibo.cn/comments/hotflow?id=\"+id+\"&mid=\"+id+\"&max_id_type=0\")).ok==1){\nlist=JSON.parse(java.ajax(\"https://m.weibo.cn/comments/hotflow?id=\"+id+\"&mid=\"+id+\"&max_id_type=0\")).data.data;\nresult=\"<a href=\"+b+\">原文地址</a>\"+\"<p></p>\"+result;\n    for(i=0;i<list.length;i++){\n    details=\"\";\n    if(list[i].pic!=undefined){\n    pic=list[i].pic.large.url;\n    details=\"<details><summary>查看图片</summary><p><img src=\\\"\"+pic+\"\\\" alt=\\\"查看图片\\\"></p></details>\"\n}\nresult=result+\"<p></p><br>\"+\"<img src=\"+list[i].user.profile_image_url+\"width=20px height=20px></img>\"+\"<strong>\"+list[i].user.screen_name+\"</strong>\"+\"<br>\"+list[i].text+\"\"+details+\"<p style=\\\"color:\\#\\#FFC4C4C4\\;font-size:10px\\\">\"+list[i].created_at.replace(/\\+0800/,\"·\")+\"</p>\"+\"<p></p>\"\n      }}else{result=\"<a href=\"+b+\">原文地址</a>\"+\"<p></p>\"+result};\n\nresult=\"<html><head><meta charset=\\\"utf-8\\\"><title>微博</title><style>img\\{max-width: 100%\\;max-height: 100%\\;\\}summary\\{color:\\#\\#FF2D7A7E\\;\\}</style></head>\"+ \"<body>\"+result+\"</body></html>\"",
    "ruleImage": "$.mblog.page_info.page_pic.url||$.mblog.thumbnail_pic||$.mblog.user.profile_image_url",
    "ruleLink": "$.mblog.id@js:\"https://m.weibo.cn/statuses/extend?id=\"+result",
    "ruleNextPage": "page",
    "rulePubDate": "$.mblog.created_at",
    "ruleTitle": "$.mblog.text##<.*?>|<img alt=|src=[\\s\\S]+?>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n共青团中央::https://m.weibo.cn/api/container/getIndex?containerid=2310023937348351_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=2310023937348351_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n\n沈逸::https://m.weibo.cn/api/container/getIndex?containerid=2310021157864602_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=2310021157864602_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n\n\n紫光阁::https://m.weibo.cn/api/container/getIndex?containerid=2310025467852665_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=2310025467852665_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n\n王骁::https://m.weibo.cn/api/container/getIndex?containerid=2310025649624264_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=2310025649624264_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n\nCCTV今日说法::https://m.weibo.cn/api/container/getIndex?containerid=2310021701830693_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=2310021701830693_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n\n\n美国驻华大使馆::https://m.weibo.cn/api/container/getIndex?containerid=2310021743951792_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=2310021743951792_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n\n亚洲动保之声::https://m.weibo.cn/api/container/getIndex?containerid=2310025514142992_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=2310025514142992_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n",
    "sourceGroup": "新闻",
    "sourceIcon": "https://tva2.sinaimg.cn/crop.564.1.371.371.180/45039c9ajw1e6iw505q0jj20qy0ae0v1.jpg",
    "sourceName": "共青团，沈逸等人微博",
    "sourceUrl": "//用户uid获取？？\n1.微博端：点进用户主页，右上三点，复制链接，链接里有一串数字，填到用户uid处;\n2.网页：点击用户主页，复制链接，uid=一串数字，复制数字，填到写着用户uid的地方（将用户uid几个字删了）\n\n按格式在分类url可添加多个博主  用换行或者&&连接两个博主\n\n自己动手丰衣足食。",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 119,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765537565012,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.data.*",
    "ruleImage": "$.thumbs",
    "ruleLink": "$.surl",
    "rulePubDate": "{$.media} {$.reason_text}",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "https://mjs.sinaimg.cn/wap/online/public/images/addToHome/sina_114x114_v1.png",
    "sourceName": "新闻.新浪新闻",
    "sourceUrl": "https://cre.dp.sina.cn/api/v3/get?cateid=1o&cre=tianyi&zhiding=1&mod=wnews&merge=3&statics=1&length=20&filters=url%2Cwapurl%2Cthumbs%2Cthumbscount%2Ctitle%2Cintro%2Cstyle%2Cmedia%2Ctype%2Cvideos%2Cpicscount%2Cdataid%2Cshowtags%2Ccommentcount&action=0&up=0&down=0",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 121,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.entry-list",
    "ruleContent": "tag.article@html",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.next@href",
    "rulePubDate": "tag.time@text",
    "ruleTitle": "tag.h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::http://www.199it.com\n金融科技::http://www.199it.com/archives/category/fintech\n新兴产业::http://www.199it.com/archives/category/emerging\n共享经济::http://www.199it.com/archives/category/sharingeconomy\n移动::http://www.199it.com/archives/category/mobile-internet\n电商::http://www.199it.com/archives/category/electronic-commerce\n社交::http://www.199it.com/archives/category/social-network\n营销::http://www.199it.com/archives/category/advertising\n投资::http://www.199it.com/archives/category/economic-data\n服务::http://www.199it.com/archives/category/service\n行业::http://www.199it.com/archives/category/dataindustry\n用研::http://www.199it.com/archives/category/internet-users",
    "sourceGroup": "新闻",
    "sourceIcon": "http://www.199it.com/resource/199it_adblock_sm.jpg",
    "sourceName": "199IT",
    "sourceUrl": "http://www.199it.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 125,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765538578807,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "http://mmbiz.qpic.cn/mmbiz_png/JiaKAiafaUovVnI8GusB9Ml5eF2vywHT8oTgGNVOM5yTdruufEpR9PoGaxicyMPJu2jdYSiaaHzVetOoJRWmGSOriaA/0?wx_fmt=png",
    "sourceName": "IT之家",
    "sourceUrl": "http://www.ithome.com/rss/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 127,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.article well clearfix@tag.div",
    "ruleContent": "class.centent-article@html",
    "ruleDescription": "",
    "ruleImage": "class.attachment-full size-full wp-post-image@src",
    "ruleLink": "class.title-article@h1@a@href",
    "ruleNextPage": "class.pagination pagination-zan pull-right@\ntag.li.10@a@href",
    "rulePubDate": "class.tag-article@span@text",
    "ruleTitle": "tag.a.-1@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "作品项目::https://vcb-s.com/archives/category/works\n科普系列::https://vcb-s.com/archives/category/kb\n计划与日志::https://vcb-s.com/archives/category/planlog",
    "sourceGroup": "新闻",
    "sourceIcon": "https://i.postimg.cc/j2D8ChDH/1679066629719.png",
    "sourceName": "VCB-Studio",
    "sourceUrl": "https://vcb-s.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 129,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".wc3 li",
    "ruleDescription": "",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@@span.1@text}} 👁️{{@@span.0@text}}",
    "ruleTitle": "a@text##\\《|\\》|txt.*",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "东方玄幻::https://m.zei8.vip/xuanhuan\n传统武侠::https://m.zei8.vip/chuantongwuxia\n恐怖惊悚::https://m.zei8.vip/kongbujing\n现代都市::https://m.zei8.vip/xiandaidushi\n人物传记::https://m.zei8.vip/renwuchuanji\n网游动漫::https://m.zei8.vip/wangyoudongman\n军事历史::https://m.zei8.vip/junshilishi\n热点资源::https://m.zei8.vip/redianziyuan\n西方奇幻::https://m.zei8.vip/xifangqihuan\n仙侠修真::https://m.zei8.vip/xianxiaxiuzhen\n侦探推理::https://m.zei8.vip/zhentantuili\n经典科幻::https://m.zei8.vip/jingdiankehuan\n名著杂志::https://m.zei8.vip/mingzhuzazhi\n历史穿越::https://m.zei8.vip/lishichuanyue\n传统言情::https://m.zei8.vip/chuantongyanqing\n都市社会::https://m.zei8.vip/dushishehui\n幻想现言::https://m.zei8.vip/huanxiangxianyan\n耽美百合::https://m.zei8.vip/danvipibaihe",
    "sourceGroup": "书源",
    "sourceIcon": "https://tse1-mm.cn.bing.net/th/id/OIP-C.-aFdxcsvUb_2C_YJK7uYHAAAAA?w=150&h=150&c=7&o=5&dpr=3&pid=1.7",
    "sourceName": "贼吧(小说)",
    "sourceUrl": "https://m.zei8.vip",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 129,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1774100247514,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://img2.baidu.com/it/u=3447143413,168358415&fm=253&fmt=auto&app=138&f=JPEG?w=347&h=500",
    "sourceName": "央视直播",
    "sourceUrl": "https://tv.cctv.com/live/m/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 130,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".commentlist li",
    "ruleContent": "",
    "ruleDescription": "p@html",
    "ruleImage": "img@src",
    "ruleLink": "p@html",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@@.jandan-vote@text}} {{@@.time@text}}##\\@|T.*|..:.*",
    "ruleTitle": "b@text&&p@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "问答::http://i.jandan.net/qa\n树洞::http://i.jandan.net/treehole\n动物园::http://i.jandan.net/zoo\n女装::http://i.jandan.net/girl\n随手拍::http://i.jandan.net/ooxx\n无聊图::http://i.jandan.net/pic\n热门4小时::http://i.jandan.net/top-4h\n热门吐槽::http://i.jandan.net/top-tucao\n热门无聊图::http://i.jandan.net/top\n热门随手拍::http://i.jandan.net/top-ooxx\n热门优评::http://i.jandan.net/top-comments\n热门三日::http://i.jandan.net/top-3days\n热门七日::http://i.jandan.net/top-7days",
    "sourceGroup": "新闻",
    "sourceIcon": "http://cdn.jandan.net/static/img/icon.png",
    "sourceName": "煎蛋",
    "sourceUrl": "http://i.jandan.net",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 131,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773227121499,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".post",
    "ruleContent": ".entry-header@html&&.entry-content@html",
    "ruleImage": "img@src",
    "ruleLink": "a.1@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": ".entry-meta@text",
    "ruleTitle": "a.1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::https://bohaishibei.com/\n每日博海拾贝::https://bohaishibei.com/post/category/main/",
    "sourceGroup": "新闻",
    "sourceIcon": "https://bohaishibei.com/favicon-32x32.png",
    "sourceName": "博海拾贝",
    "sourceUrl": "https://bohaishibei.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 132,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "",
    "ruleDescription": "",
    "ruleImage": "",
    "ruleLink": "",
    "rulePubDate": "",
    "ruleTitle": "",
    "showWebLog": false,
    "singleUrl": true,
    "sortUrl": "",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://p0.ssl.qhimgs1.com/t013d5fde8baf3bf886.webp",
    "sourceName": "中华珍宝",
    "sourceUrl": "http://g2.ltfc.net/category",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 135,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765538610433,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://www.lifves.com/favicon.ico",
    "sourceName": "期刊杂志",
    "sourceUrl": "http://qikan.lifves.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 136,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "动漫漫画",
    "sourceIcon": "https://dm530.org/static/favicon.ico",
    "sourceName": "风车动漫",
    "sourceUrl": "https://dm530.org",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 137,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208139773,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://cdn.aixifan.com/dotnet/20130418/umeditor/dialogs/emotion/images/ac/47.gif",
    "sourceName": "AC正义",
    "sourceUrl": "https://m.acfun.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 138,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765538624120,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.cards",
    "ruleContent": "$.data.longTextContent\n@js:id=baseUrl.match(/(\\d+)/)[1];\nvar b=\"https://m.weibo.cn/detail/\"+id;\nvar html=String(java.ajax(b));\nif(html.match(/\"size\":\\s*\"large\",\\s*\"url\":\\s*\"[^\"]+\"/g)){\na=html.match(/\"size\":\\s*\"[^\"]+\",\\s*\"url\":\\s*\"[^\"]+\"/g);\n    var cimg=[];\n    for (i=0;i<a.length;i++){\n       cimg.push(a[i].match(/url\":\\s*\"([^\"]+)\"/)[1]);\n    };\n    var bimg=\"\";\n    for (i=0;i<cimg.length;i++){\n        bimg=bimg+\"<p></p><img src=\"+cimg[i]+\"><img>\"\n    }\nresult=result+bimg; \n}else{\n    if(html.match(/\"stream_url\":\\s*\"[^\"]+\"/)){\n if(html.match(/\"mp4_720p_mp4\":\\s*\"[^\"]+\"/)){a=html.match(/\"mp4_720p_mp4\":\\s*\"([^\"]+)\"/)[1];}else{\n    if(html.match(/\"mp4_hd_mp4\":\\s*\"[^\"]+\"/)){a=html.match(/\"mp4_hd_mp4\":\\s*\"([^\"]+)\"/)[1];}else{\na=html.match(/\"mp4_ld_mp4\":\\s*\"([^\"]+)\"/)[1];\n}\n}\n\nresult=result.replace(/data-url=\"([^\"]+)\"\\s*href=\"([^\"]+)\"/,\"data-url=\\\"$1\\\" href=\\\"\"+a+\"\\\"\");\ndimg=html.match(/\"page_pic\":[\\s\\S]+?\"url\":\\s*\"([^\"]+)\"./)[1];\nresult=result+\"<video src=\\\"\"+a+\"\\\" width=\\\"350px\\\" height=\\\"250px\\\" controls=\\\"controls\\\"  poster=\\\"\"+dimg+\"\\\"></video>\";\n}    else{result=result\n}};\nif(JSON.parse(java.ajax(\"https://m.weibo.cn/comments/hotflow?id=\"+id+\"&mid=\"+id+\"&max_id_type=0\")).ok==1){\nlist=JSON.parse(java.ajax(\"https://m.weibo.cn/comments/hotflow?id=\"+id+\"&mid=\"+id+\"&max_id_type=0\")).data.data;\nresult=\"<a href=\"+b+\">原文地址</a>\"+\"<p></p>\"+result;\n    for(i=0;i<list.length;i++){\n    details=\"\";\n    if(list[i].pic!=undefined){\n    pic=list[i].pic.large.url;\n    details=\"<details><summary>查看图片</summary><p><img src=\\\"\"+pic+\"\\\" alt=\\\"查看图片\\\"></p></details>\"\n}\nresult=result+\"<p></p><br>\"+\"<img src=\"+list[i].user.profile_image_url+\"width=20px height=20px></img>\"+\"<strong>\"+list[i].user.screen_name+\"</strong>\"+\"<br>\"+list[i].text+\"\"+details+\"<p style=\\\"color:\\#\\#FFC4C4C4\\;font-size:10px\\\">\"+list[i].created_at.replace(/\\+0800/,\"·\")+\"</p>\"+\"<p></p>\"\n      }}else{result=\"<a href=\"+b+\">原文地址</a>\"+\"<p></p>\"+result};\n\nresult=\"<html><head><meta charset=\\\"utf-8\\\"><title>微博</title><style>img\\{max-width: 100%\\;max-height: 100%\\;\\}summary\\{color:\\#\\#FF2D7A7E\\;\\}</style></head>\"+ \"<body>\"+result+\"</body></html>\"",
    "ruleImage": "$.mblog.page_info.page_pic.url||$.mblog.thumbnail_pic||$.mblog.user.profile_image_url",
    "ruleLink": "$.mblog.id@js:\"https://m.weibo.cn/statuses/extend?id=\"+result",
    "ruleNextPage": "page",
    "rulePubDate": "$.mblog.created_at",
    "ruleTitle": "$.mblog.text##<.*?>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "亚洲动保之声::https://m.weibo.cn/api/container/getIndex?containerid=2310025514142992_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=2310025514142992_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}",
    "sourceGroup": "新闻",
    "sourceIcon": "http://pic.wenwen.soso.com/p/20100328/20100328134840-889814574.jpg",
    "sourceName": "亚洲动保之声",
    "sourceUrl": "https://m.weibo.cn亚洲动保之声",
    "style": "img{max-width: 100%;max-height: 100%}summary{color:#FF2D7A7E}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 140,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.cards",
    "ruleContent": "$.data.longTextContent\n@js:id=baseUrl.match(/(\\d+)/)[1];\nvar b=\"https://m.weibo.cn/detail/\"+id;\nvar html=String(java.ajax(b));\nif(html.match(/\"size\":\\s*\"large\",\\s*\"url\":\\s*\"[^\"]+\"/g)){\na=html.match(/\"size\":\\s*\"[^\"]+\",\\s*\"url\":\\s*\"[^\"]+\"/g);\n    var cimg=[];\n    for (i=0;i<a.length;i++){\n       cimg.push(a[i].match(/url\":\\s*\"([^\"]+)\"/)[1]);\n    };\n    var bimg=\"\";\n    for (i=0;i<cimg.length;i++){\n        bimg=bimg+\"<p></p><img src=\"+cimg[i]+\"><img>\"\n    }\nresult=result+bimg; \n}else{\n    if(html.match(/\"stream_url\":\\s*\"[^\"]+\"/)){\n if(html.match(/\"mp4_720p_mp4\":\\s*\"[^\"]+\"/)){a=html.match(/\"mp4_720p_mp4\":\\s*\"([^\"]+)\"/)[1];}else{\n    if(html.match(/\"mp4_hd_mp4\":\\s*\"[^\"]+\"/)){a=html.match(/\"mp4_hd_mp4\":\\s*\"([^\"]+)\"/)[1];}else{\na=html.match(/\"mp4_ld_mp4\":\\s*\"([^\"]+)\"/)[1];\n}\n}\n\nresult=result.replace(/data-url=\"([^\"]+)\"\\s*href=\"([^\"]+)\"/,\"data-url=\\\"$1\\\" href=\\\"\"+a+\"\\\"\");\ndimg=html.match(/\"page_pic\":[\\s\\S]+?\"url\":\\s*\"([^\"]+)\"./)[1];\nresult=result+\"<video src=\\\"\"+a+\"\\\" width=\\\"350px\\\" height=\\\"250px\\\" controls=\\\"controls\\\"  poster=\\\"\"+dimg+\"\\\"></video>\";\n}    else{result=result\n}};\nif(JSON.parse(java.ajax(\"https://m.weibo.cn/comments/hotflow?id=\"+id+\"&mid=\"+id+\"&max_id_type=0\")).ok==1){\nlist=JSON.parse(java.ajax(\"https://m.weibo.cn/comments/hotflow?id=\"+id+\"&mid=\"+id+\"&max_id_type=0\")).data.data;\nresult=\"<a href=\"+b+\">原文地址</a>\"+\"<p></p>\"+result;\n    for(i=0;i<list.length;i++){\n    details=\"\";\n    if(list[i].pic!=undefined){\n    pic=list[i].pic.large.url;\n    details=\"<details><summary>查看图片</summary><p><img src=\\\"\"+pic+\"\\\" alt=\\\"查看图片\\\"></p></details>\"\n}\nresult=result+\"<p></p><br>\"+\"<img src=\"+list[i].user.profile_image_url+\"width=20px height=20px></img>\"+\"<strong>\"+list[i].user.screen_name+\"</strong>\"+\"<br>\"+list[i].text+\"\"+details+\"<p style=\\\"color:\\#\\#FFC4C4C4\\;font-size:10px\\\">\"+list[i].created_at.replace(/\\+0800/,\"·\")+\"</p>\"+\"<p></p>\"\n      }}else{result=\"<a href=\"+b+\">原文地址</a>\"+\"<p></p>\"+result};\n\nresult=\"<html><head><meta charset=\\\"utf-8\\\"><title>微博</title><style>img\\{max-width: 100%\\;max-height: 100%\\;\\}summary\\{color:\\#\\#FF2D7A7E\\;\\}</style></head>\"+ \"<body>\"+result+\"</body></html>\"",
    "ruleImage": "$.mblog.page_info.page_pic.url||$.mblog.thumbnail_pic||$.mblog.user.profile_image_url",
    "ruleLink": "$.mblog.id@js:\"https://m.weibo.cn/statuses/extend?id=\"+result",
    "ruleNextPage": "page",
    "rulePubDate": "$.mblog.created_at",
    "ruleTitle": "$.mblog.text##<.*?>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "政委灿荣::https://m.weibo.cn/api/container/getIndex?containerid=2310027264589101_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=2310027264589101_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}",
    "sourceGroup": "新闻",
    "sourceIcon": "https://tvax2.sinaimg.cn/crop.0.0.996.996.180/007VDttXly8galmhui009j30ro0rodhm.jpg?KID=imgbed,tva&Expires=1610253930&ssig=t3P6TQb7CL",
    "sourceName": "政委灿荣",
    "sourceUrl": "https://m.weibo.cn政委灿荣",
    "style": "img{max-width: 100%;max-height: 100%}summary{color:#FF2D7A7E}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 141,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.cards",
    "ruleContent": "$.data.longTextContent\n@js:id=baseUrl.match(/(\\d+)/)[1];\nvar b=\"https://m.weibo.cn/detail/\"+id;\nvar html=String(java.ajax(b));\nif(html.match(/\"size\":\\s*\"large\",\\s*\"url\":\\s*\"[^\"]+\"/g)){\na=html.match(/\"size\":\\s*\"[^\"]+\",\\s*\"url\":\\s*\"[^\"]+\"/g);\n    var cimg=[];\n    for (i=0;i<a.length;i++){\n       cimg.push(a[i].match(/url\":\\s*\"([^\"]+)\"/)[1]);\n    };\n    var bimg=\"\";\n    for (i=0;i<cimg.length;i++){\n        bimg=bimg+\"<p></p><img src=\"+cimg[i]+\"><img>\"\n    }\nresult=result+bimg; \n}else{\n    if(html.match(/\"stream_url\":\\s*\"[^\"]+\"/)){\n if(html.match(/\"mp4_720p_mp4\":\\s*\"[^\"]+\"/)){a=html.match(/\"mp4_720p_mp4\":\\s*\"([^\"]+)\"/)[1];}else{\n    if(html.match(/\"mp4_hd_mp4\":\\s*\"[^\"]+\"/)){a=html.match(/\"mp4_hd_mp4\":\\s*\"([^\"]+)\"/)[1];}else{\na=html.match(/\"mp4_ld_mp4\":\\s*\"([^\"]+)\"/)[1];\n}\n}\n\nresult=result.replace(/data-url=\"([^\"]+)\"\\s*href=\"([^\"]+)\"/,\"data-url=\\\"$1\\\" href=\\\"\"+a+\"\\\"\");\ndimg=html.match(/\"page_pic\":[\\s\\S]+?\"url\":\\s*\"([^\"]+)\"./)[1];\nresult=result+\"<video src=\\\"\"+a+\"\\\" width=\\\"350px\\\" height=\\\"250px\\\" controls=\\\"controls\\\"  poster=\\\"\"+dimg+\"\\\"></video>\";\n}    else{result=result\n}};\nif(JSON.parse(java.ajax(\"https://m.weibo.cn/comments/hotflow?id=\"+id+\"&mid=\"+id+\"&max_id_type=0\")).ok==1){\nlist=JSON.parse(java.ajax(\"https://m.weibo.cn/comments/hotflow?id=\"+id+\"&mid=\"+id+\"&max_id_type=0\")).data.data;\nresult=\"<a href=\"+b+\">原文地址</a>\"+\"<p></p>\"+result;\n    for(i=0;i<list.length;i++){\n    details=\"\";\n    if(list[i].pic!=undefined){\n    pic=list[i].pic.large.url;\n    details=\"<details><summary>查看图片</summary><p><img src=\\\"\"+pic+\"\\\" alt=\\\"查看图片\\\"></p></details>\"\n}\nresult=result+\"<p></p><br>\"+\"<img src=\"+list[i].user.profile_image_url+\"width=20px height=20px></img>\"+\"<strong>\"+list[i].user.screen_name+\"</strong>\"+\"<br>\"+list[i].text+\"\"+details+\"<p style=\\\"color:\\#\\#FFC4C4C4\\;font-size:10px\\\">\"+list[i].created_at.replace(/\\+0800/,\"·\")+\"</p>\"+\"<p></p>\"\n      }}else{result=\"<a href=\"+b+\">原文地址</a>\"+\"<p></p>\"+result};\n\nresult=\"<html><head><meta charset=\\\"utf-8\\\"><title>微博</title><style>img\\{max-width: 100%\\;max-height: 100%\\;\\}summary\\{color:\\#\\#FF2D7A7E\\;\\}</style></head>\"+ \"<body>\"+result+\"</body></html>\"",
    "ruleImage": "$.mblog.page_info.page_pic.url||$.mblog.thumbnail_pic||$.mblog.user.profile_image_url",
    "ruleLink": "$.mblog.id@js:\"https://m.weibo.cn/statuses/extend?id=\"+result",
    "ruleNextPage": "page",
    "rulePubDate": "$.mblog.created_at",
    "ruleTitle": "$.mblog.text##<.*?>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "王骁Albert::https://m.weibo.cn/api/container/getIndex?containerid=2310025649624264_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=2310025649624264_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}",
    "sourceGroup": "新闻",
    "sourceIcon": "https://tvax2.sinaimg.cn/crop.0.0.1080.1080.180/006alfm0ly8gar88y0nj0j30u00u0wh8.jpg?KID=imgbed,tva&Expires=1610259244&ssig=6f2ikjmEv9",
    "sourceName": "王骁Albert",
    "sourceUrl": "https://m.weibo.cn王骁Albert",
    "style": "img{max-width: 100%;max-height: 100%}summary{color:#FF2D7A7E}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 149,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775592207445,
    "loadWithBaseUrl": true,
    "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$.[*]",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📋 书单::https://vt.sm.cn/api/novelStarReco/index【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/xyts.png?ref=master】《星云推书》◎书荒搜书神器◎★https://shenmezhidedu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/smzdd.png?ref=master】《什么值得读》◎互联网人的书单库◎★https://www.yousuu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/ysw.png?ref=master】《优书网》◎优书网书单◎★https://www.tuishujun.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/tsj.png?ref=master】《推书君》◎书荒求书就找推书君◎★https://www.qidiantu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/qdw.png?ref=master】《起点图》◎起点数据、网络小说数据可视化分析专家◎★https://m.ttwwq.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/cstw.png?ref=master】《成神推文》◎网络小说宣传推广网◎★https://quark.sm.cn/api/rest?method=Novelnew.home&format=html&schema=v2&gender=male&cate=%E5%85%A8%E9%83%A8&rank=rank_hot&pv=2420440【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/kkbd.png?ref=master】《夸克榜单》◎夸克浏览器小说榜单◎★https://m.baidu.com/sf?openapi=1&dspName=iphone&dsp=iphone&from_sf=1&pd=bookstore&resource_id=5077&type=2&card_id=5143&word=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&title=%E6%9B%B4%E5%A4%9A%E6%8E%A8%E8%8D%90&tag1=%E5%85%A8%E9%83%A8%E5%88%86%E7%B1%BB&lid=11549307334103749569&referlid=11549307334103749569&ms=1&frsrcid=5143&frorder=4【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/bdbd.png?ref=master】《百度榜单》◎百度浏览器小说榜单◎★https://m.qidian.com/rank/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/qdw.png?ref=master】《起点榜单》◎起点中文网榜单◎★https://ubook.reader.qq.com/book-rank/male-monthly【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/qqbd.png?ref=master】《QQ榜单》◎QQ阅读榜单◎★http://saowen.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/swxy.png?ref=master】《扫文小院》◎🔎登录｜耽美小说扫文网站◎★https://www.basequan.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/bsq.png?ref=master】《芭莳圈》◎好看的言情小说推荐◎\n\n\n⭐ 十一::https://data.newrank.cn/m/s.html?s=Py8yOTE5KDE4【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/xssy.png?ref=master】《🔎小说拾遗》◎小说拾遗公众号-号内搜索◎★https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319671603470581762&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/shudan.png?ref=master】《精选书单》◎主推优质完结和连载100万字以上小说◎★https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319666229510193155&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/xinshu.png?ref=master】《潜力新书》◎主推大神新书和20～100万字的优质新书◎★http://mp.weixin.qq.com/mp/homepage?__biz=MzI2MDg2NjAwMg==&hid=11&sn=c55d27329c109430838bc5b5f5b615b7&scene=18#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/gaofen.png?ref=master】《高分必看》◎高分完本合集◎★https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319668267623170050&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/wanjie.png?ref=master】《近期完结》◎主推近一段时间内优质的完结小说◎★https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319673664333463554&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/nvpin.png?ref=master】《女频书单》◎主推女频优质小说◎★https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319675692849872897&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/hougong.png?ref=master】《后宫精选》◎后宫精选合集◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI2MDg2NjAwMg==&action=getalbum&album_id=1651826809002328065#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/niantui.png?ref=master】《年终推荐》◎精选优质完结和连载100万字以上小说◎\n\n\n⚡ 赤戟::https://mp.weixin.qq.com/mp/homepage?__biz=MzI5NTA4NjgwNw==&hid=1&sn=0fcecdc85b8c23e596880f8c895b901d&scene=18&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=59&session_us=gh_2aa0f3c6dd8f&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/cjdshjjs.png?ref=master】《赤戟的书荒救济所》◎最新热门分类◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319454340050157569&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/shudan.png?ref=master】《网文书单》◎每期三本-新书速递、养肥佳作、完本好书◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319393737944170497&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/fenlei.png?ref=master】《分类推书》◎分类大盘点◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319471313224040448&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/jingxuan.png?ref=master】《澎湃精选》◎超过50万字，连载或完本的优秀作品◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1325500020388626432&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/shuju.png?ref=master】《优书数据》◎月度大数据推书◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1333946780098330626&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/zatan.png?ref=master】《网文杂谈》◎一些吃瓜趣闻，网文闲谈◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1526356920989712387&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/niandu.png?ref=master】《年度盘点》◎年度盘点各分类中诞生的新书、完本书◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NTA4NjgwNw==&action=getalbum&album_id=1319335766203662337&scene=126&devicetype=android-28&version=28000f3d&lang=zh_CN&nettype=WIFI&ascene=3&pass_ticket=B8GunWN7RjA2Q%2FaVYxT%2BSITrnCodRKKdEfgFLaYKNzv56Vgj9IUBy%2B6yzAlQVE4M&wx_header=1【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/qushi.png?ref=master】《网文趣事弹》◎各类和网文相关的趣事-每月一期◎\n\n\n🔆 九哥::https://mp.weixin.qq.com/mp/homepage?__biz=Mzk0NzM4NDQ1MQ==&hid=1&sn=5da30daac494ae3c63760de3f63ec71d&scene=18【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/dsh.png?ref=master】《大书荒之三十六计》◎盘点佳作，整合书单，专注解决书荒◎★https://mp.weixin.qq.com/s/0e7bOXWYGaN_NzhaRShTDw【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/biaoqian.png?ref=master】《标签详解》◎九哥标签流派详解！◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzk0NzM4NDQ1MQ==&action=getalbum&album_id=2443305377372241921&scene=173&subscene=&sessionid=svr_28cbb1097a4&enterid=1721635791&from_msgid=2247488104&from_itemidx=1&count=3&nolastread=1#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/tuishu.png?ref=master】《九哥推书》◎九哥推书合集◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzk0NzM4NDQ1MQ==&action=getalbum&album_id=2473149230543732738&scene=173&subscene=&sessionid=svr_908b8b41295&enterid=1721636097&from_msgid=2247487308&from_itemidx=1&count=3&nolastread=1#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/fenlei.png?ref=master】《分类书单》◎分类书单合集◎\n\n\n🐰 艾儿::https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2472077598102421505&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/aetk.png?ref=master】《万订小说》◎万订小说◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2472077597951426561&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/dashen.png?ref=master】《大神作品》◎大神作品◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2470719187540541441&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/wanjie.png?ref=master】《最新完结》◎最新完结◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2469275510150561793&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/shouding.png?ref=master】《起点首订》◎起点首订◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2469271805875486724&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/shiwan.png?ref=master】《起点十万订》◎起点十万订作品◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2467582717124444162&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/yuepiao.png?ref=master】《起点月票》◎起点月票榜◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2467593988158816258&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/qita.png?ref=master】《其他资讯》◎其他资讯◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2470721486103019522&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/xinshu.png?ref=master】《新书上线》◎新书上线◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2673425041430446081&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/wanjie.png?ref=master】《每周完结》◎每周完结汇总◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2632993193290399745&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/xinshu.png?ref=master】《每周新书》◎每周新书汇总◎\n\n👩 拖延症少女::https://data.newrank.cn/m/s.html?s=Oi8xPDQ8MTs9【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/tyzsn.png?ref=master】《拖延症少女》◎号内搜索-拖延症少女的种蘑菇日记◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1345594488839929857&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/zhenli.png?ref=master】《安利整理》◎大家的好文推荐整合◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1841462094366375936&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/heji.png?ref=master】《合集》◎合集◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1639972761961889797&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/pandian.png?ref=master】《盘点》◎盘点◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1296482285570686976&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/qiangtui.png?ref=master】《强推文》◎好文中的好文推荐◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1353008118996860929&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/shadiao.png?ref=master】《沙雕文》◎沙雕的快乐◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1345612926295670785&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/kuaichuan.png?ref=master】《快穿故事》◎快穿文和故事集◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1345608230420021249&scene=126#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/tongren.png?ref=master】《HP同人文》◎本命德拉科！除了德哈其他都吃◎★http://mp.weixin.qq.com/mp/homepage?__biz=MzUyMjEwNjg1MQ==&hid=2&sn=606421437c8003bbfab3074b3cabb529&scene=18#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/qiuwen.png?ref=master】《求文整理》◎小时光一点一滴◎★http://mp.weixin.qq.com/mp/homepage?__biz=MzUyMjEwNjg1MQ==&hid=4&sn=8d12186de8e82f98cb45f3808981a9db&scene=18#wechat_redirect【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/qiangtui.png?ref=master】《强推文合集》◎强推文合集◎★https://mp.weixin.qq.com/s/-IUlibqIqEIqLaD2uke7zA【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/shudan.png?ref=master】《书单合集》◎三年所有书单合集◎★https://mp.weixin.qq.com/s/xtBqdX9LHLc2TPRH25h-zw【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ts/chanshi.png?ref=master】《女性常识》◎女生第一次要知道的那些事儿◎",
    "sourceGroup": "推书点评",
    "sourceIcon": "https://p2.ssl.qhimgs1.com/t02095b7a4858812b1e.jpg",
    "sourceName": "推书ᴛˢ",
    "sourceUrl": "推书合集",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 150,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773206922774,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://p0.ssl.qhimgs1.com/dmt/80_80_/t01d23da61e324510da.jpg",
    "sourceName": "鬼大爷",
    "sourceUrl": "https://www.guidaye.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 151,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775591968446,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.inline1||class.articleLink2||class.navLink",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.0@href||href@js:\"https://sou-yun.cn/\"+result",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.comment@text",
    "ruleTitle": "tag.a.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部类别::https://sou-yun.cn/AnalyzeCi.aspx\n诗词库::https://sou-yun.cn/PoemIndex.aspx?\n诗文观止::https://sou-yun.cn/PoemIndex.aspx?path=%e8%a9%a9%e6%96%87%e8%a7%80%e6%ad%a2\n典故::https://sou-yun.cn/PoemIndex.aspx?path=%e5%85%b8%e6%95%85\n唐诗::https://sou-yun.cn/PoemIndex.aspx?path=%e5%94%90%e8%a9%a9\n岁时::https://sou-yun.cn/PoemIndex.aspx?path=%e6%ad%b2%e6%99%82\n咏物::https://sou-yun.cn/PoemIndex.aspx?path=%e8%a9%a0%e7%89%a9\n当代::https://sou-yun.cn/PoemIndex.aspx?path=%e7%95%b6%e4%bb%a3\n人文地理::https://sou-yun.cn/PoemIndex.aspx?path=%e4%ba%ba%e6%96%87%e5%9c%b0%e7%90%86\n典故、词汇::https://sou-yun.cn/AllusionsIndex.aspx?sort=People",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://sou-yun.cn/images/publish.png",
    "sourceName": "诗词",
    "sourceUrl": "https://sou-yun.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 155,
    "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": 1773207043013,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.news_list@tag.li&&class.Revision_list@tag.li&&class.yc_warp_list@tag.li",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.next@tag.a@href",
    "rulePubDate": "class.time@text",
    "ruleTitle": "class.bt@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "原创::https://www.3dmgame.com/original\n评测::https://www.3dmgame.com/original_40_1\n投票::https://www.3dmgame.com/original_41_1\n\n\n\n游戏::https://www.3dmgame.com/news/game_1\n影视::https://www.3dmgame.com/news/acg_1\n数码::https://www.3dmgame.com/news/next_1\n时事::https://www.3dmgame.com/news_36_1\n八卦::https://www.3dmgame.com/bagua_62_1\n囧图::https://www.3dmgame.com/bagua_65_1\n涨姿势::https://www.3dmgame.com/bagua_63_1\n壁纸::https://www.3dmgame.com/bagua_66_1",
    "sourceGroup": "游戏",
    "sourceIcon": "https://p2.ssl.qhimgs1.com/t02051e6f5a84a25cfe.jpg",
    "sourceName": "3DM",
    "sourceUrl": "https://www.3dmgame.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 156,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/•/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('•');\nfor(i in list){\ntext=list[i].match(/《(.*?)》/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)《/)[1]\njson.push({text:text,index:index})\n}\n}else{\nlist=baseUrl.replace(/http.*?wd=/,'');\ntext=list.match(/《(.*?)》/)[1];\nindex=list.match(/^(\\d+、\\d+、)/)?list.match(/^(\\d+、\\d+、)/)[1]:list.match(/^(.*?)《/)[1];\njson.push({text:text,index:index})\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleContent": "@js:\nif(baseUrl.match(/(?:\\d+\\.){3}\\d+:\\d+/)){\nbutton='<button id=\"bian\" onclick=\"javascript:document.getElementById(\\'rules\\').style.display=\\'inline\\'\";document.getElementById(\\'outbox\\').style.display=\\'none\\'\">编辑</button><button  id=\"tiao\" onclick=\"javascript:document.getElementById(\\'rules\\').style.display=\\'none\\'\";document.getElementById(\\'outbox\\').style.display=\\'inline\\'\">调试</button>';\n\n\nhtml=button+String(java.getString(\"@@tag.script@html&&tag.body@children@html\",false)).replace(/rows=\"1\"/g,'rows=\"3\"').replace(/textarea(?!\\srow)/g,'textarea rows=\"30\" readonly').replace(/<\\/div>\\s+?<div>/g,'</div><p></p><div>').replace(/class=\"rules\"/,'class=\"rules\" id=\"rules\"').replace(/outbox\"/,'outbox\" id=\"outbox\"')}else{html=java.getString(\"@@all\",false)}\nresult=String(html).replace(/极光/,'影音猎手')",
    "ruleDescription": "❗️0、1、开始❗️\n<style>\nbutton,input{\nmargin:5px\n}\n#basic-addon1,#replaceSpan1{\nbackground-color:Azure;\npadding:3px\n}\ntextarea{\nbackground-color:GhostWhite;\nborder:0px solid black\n}\n</style>\n<script>function $(selector) { return document.querySelector(selector); }\nfunction $$(selector) { return document.querySelectorAll(selector); }</script>\n<a href=\"https://www.sojson.com/rehtml\">html转义</a>&nbsp;&nbsp;<a href=\"http://www.jsons.cn/urlencode/\">URL解码</a>\n<textarea rows=\"10\" id=\"input\" onfocus=\"di()\" placeholder=\"   ——＞ 复制发现列表到这里 ＜——\n  （此工具用2个共存的阅读app切换编辑测试比较方便）\n■■格式化发现：请复制分类网页榜单网页的源代码里的列表部分到此处。\n■■复制粘贴发现列表后，点“发现格式互转”按钮，再点“全局平铺”按钮，最后点“一键复制”复制按钮，然后切换到书源编辑，粘贴保存就完成啦！（进阶玩法是点“全局平铺”按钮后，再强制全局x个一行，再复制粘贴到书源再手工调整参数。[迷迭小改按钮说明]\"></textarea>\n<button onclick=\"getInput();dis()\" id=\"bt1\">格式化发现</button>\n<button onclick=\"getInput2();dis()\" id=\"bt2\">格式化发现2</button>\n<button onclick=\"getInput3();\" id=\"bt3\">★发现格式互转★</button>\n\n<button onclick=\"getInput4(1);\" id=\"bt4\">★必选项★全局平铺★（参数flexGrow: 1）</button>\n<button onclick=\"getInput4(2);\" id=\"bt4\">强制全局5个一行【2字】 （参数 0.15）</button>\n<button onclick=\"getInput4(3);\" id=\"bt4\">强制全局4个一行【3字或3字以下】（参数 0.2）</button>\n<button onclick=\"getInput4(4);\" id=\"bt4\">强制全局3个一行【5字或5字以下】（参数 0.25）</button>\n<button onclick=\"getInput4(5);\" id=\"bt4\">强制全局2个一行 （参数 0.4）</button>\n<button onclick=\"copyText()\">★一键复制★</button>\n<p></p><br><br><br>\n<p>正则表达式匹配替换</p>\n <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n                        <textarea class=\"form-control\" onmouseover=\"this.focus();\" id=\"textSour\" name=\"textSour\" rows=\"10\" style=\"max-height: 2222px;\" placeholder=\"请输入要验证的文本\"></textarea>\n                    </div>\n                </div>\n                <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n                        <div class=\"input-group\">\n                            <span class=\"input-group-addon\" id=\"basic-addon1\">正则表达式</span>\n                            <input type=\"text\" class=\"form-control\" id=\"textPattern\" name=\"textPattern\" placeholder=\"请输入自定义正则表达式 例如：\\d{6}\" aria-describedby=\"basic-addon1\" style=\"width: 65%;\">\n                        </div>\n                    </div>\n                </div>\n                <div class=\"form-group\">\n                    <div class=\"col-sm-2\">\n                        <div class=\"input-group\" style=\"margin-left: 20px;\">\n                            <label class=\"checkbox\" style=\"cursor: pointer;\">\n                                <input type=\"checkbox\" value=\"global\" checked=\"checked\" id=\"optionGlobal\" name=\"optionGlobl\">全局搜索</label>\n                        </div>\n                    </div>\n                    <div class=\"col-sm-2\">\n                        <div class=\"input-group\" style=\"margin-left: 20px;\">\n                            <label class=\"checkbox\" style=\"cursor: pointer;\">\n                                <input type=\"checkbox\" value=\"ignoreCase\" id=\"optionIgnoreCase\" name=\"optionIgnoreCase\">忽略大小写</label>\n                        </div>\n                    </div>\n                    <div class=\"col-sm-8\">\n                        <input type=\"button\" onclick=\"return onMatch();\" value=\"验证匹配内容\" class=\"btn btn-success\">\n                        <input type=\"button\" onclick=\"Empty();\" value=\"清空输入框\" class=\"btn btn-danger\">\n<button onclick=\"copyText3()\">一键复制</button>\n                    </div>\n                </div>\n                <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n<div id=\"textResult\"></div>\n                        <textarea onmouseover=\"this.focus();\" id=\"textMatchResult\" class=\"form-control\" rows=\"10\" style=\"max-height: 2222px;\" placeholder=\"得到验证后内容，内容为空为验证失败\" readonly=\"readonly\"></textarea>\n                    </div>\n                </div>\n                <div class=\"form-group\">\n                    <div class=\"col-sm-4\">\n                        <div class=\"input-group\" style=\"width: 98%;\">\n                            <span class=\"input-group-addon\" id=\"replaceSpan1\">替换文本</span>\n                            <input type=\"text\" class=\"form-control\" id=\"textReplace\" name=\"textReplace\" placeholder=\"请输入替换内容\" aria-describedby=\"replaceSpan1\" style=\"width: 70%;\">\n<button value=\"{\\{page}}\" onclick=\"pp(this.value)\">page</button>\n\n<button value=\"$\" onclick=\"pp(this.value)\">$</button>\n\n<button value=\"'\" onclick=\"pp(this.value)\">'</button>\n<button value=\"/\" onclick=\"pp(this.value)\">/</button>\n<button value=\"_\" onclick=\"pp(this.value)\">_</button>\n<button value=\"-\" onclick=\"pp(this.value)\">-</button>\n                        </div>\n                    </div>\n                    <div class=\"col-sm-2\">\n                        <div class=\"input-group\">\n                            <button onclick=\"return onReplace()\" class=\"btn btn-success\">替换匹配内容</button>\n<button onclick=\"copyText2()\">一键复制</button>\n                        </div>\n                    </div>\n                    <div class=\"col-sm-6\">\n                    </div>\n                </div>\n                <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n                        <textarea readonly=\"readonly\" id=\"textReplaceResult\" class=\"form-control\" rows=\"10\" placeholder=\"此处为替换后内容\"></textarea>\n                    </div>\n                </div>\n                </form>\n            </div>\n        </div>\n<script>\nvar copyText = function() {\n    var text = document.getElementById('input');\n    // 选中文本\n    text.select()\n    // 复制\n    document.execCommand('copy')\n}\nvar copyText2 = function() {\n    var text = document.getElementById('textReplaceResult');\n    // 选中文本\n    text.select()\n    // 复制\n    document.execCommand('copy')\n}\nvar copyText3 = function() {\n    var text = document.getElementById('textMatchResult');\n    // 选中文本\n    text.select()\n    // 复制\n    document.execCommand('copy')\n}\n\n</script>\n<script>\nfunction pp(a){\n$(\"#textReplace\").value+=a.replace(/\\\\/,'');\n$(\"#textReplace\").focus()\n}\nfunction dis(){\ndocument.getElementById(\"bt1\").disabled=true;\ndocument.getElementById(\"bt2\").disabled=true\n}\nfunction di(){\ndocument.getElementById(\"bt1\").disabled=false;\ndocument.getElementById(\"bt2\").disabled=false\n}\nfunction getInput(){\ntext=$(\"#input\").value;\nlist=text.match(/<a.*?href=\"([^\"]+)\".*?>([\\s\\S]+?)<\\/a>/g);\nhtml=\"\"\nif(list.length==0){\nhtml=\"格式化失败！！！请检查是否为带html标签\"\n}else{\nhtml=\"\"\n}\nfor(i in list){\na=list[i].match(/<a.*?href=\"([^\"]+)\".*?>([\\s\\S]+?)<\\/a>/);\nhtml+=a[2]+\"::\"+a[1]+\"\\n\"\n}\n$(\"#input\").value=html\n}\n\nfunction getInput2(){\ntext=$(\"#input\").value;\nlist=text.match(/<a.*?href=\"([^\"]+)\".*?>([\\s\\S]+?)<\\/a>/g);\nhtml=\"\";\nif(list.length==0){\nhtml=\"格式化失败！！！请检查是否为带html标签\"\n}else{\nhtml=\"\"\n}\nfor(i in list){\na=list[i].match(/<a.*?href=\"([^\"]+)\".*?>([\\s\\S]+?)<\\/a>/);\nhtml+=\"{'title':'\"+a[2]+\"','url':'\"+a[1]+\"','style':{}},\\n\"}\n\n$(\"#input\").value=html\n}\n\nfunction getInput3(){\ntext=$(\"#input\").value;\nif(text.match(/\\&\\&|::/g)){\ntext=text.replace(/\\&\\&/g,'\\n');\nlist=text.match(/.*::.*/g);\nhtml=[];\nfor(i=0;i<list.length;i++){\nl=list[i].match(/(.*)::(.*)/);\ntitle=l[1];url=l[2]\nhtml.push({\ntitle:title,\nurl:url,\nstyle:{}\n})\n}\n$(\"#input\").value=JSON.stringify(html)\n}else{\nhtml=\"\";\njson=JSON.parse(text);\nfor(i in json){\nhtml+=json[i].title+\"::\"+json[i].url+\"\\n\"\n}\n$(\"#input\").value=html\n}\n}\nfunction getInput4(flag){\ntext=$(\"#input\").value;\nif(flag==1){\njson=JSON.parse(text);\nfor(i in json){\njson[i].style.layout_flexGrow=1\n}\n}else if(flag==2){\njson=JSON.parse(text);\nfor(i in json){\njson[i].style.layout_flexBasisPercent=0.15\n}\n}else if(flag==3){\njson=JSON.parse(text);\nfor(i in json){\njson[i].style.layout_flexBasisPercent=0.2\n}\n}else if(flag==4){\njson=JSON.parse(text);\nfor(i in json){\njson[i].style.layout_flexBasisPercent=0.25\n}\n}else if(flag==5){\njson=JSON.parse(text);\nfor(i in json){\njson[i].style.layout_flexBasisPercent=0.4\n}\n}\n$(\"#input\").value=JSON.stringify(json)\n}\nfunction setVisible(idElement, visible) {\n    var obj = document.getElementById(idElement);\n    obj.style.visibility = visible ? \"visible\" : \"hidden\";\n}\nfunction isValidFields() {\n    var textSour = document.getElementById(\"textSour\");\n    if (null == textSour.value || textSour.value.length < 1) {\n        textSour.focus();\n        JsonsMessageBox($(\"#textSour\"), \"请输入待匹配文本\");\n        return false;\n    }\n    var textPattern = document.getElementById(\"textPattern\");\n    if (null == textPattern.value || textPattern.value.length < 1) {\n        textPattern.focus();\n        JsonsMessageBox($(\"#textPattern\"), \"请输入正则表达式\");\n        return false;\n    }\n    return true;\n}\nfunction buildRegex() {\n    var op = \"\";\n    if (document.getElementById(\"optionGlobal\").checked) op = \"g\";\n    if (document.getElementById(\"optionIgnoreCase\").checked) op = op + \"i\";\n    return new RegExp(document.getElementById(\"textPattern\").value, op);\n}\nfunction onMatch() {\n    if (!isValidFields())\n        return false;\n    document.getElementById(\"textMatchResult\").value = \"\";\n    var regex = buildRegex();\n    var result = document.getElementById(\"textSour\").value.match(regex);\n    if (null == result || 0 == result.length) {\n        document.getElementById(\"textMatchResult\").value = \"（没有匹配）\";\n        return false;\n    }\n    if (document.getElementById(\"optionGlobal\").checked) {\nvar re=\"\";\n        var strResult = \"共找到 \" + result.length + \" 处匹配：\\r\\n\";\ndocument.getElementById(\"textResult\").innerText=strResult;\nfor (var i = 0; i < result.length; ++i){ re += result[i] + \"\\r\\n\";}\n        document.getElementById(\"textMatchResult\").value = re;\n    }\n    else {\n   document.getElementById(\"textMatchResult\").value = \"匹配位置：\" + regex.lastIndex + \"\\r\\n匹配结果：\"+result[0];\n    }\n    return true;\n}\nfunction onReplace() {\n    var str = document.getElementById(\"textSour\").value;\n    var regex = buildRegex();\n    document.getElementById(\"textReplaceResult\").value = str.replace(regex, document.getElementById(\"textReplace\").value);\n}\nfunction reset() {\n     $(\"#textSour\").value=\"\";\n    $(\"#textPattern\").value=\"\";\n    $(\"#textMatchResult\").value=\"\";\n    $(\"#textReplace\").value=\"\";\n    $(\"#textReplaceResult\").value=\"\";\n}\n$(\"#regCommon a\").click(function () {\n    $(\"#textPattern\").val($(this).attr(\"t\"));\n    onMatch();\n});\nfunction Empty() {\n $(\"#textSour\").value=\"\";\n    $(\"#textMatchResult\").value=\"\";\n    $(\"#textReplace\").value=\"\";\n    $(\"#textReplaceResult\").value=\"\";\n    $(\"#textSour\").select();\n}\n</script>\n❗️0、1、结束❗️\n❗️0、0、开始❗️\n<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"UTF-8\"/>\n    <title>规则编辑器</title>\n    <script>function $(selector) { return document.querySelector(selector); }\nfunction $$(selector) { return document.querySelectorAll(selector); }</script>\n<style>\n.editor a{\ncolor:#888;\nfor-size:12px\n}</style>\n</head>\n<body>\n\n<div class=\"editor\">\n规则例子\n<textarea readonly rows=\"10\" placeholder=\"例子\">POST\n说明：需要在url前加入POST:\nPostBody={}字符串\nJsonBody={}jsoup数据\n示例：POST:http://www.abc.com/search?PostBody={\"searchword\":\"阿凡达\",\"time\":\"123456\"}\n\n{SearchWord}是utf-8编码\n{SearchWordGB2312}是gb-2312编码\n{SearchWordGBK}是gbk编码\n\n{SystemUserAgent}\n含义：用户手机系统的User-Agent\n\nHeader\n含义：请求头\n示例：http://www.abc.com?Header={\"User-Agent\":\"xxx\"}\n\n</textarea>\n    <div class=\"setbox\">\n        <div class=\"rules\">\n            <div>\n                <b>基础信息</b>\n            </div><p></p><div>\n                <div>\n                    规则名称:\n                </div>\n                <textarea rows=\"3\" id=\"configName\" placeholder=\"源名称(SourceName)\"></textarea>\n            </div><p></p><div>\n                <div>\n                    解析类型:<a>静态WebPage  动态WebPage2</a>\n                </div>\n                <textarea rows=\"3\" id=\"configType\"\n                          placeholder=\"必选\">WebPage</textarea>\n            </div><p></p><div>\n                <div>\n                    视频扩展名:<a>unknown | undetermined | mp4 | m3u8</a>\n                </div>\n                <textarea rows=\"3\" id=\"extensions\" placeholder=\"必选\">unknown</textarea>\n            </div><p></p><div>\n                <div>\n                    嗅探排除表达式:\n                </div>\n                <textarea rows=\"3\" id=\"sniffExcludeRegex\" placeholder=\"嗅探排除表达式，非必要参数\"></textarea>\n            </div><p></p><div>\n                <div>\n                    等待时间:\n                </div>\n                <textarea rows=\"3\" id=\"waitTime\"\n                          placeholder=\"全局网页源码获取前的等待时间，非必要参数，单位毫秒\"></textarea>\n            </div><p></p><div>\n                <div>\n                    登录网页:\n                </div>\n                <textarea rows=\"3\" id=\"loginUrl\"\n                          placeholder=\"登录URL | 用于获取Cookie\"></textarea>\n            </div>\n             <p></p>\n            <div>            \n                <b>搜索规则</b>\n            </div><p></p><div>\n                <div>\n                    搜索URL:\n                </div>\n                <textarea rows=\"3\" id=\"searchUrl\" placeholder=\"搜索URL(RuleSearchUrl)\"></textarea>\n            </div><p></p><div>\n                <div>\n                    搜索名称列表:\n                </div>\n                <textarea rows=\"3\" id=\"searchNameRegex\"\n                          placeholder=\"搜索名称表达式，必要\"></textarea>\n            </div><p></p><div>\n                <div>\n                    搜索链接列表:\n                </div>\n                <textarea rows=\"3\" id=\"searchUrlRegex\" placeholder=\"搜索链接表达式，必要\"></textarea>\n            </div><p></p><div>\n                <div>\n                    视频图片:\n                </div>\n                <textarea rows=\"3\" id=\"searchPictureRegex\"\n                          placeholder=\"图片获取规则(RuleSearchCoverUrl)\"></textarea>\n            </div><p></p><div>\n                <div>\n                    视频类型:\n                </div>\n                <textarea rows=\"3\" id=\"searchTypeRegex\" placeholder=\"类型获取规则\"></textarea>\n            </div><p></p><div>\n                <div>\n                    视频状态:\n                </div>\n                <textarea rows=\"3\" id=\"searchStateRegex\"\n                          placeholder=\"状态获取规则\"></textarea>\n            </div><p></p><div>\n                <div>\n                    视频年份:\n                </div>\n                <textarea rows=\"3\" id=\"searchYearRegex\" placeholder=\"年份获取规则\"></textarea>\n            </div><p></p><div>\n                <div>\n                    选集url:\n                </div>\n                <textarea rows=\"3\" id=\"itemSkipRegex\" placeholder=\"跳转选集的Url，非必要\"></textarea>\n            </div><p></p><div>\n                <div>\n                    选集跳过url:\n                </div>\n                <textarea rows=\"3\" id=\"itemSkipRegex\"\n                          placeholder=\"选集跳过页表达式，非必要。---在itemUrl获取选集页代码后，如果选集页没有选集，选集数据在下一级页面才有时可使用此参数，匹配下一级页面的链接，自动完成跳转并获取下一级页面的源码，用于匹配选集信息\"></textarea>\n            </div><p></p>\n<div>\n                <b>线路与播放地址规则</b>\n            </div><p></p><div>\n                <div>\n                    选集名称列表:\n                </div>\n                <textarea rows=\"3\" id=\"itemNameRegex\"\n                          placeholder=\"选集名称表达式，必要。\"></textarea>\n            </div><p></p><div>\n                <div>\n                    选集链接列表:\n                </div>\n                <textarea rows=\"3\" id=\"itemUrlRegex\" placeholder=\"选集链接表达式，必要\"></textarea>\n            </div><p></p><div>\n                <div>\n                    真实链接的Url:\n                </div>\n                <textarea rows=\"3\" id=\"realUrl\"\n                          placeholder=\"选集播放器获取真实链接的Url，非必要。此参数可以为选集链接设置解析接口等，也支持单独设置请求---例如：'realUrl':'http://www.jx.com/?url={ItemUrlOrId}'\"></textarea>\n            </div><p></p><div>\n                <div>\n                    真实链接:\n                </div>\n                <textarea rows=\"3\" id=\"realUrlRegex\"\n                          placeholder=\"选集真实链接表达式，必要。---必须使用过realUrl后才有效，填写此参数后realUrl将不是直接调用播放器，而是获取链接对应的网页源码\"></textarea>\n            </div><p></p><div>\n                <div>\n                    选集真实类型（拓展名）:\n                </div>\n                <textarea rows=\"3\" id=\"realExtensionsRegex\"\n                          placeholder=\"选集真实类型（拓展名）表达式，非必要。---使用realUrl和realUrlRegex后才能使用此参数。用于获取视频类型。\n\"></textarea>\n            </div>\n    </div>\n </div>\n    <div class=\"menu\">    \n        <svg class=\"button\" onclick=\"ddd()\">\n            <text x=\"50%\" y=\"55%\">\n                ⋙生成规则\n            </text>            \n        </svg>\n\n        <svg class=\"button\" onclick=\"ccc()\">\n            <text x=\"50%\" y=\"55%\">\n                ✗清空表单\n            </text>\n        </svg>            \n\n    </div>\n\n    <div class=\"outbox\">\n        \n                    <textarea  rows=\"20\" class=\"context\" id=\"RuleJsonString\"\n                              placeholder=\"这里输出序列化的JSON数据\"></textarea>\n                </div>\n                \n                \n</div>\n\n<script>\nconst RuleJSON = (() => {\n\tlet ruleJson = {};\n\t$$('.rules textarea').forEach(item => ruleJson[item.id] = '');\n//\tfor (let item of $$('.rules textarea')) ruleJson[item.id] = '';\n\treturn ruleJson;\n})();\n\nfunction rule2json() {\n\tObject.keys(RuleJSON).forEach((key) => RuleJSON[key] = $('#' + key).value);\n\treturn RuleJSON;\n}\n\nfunction ddd(){\n$('#RuleJsonString').value = JSON.stringify(rule2json(), null, 4);\n}\nfunction ccc(){\n\t$$('.rules textarea').forEach(item => { item.value = '' });\n}\n</script>\n</body>\n</html>\n❗️0、0、结束❗️\n\n\n——————分割线————————\n{{}}\n<js>\nindex='{{$.index}}';\nif(index.match(/\\d+、\\d+、/)){\nreg=eval('/❗️'+index+'开始❗️[\\\\s\\\\S]+?❗️'+index+'结束❗️/g');\nreg2=eval('/❗️'+index+'..❗️/g');\nresult=result.match(reg)?result.match(reg)[0]:'<br/>'\nresult.replace(reg2,'')}else{result=''}\n</js>",
    "ruleImage": "<js>src=\"https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png\"</js>",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "🔎 常用网站::http://www.baidu.com/wd=0、1、《📝 | 发现规则 正则匹配》◎◎•0、0、《📝 | 搜视pro》",
    "sourceComment": "by.关耳\n\n小说交流群462030508。\nA群637775313不加人。若群炸了查看此群群资料找新家。\n\n内容取自网络，仅供学习参考，请同学们在24小时内删除\n\n图标\nhttps://img0.baidu.com/it/u=3218949416,880686412&fm=253&fmt=auto&app=138&f=JPEG?w=140&h=140\n图标 齿轮动图\nhttps://z3.ax1x.com/2021/06/21/RVQ7Ue.gif",
    "sourceGroup": "工具",
    "sourceIcon": "https://i01piccdn.sogoucdn.com/33bd8163a946224d",
    "sourceName": "发现规则♛by关耳",
    "sourceUrl": "规则-正则匹配#迷迭edit2",
    "style": "#jhss a{\nfont-size:10px;\ncolor:red;\ntext-decoration:none;\n}\n\n#jhss p{\ndisplay:inline-block;\nwidth:8em;\n}\n\n#jhss p{\nmargin:0;\npadding:0;\ncolor:#666;\n}\n\n#jhss div{\nmargin:0;\npadding:10px;\n}\n\n#jhss h1{\nmargin:0;\npadding:9px;\nfont-size:20px;\n}\n\n#jhss input{\nmargin:2px;\npadding:2px 6px;\nfont-size: 1em;\nbackground-color:rgba(200,200,200,0.5);\ncolor:#A00;\nborder:0;\nborder-radius: 3px;\ntext-decoration: none;\ntext-align:center;\n}\ntextarea{\nwidth:100%\n}\n.menu {\n\tjustify-content: space-between;\n\tmax-width: 900px;\n\tmargin: 0 5px;\n}\n.menu .button {\n\twidth: 55px;\n\theight: 15px;\n\tmin-height: 5px;\n\tmargin: 5px 0px;\n\tcursor: pointer;\n}\n.button text {\n\ttext-anchor: middle;\n\tdominant-baseline: middle;\n}\n\n.button rect {\n\twidth: 100%;\n\theight: 100%;\n\tfill: transparent;\n\tstroke: #666;\n\tstroke-width: 2px;\n}\n.button rect.busy {\n\tstroke: #fD1850;\n\tstroke-dasharray: 30 90;\n\tanimation: stroker 1s linear infinite;\n}\n.tabbox {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-flow: column;\n}\n.tabtitle {\n\tdisplay: flex;\n\tz-index: 1;\n\tjustify-content: center;\n}\n.tabtitle>div {\n\tcursor: pointer;\n\tpadding: 1px 10px 0 10px;\n\tborder-bottom: 3px solid transparent;\n\tfont-weight: bold;\n}\n.tabtitle>.this {\n\tcolor: #4f9da6;\n\tborder-bottom-color: #4EBBE4;\n}\n.tabbody {\n\tflex: 1;\n\tdisplay: flex;\n\tmargin-top: -1px;\n\tborder: 1px solid #A9A9A9;\n\theight: 0;\n}\n.tabbody>* {\n\tflex: 1;\n\tflex-flow: column;\n\tdisplay: none;\n}\n.tabbody>.this {\n\tdisplay: flex;\n}\n.tabbody>*>.titlebar{\n\tdisplay: flex;\n}\n.tabbody>*>.titlebar>*{\n\tflex: 1;\n\tmargin: 1px 1px 1px 1px;\n}\n.tabbody>*>.context {\n\tflex: 1;\n\tflex-flow: column;\n\tborder: 0;\n\tpadding: 5px;\n\toverflow-y: auto;\n}\n.tabbody>*>.inputbox{\n\tborder: 0;\n\tborder-bottom: #A9A9A9 solid 1px;\n\theight: 15px;\n\ttext-align:center;\n}\n.link>* {\n\tdisplay: flex;\n\tmargin: 5px;\n\tborder-bottom: 1px solid;\n\ttext-decoration: none;\n}\n#RuleList>label>* {\n\tbackground: #eee;\n\tpadding-left: 3px;\n\tmargin: 2px 0;\n\tcursor: pointer;\n}\n#RuleList input[type=radio] {\n\tdisplay: none;\n}\n#RuleList input[type=\"radio\"]:checked+* {\n\tbackground: #15cda8;\n}\n.isError {\n\tcolor: #FF0000;\n}\n#RuleJsonString{\nheight:600px\n}\nsvg text{\nfont-size:10px\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 158,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236415300,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://s.faloo.com/novel/favicon.ico",
    "sourceName": "飞卢小说",
    "sourceUrl": "http://wap.faloo.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 160,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773224819499,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://www.lxapk.com/favicon.ico",
    "sourceName": "乐享网",
    "sourceUrl": "https://www.lxapk.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 160,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236431020,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://imgcn.ihuaben.com/common/logo.jpg",
    "sourceName": "话本小说",
    "sourceUrl": "https://www.ihuaben.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 161,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "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": "",
    "ruleDescription": "❗️0、2、开始❗️\n<script>jiexi=[//蓝奏云解析\n\n//格式：[\"解析名称\",\"请求链接\",\"链接参数\",\"密码参数\",\"下载参数\"],\n\n[\"默认解析\",\"https://gj.legado.cc/legado\",\"url\",\"pwd\",\"type=down\"],\n[\"　　　　\",\"\",\"url\",\"pwd\",\"type=down\"],\n[\"　　　　\",\"\",\"url\",\"pwd\",\"type=down\"],\n]</script>\n\n<br>\n<div class=\"url\">\n<p>资源链接/蓝奏云文件链接</p>\n<textarea rows=\"4\" placeholder=\"蓝奏云链接可以直接拼接密码\n格式：链接#密码\n例子：http://qiqi.lanzoub.com/b09tbdngh#666\" oninput=\"geturl()\"></textarea>\n</div>\n\n<br>\n<div class=\"pwd\">\n<p>如果是蓝奏云链接，请输入密码</p>\n<textarea placeholder=\"在上面写了/没有密码 留空即可\" oninput=\"geturl()\"></textarea>\n</div>\n\n<br>\n<div>\n<p>蓝奏解析接口</p>\n<div class=\"port\"></div>\n<hr>\n</div>\n\n<br>\n<div>\n<p>选择导入格式｜⋘　左右滑动　⋙</p>\n<div class=\"path\">\n\t\t<button onclick=\"xuan(this,1)\" value=\"auto\"><b>自动识别</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"bookSource\"><b>书源导入</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"rssSource\"><b>订阅导入</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"replaceRule\"><b>替换净化</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"textTocRule\"><b>TXT目录</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"httpTTS\"><b>TTS朗读</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"theme\"><b>阅读主题</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"readConfig\"><b>阅读排版</b></button>\n</div>\n<hr>\n</div>\n\n<br>\n<div>\n<p>导入阅读</p>\n<textarea rows=\"6\" placeholder=\"请输入资源链接\" readonly></textarea>\n<div>\n\t\t<button onclick=\"copy(2)\"><b>复制链接</b></button>\n\t\t<button onclick=\"importu()\" style=\"float:right\"><b>导入阅读</b></button>\n</div>\n<hr>\n</div>\n\n<iframe hidden></iframe>\n<script>\n\n//选中标签\n$=(rule)=>document.querySelectorAll(rule);\n\n//获取textarea\ntextarea=(index)=>$('textarea')[index];\n\n//删除active\nomit=(A)=>Array.from(A,a=>a.className='');\n\n//复制链接\nfunction copy(index){\n\t\ttextarea(index).select();//选中文本\n\t\tdocument.execCommand('copy');//复制\n\t}\n\n//切换选择\nxuan=(item,type)=>{\n\t\ttype=type==0?'port':'path'\n\t\tbtn=$(`.${type} button.active`)\n\t\tif(item.value==btn[0].value)return;\n\t\tomit(btn)\n\t\titem.className='active'\n\t\tgeturl()\n\t}\n\n//获取value\ngetu=(type,index)=>{\n\t\tu=String($('.'+type+' button.active')[0].value).split(',')[index].trim();\n\nif(type=='path')u=`legado://import/${u}?src=`;\n\t\treturn u\n}\n\n//获取url\ngeturl=()=>{\n\t\turl = String(textarea(0).value).trim()\nif(/^\\s*$/.test(url))return textarea(2).value='';\n\nif(url.match(/lanzou/)){//蓝奏云url拼接\ntry{\n\t\tif(url.match(/#.+/)){\n\t\t\t\tpwd = url.split('#')[1]\n\t\t\t\turl = url.split('#')[0]\n\t\t\t}\n\t\telse{\n\t\t\t\tpwd = String(textarea(1).value).trim()\n\t\t\t}\n\t}\ncatch(err){pwd=''}\nurl = getu('port',0)+\n\t'?'+getu('port',1)+'='+url.replace('/tp/','/').replace(/[\\?#].*/g,'')+\n\t'&'+getu('port',2)+'='+pwd+\n\t'&'+getu('port',3);\n}\nreturn textarea(2).value=url=getu('path',0)+encodeURIComponent(url)\n}\n\n//导入阅读\nimportu=()=>{\n\t\tgeturl();\n\t\tif(!url)return;\n\t\treturn $('iframe')[0].src = url;\n\t}\n\n//初始化\n(()=>{\n\n//格式化解析\n\t\t$('.port')[0].innerHTML = '\\n\\t\\t'+jiexi.map(x=>`<button onclick=\"xuan(this,0)\" value=\"${x[1]},${x[2]},${x[3]},${x[4]}\"><b>${x[0]}</b></button>`).join('\\n\\t\\t')+'\\n'\n\n\t\t$('.port button')[0].className='active'\n\t\t$('.path button')[0].className='active'\n\t\treturn geturl()\n\t})()\n</script>\n<style>\n*{\n\tz-index:0;\n\tmargin:0;\n\tpadding:0;\n\twidth:100%;\n\theight:auto;\n}\n.port,.path{\n\toverflow-x:auto;\n\toverflow-y:hidden;\n\twhite-space:nowrap;\n}\nbutton{\n\twidth:30%;\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</style>\n❗️0、2、结束❗️\n\n\n\n❗️0、1、开始❗️\n<style>\nbutton,input{\nmargin:8px\n}\n#basic-addon1,#replaceSpan1{\nbackground-color:Azure;\npadding:5px\n}\ntextarea{\nbackground-color:GhostWhite;\nborder:0px basic-addon1\n}\n</style>\n<script>function $(selector) { return document.querySelector(selector); }\nfunction $$(selector) { return document.querySelectorAll(selector); }</script>\n<br>\n✱输入蓝奏云文件链接：\n <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n                        <textarea class=\"form-control\" onmouseover=\"this.focus();\" id=\"textSour\" name=\"textSour\" rows=\"10\" aria-describedby=\"basic-addon1 style=\"max-height: 2222px;\" placeholder=\"以下示例格式皆可：\nhttp://qiqi.lanzoub.com/b09tbdngh#666\nhttp://qiqi.lanzoub.com/b09tbdngh密码:666\n下载：http://qiqi.lanzoub.com/b09tbdngh\n密码：666\n我用蓝奏浏览器分享了[帮你导入v2], 下载链接:https://wwp.lanzoup.com/iAI4L0p0x2qh  提取码 : read, 你可以不限速下载哦\"></textarea>\n                    </div>\n                </div>\n\n                <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n                        <div class=\"input-group\">\n    <span>✱输入密码：</span>\n    <input type=\"text\" class=\"form-control\" id=\"textPattern\" name=\"textPattern\" placeholder=\"若无密码 留空即可\" aria-describedby=\"basic-addon1\" style=\"width: 35%;\">\n    <input type=\"button\" onclick=\"Empty();\" value=\"  清空输入框  \" class=\"btn btn-danger\">\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"form-group\">\n                    <div class=\"col-sm-8\">\n    <input type=\"button\" onclick=\"  set='https://gj.legado.cc/legado'; return onMatch()\" value=\"◎生成直链◎\" class=\"btn btn-success\">\n    <button onclick=\"copyText()\">◎复制直链◎</button>\n    <button onclick=\"href=auto()\">非蓝奏链一键</button>\n                    </div>\n                </div>\n\n                <div class=\"form-group\">\n                   <div class=\"col-sm-8\">\n<button onclick=\"href=copyText7()\">一键导入书源</button>\n\n<button onclick=\"href=copyText8()\">一键导入订阅</button>\n\n<button onclick=\"href=copyText9()\">一键导入净化</button>\n                    </div>\n                </div>\n\n                <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n<div id=\"textResult\"></div>\n                        <textarea onmouseover=\"this.focus();\" id=\"textMatchResult\" class=\"form-control\" rows=\"10\" style=\"max-height: 2222px;\" placeholder=\"直链作用：分享给别人\n＃可直接网络导入书源订阅源，无须先把蓝奏云文件下载到本地（源文件需为txt文件上传到蓝奏云）。\n\n＃“非蓝奏链一键”：非蓝奏云的源链接，自动识别是书源还是订阅源等，一键导入。\n\n＃本工具依赖服务器配置，若服务器咕了，则本工具失效，直链失效。\" readonly=\"readonly\"></textarea>\n                    </div>\n                </div>\n<div class=\"col-sm-12\">\nrssSource by.迷迭  <br>\nthk.Thomas提供\n</div>\n<iframe id=\"source\" src=\"\" width=\"0px\" height=\"0px\" style=\"visibility:hidden\"></iframe>\n<script>\nvar copyText = function() {\n    var text = document.getElementById('input');\n    // 选中文本\n    text.select()\n    // 复制\n    document.execCommand('copy')\n}\n\n\n\n\n\n//🖤🖤🖤🖤生成直链🖤🖤🖤🖤\nfunction onMatch() {\n    var lanzurl =  document.getElementById(\"textSour\").value.match(/.*(http.*?)(#|\\s|提取码|密码|$)/)[1];\n    var mima = document.getElementById(\"textSour\").value.match(/(#|提取码|密码)/)? document.getElementById(\"textSour\").value.match(/[\\s\\S]*(码[\\s：:]*|#)(.*?)(\\,.*|\\s*$)/)[2]: document.getElementById(\"textPattern\").value;\n\nvar textMatchResult = set+\"?type=down&url=\"+ lanzurl + \"&pwd=\" + mima;\n\ndocument.getElementById(\"textMatchResult\").value = textMatchResult;\nreturn textMatchResult;\n}\n\n//🖤🖤🖤🖤复制直链🖤🖤🖤🖤\nvar copyText = function() {\n    var text = document.getElementById('textMatchResult');\n    // 选中文本\n    text.select()\n    // 复制\n    document.execCommand('copy')\n}\n\n//🖤🖤🖤清空输入框🖤🖤🖤\nfunction Empty() {\n $(\"#textSour\").value=\"\";\n $(\"#textPattern\").value=\"\";\n    $(\"#textMatchResult\").value=\"\";\n    $(\"#textReplace\").value=\"\";\n    $(\"#textReplaceResult\").value=\"\";\n    $(\"#textSour\").select();\n}\n\n//💔legado://import/auto?src=并且不能用这个自动判断语句，会出错。懒得再搞判断书源/订阅源/净化规则了💔\n\n//❤️非蓝奏链一键导入❤️\nvar auto = function() {\n    document.getElementById(\"source\").src =\"legado://import/auto?src=\" + encodeURIComponent(document.getElementById(\"textSour\").value);\n}\n\n//❤️书源一键导入❤️\nvar copyText7 = function() {\n    document.getElementById(\"source\").src =\"legado://import/bookSource?src=\" + encodeURIComponent(onMatch());\n}\n\n//❤️订阅源一键导入❤️\nvar copyText8 = function() {\n    document.getElementById(\"source\").src = \"legado://import/rssSource?src=\" + encodeURIComponent(onMatch());\n}\n\n//❤️净化规则一键导入❤️\nvar copyText9 = function() {\n    document.getElementById(\"source\").src = \"legado://import/replaceRule?src=\" + encodeURIComponent(onMatch());\n}\n\n</script>\n❗️0、1、结束❗️\n\n——————分割线————————\n{{}}\n<js>\nindex='{{$.index}}';\nif(index.match(/\\d+、\\d+、/)){\nreg=eval('/❗️'+index+'开始❗️[\\\\s\\\\S]+?❗️'+index+'结束❗️/g');\nreg2=eval('/❗️'+index+'..❗️/g');\nresult=result.match(reg)?result.match(reg)[0]:'<br/>'\nresult.replace(reg2,'')}else{result=''}\n</js>",
    "ruleImage": "https://agit.ai/butterfly/yd/raw/branch/yd/pic/lan.png{{}}",
    "ruleLink": "$.index\n@js:\nif(!result.match(/^http/) && !result.match(/\\d+、\\d+、/)){\nresult=\"https://www.coolapk.com/link?url=\"+encodeURIComponent(result)\n}else{result=result}",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "帮你导入::http://www.baidu.com?wd=0、2、【】《帮你导入v2》◎by.Thomas◎ 0、1、【】《难受云.直链生成or一键导入》◎by.md◎",
    "sourceComment": "帮你导入v2(beta)\nby.Thomas.23.3.2.\n\nby.md\n\n小说交流群462030508\nA群637775313不加人。若群炸了查看此群群资料找新家。\n\n内容取自网络，仅供学习参考试用，请24小时内删除。找到感兴趣的书籍请支持正版支持作者。\n\n海豚图标\nhttp://pp.myapp.com/ma_icon/0/icon_54155739_1657017481/256",
    "sourceGroup": "工具",
    "sourceIcon": "https://agit.ai/butterfly/yd/raw/branch/yd/pic/0blue.jpg",
    "sourceName": "直链生成",
    "sourceUrl": "帮你导入x2.Thomas",
    "style": "#jhss a{\nfont-size:10px;\ncolor:red;\ntext-decoration:none;\n}\n\n#jhss p{\ndisplay:inline-block;\nwidth:8em;\n}\n\n#jhss p{\nmargin:0;\npadding:0;\ncolor:#666;\n}\n\n#jhss div{\nmargin:0;\npadding:10px;\n}\n\n#jhss h1{\nmargin:0;\npadding:9px;\nfont-size:20px;\n}\n\n#jhss input{\nmargin:2px;\npadding:2px 6px;\nfont-size: 1em;\nbackground-color:rgba(200,200,200,0.5);\ncolor:#A00;\nborder:0;\nborder-radius: 3px;\ntext-decoration: none;\ntext-align:center;\n}\ntextarea{\nwidth:100%\n}\n.menu {\n\tjustify-content: space-between;\n\tmax-width: 900px;\n\tmargin: 0 5px;\n}\n.menu .button {\n\twidth: 55px;\n\theight: 15px;\n\tmin-height: 5px;\n\tmargin: 5px 0px;\n\tcursor: pointer;\n}\n.button text {\n\ttext-anchor: middle;\n\tdominant-baseline: middle;\n}\n\n.button rect {\n\twidth: 100%;\n\theight: 100%;\n\tfill: transparent;\n\tstroke: #666;\n\tstroke-width: 2px;\n}\n.button rect.busy {\n\tstroke: #fD1850;\n\tstroke-dasharray: 30 90;\n\tanimation: stroker 1s linear infinite;\n}\n.tabbox {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-flow: column;\n}\n.tabtitle {\n\tdisplay: flex;\n\tz-index: 1;\n\tjustify-content: center;\n}\n.tabtitle>div {\n\tcursor: pointer;\n\tpadding: 1px 10px 0 10px;\n\tborder-bottom: 3px solid transparent;\n\tfont-weight: bold;\n}\n.tabtitle>.this {\n\tcolor: #4f9da6;\n\tborder-bottom-color: #4EBBE4;\n}\n.tabbody {\n\tflex: 1;\n\tdisplay: flex;\n\tmargin-top: -1px;\n\tborder: 1px solid #A9A9A9;\n\theight: 0;\n}\n.tabbody>* {\n\tflex: 1;\n\tflex-flow: column;\n\tdisplay: none;\n}\n.tabbody>.this {\n\tdisplay: flex;\n}\n.tabbody>*>.titlebar{\n\tdisplay: flex;\n}\n.tabbody>*>.titlebar>*{\n\tflex: 1;\n\tmargin: 1px 1px 1px 1px;\n}\n.tabbody>*>.context {\n\tflex: 1;\n\tflex-flow: column;\n\tborder: 0;\n\tpadding: 5px;\n\toverflow-y: auto;\n}\n.tabbody>*>.inputbox{\n\tborder: 0;\n\tborder-bottom: #A9A9A9 solid 1px;\n\theight: 15px;\n\ttext-align:center;\n}\n.link>* {\n\tdisplay: flex;\n\tmargin: 5px;\n\tborder-bottom: 1px solid;\n\ttext-decoration: none;\n}\n#RuleList>label>* {\n\tbackground: #eee;\n\tpadding-left: 3px;\n\tmargin: 2px 0;\n\tcursor: pointer;\n}\n#RuleList input[type=radio] {\n\tdisplay: none;\n}\n#RuleList input[type=\"radio\"]:checked+* {\n\tbackground: #15cda8;\n}\n.isError {\n\tcolor: #FF0000;\n}\n#RuleJsonString{\nheight:600px\n}\nsvg text{\nfont-size:10px\n}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 162,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773225066826,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article",
    "ruleImage": "img.1@src",
    "ruleLink": "h2 a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@@.thecategory@text}} {{@@.thetime@text}} 💬{{@@.thecomment@text}}",
    "ruleTitle": "h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "Android::https://www.appinn.com/category/android/\niOS::https://www.appinn.com/category/ios/\nmacOS::https://www.appinn.com/category/mac/\nWindows::https://www.appinn.com/category/windows/\nChrome::https://www.appinn.com/category/chrome/\nWeb::https://www.appinn.com/category/online-tools/\n精选::https://www.appinn.com/category/featured/",
    "sourceGroup": "新闻",
    "sourceIcon": "https://img3.appinn.net/static/wp-content/uploads/cropped-Appinn-icon-512-192x192.png",
    "sourceName": "小众软件数码",
    "sourceUrl": "https://www.appinn.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 163,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236442248,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://oss.xrzww.com/mini/youdu/urllogo.png",
    "sourceName": "有毒小说",
    "sourceUrl": "https://m.youdubook.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 165,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236473467,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=528387707,1375937155&fm=26&gp=0.jpg",
    "sourceName": "掌阅小说",
    "sourceUrl": "https://m.zhangyue.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 167,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236451369,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_7731_1621508397/256",
    "sourceName": "书旗小说",
    "sourceUrl": "https://t.shuqi.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "concurrentRate": "",
    "contentBlacklist": "https://lupic.cdn.bcebos.com/,\nhttps://cpro.baidu.com/,\nhttps://eclick.baidu.com/,\nhttps://sofire.baidu.com/,\nhttps://analytics.woozooo.com/,\nhttps://statics.woozooo.com/,\nhttps://hm.baidu.com/,\nhttps://wwads.cn/code/,\nhttps://cdn.wwads.cn/,\nhttps://pagead2.googlesyndication.com,\nhttps://www.qlspx.com,\nhttps://sdk.51.la,\nhttps://abk.lingsiqiwu.com,\n\nhttps://googleads4.g.doubleclick.net,\nhttps://static.googleadsserving.cn,\nhttps://s0.2mdn.net,\nhttps://tpc.googlesyndication.com,\nhttps://www.googletagservices.com,\nhttps://cm.g.doubleclick.net,,\nhttps://star.jsyunmy.com,\nhttps://p.qlogo.cn,\nhttps://partner.googleadservices.com,",
    "customOrder": 171,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36\",\n\t\"upgrade-insecure-requests\": \"1\",\r\n\"accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\",\r\n\"accept-language\": \"zh-CN,en-US;q=0.9\",\r\n\"cookie\": \"down_ip=1\",\r\n\"x-requested-with\": \"cn.nr19.mbrowser\"\n}\n}",
    "injectJs": "// 是蓝奏云链接时\nif(/lanzou/.test(window.location.href)){\nArray.from(document.querySelectorAll(`\n\t.mt2:last-of-type,.appreport,.n_login,\n\tdiv[style*=\"color: #8a6d3b;\"]\n`),$=>$.style.display='none');\n}\n\n\n//选择需要删除的标签，以,分隔\nitems = document.querySelectorAll(`\n.stealth-scroll,\n\n#evaluate-box,\n.project-operation,\n.recommend-footer,\n\n.project-desc2,\n.side-widget,\n\n.header_nav,\n.under,\n\n.abox-item\n`)\n\n//把选择的html值改成空\nArray.from(items,(item)=>{\n\titem.innerHTML = ``\n\titem.style.display = `#m-splitter`\n})",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "",
    "loginUrl": "",
    "preload": false,
    "ruleArticles": "<js>\ntry {\n    $ = JSON.parse(src).text;\n    if ($ == \"no file\") $ = [];\n} \n\n//♥catch。。。\ncatch (err) {\n\n    //💚💚网站整合\n     if (baseUrl.match(/www\\.baidu\\.com\\?wd=/)) {\n\neval(String(source.sourceComment));\n//eval(String(source.bookSourceComment));\n//java.put('pic',String(pic))\n\n        $ = [];\n        baseUrl.replace(/^.*?wd=\\s*/,'').replace(/\\,/g,',{\"headers\":{\"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 CatYuedu Mobile Safari/537.36\"}}').\n        split(/\\s*♞♞\\s*/).map($$ => $.push({\n            name_all: $$.match(/.*?《(.*?)》/)[1],\n            time: $$.match(/◎.*?◎/) ? $$.match(/.*?◎(.*?)◎/)[1].replace(/□/,'▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁').replace(/■/,'▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃').replace(/♡/,'作者的发布链接｜随缘更新').replace(/🦁/,'｜编程狮｜w3cschool.cn｜') : \"\",\n            uri1: $$.match(/【.*?】/) ? $$.match(/.*?【(.*?)】/)[1] : \"\",\n            url: git.match(/\\/gh$/) ? \n $$.match(/^([^【《◎]*),?/)[1].replace(/^\\//,yck).replace(/🧡💛/,git) : \n $$.match(/^([^【《◎]*),?/)[1].replace(/^\\//,yck).replace(/🧡💛/,git).replace(/\\@/,'/')\n        }));\n    }\n    //💚💚0 网站整合结束\n\n\n    //💚💚蓝奏云\n    else {\n\n        //🧡🧡🧡蓝奏云非分组链接\n        if (String(java.getString('text.举报文件@href')).length) {\n            $ = [{\n                name_all: String(java.getString('class.md@textNodes')),\n                icon: String(java.getString('class.md@textNodes')).replace(/.*\\./, ''),\n                size: String(java.getString('class.mtt@text')).replace(/\\( /, '').replace(/ \\)/, ''),\n                time: String(java.getString('class.mf@textNodes')).replace(/.*\\n/, ''),\n                uri: baseUrl.replace(/^(.+com).*\\/(.+)$/, '$2'),\n                url: baseUrl.replace(/^(.+com).*\\/(.+)$/, '$1/tp/$2')\n            }]\n        }\n        //🧡🧡🧡蓝奏云非分组结束\n\n\n        //🧡🧡🧡取消分享\n        else if (String(java.getString('.off@text')).match(/取消分享/)) {\n            $ = [{\n                name_all: java.getString('.off@text'),\n                time: baseUrl.replace(/[#\\?].*/g, ''),\n                url: baseUrl.replace(/[#\\?].*/g, '')\n            }]\n        }\n        //🧡🧡🧡取消结束\n\n\n        //🧡🧡🧡蓝奏云分组链接\n        else {\n            json = [];\n            name = java.getString('.user-radio@text||title@text')\n            java.getElements('#folder .mlink').forEach(a => {java.setContent(a);\n      json.push({\n      \t    name_all: java.getString('.filename@textNodes'),\n          url: java.getString('a@href'),\n          time: '🗂️ folder　📑 ' + (String(java.getString('.filesize@text')) || name) })\n    })\njava.setContent(src);\n\n\n            mat = baseUrl.match(/^(.*?\\.com)[^##]*\\/(.+)$/)\n            url = mat[1]\n            uri = mat[2]\n\n            function $(reg) {\n                return uri.match(reg) ? true : false}\n\n\n            //get【pwd】(链接提取码)\n            pwd =\n$(/##[^【]/) ? uri.match(/##(.*?)(【|$)/)[1] :\"\";\n\n\n\nhead = {method: \"POST\", params: {uri: uri,\nimg: $(/【[^】]/)?uri.match(/【([^】]+)/)[1] :\"\"}}\n\n\n            //get 【body】\n            eval(src.match(/var pgs;([\\s\\S]*?pgs.+;)/)[1]);\n            eval('$=' + src.match(/data :([\\s\\S]*?\\})/)[1]);\n            head.body = Object.keys($).map(key => key + \"=\" + $[key]).join('&');\n\n\n            //补全【url】\nurl += \"/filemoreajax.php,\" + JSON.stringify(head);\n\n            //ajax\n            $ = JSON.parse(java.ajax(url));\n            $ = json.concat($.text != 0 ? $.text :\n             //密码错误提示\n             [{name_all: $.info,\n               time: uri.replace(/[#\\?].*/, '') + $.info,\n               url: baseUrl.replace(/[#\\?].*/, '') }]\n                                        )\n            baseUrl = url\n        }\n        //🧡🧡🧡蓝奏分组结束\n\n    }\n    //💚💚蓝奏结束\n\n}\n//♥catch(err)结束\n\njava.put('url', baseUrl);\nJSON.stringify($);\n</js>$.[*]",
    "ruleContent": "",
    "ruleDescription": "❗️0、0、开始❗️\n❗️0、0、结束❗️\n\n\n\n\n{{}}@js:\nurl=String(java.getString('$.url')).trim();\n\n\n\n//【..导入】\nif(url.match(/^..导入|^♥/)){\nuri=url.replace(/导入.*/,'');\nurl=url.replace(/.*导入|♥/,'');\npath =\n(uri==\"一键\"||uri==\"自动\"||url==\"♥.*\")?\"auto\":\nuri==\"书源\"?\"bookSource\":\nuri==\"订阅\"?\"rssSource\":\nuri==\"净化\"?\"replaceRule\":\n\"\";\nurl=url.match(/^legado\\:\\/\\//)?url:`legado://import/${path}?src=`+url;\nurl = String(url).replace(/^(.*?src=)(.*)/,(mat, $1, $2)=>{\n  return $1+encodeURIComponent($2);\n});\n\n\nresult=`<title>{{$.name_all}}</title>\n<iframe src=\"${url}\" hidden></iframe>\n<br>\n<md3><b>{{$.name_all}}</b></md3>\n\n<br>\n<br><md4>\n　　❤️导入不成功？多导入几次试试。<br>\n<br></md4>\n\n<a href=\"${url}\" class=\"button\">◎ 一键导入 ◎</a>\n\n<br>\n<br><md4>\n　资源链接，点击复制♥</md4>\n<center><textarea id=\"copy\" onclick=\"copy()\">${decodeURIComponent(String(url).replace(/legado.*?src=/,''))}</textarea>\n{{$.time}}</center>\n<br>\n<md5>\nrssSource by.Thomas.　　 md轻改&收集整理<br>\n资源取自网络，仅作参考试用，请24小时内删除<br></md5>\n\n<script>\nfunction copy(){\n\tdocument.getElementById('copy').select()\n\tdocument.execCommand('copy')\n\talert(\"复制成功\")\n}\n</script>`}\n\n\n//【自定义html】\nelse if(url.match(/\\d+、\\d+、/)){\nreg=new RegExp('❗️'+url+'开始❗️\\\\s*([\\\\s\\\\S]+?)\\\\s*❗️'+url+'结束❗️');\n//默认禁止放大缩小\nresult=result.match(reg)?\n'<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">'+result.match(reg)[1]:'<br>未找到对应html'\n}\n\nelse{result=''}",
    "ruleImage": "@js:\nn=`{{$.name_all}}` ;\nuri1=`{{$.uri1}}` ;\n\nsrc =\n\turi1 ? uri1 :\n\n//文件名判断使用对应图标✱\n//baseUrl.match(/【(.*?)[】$]/) ?baseUrl.match(/【(.*?)(】|$)/)[1] :\n\nbaseUrl.match(/423down/)? \"423down.png\" :\nbaseUrl.match(/lxapk/)? \"lxapk.png\" :\nbaseUrl.match(/yoyodadada/)? \"yoyo.png\" :\n\n\nn.match(/\\.zip/i)? \"zip.png\" :\nn.match(/md|迷迭/)? \"md.png\" :\nn.match(/legado|阅读Pro/i)? \"yuedu.jpg\" :\nn.match(/tts|语音|讯飞语记/i)? \"tts.png\" :\nn.match(/书源|book/)? \"sy.png\" :\nn.match(/rss|订阅/)? \"dy.png\" :\nn.match(/净化/)? \"jh.png\" :\nn.match(/漫画|comic/i)? \"mh.png\" :\nn.match(/lequ/)? \"sy.png\" :\n//文件名判断apk图标\nn.match(/\\.apk/)? \"apk.png\" :\n\n//蓝奏云盘设定的图片or为空时\nbaseUrl.match(/【[^】$]/)? baseUrl.match(/【(.*?)(】|$)/)[1]:`lan.png`;\n\n\n//md图片简写补全。\npic=String(source.sourceComment).match(/pic\\=(.*)/)[1] ;\n\npic= \n//⬇︎ agit ⬇︎\npic==`0` ? `https://agit.ai/yd/00rose/raw/branch/o/${src}`:\npic==`1` ?\n`https://agit.ai/yd/01pink/raw/branch/o/${src}` :\npic==`2` ?\n`https://agit.ai/yd/02blue/raw/branch/o/${src}` :\npic==`3` ?\n`https://agit.ai/yd/03green/raw/branch/o/${src}` :\npic==`4` ? `https://agit.ai/yd/04gear/raw/branch/o/${src}` :\npic==`5` ? `https://agit.ai/yd/05green/raw/branch/o/${src}` :\npic==`6`? `https://agit.ai/yd/06red/raw/branch/o/${src}`:\npic==`7` ?\n`https://agit.ai/yd/07blackred/raw/branch/o/${src}` :\npic==`8` ?\n`https://agit.ai/yd/08black/raw/branch/o/${src}` :\npic==`9` ?\n`https://agit.ai/yd/09note/raw/branch/o/${src}` :\n\npic==`10`?`https://agit.ai/yd/03green2/raw/branch/o/${src}`:\npic==`11`?`https://agit.ai/yd/04gear2/raw/branch/o/${src}` :\npic==`12`?`https://agit.ai/yd/04gear3/raw/branch/o/${src}`:\n\n//⬇︎gitee⬇︎\npic==`a` ?`https://gitee.com/visita/yd/raw/master/00rose/${src}` :\npic==`b` ?\n`https://gitee.com/visita/yd/raw/master/01pink/${src}` :\npic==`c` ?\n`https://gitee.com/visita/yd/raw/master/02blue/${src}` :\npic==`d` ?\n`https://gitee.com/visita/yd/raw/master/03green/${src}` :\npic==`e` ?\n`https://gitee.com/visita/yd/raw/master/04gear/${src}` :\npic==`f` ?`https://gitee.com/visita/yd/raw/master/05green/${src}` :\npic==`g` ?\n`https://gitee.com/visita/yd/raw/master/06red/${src}` :\npic==`h` ?\n`https://gitee.com/visita/yd/raw/master/07blackred/${src}` :\npic==`i` ?\n`https://gitee.com/visita/yd/raw/master/08black/${src}` :\n//pic==`j` ?\n`https://gitee.com/visita/yd/raw/master/09note/${src}` ;\n\nsrc=src.match(/^http/) ? src : pic ;\nsrc",
    "ruleLink": "$.id@js:\nurl=`{{$.url||$.sourceUrl}}`\n\nif(result){url+=`{{$.id}}`;\n}",
    "ruleNextPage": "@js:\ntry {\n    url = String(java.get('url'));\n    url = url.replace(/(pg=)(\\d+)/, (mat, $1, $2) => {\n        return $1 + (~~$2 + 1)\n    }).replace(url, '');\n} catch (err) {\n    url = \"\"\n}\nurl",
    "rulePubDate": "💾 {{$.icon}}　♥ {{$.size}}　⏱️ {{$.time}}\n##💾 　♥ 　⏱️\\s*",
    "ruleTitle": "$.name_all",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📚书源::http://www.baidu.com?wd=https://0427.118pan.com/o18659【yuedu.jpg】《📙阅读app｜打包&分享by遇见》◎点文件名右空白处 显示下载按钮 直接下载◎♞♞https://legado.cn/,【lt.png】《📚阅读论坛 legado.cn》◎□◎♞♞/yuedu/shuyuan/index.html【mu.jpg】《📚源仓库｜阅读书源》◎www.yckceo.vip◎♞♞/yiciyuan/tuyuan/index.html【mu.jpg】《🎨源仓库｜异次元漫画app下载 ＆ 图源 （与阅读app互不通用）》◎■◎♞♞♥https://www.gitlink.org.cn/api/yi-c/yd/raw/sy.json?ref=master【sy.png】《📚一程书源》◎♡◎♞♞♥https://www.gitlink.org.cn/api/yi-c/yd/raw/dy.json?ref=master【dy.png】《📚一程订阅》◎♡◎♞♞https://cdn05042023.gitlink.org.cn/yi-c/yd【rq.png】《＃ 查看日期》◎◎♞♞https://flowus.cn/share/923f5a35-6dcf-47d1-b8eb-b9c5ef3ed39b,【wy.png】《ℹ️一程主页》◎□◎♞♞♥🧡💛/PB-pobing/pobing@pb/sy.json【sy.png】《📚破冰书源》◎♡◎♞♞https://agit.ai/butterfly/pobing,【rq.png】《＃ 查看日期》◎□◎♞♞♥🧡💛/zmn001125/booksources@master/sources/guaner.txt【sy.png】《📚关耳书源.女频向》◎♡◎♞♞https://agit.ai/butterfly/guaner,【rq.png】《＃ 查看日期》◎□◎♞♞♥🧡💛/XIU2/Yuedu@master/shuyuan【sy.png】《📚XIU2书源》◎♡◎♞♞https://gitea.com/XIU2/Yuedu/commits/branch/master/shuyuan,【rq.png】《＃ 查看日期》◎□◎♞♞♥🧡💛/cyao2q/yuedu@master/shuyuan【sy.png】《📚cyao2q书源》◎♡◎♞♞https://agit.ai/butterfly/cyao2q【sy.png】《＃ 查看日期》◎□◎♞♞♥https://www.gitlink.org.cn/api/haxc/book/raw/bookSource.json?ref=master【mh.png】《🎨Haxc阅读漫画源》◎♡◎♞♞https://cdn05042023.gitlink.org.cn/haxc/book【rq.png】《＃ 查看日期》◎□◎♞♞♥https://909527.xyz/tts/tts_list【tts.png】《🎧TTS｜吱声ai在线语音引擎（抱歉不知道哪位大佬提供的）》◎■◎♞♞http://yuedu.miaogongzi.net/gx.html,【mgz.gif】《📚喵公子整理（一程  Haxc 破冰 不世玄奇 为作者发布链接）》◎◎♞♞https://cdn05042023.gitlink.org.cn/miaogongzi/legado/【mgz.gif】《＃ 更新日期（源仓库 Namo 漫画1 漫画2 关耳 黄凡凡）》◎□◎♞♞https://legado.aoaostar.com/,【yj.png】《📚aoaostar （标示的日期仅为采集刷新日期）》◎□◎♞♞https://v2.jt12.de/doc/,【md.png】《‼️橘涂书源网盘（阅读app内置）设置教程》◎‼️与喵公子书源网盘2选1使用◎♞♞https://apis.jxcxin.cn/user/goods.html【md.png】《‼️apis解析若失败，按源注释操作，注册账号，获取key》◎◎♞♞♥https://agit.ai/butterfly/yd/raw/branch/yd/local.json【md.png】《📚迷迭订阅local版》◎‼️更新后打开订阅，右上，刷新分类◎♞♞http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=a9JODTNzlrw31t0Q8AAlLOERgKBt9ms6&authKey=hDz11n4lB6Qv8R3U9acMcoYg62TwLTZc%2FbHlGIpswLsrbwtnMlOXiXb5mAQ9ZRTI&noverify=0&group_code=892966579【md.png】《QQ小说交流群892966579点我跳转加群》◎若有异常，请手动加群◎\n\n\n\n教程1::http://www.baidu.com?wd=http://dh.sqst.xyz/,【dh.png】《ℹ️大哈导航 dh.sqst.xyz‼️优惠资讯、购物大都是推广佣金链，》◎◎♞♞https://dlidli.wang/,【dh.png】《ℹ️嘀哩导航 dlidli.wang‼️你买他赚钱。涉及资金请谨慎。》◎◎♞♞https://adzhp.net/,【dh.png】《ℹ️爱达导航 adzhp.net‼️尽量不要通过导航里的链接跳转网购。》◎□◎♞♞https://i.jandan.net/pic【b002.png】《🐣煎蛋 jiandan.net》◎■◎♞♞https://alanskycn.gitee.io/teachme/Rule/source.html,【jc.png】《〔官方〕书源规则：从入门到入土》◎□◎♞♞https://www.bilibili.com/video/BV1zk4y1T7PD/,【jc.png】《视频.关耳书源教程1▶️第一个书源。utf-8搜索地址有关键词》◎B站up主：萌芽中的男生。加音量加字幕。◎♞♞https://www.bilibili.com/video/BV1PN411Q7U6/,【jc.png】《视频.关耳书源教程2▶️第二个书源。GBK编码》◎B站up主：萌芽中的男生。加音量加字幕。◎♞♞https://www.bilibili.com/video/BV1N14y1m7iP/,【jc.png】《视频.关耳书源教程3▶️第三个书源。post搜索地址无关键词》◎B站up主：萌芽中的男生。加音量加字幕。◎♞♞https://www.bilibili.com/video/BV1ga4y1w7AB/,【jc.png】《视频.关耳书源教程4▶️发现规则、#&lrm;#替换、请求头》◎B站up主：萌芽中的男生。加音量加字幕◎♞♞https://www.bilibili.com/video/BV1cX4y1i7zz/,【jc.png】《视频.关耳书源教程5▶️常用js语法》◎B站up主：萌芽中的男生。加音量加字幕◎♞♞https://www.bilibili.com/video/BV12N411S7jd/,【jc.png】《视频.关耳书源教程6▶️漫画正文规则》◎B站up主：萌芽中的男生。加音量加字幕◎♞♞https://www.bilibili.com/video/BV1YV4y1a7cL/,【jc.png】《视频.关耳书源教程7▶️几个问题》◎□◎♞♞https://www.w3cschool.cn/regex_rmjc/regex_rmjc-n5a328cn.html,【jc.png】《📖正则表达式30分钟入门教程》◎🦁◎♞♞https://www.w3cschool.cn/regex/ogzw1nyz.html,【jc.png】《📖轻松学习正则表达式》◎🦁◎♞♞https://www.w3cschool.cn/regexp/2yjd1pq6.html,【jc.png】《📖正则表达式》◎□◎♞♞https://agit.ai/butterfly/JsoupXpath/src/branch/master/README.md,【jc.png】《　↳ XPath库的说明（官方教程里提及的github链接的镜像）》◎◎♞♞https://agit.ai/butterfly/horseshoe/src/branch/master/README.md,【jc.png】《　↳ 2018-10-Regex专题（官方教程提及的github链接的镜像）》◎■◎♞♞https://jandan.net/bbs#/topic/210,【b002.png】《ℹ️煎蛋国内图片加速（如何确保无聊图正常显示）》◎□◎♞♞https://www.xiaoji001.com/download.html【yx.png】《🐤小鸡模拟器xiaoji001.com （掌机、家用游戏机＆相关游戏）》◎◎♞♞http://www.ponyemu.com/index_m.html【yx.png】《🦄小马模拟器ponyemu.com （掌机、家用游戏机＆相关游戏）》◎■◎\n\n\n\n教程2::http://www.baidu.com?wd=https://m.runoob.com/,【jc.png】《RUNOOB [少林武功总纲] 秃子的成神之路  你秃了 但也变强了》◎www.runoob.com｜m.runoob.com◎♞♞https://c.runoob.com/,【gj.png】《菜鸟工具 c.runoob.com》◎□◎♞♞https://www.w3cschool.cn/tutorial,【jc.png】《W3Cschool [少林武功总纲] 秃子的成神之路  你秃了 但也变强了》◎🦁◎♞♞https://www.w3cschool.cn/webtools/,【gj.png】《在线工具 w3cschool.cn》◎■◎♞♞https://www.w3cschool.cn/html/html-intro.html,【jc.png】《HTML 教程》◎🦁◎♞♞https://www.w3cschool.cn/html5/html5-intro.html,【jc.png】《HTML5 教程》◎🦁◎♞♞https://www.w3cschool.cn/htmltags/html-reference.html,【jc.png】《HTML 参考手册》◎□◎♞♞https://www.w3cschool.cn/css/css-intro.html,【jc.png】《CSS 教程》◎🦁◎♞♞https://www.w3cschool.cn/css3/a2yscflg.html,【jc.png】《CSS3 教程》◎🦁◎♞♞https://www.w3cschool.cn/cssref/3ps212do.html,【jc.png】《CSS 参考手册》◎□◎♞♞https://www.w3cschool.cn/javascript/js-intro.html,【jc.png】《JavaScript 教程》◎🦁◎♞♞https://www.w3cschool.cn/nwfchn/c56iqozt.html,【jc.png】《JavaScript 标准参考教程》◎🦁◎♞♞https://www.w3cschool.cn/jsref/jsref-jsref-tutorialnmor1pl5.html,【jc.png】《JavaScript 和 HTML DOM 参考手册》◎□◎♞♞https://www.w3cschool.cn/jquery/jquery-intro.html,【jc.png】《jQuery 教程》◎🦁◎♞♞https://www.w3cschool.cn/ajax/nr583fns.html,【jc.png】《AJAX 教程》◎🦁◎♞♞https://www.w3cschool.cn/json/json-tutorial.html,【jc.png】《JSON 教程》◎🦁◎♞♞https://www.w3cschool.cn/xpath/xpath-xpath-tutorialij9m1t5i.html,【jc.png】《XPath 教程》◎□◎♞♞https://www.w3cschool.cn/python3/python3-tutorial.html,【jc.png】《Python3 教程》◎🦁◎♞♞https://www.w3cschool.cn/java/java-tutorial.html,【jc.png】《Java 教程》◎🦁◎♞♞https://www.w3cschool.cn/php/php-tutorial.html,【jc.png】《PHP 教程》◎🦁◎♞♞https://www.w3cschool.cn/aspnet/aspnet-tutorial.html,【jc.png】《ASP.NET 教程》◎🦁◎♞♞https://www.w3cschool.cn/cpp/cpp-intro.html,【jc.png】《C++ 教程》◎🦁◎♞♞https://www.w3cschool.cn/linux/linux-tutorial.html,【jc.png】《Linux 教程》◎🦁◎♞♞https://www.w3cschool.cn/git/git-tutorial.html,【jc.png】《Git 教程》◎🦁◎\n\n\n\n📙喵公子::https://miaogongzi.lanzout.com/b01rgkhhe\n\n📙MD.阅读::https://mmxmm.lanzoue.com/b0d6c09hi##iori\n\n📙不似苏::https://busisu.lanzoub.com/s/yuedupro##777\n\n//🅻乐享/黑鹰\n📙搜书大师::https://lxapk.lanzoub.com/b05sf0ngd##cpj0\n\n🅨TTS 讯飞语记::https://yoyodadada.lanzouw.com/b01co9qad##et0k\n\n土狗/M浏览器::https://www.lanzoux.com/s/tgllq##【tugou.png】\n\n🅻ES文件::https://lxapk.lanzouw.com/b05sf5etc##f5fb【es.png】\n\n④ES文件::https://423down.lanzouo.com/b0f1d7s2h\n\n④小黄鸟抓包::https://423down.lanzouv.com/b0f1b9v6j\n\n④小说软件::https://423down.lanzouv.com/b0f1cdr9i\n\n🅨笔趣阁::https://yoyodadada.lanzouw.com/b01fi8imd##4jkl\n",
    "sourceComment": "yck=1\n/*▔▔▔▔▔▔▔▔\n⬆︎设置源仓库地址\n1  www.yckceo.com\n2  www.yckceo1.com\n3  www.yck2.com\n▁▁▁▁▁▁▁▁*/\n\n\ngit=1\n/*▔▔▔▔▔▔▔▔\n⬆︎设置关耳、破冰、XIU2、cyao2q书源链接\n0  ghcy.eu.org\n1  raw.fgit.cf\n2  521github.com\n3  github.moeyy.xyz\n4  ghproxy.net\n5  fastly.jsdelivr.net/gh\n6  gcore.jsdelivr.net/gh\t\n7  jsdelivr.b-cdn.net/gh\n8  cdn.jsdelivr.net/gh\n9  raw.gitmirror.com\n部分网友无法查看更新日期\n▁▁▁▁▁▁▁▁*/\n\n\n/*▔▔▔▔▔▔▔▔\npic=1\n⬆︎设置图片样式\n★★ agit ★★\n0  红+\n1  粉++\n2  蓝++\n3  绿+  10\n4  绿齿轮  11  12\n5  绿字印章+\n6  红字印章+\n7  红字 黑白背景\n8  蓝字黑底（夜间）-\n9  卡其色 记事板-\n★★gitee★★\na  红+\nb  粉++\nc  蓝++\nd  绿+\ne  绿齿轮\nf   绿字印章+\ng  红字印章+\nh  红字 黑白背景\ni   蓝字黑底（夜间）-\nj   卡其色 记事板-\n▁▁▁▁▁▁▁▁*/\n\n\n/*▔▔▔▔▔▔▔▔\n订阅源图标可自己复制链接替换\n（拉到顶部第三项）\n★★ agit 图标★★\nhttps://agit.ai/yd/06red/raw/branch/o/0green.jpg\nhttps://agit.ai/yd/06red/raw/branch/o/001.png\n★★gitee图标★★\nhttps://gitee.com/visita/yd/raw/master/06red/0green.jpg\nhttps://gitee.com/visita/yd/raw/master/06red/001.png\n▁▁▁▁▁▁▁▁*/\n\n\n/*▔▔▔▔▔▔▔▔\nrss by.Thomas。  md小改&收集整理。\n\n小说交流群892966579\nA群637775313不加人。若群炸了查看此群群资料找新家。\n\n内容取自网络，仅作学习参考，请24小时内删除。找到感兴趣内容请去支持正版。\n▁▁▁▁▁▁▁▁*/\n\n\nyck=yck==1 ? `https://www.yckceo.com/` :\nyck==2 ? `https://www.yckceo1.com/` :\nyck==3 ? `https://www.yck2.com/` :\n`https://yckceo.com/` ;\n\n\ngit=git==0 ? `https://ghcy.eu.org/https://raw.githubusercontent.com` :\ngit==1 ? `https://raw.fgit.cf` :\ngit==2 ? `https://521github.com/extdomains/raw.githubusercontent.com` :\ngit==3 ? `https://github.moeyy.xyz/raw.githubusercontent.com` :\ngit==4 ? `https://ghproxy.net/raw.githubusercontent.com` :\ngit==5 ? `https://fastly.jsdelivr.net/gh` :\ngit==6 ? `https://gcore.jsdelivr.net/gh\t` :\ngit==7 ? `https://jsdelivr.b-cdn.net/gh` :\ngit==8 ? `https://cdn.jsdelivr.net/gh` :\ngit==9 ? `https://raw.gitmirror.com` :\n//git==9 ?`https://github.moeyy.xyz/https://raw.githubusercontent.com` :\n`https://ghproxy.net/https://raw.githubusercontent.com` ;",
    "sourceGroup": "书源",
    "sourceIcon": "http://www.yckceo.com/favicon.ico",
    "sourceName": "阅读难受1",
    "sourceUrl": "https://www.lanzoux.com/#2024md1",
    "style": "body {\r\n    font-family: 'Roboto', sans-serif;\r\n    display: flex;\r\n    flex-direction: column;\r\n    height: 100vh;\r\n    margin: 5;\r\n    background-color: #F8F8F8;\r\n}\r\n\nmd1 {\n    color: #444444;\n    font-size: 2em; \r\n    margin: 40px 0;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\r\nmd2 {\r\n    color: #444444;\n    font-size: 1.4em; \n    margin-bottom: 40px;\n    line-height: 1.8;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\r\nmd3 {\n    color: #212121;\n    font-size: 1.6em; \r\n    margin: 10px 0;\n    font-weight: 400;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\nmd4 {\n    font-size: 1.1em; \r\n}\n\r\nmd5 {\r\n    font-size: 1em; \n    color: #222222;\n    justify-content: center;\n    text-align: center;\r\n}\r\n\ntextarea {\n    width:98%;\r\n    height: auto;\r\n    min-height: 54px;\n    max-height: 500px;\r\n    overflow-y: auto;\n    border-radius:5px;\r\n    border: 1px solid #BDBDBD;\r\n}\r\n\r\n.button {\n    display: block; \r\n    margin-left: auto;\n    margin-right: auto;\r\n    padding: 6px 10px;\r\n    background-color: #FF5722;\r\n    border: none;\r\n    color: white;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n    text-decoration: none;\r\n    margin-top: 1px;\r\n    font-size: 18px;\r\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\r\n    transition: background-color 0.5s,\n    transform 0.4s;\r\n}\r\n\r\n.button:hover {\r\n    background-color: #FF5722;\r\n    transform: translateY(-2px);\r\n}\r\n\r\n.button:active {\r\n    box-shadow: 0 3px 5px rgba(0, 0, 0, 0.4);\r\n    transform: translateY(0);\r\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 172,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236463197,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://p2.ssl.qhimgs1.com/t018ed3a3c0da49b9bc.png",
    "sourceName": "SF轻小说",
    "sourceUrl": "https://m.sfacg.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 173,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208195665,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://mms0.baidu.com/it/u=2344825277,2420529963&fm=253&app=138&f=JPEG&fmt=auto&q=75?w=500&h=500",
    "sourceName": "QQ排行榜",
    "sourceUrl": "https://ubook.reader.qq.com/book-rank/535189",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 179,
    "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": 1775591464823,
    "loadWithBaseUrl": true,
    "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$.[*]",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "\n\n💾 网盘::https://pan.baidu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/bdwp.png?ref=master】《百度网盘》◎好不好用谁知道◎★https://www.jianguoyun.com/d/home#/home【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/jgy.png?ref=master】《坚果云》◎免费个人网盘、网络存储盘◎★https://up.woozooo.com/account.php?action=login&ref=/mydisk.php【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/lzy.png?ref=master】《蓝奏云》◎云存储、下载无限制◎★https://pan.miaogongzi.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/my.png?ref=master】《Meow云》◎在线下载应用，同步手机数据和查找手机◎★https://m.fastsoso.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/fastsoso.png?ref=master】《fastsoso》◎网盘搜索◎\n\n\n🔎 搜索::https://m.sm.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/sm.png?ref=master】《神马搜索》◎基于移动互联网的搜索引擎◎★https://m.baidu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/bd.png?ref=master】《百度搜索》◎全球最大的中文搜索引擎◎★https://m.so.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/360ss.png?ref=master】《360搜索》◎360搜索SO靠谱◎★https://wap.sogou.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/sg.png?ref=master】《搜狗搜索》◎搜狗搜索一搜既得◎★https://so.toutiao.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/tt.png?ref=master】《头条搜索》◎精准、专业、快捷的搜索服务◎★https://fsoufsou.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/fs.png?ref=master】《F搜》◎类似Google、必应、百度一样的搜索引擎◎★https://cn.bing.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/by.png?ref=master】《必应搜索》◎必应可帮助你将理论付诸实践◎★https://www.google.com.hk/webhp?hl=zh-CN&sourceid=cnhp【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/gg.png?ref=master】《谷歌搜索》◎🚀VPN｜全球最大的搜索引擎◎★https://duckduckgo.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/ddg.png?ref=master】《DuckDuckGo》◎🚀VPN｜隐私保护，化繁为简。◎★https://m.hao123.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/hao123.png?ref=master】《hao123导航》◎全网优质网址及资源的中文上网导航◎★http://h5.mse.360.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/360dh.png?ref=master】《360导航》◎一个主页，整个世界◎★http://hao.uc.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/uc.png?ref=master】《UC网址导航》◎UC网址导航是一个多功能的网站◎★http://m.duba.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/db.png?ref=master】《毒霸网址大全》◎安全实用的上网导航◎\n\n\n🌟 百科::https://baike.baidu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/bd.png?ref=master】《百度百科》◎全球领先的中文百科全书◎★https://baike.sogou.com/m/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/sg.png?ref=master】《搜狗百科》◎中文网络百科全书◎★https://m.baike.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/tt.png?ref=master】《头条百科》◎准确、全面、易读、丰富的网络百科全书◎★http://zh.wikipedia.org/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/wjbk.png?ref=master】《维基百科》◎🚀VPN｜自由的百科全书◎★https://www.ruzong.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/rzw.png?ref=master】《儒宗网》◎汉语词典◎★https://www.bkzw.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/bkzw.png?ref=master】《百科植物》◎多样性、功能性、禁忌、生活小窍门◎★http://m.yanquecao.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/yqc.png?ref=master】《燕雀草》◎关于植物的百科全书◎★https://www.guidaye.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/zwbk.png?ref=master】《植物百科》◎有趣的植物百科知识◎\n\n\n💯 字体::https://ziyouziti.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/zyzt.png?ref=master】《自由字体》◎国内权威的免费字体网站◎★https://www.mianfeiziti.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/ztxz.png?ref=master】《字体下载》◎各种免费可商用字体下载◎★https://www.mianfeiziti.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/mfzt.png?ref=master】《免费字体》◎🔎登录｜完全免费的字体下载网站◎★https://www.100font.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/100font.png?ref=master】《100font》◎免费商用字体下载网站◎★https://freefonts.top/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/ztsj.png?ref=master】《字体世界》◎各种字体免费下载和在线预览◎★https://www.maoken.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/mkw.png?ref=master】《猫啃网》◎免费商用中文字体下载网站◎★https://m.font.chinaz.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/zzzt.png?ref=master】《站长字体》◎各种字体免费下载网◎★http://www.zku.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/zkw.png?ref=master】《字库网》◎在线字体、下载、商业授权、字体转换◎★https://www.qqxiuzi.cn/daohang.htm【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/qqxz.png?ref=master】《千千秀字》◎字体导航、在线转换◎★https://m.fonts.net.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/zttx.png?ref=master】《字体天下》◎部分商用字体免费下载◎\n\n\n🗂️ 软件::https://www.52pojie.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/wapj.png?ref=master】《吾爱破解》◎LSG，安卓破解，病毒分析◎★https://www.lxapk.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/lxrj.png?ref=master】《乐享软件》◎专注于手机应用分享网站◎★https://www.yeyulingfeng.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/yylf.png?ref=master】《夜雨聆风》◎专注于互联网资源分享◎★https://foxirj.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/fxrj.png?ref=master】《佛系软件》◎精品Windows,macOS破解软件下载◎★https://www.rjsos.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/rjsos.png?ref=master】《软件SOS》◎软件安装、激活工具下载◎★https://www.appinn.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/xzrj.png?ref=master】《小众软件》◎分享免费、小巧、实用、有趣、绿色软件◎★https://www.yxssp.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/yxrj.png?ref=master】《异星软件》◎推荐精选好用实用的软件及资源◎★https://www.lan-sha.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/ls.png?ref=master】《蓝鲨》◎让您在互联网的海洋里自由的遨游◎★https://www.ghxi.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/ghbk.png?ref=master】《果核剥壳》◎还原软件的本质◎★https://tmioe.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/zprj.png?ref=master】《杂铺软件》◎发现美好，分享快乐◎★https://www.fy6b.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/fyyy.png?ref=master】《枫音应用》◎免费、绿色、无毒无广的实用软件◎\n\n\n🗃️ 资源::https://www.jspoo.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/jspdh.png?ref=master】《聚神铺导航》◎超实用的资源网站◎★https://www.9eip.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/wmdz.png?ref=master】《完美地址》◎好用好玩的宝藏资源分享站◎★https://www.ak47s.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/ak47wzdh.png?ref=master】《AK47网址导航》◎夜雨聆风旗下绿色无广告的网址导航◎★https://ailongmiao.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/lmw.png?ref=master】《龙猫网》◎有态度的网址导航◎★https://m.ziyuanm.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/zym.png?ref=master】《资源猫》◎分类目录整合全网资源◎★https://www.tboxn.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/tbox.png?ref=master】《Tbox导航》◎优质在线工具的导航网站◎★https://xinquji.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/xqj.png?ref=master】《新趣集》◎一起发现有趣的新产品◎★https://www.zmt.wiki/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/xmtdh.png?ref=master】《新媒体导航》◎自媒体维基◎★https://www.jizhihezi.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/jzhz.png?ref=master】《集知盒子》◎学习、办公、娱乐资源平台◎★http://lanrenao.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/lrdhw.png?ref=master】《懒人导航网》◎全网最实用简洁的懒人导航网◎★https://www.hifast.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/kdhw.png?ref=master】《快导航网》◎汇聚了网上较为优秀的网站◎★https://www.9ghao.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/9gdh.png?ref=master】《9G导航》◎收集国内外最实用最全的网址导航◎★http://www.016.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/016dh.png?ref=master】《016导航》◎绿色干净无广告极速导航站◎★http://guozhivip.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/gzdh.png?ref=master】《果汁导航》◎各个领域的优质站点合集◎★http://m.ilxdh.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/lxdh.png?ref=master】《龙轩导航》◎准确又方便快捷资源平台◎★https://morething.top/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/ydedx.png?ref=master】《有点儿东西》◎MoreThing导航◎★https://m.bidianer.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/bdwzdh.png?ref=master】《笔点网址导航》◎简洁的网址导航网站◎★http://m.2345.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/2345wzdh.png?ref=master】《2345网址导航》◎热门网址导航网罗精彩实用网址◎★https://m.1234la.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/1234l.png?ref=master】《1234啦》◎实用的网址目录导航◎\n\n\n🛸 ＡＩ::http://www.aiminsu.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/aidhs.png?ref=master】《AI导航狮》◎AI聊天对话、AI写作、AIGC绘画生成◎★https://feizhuke.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/fzaidh.png?ref=master】《非猪AI导航》◎人工智能、聚合国内外AIGC软件◎★https://www.aixzw.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/aixzw.png?ref=master】《AI写作网》◎AI写作生成器官网◎\n\n\n⚒️ 工具::http://www.gjw123.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/gj123.png?ref=master】《工具123》◎在线免安装的工具网站◎★https://www.67tool.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/jsgj.png?ref=master】《即时工具》◎即用即走型在线工具箱◎★https://www.iamwawa.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/wwgj.png?ref=master】《蛙蛙工具》◎便捷的在线工具网站◎★https://www.dute.org/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/dtgjx.png?ref=master】《独特工具箱》◎免费在线工具◎★https://tools.miku.ac/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/mikutools.png?ref=master】《MikuTools》◎一个轻量的工具集合◎★https://ol.woobx.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/ygmh.png?ref=master】《一个木函》◎轻量级的效率工具集合◎★https://www.qtool.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/qtoolgj.png?ref=master】《昊霖设计》◎常用的工具箱◎★https://tool.lu/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/zxgj.png?ref=master】《在线工具》◎你的工具箱◎★https://c.runoob.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/cngj.png?ref=master】《菜鸟工具》◎不止于工具◎★https://tools.fun/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/toolsfun.png?ref=master】《ToolsFun》◎开发人员工具箱◎★http://tool.cccyun.cc/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/chgj.png?ref=master】《彩虹工具》◎免费手机工具、wap站长工具、源代码查看器◎★https://www.sojson.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/sojson.png?ref=master】《SoJson》◎JSON在线工具◎★https://www.html5tricks.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/html5.png?ref=master】《HTML5资源教程》◎分享HTML5开发资源和开发教程◎★https://www.aizhan.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/azw.png?ref=master】《爱站网》◎站长工具-百度权重排名、站长seo查询◎★http://mtool.chinaz.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/zzgj.png?ref=master】《站长工具》◎站长必备检查工具◎★https://imagestool.com/zh_CN/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/tpcl.png?ref=master】《图片处理》◎无需上传文件也可在线处理图片◎★https://tu.lingtings.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/jhtc.png?ref=master】《聚合图床》◎图床大全｜链接图片小工具◎★http://imgdh.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/tcdh.png?ref=master】《图床导航》◎各类图床聚合站◎★https://yunduanxin.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/ydx.png?ref=master】《云短信》◎在线接收短信、短信验证码◎★https://freesms.vip/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/dxyzm.png?ref=master】《短信验证码》◎免费接收接码◎\n\n\n🎮 游戏::http://h.4399.com/wap/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/4399.png?ref=master】《4399小游戏》◎🔎登录｜无需下载马上玩-h5游戏平台◎★http://m.7k7k.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/7k7k.png?ref=master】《7k7k小游戏》◎🔎登录｜小游戏大全、双人小游戏◎★https://www.yikm.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/xbwyx.png?ref=master】《小霸王游戏》◎小霸王游戏合集◎★https://xingye.me/game/index.php【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/xy.png?ref=master】《星夜小游戏》◎星夜小游戏平台聚合◎★https://rubiks-cube-solver.com/zh/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/mfqjq.png?ref=master】《魔方求解器》◎计算乱魔方的复原步骤◎\n\n\n➕ 医疗::https://www.yixue.com/wap/index.html【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/yxzsk.png?ref=master】《医学百科》◎公益医学知识库◎★https://m.familydoctor.com.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/jtyszx.png?ref=master】《家庭医生》◎领先的医疗健康新媒体◎★https://m.120ask.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/kswys.png?ref=master】《快速问医生》◎搜疾病，药品，偏方，问答◎★http://3g.xywy.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/xywy.png?ref=master】《寻医问药》◎药品库◎★http://wapypk.39.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/ypt.png?ref=master】《药品通》◎专业全面的国内外药品查询网站◎\n\n\n🍲 养生::https://m.cndzys.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/dzysw.png?ref=master】《大众养生》◎养生第一门户◎★http://www.cf555.com/mm.html【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/bsg.png?ref=master】《百食阁》◎食物功效与禁忌，食疗保健养生◎★https://m.jiankang.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/bxjkw.png?ref=master】《百姓健康》◎权威的医疗健康门户◎★http://m.39.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/39jkw.png?ref=master】《39健康网》◎优质医疗保健信息与在线健康服务平台◎★https://m.cnys.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/cnys.png?ref=master】《彩牛养生》◎权威健康科普内容平台◎\n\n\n🥘 食谱::https://m.xiangha.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/xh.png?ref=master】《香哈》◎菜谱大全-学做菜、秀美食！◎★http://h5.izhangchu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/zc.png?ref=master】《掌厨》◎视频菜谱网站◎★http://m.meishij.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/msj.png?ref=master】《美食杰》◎家常菜做法大全，收集天下美食菜谱图片◎★https://cook.yunyoujun.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/glsysc.png?ref=master】《隔离食用手册》◎好的，今天我们来做菜！◎★https://m.douguo.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/dgms.png?ref=master】《豆果美食》◎美食菜谱社区◎★https://m.xiachufang.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/xcf.png?ref=master】《下厨房》◎厨师和美食爱好者记录、分享的平台。◎★https://m.meishichina.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/mstx.png?ref=master】《美食天下》◎原创菜谱与美食生活社区◎★https://www.xinshipu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/xsp.png?ref=master】《心食谱》◎菜谱大全、家常菜谱◎★http://www.meishi13.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/msys.png?ref=master】《美食一生》◎家常菜谱大全◎\n\n\n",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://imgsa.baidu.com/forum/pic/item/d0c8a786c9177f3e8ebb0cca7ecf3bc79e3d566e.jpg",
    "sourceName": "资源ᴢᵞ",
    "sourceUrl": "资源合集",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://lupic.cdn.bcebos.com/,\nhttps://cpro.baidu.com/,\nhttps://eclick.baidu.com/,\nhttps://sofire.baidu.com/,\nhttps://analytics.woozooo.com/,\nhttps://statics.woozooo.com/",
    "customOrder": 181,
    "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": 1765539767900,
    "loadWithBaseUrl": true,
    "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$.[*]",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📲 导航::https://www.smdhb.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/smdy.png?ref=master】《神马电影导航吧》◎收集高清在线资源网站◎★https://ysscj.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/ysscj.png?ref=master】《影视收藏夹》◎收藏全网影视资源◎★https://anee.cc/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/ayys.png?ref=master】《安逸影视导航》◎一家集合全网影视专业导航网站◎★https://www.baicp.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/dydhw.png?ref=master】《电影导航网》◎电影网站大全◎★https://yingjuso.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/yjs.png?ref=master】《影剧搜》◎专注影视资源搜索◎★http://www.2cydh.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/ecydh.png?ref=master】《二次元导航》◎动漫、漫画网站大全◎★https://acgjj.cc/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/acgjj.png?ref=master】《ACG聚集》◎二次元宝藏资源聚合https://acgjj.org/◎★https://www.acgbox.link/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/acghz.png?ref=master】《ACG盒子》◎🚀VPN｜专注ACG的导航盒子◎★https://www.shangwaiwang.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/sww.png?ref=master】《上外网》◎🚀VPN｜外网网址导航◎\n\n\n🛰 直播::https://m.kankanzhibo.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/kkzb.png?ref=master】《看看直播》◎电视台直播、NBA录像回放◎★https://www.tvsbar.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/ascm.png?ref=master】《爱视传媒》◎网络电视直播◎★http://m.haoqu99.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/hqtv.png?ref=master】《好趣网》◎2000套高清网络电视直播在线观看◎★http://m.aikantv.org/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/aktv.png?ref=master】《爱看TV》◎高清电视直播在线观看◎★https://live.64ma.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/64m.png?ref=master】《64码电视直播》◎直播回看在线观看◎\n\n\n📺 影视::https://leziju.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/lzj.png?ref=master】《乐子剧》◎短剧专区◎★https://www.btnull.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/wmxz.png?ref=master】《无名小站》◎fun,in,nu,org,to,si,com,net◎★https://www.66s6.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/xb6vdy.png?ref=master】《新版6V电影》◎6V电影网◎★https://www.appmovie.cc/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/appyy.png?ref=master】《APP影院》◎全网最全视频库◎★https://www.555dyy5.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/555dy.png?ref=master】《555电影》◎发布页地址：https://www.gtbyw.com/◎★https://cupfox.app/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/cbh.png?ref=master】《茶杯狐》◎中国最大的影视资源聚合搜索引擎◎★http://rryss.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/rrys.png?ref=master】《仁仁影视》◎仁是由爱好者成员成立的网站◎★https://www.nkdyw.us/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/nkdy.png?ref=master】《南柯电影》◎电影电视剧在线播放平台网站◎★https://www.ihohotv.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/hhys.png?ref=master】《吼吼影视》◎高清在线视频影视平台◎★https://hoho1.tv/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/hhys.png?ref=master】《海外华人》◎海外华人在线影视视频平台◎★https://pangyatv.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/pysp.png?ref=master】《胖丫视频》◎高清在线影视视频媒体平台◎★https://www.yyds.one/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/yydsys.png?ref=master】《YYDS影视》◎高清电影电视剧◎★https://niqiutv.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/nqyy.png?ref=master】《泥鳅影院》◎海外华人在线影视平台◎★https://www.ikanbot.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/akjqr.png?ref=master】《爱看机器人》◎影视资源◎★https://www.400blzx.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/dzm.png?ref=master】《谍战迷》◎抗日电视剧大全◎★https://ddys.pro/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/ddys.png?ref=master】《低端影视》◎超清在线视频｜https://ddys.info/◎★https://www.wandou.la/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/wdpro.png?ref=master】《豌豆PRO》◎专业的电影搜索引擎◎\n\n\n🙈 其他::https://www.bttwo.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/lgbt.png?ref=master】《两个BT》◎发布地址：https://www.bttwo.vip/◎★http://fujutu.xyz/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/fjt.png?ref=master】《腐剧兔》◎腐剧,BL动漫,同性电影,同志写真◎★https://taiquantv.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/tqtv.png?ref=master】《泰圈TV》◎看腐剧从此不迷路◎★https://www.fuju1.tv/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/fjtv.png?ref=master】《腐剧TV》◎腐剧、BL动漫、同性电影、百合◎★https://www.bl210.top/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/sgys.png?ref=master】《曙光影视》◎腐剧、耽美、泰剧暖光影视官网◎★https://www.tj8.top/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/ftjw.png?ref=master】《泰剧网》◎腐剧、耽美、泰剧暖光影视官网◎★https://www.boluoxiaozhan.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/blxz.png?ref=master】《菠萝小站》◎腐剧、耽美动画、同性电影◎\n\n\n🎬 外影::https://mjw21.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/91mjw.png?ref=master】《91美剧网》◎高清美剧在线观看◎★https://wap.meijutt.tv/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/mjtt.png?ref=master】《美剧天堂》◎美剧天堂◎★https://www.mjutv.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/mjw.png?ref=master】《美剧网》◎美剧网◎★http://www.tjtt.cc/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/tjtt.png?ref=master】《泰剧天堂》◎泰剧天堂◎★https://www.chaospace.xyz/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/chaospace.png?ref=master】《CHAOSPACE》◎外国影视资源站◎★https://www.hjutv.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/hjw.png?ref=master】《韩剧网》◎韩剧网站◎★https://www.han-ju.cc/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/xhjw.png?ref=master】《新韩剧网》◎97韩剧网◎\n\n\n🐻‍ 动漫::http://m.yinghuavideo.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/yhdm.png?ref=master】《樱花动漫》◎专注动漫的门户网站◎★http://www.mxdm9.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/mxdm.png?ref=master】《MX动漫》◎专注在线动漫的樱花动漫备用网站◎★https://dm530.org/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/fcdm.png?ref=master】《风车动漫》◎拥有上万集高清晰画质的在线动漫◎★http://www.nicotv.club/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/nkdm.png?ref=master】《妮可动漫》◎追番补番的集中营，宅男腐女的秘密基地◎\n\n\n✔️ 解析::https://www.m4411.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/syjx.png?ref=master】《鲨鱼解析》◎发布地址：https://www.ikan.club/◎★https://vip.yeyulingfeng.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/yylf.png?ref=master】《夜雨聆风》◎视频解析◎★https://superparse.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/superparse.png?ref=master】《超级解析》◎国内外知名视频、短视频网站解析◎★https://dlpanda.com/zh-CN【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/xmjx.png?ref=master】《熊猫解析》◎抖音TikTok无水印下载◎",
    "sourceGroup": "资源绘,影视",
    "sourceIcon": "https://img1.baidu.com/it/u=1496571514,2586450180&fm=253&fmt=auto&app=138&f=PNG?w=120&h=120",
    "sourceName": "影视ʏˢ",
    "sourceUrl": "影视合集",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 183,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773225472978,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://www.acy.moe/sy/logo.jpg",
    "sourceName": "兽音译者(喵呜版)\n",
    "sourceUrl": "https://www.acy.moe/sy/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 184,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236550311,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://img1.baidu.com/it/u=2027087676,320860448&fm=253&fmt=auto&app=138&f=JPEG?w=250&h=250",
    "sourceName": "追书男生",
    "sourceUrl": "http://m.zhuishushenqi.com/ranking?typeId=cda853cada62401c980fd720f4bc3083",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 190,
    "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}",
    "injectJs": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data[?(@.vote_positive>=@.vote_negative && @.vote_negative<30 && @.images[*].url =~ /^((?!gif).)*$/i)]",
    "ruleContent": "",
    "ruleDescription": "$.images[*].full_url##\\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=\"'+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{{$.content##\\#img\\#}}\r\n<ul id=\"box\">\r\n{{result}}\r\n</ul>\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>\r\nroot = document.getElementById('box');\r\n//查看大图插件\r\nnew Viewer(root,{title:false,interval:3000});\r\n</script>",
    "ruleImage": "$.images[0].url",
    "ruleLink": "$.images[0].url",
    "ruleNextPage": "@js:\nresult = '{{baseUrl}}'.replace(/\\?start_id=\\d{7,}$/,'')+'?start_id={{$.data[-1].id}}'",
    "rulePubDate": "$.date##^(\\d{4}-\\d{2}-\\d{2})T(\\d{2}:\\d{2}:\\d{2})\\+08:00$##$1&nbsp;$2",
    "ruleTitle": "👍{{$.vote_positive}}&nbsp; 🤢{{$.vote_negative}}&nbsp; 🖼️{{$.images.length()}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "无聊图::/api/v1/comment/list/26402\n随手拍::/api/v1/comment/list/21183\n女装::/api/v1/comment/list/108629",
    "sourceComment": "这一版过滤了gif动态图，动态图太大了，没有wifi用流量遭不住",
    "sourceGroup": "新闻",
    "sourceIcon": "https://cdn.jandan.net/static/img/favicon.ico",
    "sourceName": "煎蛋无聊图(省流版)",
    "sourceUrl": "https://api.jandan.net/#",
    "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": 191,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773950195897,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "pins[?(!( @.board.title =~ /.*(?:营销|元素|其他图片|文|教程|ps|Adobe|全家桶|首页|广告|海报|美容|图标|教育|纹理|详情|免|排版|我的|学习|自拍).*/i  ||  @.board.category_id in ['web_app_icon','design','architecture','industrial_design','home','desire','data_presentation','tips','education','other','']))]",
    "ruleContent": "{{$.pin.file.key##\\n##\\$}}${{$..pins..file.key##\\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://gd-hbimg.huaban.com/'+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\">\n<title>{{$.board.title}}</title>\r\n<ul id=\"box\">\r\n{{result}}\r\n</ul>\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>\n<script src=\"http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js\"></script>\r\n<script>\nvar i = 1 ;\n$(document).ready(function () {\r\nroot = document.getElementById('box');\r\n//查看大图插件\r\nnew Viewer(root,{title:false,interval:3000});\nvar url = '{{baseUrl}}/relatedboards';\nfetchHtml(3, url)\n });\nfunction fetchHtml(i, url) {\r\n            nurl = url + \"?limit=\" + i;\r\n            $.ajax({\r\n                url: nurl,\r\n                dataType: 'json',\r\n                success: function (json) {\r\n                    for (var k = 0; k < json.boards.length; k++) {\r\n                        for (var q = 0; q < json.boards[k].pins.length; q++) {\r\n                            $('#box').append('<li><img src=\\\"https://gd-hbimg.huaban.com/' + json.boards[k].pins[q].file.key + '\\\"></li>\\n');\r\n                        }\r\n                    }\r\n                    box.viewer.update();\r\n                },\r\n                error: function (xhr) { }\r\n            });\r\n        }\r\n</script>",
    "ruleImage": "https://gd-hbimg.huaban.com/{{$.file.key}}",
    "ruleLink": "https://api.huaban.com/pins/{{$.pin_id}}",
    "ruleNextPage": "@js:\nresult = '{{baseUrl}}'.replace(/\\&max=\\d{7,}$/,'')+'&max={{$.pins[-1].pin_id}}'",
    "rulePubDate": "{{java.timeFormatUTC(java.getString(\"created_at\")*1000,\"YYYY-MM-dd HH:mm:ss\",8)}}",
    "ruleTitle": "{{$.board.title}}❤️{{$..board.like_count}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "推荐::/discovery/?limit=40\n插画::/discovery/illustration?limit=20\n热门::/popular?limit=40\n最新::/all?limit=40\n搜索::/search/file?sort=created_at&limit=62&text={{source.getVariable().length()<1? source.setVariable(\"ai\") : source.getVariable() }}&page={{page}}&position=search_pin{{java.toast(\"第\"+page+\"页\")}}\n极客::/discovery/geek?limit=40\n美图::/discovery/quotes?limit=40\n美女::/discovery/beauty?limit=40\r\n搞笑::/discovery/funny?limit=40\r\n动漫::/discovery/anime?limit=40\r\n摄影::/discovery/photography?limit=40\r\n人文艺术::/discovery/art?limit=40\r\n游戏::/discovery/games?limit=40\r\n手工::/discovery/diy_crafts?limit=40\r\n运动::/discovery/sports?limit=40\r\n电影::/discovery/film_music_books?limit=40",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://api.huaban.com/favicon.ico",
    "sourceName": "花瓣",
    "sourceUrl": "https://api.huaban.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,
    "variableComment": "搜索关键字"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 192,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236501358,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.items[?(!(@.imgsrc == ''))]",
    "ruleContent": "\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<br>\n<h3>{{$..message}}(暂时)</h3>\n<h3>{{$..title}}</h3>\n<h6>\n\t<a href=\"{{$..shareLink}}\">{{$..source}}</a>\n\t<i>{{$..ptime}}</i>\n</h6>\n<div id=\"body\"></div>\n\n\n\n<script>\nvar body = '{{$..body##'##\"}}';\nvar imgs = {{java.getString(\"$.data..img\").length() > 0 ? java.getString(\"$.data..img\"):\"[]\"}}\nvar videos = {{java.getString(\"$..video\").length() > 0 ? java.getString(\"$..video\"):\"[]\"}}\n\nfunction render(template, imgs,videos) {\nreturn template.replace(/\\<\\!\\-\\-IMG#(.*?)\\-\\-\\>/g, (match, key) => \"<img src=\\\"\"+imgs[key].src + \"\\\">\").replace(/\\<\\!\\-\\-VIDEO#(.*?)\\-\\-\\>/g, (match, key) => \"<video controls><source src=\\\"\" + videos[key].url_mp4 + \"\\\"type=\\\"video/mp4\\\"></video>\");\n}\n\n\ndocument.getElementById('body').outerHTML = render(body,imgs,videos)\n</script>",
    "ruleImage": "$.imgsrc",
    "ruleLink": "{{java.getString(\"TAG\").length() < 0 ? \"/nc/api/v2/article/preload/\"+java.getString(\"$.postid\")+\"/full\" :  \"/nc/api/v2/article/\"+java.getString(\"$.postid\")+\"/full\" }}",
    "ruleNextPage": "page",
    "rulePubDate": "$.mtime",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "轻松::/nc/api/v1/feed/static/normal-list?start={{(page-1)*20}}&tid=T1350383429665&size=20",
    "sourceGroup": "新闻",
    "sourceIcon": "http://cms-bucket.ws.126.net/2022/0419/6778ac9cj00ral2om001zc000ij00ijc.jpg",
    "sourceName": "轻松一刻",
    "sourceUrl": "https://gw.m.163.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 194,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "let str = document.body.innerHTML;\nlet imgsrc = '';\nstr.replace(/(?<=(\"moyu_url\":\"))([^\"]*)/,(match,key)=>imgsrc = match.replaceAll(/\\\\/g,\"\"))\nlet html = '<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\"><body>'\nhtml += '<img width=\"100%\" src=\"'+imgsrc+'\"></body>'\ndocument.write(html)",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://api.j4u.ink/favicon.ico",
    "sourceName": "摸鱼日历",
    "sourceUrl": "https://api.j4u.ink/v1/store/other/proxy/remote/moyu.json",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 195,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1684317301653,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".linkList-section-wrapper@ul@li",
    "ruleContent": ".editor-content@html&&.editorContent-download@html",
    "ruleLink": "a@href",
    "rulePubDate": ".date-info@text",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::https://www.mohurd.gov.cn/gongkai/fdzdgknr/bzgf/index<,_{{page+1}}>.html\n历史::https://www.mohurd.gov.cn/gongkai/fdzdgknr/bzgf/index_{{page + 1}}.html",
    "sourceGroup": "新闻",
    "sourceIcon": "https://img0.baidu.com/it/u=3025983840,1355060862&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1684429200&t=2935e511c5cf57b69ed28724ac5dd29d",
    "sourceName": "住建部公告",
    "sourceUrl": "https://www.mohurd.gov.cn/gongkai/fdzdgknr/bzgf/index.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 197,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".entry-header",
    "ruleContent": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n{{@@.entry-content@html}}",
    "ruleImage": "@js:\n'http://mrxwlb.com/wp-content/uploads/2023/03/cropped-h6%E5%89%AF%E6%9C%AC-192x192.jpg'",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": ".date@text",
    "ruleTitle": "h1@a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新::/{{page - 1 == 0 ? \"\": \"/page/\"+page+\"/\"}}",
    "sourceGroup": "新闻",
    "sourceIcon": "http://mrxwlb.com/wp-content/uploads/2023/03/cropped-h6%E5%89%AF%E6%9C%AC-192x192.jpg",
    "sourceName": "每日新闻联播",
    "sourceUrl": "http://mrxwlb.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 201,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "let str = document.body.innerHTML;\nlet imgsrc = '';\nstr.replace(/(?<=(\"image\":\"))([^\"]*)/,(match,key)=>imgsrc = match.replaceAll(/\\\\/g,\"\"))\nlet html = '<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\"><body>'\nhtml += '<img width=\"100%\" src=\"'+imgsrc+'\"></body>'\ndocument.write(html)",
    "lastUpdateTime": 1773236493543,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://api.j4u.ink/favicon.ico",
    "sourceName": "每天60秒读懂世界（图片版）",
    "sourceUrl": "https://api.j4u.ink/v1/store/other/proxy/remote/news/60.json",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 203,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "书源",
    "sourceIcon": "https://i.postimg.cc/3xx66MhQ/RDSyR.png",
    "sourceName": "源仓库(官方纯净)",
    "sourceUrl": "http://yckceo.vip",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 205,
    "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": 1767883838820,
    "loadWithBaseUrl": true,
    "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$.[*]",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📰 日报::https://tophub.today/【https://gitee.com/i-c/tc/raw/master/dy/mt/jrrb.png】《今日热榜》◎各站热榜聚合◎ https://s.weibo.com/top/summary【https://gitee.com/i-c/tc/raw/master/dy/mt/wbrs.png】《微博热搜》◎最新鲜·最热门·最有料◎ http://top.baidu.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/bdrs.png】《百度热搜》◎百度热搜各类榜单◎ https://www.zhihu.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/zh.png】《知乎》◎知识分享社区◎\n\n\n🌏 新闻::http://m.people.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/rmw.png】《人民网》◎权威媒体、大众网站◎ https://m.cctv.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/ysw.png】《央视网》◎中央广播电视总台◎ https://m.chinanews.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/zgxww.png】《中新网》◎中国新闻网◎ https://xw.qq.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/txw.png】《腾讯网》◎新闻、生活、资讯等互联网媒体平台◎ https://m.toutiao.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/jrtt.png】《今日头条》◎通用信息平台◎ https://m.thepaper.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/ppxw.png】《澎湃新闻》◎问答式新闻与新闻追踪◎ https://m.jiemian.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/jmxw.png】《界面新闻》◎中产阶级的新闻及商业社交平台◎ https://sina.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/xlw.png】《新浪网》◎24小时及时新闻◎ https://3g.163.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/wy.png】《网易》◎中国领先的互联网技术公司◎ http://www.gov.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/gwy.png】《国务院》◎中央人民政府门户网站◎ https://m.guancha.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/gcz.png】《观察者》◎中西文化交流平台◎ https://www.huanqiu.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/hqw.png】《环球网》◎中国领先的国际资讯门户◎ https://www.un.org/zh/【https://gitee.com/i-c/tc/raw/master/dy/mt/lhg.png】《联合国》◎健康地球上的和平、尊严与平等◎\n\n\n🍵 生活::https://m.douban.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/db.png】《豆瓣》◎一个神奇的社区◎ https://m.idongde.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/dd.png】《懂得》◎生活知识看懂得◎ https://zh.wikihow.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/wh.png】《wikiHow》◎万事指南网站◎ https://bbs.leyuz.net/【https://gitee.com/i-c/tc/raw/master/dy/mt/ylsq.png】《愚乐社区》◎电影论坛、精品软件、学习教程◎ https://www.tianya.cn/m/【https://gitee.com/i-c/tc/raw/master/dy/mt/tysq.png】《天涯社区》◎内容创作、知识分享与兴趣社交平台◎ https://livechina.cctv.com/index.shtml【https://gitee.com/i-c/tc/raw/master/dy/mt/zbzg.png】《直播中国》◎展现美丽中国◎\n\n\n🎲 娱乐::http://i.jandan.net/【https://gitee.com/i-c/tc/raw/master/dy/mt/jd.png】《煎蛋》◎地球上没有新鲜事◎ https://www.zhangzs.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/zzs.png】《涨姿势》◎骚年,来这里涨点姿势吧！◎ http://m.ifanjian.net/【https://gitee.com/i-c/tc/raw/master/dy/mt/fjz.png】《泛见志》◎一个有内涵的网站◎ https://www.dbbqb.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/dbzjsj.png】《逗比拯救世界》◎专业的表情包搜索网站◎ https://m.soogif.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/soogif.png】《SOOGIF》◎gif制作及搜索◎ https://m.hupu.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/hp.png】《虎扑》◎体育、游戏等兴趣社区◎\n\n\n🎰 游媒::https://www.gcores.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/jh.png】《机核GCORES》◎分享游戏玩家生活，探讨游戏相关文化。◎ http://www.chuapp.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/cl.png】《触乐》◎国内最优秀的游戏媒体之一◎ https://www.yystv.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/yys.png】《游研社》◎游戏新媒体◎ http://www.nadianshi.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/synds.png】《手游那点事》◎关注手机游戏运营和手机游戏推广◎ https://www.vgtime.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/yxsg.png】《游戏时光》◎分享游戏乐趣◎\n\n\n📡 直播::http://m.haoqu99.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/hqtv.png】《好趣网》◎2000套高清网络电视直播在线观看◎ http://m.aikantv.org/【https://gitee.com/i-c/tc/raw/master/dy/mt/aktv.png】《爱看TV》◎高清电视直播在线观看◎ http://tv.cctv.com/m/【https://gitee.com/i-c/tc/raw/master/dy/mt/yszb.png】《央视直播》◎中央广播电视总台◎ https://live.64ma.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/64m.png】《64码电视直播》◎直播回看在线观看◎ http://www.tvquanqiu.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/kqq.png】《看全球》◎世界各国电视台直播在线观看◎ https://m.huya.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/hyzb.png】《虎牙直播》◎弹幕式互动直播平台◎ https://m.douyu.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/dyzb.png】《斗鱼直播》◎每个人的直播平台◎ https://wap.yy.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/yyzb.png】《ＹＹ直播》◎全民娱乐的互动直播平台◎ https://live.douyin.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/dy.png】《抖音直播》◎人气火爆的抖音直播间大全◎\n\n\n📻 音频::https://podtown.xyz/【https://gitee.com/i-c/tc/raw/master/dy/mt/bkxz.png】《播客小镇》◎播客节目聚合◎ http://diantaiwang.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/wlgbdt.png】《广播电台》◎电台之家提供电台网址电台节目查询◎ https://sao.fm/【https://gitee.com/i-c/tc/raw/master/dy/mt/safm.png】《思奥FM》◎网络收音机◎ http://m.cnr.cn/#/pages/broadcast/broadcast【https://gitee.com/i-c/tc/raw/master/dy/mt/ygw.png】《央广电台》◎中央广播电视总台◎ https://m.qtfm.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/qtfm.png】《蜻蜓FM》◎听书听小说听电台◎ https://m.lizhi.fm/【https://gitee.com/i-c/tc/raw/master/dy/mt/lzfm.png】《荔枝FM》◎广播剧听书直播◎\n\n\n🎶 音乐::https://www.tosound.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/ts.png】《淘声》◎全球免费声音素材聚合平台◎ http://www.waasaa.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/wsw.png】《挖沙网》◎挖沙，放肆幻听◎ http://www.ningmeng.name/【https://gitee.com/i-c/tc/raw/master/dy/mt/sfg.png】《私房歌》◎民谣，独立◎ https://www.tingyuxuan.net/【https://gitee.com/i-c/tc/raw/master/dy/mt/tyx.png】《听雨轩》◎原创文学和音乐分享◎ https://ifish.fun/【https://gitee.com/i-c/tc/raw/master/dy/mt/ysyy.png】《洛奇Town》◎鱼声音乐精选◎ http://www.misshcl.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/ysxj.png】《盐酸小姐》◎没有人像我一样◎ https://m.9ku.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/jkyy.png】《九酷音乐》◎流行歌曲大全◎ http://www.52qingyin.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/qylw.png】《清音陋屋》◎优美纯音乐精美散文分享网站◎ http://www.tyqyyw.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/tyqyy.png】《田园轻音乐》◎轻音乐分享网站◎ http://m.htqyy.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/htqyy.png】《好听轻音乐》◎轻音乐交流平台◎\n\n\n📺 视频::https://m.acfun.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/aczy.png】《AC正义》◎国内首家弹幕视频网站◎ https://www.xinpianchang.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/xpc.png】《新片场》◎发现全球优质视频与创作人◎ https://m.bilibili.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/blbl.png】《哔哩哔哩》◎国内知名的在线视频弹幕网站◎ https://haokan.baidu.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/hksp.png】《好看视频》◎海量高清短视频◎ https://m.ixigua.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/xgsp.png】《西瓜视频》◎高清免费在线视频◎\n\n\n📰 期刊::http://qk.demo.lifves.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/qkzz.png】《电子期刊》◎初见·杂志期刊，意林、读者、故事会◎ https://m.fx361.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/ckw.png】《参考网》◎过期杂志阅读平台◎ http://www.53bk.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/szbz.png】《多媒体数字报纸》◎53BK数字报纸系统◎\n\n\n📄 资讯::https://wap.zol.com.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/zgczx.png】《中关村在线》◎手机,电脑等科技数码的资讯和行情报价◎ https://bohaishibei.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/bhsb.png】《博海拾贝》◎博海拾贝官方网站◎ https://www.yxgapp.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/yxg.png】《译学馆》◎译制知识视频的平台◎ https://m.36kr.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/36k.png】《36氪》◎互联网创业资讯◎ https://m.dgtle.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/szwb.png】《数字尾巴》◎丰富的数码资讯◎ https://hackernews.cc/【https://gitee.com/i-c/tc/raw/master/dy/mt/hkxw.png】《HackerNews》◎国际威胁情报、黑客动向及维基解密资讯。◎\n\n\n✏️ 设计::https://hao.uisdc.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/sjswzdh.png】《设计师网站导航》◎设计师精选国内外优质网站◎ https://huaban.com/discovery/【https://gitee.com/i-c/tc/raw/master/dy/mt/hb.png】《花瓣》◎发现网络上你喜欢的事物◎ https://m.topys.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/topys.png】《TOPYS》◎创意内容平台◎ https://www.uisdc.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/ys.png】《优设》◎设计师交流学习平台◎ https://m.zhisheji.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/zsj.png】《致设计》◎电商设计师交流平台◎ https://m.duitang.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/dt.png】《堆糖》◎美图壁纸兴趣社区◎ http://www.xueui.cn/【https://gitee.com/i-c/tc/raw/master/dy/mt/xuiw.png】《学UI网》◎UI设计师学习教程平台◎ https://www.shejipi.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/sjp.png】《设计癖》◎发现好设计◎ http://www.woshipm.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/rrdscpjl.png】《人人都是产品经理》◎产品经理、产品爱好者学习交流平台◎ https://www.toodaylab.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/lxshsys.png】《理想生活实验室》◎创意设计与生活消费的媒体◎\n\n\n🚀 科技::https://m.guokr.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/gk.png】《果壳》◎泛科技主题网站◎ https://www.pingwest.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/pw.png】《品玩》◎有品好玩的科技，一切与你有关！◎ https://m.huxiu.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/hx.png】《虎嗅》◎商业科技资讯◎ https://sspai.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/ssp.png】《少数派》◎高品质数字消费指南◎ https://m.ithome.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/itzj.png】《IT之家》◎前沿科技新闻网站◎ https://www.ifanr.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/afe.png】《爱范儿》◎聚焦新创和消费主题的科技媒体◎ https://m.tmtpost.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/tmt.png】《钛媒体》◎全球科技财经资讯平台◎ http://m.zealer.com/【https://gitee.com/i-c/tc/raw/master/dy/mt/zealer.png】《ZEALER》◎电子产品评测网站◎",
    "sourceComment": "//图标mt后面加1可以替换成白底黑字。例：https://gitee.com/i-c/tc/raw/master/dy/tb/mt1.png",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://iptvcat.com/assets/favicon/favicon.png",
    "sourceName": "媒体ᴍᵀ",
    "sourceUrl": "媒体合集",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 222,
    "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": 1767883609428,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.container@class.col-md-3 col-xs-6",
    "ruleContent": "all## <script type=\"text/javascript\">var cnzz_protocol = [\\s\\S]+?</script> ",
    "ruleImage": "img@src",
    "ruleLink": "h4@tag.a.0@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.table@span@text##\\n##•",
    "ruleTitle": "h4@tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "游戏",
    "sourceIcon": "http://srvcn.xbext.com/touch_icons/96x96/mobile.h5_games.png",
    "sourceName": "在线游戏",
    "sourceUrl": "https://www.yikm.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 225,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207339489,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.table.0@tbody@tr",
    "ruleLink": "tag.a@href",
    "rulePubDate": "tag.td.-2@text",
    "ruleTitle": "tag.td!-1:-2@text##\\n",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "知乎热榜::https://tophub.today/n/mproPpoq6O\r\n微博热搜榜::https://tophub.today/n/KqndgxeLl9\r\n微信24h热文榜::https://tophub.today/n/WnBe01o371\r\n澎湃今日排行::https://tophub.today/n/wWmoO5Rd4E\r\n哔哩哔哩全站日榜::https://tophub.today/n/74KvxwokxM\r\n百度实时热点::https://tophub.today/n/Jb0vmloB1G\r\n知乎日报Today::https://tophub.today/n/KMZd7VOvrO\n梨视频::https://tophub.today/n/WYKd69jvaP",
    "sourceGroup": "新闻",
    "sourceIcon": "https://telegra.ph/file/f54bf98b9dbff331c011f.jpg",
    "sourceName": "今日热榜",
    "sourceUrl": "https://tophub.today/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 230,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236512497,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.wap_home_album_list_container@li&&class.wap_font_list@li",
    "ruleContent": "all",
    "ruleImage": "img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "page",
    "ruleTitle": "h5@text||tag.a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::http://m.fonts.net.cn\n幼圆::http://m.fonts.net.cn/fonts-zh/tag-youyuan-{{page}}.html\n行书::http://m.fonts.net.cn/fonts-zh/tag-xingshu-{{page}}.html\n草书::http://m.fonts.net.cn/fonts-zh/tag-caoshu-{{page}}.html\n隶书::http://m.fonts.net.cn/fonts-zh/tag-lishu-{{page}}.html\n行楷::http://m.fonts.net.cn/fonts-zh/tag-xingkai-{{page}}.html\n篆体::http://m.fonts.net.cn/fonts-zh/tag-zhuanti-{{page}}.html\n黑体::http://m.fonts.net.cn/fonts-zh/tag-heiti-{{page}}.html\n广告::http://m.fonts.net.cn/fonts-zh/tag-guanggao-{{page}}.html\n宋体::http://m.fonts.net.cn/fonts-zh/tag-songti-{{page}}.html\n楷体::http://m.fonts.net.cn/fonts-zh/tag-kaiti-{{page}}.html\n魏碑::http://m.fonts.net.cn/fonts-zh/tag-weibei-{{page}}.html\n毛笔::http://m.fonts.net.cn/fonts-zh/tag-maobi-{{page}}.html\n手写::http://m.fonts.net.cn/fonts-zh/tag-shouxie2-{{page}}.html\n彩云::http://m.fonts.net.cn/fonts-zh/tag-caiyun-{{page}}.html\n卡通::http://m.fonts.net.cn/fonts-zh/tag-katong2-{{page}}.html\n综艺::http://m.fonts.net.cn/fonts-zh/tag-zhongyi-{{page}}.html\n书法::http://m.fonts.net.cn/fonts-zh/tag-shufa2-{{page}}.html\n新魏::http://m.fonts.net.cn/fonts-zh/tag-xinwei-{{page}}.html\n仿宋::http://m.fonts.net.cn/fonts-zh/tag-fangsong-{{page}}.html\n大黑::http://m.fonts.net.cn/fonts-zh/tag-dahei-{{page}}.html\n娃娃::http://m.fonts.net.cn/fonts-zh/tag-wawa-{{page}}.html\n钢笔::http://m.fonts.net.cn/fonts-zh/tag-gangbi-{{page}}.html\n琥珀::http://m.fonts.net.cn/fonts-zh/tag-hupo-{{page}}.html\n细黑::http://m.fonts.net.cn/fonts-zh/tag-xihei-{{page}}.html\n古印::http://m.fonts.net.cn/fonts-zh/tag-guyin-{{page}}.html\n空心::http://m.fonts.net.cn/fonts-zh/tag-kongxin-{{page}}.html\n姚体::http://m.fonts.net.cn/fonts-zh/tag-yaoti-{{page}}.html\n颜楷::http://m.fonts.net.cn/fonts-zh/tag-yankai-{{page}}.html\n海报::http://m.fonts.net.cn/fonts-zh/tag-haibao-{{page}}.html\n明体::http://m.fonts.net.cn/fonts-zh/tag-mingti-{{page}}.html\n瘦金体::http://m.fonts.net.cn/fonts-zh/tag-shoujin-{{page}}.html\n方正字体::http://m.fonts.net.cn/fonts-zh/tag-fangzheng-{{page}}.html\n汉仪字体::http://m.fonts.net.cn/fonts-zh/tag-hanyi-{{page}}.html\n腾祥字体::http://m.fonts.net.cn/fonts-zh/tag-tengxiang-{{page}}.html\nAa字体::http://m.fonts.net.cn/fonts-zh/tag-Aafont-{{page}}.html\n新蒂字体::http://m.fonts.net.cn/fonts-zh/tag-xindi-{{page}}.html\n锐字家族::http://m.fonts.net.cn/fonts-zh/tag-ruizi-{{page}}.html\n字心坊::http://m.fonts.net.cn/fonts-zh/tag-zixinfang-{{page}}.html\n造字工房::http://m.fonts.net.cn/fonts-zh/tag-zaozigongfang-{{page}}.html\n书法家字体::http://m.fonts.net.cn/fonts-zh/tag-shufajia-{{page}}.html\n上首造字::http://m.fonts.net.cn/fonts-zh/tag-shangshou-{{page}}.html\n逐浪字体::http://m.fonts.net.cn/fonts-zh/tag-zhulang-{{page}}.html\n苏新诗字体::http://m.fonts.net.cn/fonts-zh/tag-suxinshi-{{page}}.html\n经典字体::http://m.fonts.net.cn/fonts-zh/tag-jingdian-{{page}}.html\n创艺字体::http://m.fonts.net.cn/fonts-zh/tag-chuangyi-{{page}}.html\n中国龙字体::http://m.fonts.net.cn/fonts-zh/tag-zhongguolong-{{page}}.html\n金桥字体::http://m.fonts.net.cn/fonts-zh/tag-jinqiao-{{page}}.html\n金梅字体::http://m.fonts.net.cn/fonts-zh/tag-jinmei-{{page}}.html\n华康字体::http://m.fonts.net.cn/fonts-zh/tag-huakang-{{page}}.html\n汉鼎字体::http://m.fonts.net.cn/fonts-zh/tag-handing-{{page}}.html\n迷你字体::http://m.fonts.net.cn/fonts-zh/tag-mini-{{page}}.html\n华文字体::http://m.fonts.net.cn/fonts-zh/tag-huawen-{{page}}.html\n超世纪字体::http://m.fonts.net.cn/fonts-zh/tag-chaoshiji-{{page}}.html\n长城字体::http://m.fonts.net.cn/fonts-zh/tag-changcheng-{{page}}.html\n博洋字体::http://m.fonts.net.cn/fonts-zh/tag-boyangshouxie-{{page}}.html\n书体坊字体::http://m.fonts.net.cn/fonts-zh/tag-shufafang-{{page}}.html\n微软字体::http://m.fonts.net.cn/fonts-zh/tag-weiruan-{{page}}.html\n三极字库::http://m.fonts.net.cn/fonts-zh/tag-sanji-{{page}}.html\n蒙纳字体::http://m.fonts.net.cn/fonts-zh/tag-mengna-{{page}}.html\n文鼎字体::http://m.fonts.net.cn/fonts-zh/tag-wending-{{page}}.html\n全真字体::http://m.fonts.net.cn/fonts-zh/tag-quanzhen-{{page}}.html\n超研泽字体::http://m.fonts.net.cn/fonts-zh/tag-chaoyanze-{{page}}.html\n张海山字体::http://m.fonts.net.cn/fonts-zh/tag-zhanghaishan-{{page}}.html\n文泉驿字体::http://m.fonts.net.cn/fonts-zh/tag-wenquanyi-{{page}}.html\n文悦字体::http://m.fonts.net.cn/fonts-zh/tag-wenyue-{{page}}.html\n思源字体::http://m.fonts.net.cn/fonts-zh/tag-siyuan-{{page}}.html\n田氏字体::http://m.fonts.net.cn/fonts-zh/tag-tianshi-{{page}}.html\n北师大字体::http://m.fonts.net.cn/fonts-zh/tag-beishida-{{page}}.html\n雅坊字体::http://m.fonts.net.cn/fonts-zh/tag-yafang-{{page}}.html\n富汉通字体::http://m.fonts.net.cn/fonts-zh/tag-fuhantong-{{page}}.html\n四通利方字体::http://m.fonts.net.cn/fonts-zh/tag-sitonglifang-{{page}}.html\n白舟字体::http://m.fonts.net.cn/fonts-zh/tag-baizhou-{{page}}.html\n昆仑字体::http://m.fonts.net.cn/fonts-zh/tag-kunlun-{{page}}.html\n王汉宗字体::http://m.fonts.net.cn/fonts-zh/tag-wanghanzong-{{page}}.html\n日系中文::http://m.fonts.net.cn/fonts-zh/tag-rixi-{{page}}.html\n吉页字体::http://m.fonts.net.cn/fonts-zh/tag-jiyeziku-{{page}}.html\n刻石录字体::http://m.fonts.net.cn/fonts-zh/tag-keshilu-{{page}}.html\n喜鹊造字::http://m.fonts.net.cn/fonts-zh/tag-xique-{{page}}.html\n汉标字库::http://m.fonts.net.cn/fonts-zh/tag-hanbiao-{{page}}.html\n其它字体::http://m.fonts.net.cn/fonts-zh/tag-qitaziku-{{page}}.html\nA::http://m.fonts.net.cn/fonts-zh/letter-a-{{page}}.html\nB::http://m.fonts.net.cn/fonts-zh/letter-b-{{page}}.html\nC::http://m.fonts.net.cn/fonts-zh/letter-c-{{page}}.html\nD::http://m.fonts.net.cn/fonts-zh/letter-d-{{page}}.html\nE::http://m.fonts.net.cn/fonts-zh/letter-e-{{page}}.html\nF::http://m.fonts.net.cn/fonts-zh/letter-f-{{page}}.html\nG::http://m.fonts.net.cn/fonts-zh/letter-g-{{page}}.html\nH::http://m.fonts.net.cn/fonts-zh/letter-h-{{page}}.html\nI::http://m.fonts.net.cn/fonts-zh/letter-i-{{page}}.html\nJ::http://m.fonts.net.cn/fonts-zh/letter-j-{{page}}.html\nK::http://m.fonts.net.cn/fonts-zh/letter-k-{{page}}.html\nL::http://m.fonts.net.cn/fonts-zh/letter-l-{{page}}.html\nM::http://m.fonts.net.cn/fonts-zh/letter-m-{{page}}.html\nN::http://m.fonts.net.cn/fonts-zh/letter-n-{{page}}.html\nO::http://m.fonts.net.cn/fonts-zh/letter-o-{{page}}.html\nP::http://m.fonts.net.cn/fonts-zh/letter-p-{{page}}.html\nQ::http://m.fonts.net.cn/fonts-zh/letter-q-{{page}}.html\nR::http://m.fonts.net.cn/fonts-zh/letter-r-{{page}}.html\nS::http://m.fonts.net.cn/fonts-zh/letter-s-{{page}}.html\nT::http://m.fonts.net.cn/fonts-zh/letter-t-{{page}}.html\nU::http://m.fonts.net.cn/fonts-zh/letter-u-{{page}}.html\nV::http://m.fonts.net.cn/fonts-zh/letter-v-{{page}}.html\nW::http://m.fonts.net.cn/fonts-zh/letter-w-{{page}}.html\nX::http://m.fonts.net.cn/fonts-zh/letter-x-{{page}}.html\nY::http://m.fonts.net.cn/fonts-zh/letter-y-{{page}}.html\nZ::http://m.fonts.net.cn/fonts-zh/letter-z-{{page}}.html\n其它::http://m.fonts.net.cn/fonts-zh/letter-else-{{page}}.html",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://img04.sogoucdn.com/v2/thumb/crop/xy/ai/x/0/y/0/w/200/h/200/iw/70/ih/70/t/0/ir/3/retype_exclude_gif/ext/auto/q/75?t=2&appid=200965&url=http%3A%2F%2Fimg03.sogoucdn.com%2Fapp%2Fa%2F10010016%2F070598442766ca845f6017ac4eb5a4bc&sign=dd6435fdfdc768ce466aa7bf27ec525c",
    "sourceName": "字体天下",
    "sourceUrl": "http://m.fonts.net.cn/fonts-zh/tag-lishu-1.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 231,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767883699606,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@js:\nif(baseUrl.match(/\\d+/)){\njava.getElements(\"@@class.row@class.mt-card-item\")\n}else{\njava.getElements(\"@@tag.table@tag.tr@tag.a&&class.row@children\")\n}",
    "ruleImage": "img@src",
    "ruleLink": "tag.a.0@href||href##^(http://www.zku.net)*##http://www.zku.net",
    "ruleNextPage": "page",
    "ruleTitle": "h3@text||text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::http://www.zku.net\n中文字体::http://www.zku.net/fonts-ct-106.html?page={{page}}\n英文字体::http://www.zku.net/fonts-ct-107.html?page={{page}}\n艺术字体::http://www.zku.net/fonts-bq-158.html?page={{page}}\n手写字体::http://www.zku.net/fonts-bq-42.html?page={{page}}\n字体打包::http://www.zku.net/fonts-ct-108.html?page={{page}}\n免费字体::http://www.zku.net/fonts-bq-124.html?page={{page}}\n日文字体::http://www.zku.net/fonts-ct-128.html?page={{page}}\n韩文字体::http://www.zku.net/fonts-ct-129.html?page={{page}}\n非英字体::http://www.zku.net/fonts-ct-130.html?page={{page}}\n宋体::http://www.zku.net/fonts-bq-29.html?biaoqian_id=29&page={{page}}\n黑体::http://www.zku.net/fonts-bq-32.html?biaoqian_id=32&page={{page}}\n楷体::http://www.zku.net/fonts-bq-30.html?biaoqian_id=30&page={{page}}\n篆书::http://www.zku.net/fonts-bq-36.html?biaoqian_id=36&page={{page}}\n草书::http://www.zku.net/fonts-bq-34.html?biaoqian_id=34&page={{page}}\n隶书::http://www.zku.net/fonts-bq-33.html?biaoqian_id=33&page={{page}}\n魏碑::http://www.zku.net/fonts-bq-37.html?biaoqian_id=37&page={{page}}\n圆体::http://www.zku.net/fonts-bq-38.html?biaoqian_id=38&page={{page}}\n手写::http://www.zku.net/fonts-bq-42.html?biaoqian_id=42&page={{page}}\n综艺::http://www.zku.net/fonts-bq-41.html?biaoqian_id=41&page={{page}}\n古印::http://www.zku.net/fonts-bq-45.html?biaoqian_id=45&page={{page}}\n点阵::http://www.zku.net/fonts-bq-47.html?biaoqian_id=47&page={{page}}\n金文::http://www.zku.net/fonts-bq-40.html?biaoqian_id=40&page={{page}}\n哥特::http://www.zku.net/fonts-bq-50.html?biaoqian_id=50&page={{page}}\n姚体::http://www.zku.net/fonts-bq-174.html?biaoqian_id=174&page={{page}}\n空心::http://www.zku.net/fonts-bq-140.html?biaoqian_id=140&page={{page}}\n琥珀::http://www.zku.net/fonts-bq-44.html?biaoqian_id=44&page={{page}}\n图形::http://www.zku.net/fonts-bq-113.html?biaoqian_id=113&page={{page}}\n毛笔::http://www.zku.net/fonts-bq-130.html?biaoqian_id=130&page={{page}}\n创意::http://www.zku.net/fonts-bq-163.html?biaoqian_id=163&page={{page}}\n海报::http://www.zku.net/fonts-bq-137.html?biaoqian_id=137&page={{page}}\n仿宋::http://www.zku.net/fonts-bq-172.html?biaoqian_id=172&page={{page}}\n颜体::http://www.zku.net/fonts-bq-170.html?biaoqian_id=170&page={{page}}\n康体::http://www.zku.net/fonts-bq-175.html?biaoqian_id=175&page={{page}}\n彩云::http://www.zku.net/fonts-bq-188.html?biaoqian_id=188&page={{page}}\n行书::http://www.zku.net/fonts-bq-31.html?biaoqian_id=31&page={{page}}\n行楷::http://www.zku.net/fonts-bq-35.html?biaoqian_id=35&page={{page}}\n办公::http://www.zku.net/fonts-bq-162.html?biaoqian_id=162&page={{page}}\n硬笔::http://www.zku.net/fonts-bq-121.html?biaoqian_id=121&page={{page}}\n趣味::http://www.zku.net/fonts-bq-120.html?biaoqian_id=120&page={{page}}\n涂鸦::http://www.zku.net/fonts-bq-156.html?biaoqian_id=156&page={{page}}\n柳体::http://www.zku.net/fonts-bq-234.html?biaoqian_id=234&page={{page}}\n拼音::http://www.zku.net/fonts-bq-229.html?biaoqian_id=229&page={{page}}\n钢笔::http://www.zku.net/fonts-bq-153.html?biaoqian_id=153&page={{page}}\n广告::http://www.zku.net/fonts-bq-129.html?biaoqian_id=129&page={{page}}\n书法::http://www.zku.net/fonts-bq-162.html?biaoqian_id=162&page={{page}}\n倩体::http://www.zku.net/fonts-bq-165.html?biaoqian_id=165&page={{page}}\n舒体::http://www.zku.net/fonts-bq-166.html?biaoqian_id=166&page={{page}}\n像素::http://www.zku.net/fonts-bq-112.html?biaoqian_id=112&page={{page}}\n启体::http://www.zku.net/fonts-bq-173.html?biaoqian_id=173&page={{page}}\n方正::http://www.zku.net/fonts-bq-52.html?biaoqian_id=52&page={{page}}\n华康::http://www.zku.net/fonts-bq-58.html?biaoqian_id=58&page={{page}}\n汉仪::http://www.zku.net/fonts-bq-53.html?biaoqian_id=53&page={{page}}\n造字工房::http://www.zku.net/fonts-bq-74.html?biaoqian_id=74&page={{page}}\n吉页字库::http://www.zku.net/fonts-bq-227.html?biaoqian_id=227&page={{page}}\n腾祥::http://www.zku.net/fonts-bq-54.html?biaoqian_id=54&page={{page}}\n微软::http://www.zku.net/fonts-bq-55.html?biaoqian_id=55&page={{page}}\n汉鼎::http://www.zku.net/fonts-bq-56.html?biaoqian_id=56&page={{page}}\nAa字库::http://www.zku.net/fonts-bq-253.html?biaoqian_id=253&page={{page}}\n喜鹊造字::http://www.zku.net/fonts-bq-238.html?biaoqian_id=238&page={{page}}\n向佳红::http://www.zku.net/fonts-bq-220.html?biaoqian_id=220&page={{page}}\n蝉羽::http://www.zku.net/fonts-bq-221.html?biaoqian_id=221&page={{page}}\n铸字精舍::http://www.zku.net/fonts-bq-219.html?biaoqian_id=219&page={{page}}\n三极::http://www.zku.net/fonts-bq-218.html?biaoqian_id=218&page={{page}}\n汉呈::http://www.zku.net/fonts-bq-217.html?biaoqian_id=217&page={{page}}\n云书法::http://www.zku.net/fonts-bq-214.html?biaoqian_id=214&page={{page}}\n字魂字体::http://www.zku.net/fonts-bq-211.html?biaoqian_id=211&page={{page}}\n思源::http://www.zku.net/fonts-bq-209.html?biaoqian_id=209&page={{page}}\n南构::http://www.zku.net/fonts-bq-207.html?biaoqian_id=207&page={{page}}\n汉标::http://www.zku.net/fonts-bq-205.html?biaoqian_id=205&page={{page}}\n蔡云汉::http://www.zku.net/fonts-bq-187.html?biaoqian_id=187&page={{page}}\n李旭科::http://www.zku.net/fonts-bq-186.html?biaoqian_id=186&page={{page}}\n站酷::http://www.zku.net/fonts-bq-183.html?biaoqian_id=183&page={{page}}\n段宁::http://www.zku.net/fonts-bq-189.html?biaoqian_id=189&page={{page}}\n张海山::http://www.zku.net/fonts-bq-176.html?biaoqian_id=176&page={{page}}\n本墨字体::http://www.zku.net/fonts-bq-102.html?biaoqian_id=102&page={{page}}\n字心坊::http://www.zku.net/fonts-bq-98.html?biaoqian_id=98&page={{page}}\n印品::http://www.zku.net/fonts-bq-99.html?biaoqian_id=99&page={{page}}\n思雨字体::http://www.zku.net/fonts-bq-97.html?biaoqian_id=97&page={{page}}\n仓耳字库::http://www.zku.net/fonts-bq-96.html?biaoqian_id=96&page={{page}}\n义启::http://www.zku.net/fonts-bq-92.html?biaoqian_id=92&page={{page}}\n新蒂::http://www.zku.net/fonts-bq-87.html?biaoqian_id=87&page={{page}}\n文泉驿::http://www.zku.net/fonts-bq-84.html?biaoqian_id=84&page={{page}}\n新叶::http://www.zku.net/fonts-bq-231.html?biaoqian_id=231&page={{page}}\n文悦::http://www.zku.net/fonts-bq-210.html?biaoqian_id=210&page={{page}}\n叶根友::http://www.zku.net/fonts-bq-90.html?biaoqian_id=90&page={{page}}\n默陌字体::http://www.zku.net/fonts-bq-100.html?biaoqian_id=100&page={{page}}\n米开::http://www.zku.net/fonts-bq-107.html?biaoqian_id=107&page={{page}}\n上首造字::http://www.zku.net/fonts-bq-252.html?biaoqian_id=252&page={{page}}",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://img04.sogoucdn.com/v2/thumb/crop/xy/ai/x/0/y/0/w/200/h/200/iw/70/ih/70/t/0/ir/3/retype_exclude_gif/ext/auto/q/75?t=2&appid=200965&url=http%3A%2F%2Fimg04.sogoucdn.com%2Fapp%2Fa%2F10010016%2Fa4b8f0b6bcf172ad5bfc0d9bb6bcc6d7&sign=c33258c908f05fddc4af490551b50e09",
    "sourceName": "字库网",
    "sourceUrl": "tp://www.zku.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 232,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.news_tlist_item",
    "ruleLink": "tag.a@href",
    "rulePubDate": "class.n_item_date@text",
    "ruleTitle": "tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "https://s3.ax1x.com/2020/11/19/DnHXhq.png",
    "sourceName": "博客园IT新闻",
    "sourceUrl": "https://news.cnblogs.com/n/date?date=",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 237,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236524481,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@js:\nvar x = baseUrl.substr(35);\njava.getElements(\"@@class.menu.\"+x+\"@a\");",
    "ruleLink": "href",
    "ruleTitle": "text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "字体转换／字体预览::https://www.qqxiuzi.cn/daohang.htm?0\n非主流字体转换／字效生成::https://www.qqxiuzi.cn/daohang.htm?1\n文字在线工具::https://www.qqxiuzi.cn/daohang.htm?2\n汉字／汉语工具书::https://www.qqxiuzi.cn/daohang.htm?3\n字符编码解码::https://www.qqxiuzi.cn/daohang.htm?4\n字符加密解密::https://www.qqxiuzi.cn/daohang.htm?5\n信息／资料::https://www.qqxiuzi.cn/daohang.htm?6\n频道／栏目::https://www.qqxiuzi.cn/daohang.htm?7\nZRQR付费::https://www.qqxiuzi.cn/daohang.htm?8",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://www.qqxiuzi.cn/favicon.ico",
    "sourceName": "千千秀字",
    "sourceUrl": "https://www.qqxiuzi.cn/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 254,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.cards",
    "ruleContent": "$.data.longTextContent\n@js:id=baseUrl.match(/(\\d+)/)[1];\nvar b=\"https://m.weibo.cn/detail/\"+id;\nvar html=String(java.ajax(b));\nif(html.match(/\"size\":\\s*\"large\",\\s*\"url\":\\s*\"[^\"]+\"/g)){\na=html.match(/\"size\":\\s*\"[^\"]+\",\\s*\"url\":\\s*\"[^\"]+\"/g);\n    var cimg=[];\n    for (i=0;i<a.length;i++){\n       cimg.push(a[i].match(/url\":\\s*\"([^\"]+)\"/)[1]);\n    };\n    var bimg=\"\";\n    for (i=0;i<cimg.length;i++){\n        bimg=bimg+\"<p></p><img src=\"+cimg[i]+\"><img>\"\n    }\nresult=result+bimg; \n}else{\n    if(html.match(/\"stream_url\":\\s*\"[^\"]+\"/)){\n if(html.match(/\"mp4_720p_mp4\":\\s*\"[^\"]+\"/)){a=html.match(/\"mp4_720p_mp4\":\\s*\"([^\"]+)\"/)[1];}else{\n    if(html.match(/\"mp4_hd_mp4\":\\s*\"[^\"]+\"/)){a=html.match(/\"mp4_hd_mp4\":\\s*\"([^\"]+)\"/)[1];}else{\na=html.match(/\"mp4_ld_mp4\":\\s*\"([^\"]+)\"/)[1];\n}\n}\n\nresult=result.replace(/data-url=\"([^\"]+)\"\\s*href=\"([^\"]+)\"/,\"data-url=\\\"$1\\\" href=\\\"\"+a+\"\\\"\");\ndimg=html.match(/\"page_pic\":[\\s\\S]+?\"url\":\\s*\"([^\"]+)\"./)[1];\nresult=result+\"<video src=\\\"\"+a+\"\\\" width=\\\"350px\\\" height=\\\"250px\\\" controls=\\\"controls\\\"  poster=\\\"\"+dimg+\"\\\"></video>\";\n}    else{result=result\n}};\nif(JSON.parse(java.ajax(\"https://m.weibo.cn/comments/hotflow?id=\"+id+\"&mid=\"+id+\"&max_id_type=0\")).ok==1){\nlist=JSON.parse(java.ajax(\"https://m.weibo.cn/comments/hotflow?id=\"+id+\"&mid=\"+id+\"&max_id_type=0\")).data.data;\nresult=\"<a href=\"+b+\">原文地址</a>\"+\"<p></p>\"+result;\n    for(i=0;i<list.length;i++){\n    details=\"\";\n    if(list[i].pic!=undefined){\n    pic=list[i].pic.large.url;\n    details=\"<details><summary>查看图片</summary><p><img src=\\\"\"+pic+\"\\\" alt=\\\"查看图片\\\"></p></details>\"\n}\nresult=result+\"<p></p><br>\"+\"<img src=\"+list[i].user.profile_image_url+\"width=20px height=20px></img>\"+\"<strong>\"+list[i].user.screen_name+\"</strong>\"+\"<br>\"+list[i].text+\"\"+details+\"<p style=\\\"color:\\#\\#FFC4C4C4\\;font-size:10px\\\">\"+list[i].created_at.replace(/\\+0800/,\"·\")+\"</p>\"+\"<p></p>\"\n      }}else{result=\"<a href=\"+b+\">原文地址</a>\"+\"<p></p>\"+result};\n\nresult=\"<html><head><meta charset=\\\"utf-8\\\"><title>微博</title><style>img\\{max-width: 100%\\;max-height: 100%\\;\\}summary\\{color:\\#\\#FF2D7A7E\\;\\}</style></head>\"+ \"<body>\"+result+\"</body></html>\"",
    "ruleImage": "$.mblog.page_info.page_pic.url||$.mblog.thumbnail_pic||$.mblog.user.profile_image_url",
    "ruleLink": "$.mblog.id@js:\"https://m.weibo.cn/statuses/extend?id=\"+result",
    "ruleNextPage": "page",
    "rulePubDate": "$.mblog.created_at",
    "ruleTitle": "$.mblog.text##<.*?>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "我们1班王悦微::https://m.weibo.cn/api/container/getIndex?containerid=1076032728415062_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076032728415062_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}",
    "sourceGroup": "新闻",
    "sourceIcon": "https://n.sinaimg.cn/sinakd10201/360/w180h180/20200608/3e66-iurnkpr9629829.jpg",
    "sourceName": "王悦微",
    "sourceUrl": "https://m.weibo.cn王悦微",
    "style": "img{max-width: 100%;max-height: 100%}summary{color:#FF2D7A7E}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 262,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775585520670,
    "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": "美涩",
    "sourceIcon": "https://i.postimg.cc/3Rmm9Qj1/122f82d46123c18e88a31714dca078fa.jpg",
    "sourceName": "☪里番热",
    "sourceUrl": "hanime",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 264,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\": \"okhttp/3.8.1\"}",
    "lastUpdateTime": 1773207392311,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.posts[*]||$.gameapps[*]",
    "ruleContent": "<h3>{{$.post.title}}</h3>\n{{$.post.detail##<image>(.*?),.*?</image>##<img src=\"$1\">}}\n🩹{{$.post.images[*]}}🩹\n<br><hr><br>\n<h1>评论</h1>\n\n@js:\nresult=result.replace(/\\n/g,'<br>').replace(/<\\/*text>/g,'');\nlist=result.match(/🩹[\\s\\S]+?🩹/)?result.match(/🩹([\\s\\S]+?)🩹/)[1]:'';\nlist=list?list.split('<br>'):[];\n\ncomments=JSON.parse(src).comments;\npp='';\n\nfor(i in comments){\nauthor=comments[i].user.nick;\nauthorimg='<img class=\"author\" src=\"'+comments[i].user.avatar+'\">';\nimgs=comments[i].images?comments[i].images:[];\ntime='<a class=\"time\">'+java.timeFormat(comments[i].createTime)+\"</a>\";\nt=comments[i].text;\nimglist='';\nfor(i in imgs){\nimglist+='<details><summary style=\"color:red\">点击查看图片</summary><img src=\"'+imgs[i]+'\"></details>\\n'\n}\nnick=comments[i].refComment?comments[i].refComment.nick:'';\n\nrep=comments[i].refComment?comments[i].refComment.text:'';\n\nref=nick?'<div class=\"ref\"><p>回复  '+nick+'</p><p>'+rep+'</p></div>'+t:''\ntext=ref?ref:t;\n\npp+=authorimg+author+'<br>'+String(text).replace(/\\n/g,'<br>')+imglist+'<br>'+time+'<br><br><br>';\n}\nresult=result+pp;\nimg='';\nfor(i in list){\nimg+='<details><summary>点击查看图片</summary><img src=\"'+list[i]+'\"></details>\\n'\n}\nresult=String(result).replace(/🩹[\\s\\S]+?🩹|🩹🩹/g,img);\nresult=result.replace(/([^\"])(http[^<\\s\"]+)/g,'$1<a href=\"$2\">$2</a>')",
    "ruleDescription": "<img style=\"width:40px;height:40px\" src=\"{{$.applogo}}\">   {{$.apptitle}}<br>\n<p class=\"tag\">{{$.appsize}}m   {{$.applanguage}}   {{$.appauthorization}}   version{{$.appversion}}   {{$.system}}<p>\n<a href=\"{{$.localurl.url}}\">点击下载</a><br>\n{{$.appdesc}}\n\n<js>result=baseUrl.match(/search/)?result:''</js>",
    "ruleImage": "$.images[0]||$.applogo",
    "ruleLink": "http://floor.huluxia.com/post/detail/ANDROID/2.3?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&post_id={{$.postID||$.shareurl##(\\d+)##$1###}}&page_no=1&page_size=20&doc=1",
    "ruleNextPage": "page",
    "rulePubDate": "<js>\nif(baseUrl.match(/search/)){\nappsize='{{$.appsize}}m';\ntag='{{$.apptags}}';\ntime=java.timeFormat('{{$.createTime}}000');\nresult=appsize+'•'+tag+'•'+time\n}else{result=java.timeFormat('{{$.createTime}}')}\n</js>",
    "ruleTitle": "$.title||$.apptitle",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索软件::http://search.huluxia.com/game/search/ANDROID/4.0.1?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&start={{(page-1)*20}}&count=20&keyword=葫芦侠\n\n实用软件::http://floor.huluxia.com/post/list/ANDROID/2.1?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&start={{Date.now()}}&count=200&cat_id=43&tag_id=0&sort_by=0\n绿色软件::http://floor.huluxia.com/post/list/ANDROID/2.1?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&start={{Date.now()}}&count=200&cat_id=43&tag_id=4301&sort_by=0\n原创工具::http://floor.huluxia.com/post/list/ANDROID/2.1?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&start={{Date.now()}}&count=200&cat_id=43&tag_id=4302&sort_by=0\n影音播放::http://floor.huluxia.com/post/list/ANDROID/2.1?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&start={{Date.now()}}&count=200&cat_id=43&tag_id=4304&sort_by=0\n集合贴::http://floor.huluxia.com/post/list/ANDROID/2.1?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&start={{Date.now()}}&count=200&cat_id=43&tag_id=4303&sort_by=0\n\n玩机教程::http://floor.huluxia.com/post/list/ANDROID/2.1?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&start={{Date.now()}}&count=200&cat_id=44&tag_id=0&sort_by=0\n优选教程::http://floor.huluxia.com/post/list/ANDROID/2.1?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&start={{Date.now()}}&count=200&cat_id=44&tag_id=4406&sort_by=0\n软件使用::http://floor.huluxia.com/post/list/ANDROID/2.1?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&start={{Date.now()}}&count=200&cat_id=44&tag_id=4401&sort_by=0\n刷机相关::http://floor.huluxia.com/post/list/ANDROID/2.1?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&start={{Date.now()}}&count=200&cat_id=44&tag_id=4403&sort_by=0\nROM资源::http://floor.huluxia.com/post/list/ANDROID/2.1?platform=2&gkey=000000&app_version=4.1.1.3&versioncode=320&market_id=tool_web&start={{Date.now()}}&count=200&cat_id=44&tag_id=4405&sort_by=0\n",
    "sourceGroup": "游戏",
    "sourceIcon": "http://cdn.u1.huluxia.com/g3/M03/53/E0/wKgBOVz4iLyAStJkAAAT8PmIncc154.png",
    "sourceName": "葫芦侠",
    "sourceUrl": "http://floor.huluxia.com",
    "style": "img{\nwidth:100%;\nheight:auto\n}\n.author{\nwidth:20px;\nheight:20px\n}\n.ref{\ncolor:#888\n}\n.time{\nfont-size:12px\n}\n.tag{\ncolor:#555;\nfont-size:12px\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 266,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "发现一个宝藏网站:\n\n有了订阅源[夸克]之后\n完全可以把阅读当做备用浏览器🌹\n\n\n优点如下:\n1.网站本身是官网不容易和谐及更改\n\n2.自带7大搜索引擎:\n点击搜索框上方的\"引擎图标\"更换搜索引擎 \n\n3.可以保存，编辑书签:\n应该是云端记录在你的UserAgent上\n\nps:长按书签图标编辑书签\n\n4.自带的\"精选\"书签就是一个网站导航\n\n5.\"主页\"空白处下拉搜索\n",
    "sourceGroup": "工具",
    "sourceIcon": "https://img.aneeo.com/2019/04/28/5cc5a33cc4c4c.jpg",
    "sourceName": "夸克导航\n[搜索]",
    "sourceUrl": "http://www.wangdaxing.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 280,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767885276802,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.datas",
    "ruleContent": "{{@@id.conTit@h1@html}}\n<audio controls=\"controls\"  src=\"{{java.get('audio')}}\" height=\"1px\"></audio>听报道\n{{@@class.news-date@html}}\n{{@@id.subhead@html}}\n{{@@id.Main_Content_Val@html}}",
    "ruleImage": "$.pict.imgs[0].url##_\\d+_\\d+",
    "ruleLink": "$.link",
    "ruleNextPage": "page",
    "rulePubDate": "$.time@put:{audio:$.audioUrl}",
    "ruleTitle": "$.desc",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "金融::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=100300177;100602264;100602261;100602262;100300470;100300179;100796345&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n公司::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=100300180;100586074;100580455;100580461;100300477&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n经济::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=100300184;100606793;100606782;100606792;100300476&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n政经::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=100300007&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n世界::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=100511634;100580443;100580420;100580410;100300479&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n观点::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=100300002&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n文化::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=100300010&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n科技::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=101426565&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n地产::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=101426566&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n汽车::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=101426567&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n消费::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=101426570&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n能源::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=101426572&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n健康::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=101426574&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n环科::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=101273389&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\n民生::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=101426578&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}\nEnglish::https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=101400652&start={{(page-1)*20}}&count=20&picdim=_75_50&_={{Date.now()}}",
    "sourceGroup": "新闻",
    "sourceIcon": "https://img2.baidu.com/it/u=3373472208,1844650538&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=301",
    "sourceName": "财新",
    "sourceUrl": "https://gateway.caixin.com/api/extapi/homeInterface.jsp?subject=100300180;100586074;100580455;100580461;100300477&start=20&count=20&picdim=_75_50&_=1621855312145",
    "style": "#subhead{\nwidth:100%;\nheight:auto;\nborder:0px solid #000;\nbackground-color:#f8f8f8\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 281,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773221511916,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.newList||class.index-list-item||$.datas[*]",
    "ruleContent": "class.textPageContInner@html||class.textPageCont@html||class.article-txt@html##<div class=\"content-show-more-shadow\"></div>[\\s\\S]+",
    "ruleImage": "img@src||$.pic||$.preview_n||$.pic_l",
    "ruleLink": "tag.h4.-1@a@href||tag.a.0@href||$.http_url||$.mobile_url\n<js>\nif(!result.match(/http/)){\nresult=baseUrl.match(/user/)?\"https://user.guancha.cn\"+result:\"https://m.guancha.cn\"+result}else{result=result}</js>",
    "ruleNextPage": "page",
    "rulePubDate": "class.time.-1@text||tag.span@text||$.news_time",
    "ruleTitle": "h3@text||class.list-item@h4@text||$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://api.guancha.cn/Appdata/newslist.json?id=homepage&newstype=1&page={{page}}\n时评::https://api.guancha.cn/Appdata/newslist.json?id=homepage&newstype=2&page={{page}}\n朋友圈::https://api.guancha.cn/Appdata/newslist.json?id=homepage&newstype=3&page={{page}}\n风闻::https://user.guancha.cn/main/index-list.json?page={{page}}&order=1\n教育::https://m.guancha.cn/education\n法治::https://m.guancha.cn/FaZhi\n社会::https://m.guancha.cn/society\n国际::https://m.guancha.cn/internation\n北美::https://m.guancha.cn/america\n欧洲::https://m.guancha.cn/europe\n周边::https://m.guancha.cn/Neighbors\n亚非拉::https://m.guancha.cn/Third-World\n军事::https://m.guancha.cn/military-affairs\n科技::https://m.guancha.cn/Science\n工程::https://m.guancha.cn/Project\n财经::https://m.guancha.cn/economy\n区域::https://m.guancha.cn/local\n产业::https://m.guancha.cn/Industry\n生活::https://m.guancha.cn/life\n产经::https://m.guancha.cn/chanjing\n文化::https://m.guancha.cn/culture-history\n艺术::https://m.guancha.cn/art\n体育::https://m.guancha.cn/sports\n传媒::https://m.guancha.cn/Media\n历史::https://m.guancha.cn/history",
    "sourceComment": "https://m.guancha.cn/politics/2021_05_24_591826.shtml",
    "sourceGroup": "新闻",
    "sourceIcon": "http://n.sinaimg.cn/news/transform/20170714/6K-b-fyiavtv5754974.jpg",
    "sourceName": "观察者",
    "sourceUrl": "https://m.guancha.cn/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 296,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://m.saowen.net/favicon.ico",
    "sourceName": "扫文小院",
    "sourceUrl": "http://saowen.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 306,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "li@.m-pic-list",
    "ruleContent": "li.tx-box.size.big@all##src=\".*\" data-src##src",
    "ruleImage": "img@data-src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@p.0@text}}{{@@p.1@text}}",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "女生头像::https://mip.woyaogexing.com/touxiang/nv/index<,_{{page}}>.html",
    "sourceComment": "分类自行补全\n分类Url快速生成\nhttp://dalaoha.github.io/yuedu",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://img0.baidu.com/it/u=2874790938,228875074&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=1149",
    "sourceName": "女生头像",
    "sourceUrl": "https://mip.woyaogexing.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 343,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767885412513,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://www.lgstatic.com/thumbnail_300x300/image1/M00/0D/9F/Cgo8PFT4JymAJ5eLAABqgKh965M516.png",
    "sourceName": "坚果云",
    "sourceUrl": "https://www.jianguoyun.com/d/home#/home",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 350,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775591735849,
    "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/{{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}}/",
    "sourceGroup": "美涩",
    "sourceIcon": "https://img4.tuwandata.com/v2/thumb/jpg/NWFkMywxMTI1LDAsOSwzLDEsLTEsTk9ORSwsLDkw/u/res.tuwan.com/zipgoods/20190508/3b6408c569f8eb687a8dd6eb3578bdb9.jpg",
    "sourceName": "正妹AV",
    "sourceUrl": "正妹AV",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 355,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "class.flex-box@a",
    "ruleContent": "class.flex-box@img@html\n@js:\nresult.replace(/\\d+x\\d+/g,'1080x1920')\n.replace(/>/g,'><br><br><br>')",
    "ruleImage": "img@src",
    "ruleLink": "href",
    "ruleNextPage": "page",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "风景::https://app.zol.com.cn/bizhi/fengjing/{{page}}.html\n美女::https://app.zol.com.cn/bizhi/meinv/{{page}}.html\n动漫::https://app.zol.com.cn/bizhi/dongman/{{page}}.html\n创意::https://app.zol.com.cn/bizhi/chuangyi/{{page}}.html\n爱情::https://app.zol.com.cn/bizhi/aiqing/{{page}}.html\n卡通::https://app.zol.com.cn/bizhi/katong/{{page}}.html\n可爱::https://app.zol.com.cn/bizhi/keai/{{page}}.html\n明星::https://app.zol.com.cn/bizhi/mingxing/{{page}}.html\n游戏::https://app.zol.com.cn/bizhi/youxi/{{page}}.html\n车模::https://app.zol.com.cn/bizhi/chemo/{{page}}.html\n潮图::https://app.zol.com.cn/bizhi/chaotu/{{page}}.html\n汽车::https://app.zol.com.cn/bizhi/qiche/{{page}}.html\n品牌::https://app.zol.com.cn/bizhi/pinpai/{{page}}.html\n体育::https://app.zol.com.cn/bizhi/tiyu/{{page}}.html\n节日::https://app.zol.com.cn/bizhi/jieri/{{page}}.html\n影视::https://app.zol.com.cn/bizhi/yingshi/{{page}}.html\n动物::https://app.zol.com.cn/bizhi/dongwu/{{page}}.html\n建筑::https://app.zol.com.cn/bizhi/jianzhu/{{page}}.html\n植物::https://app.zol.com.cn/bizhi/zhiwu/{{page}}.html\n星座::https://app.zol.com.cn/bizhi/xingzuo/{{page}}.html\n美食::https://app.zol.com.cn/bizhi/meishi/{{page}}.html\n手抄报::https://app.zol.com.cn/bizhi/shouchaobao/{{page}}.html\n模特::https://app.zol.com.cn/bizhi/mote/{{page}}.html\n背景::https://app.zol.com.cn/bizhi/beijing/{{page}}.html\n其他::https://app.zol.com.cn/bizhi/qita/{{page}}.html",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://gimg3.baidu.com/search/src=https%3A%2F%2Fb.bdstatic.com%2Fsearchbox%2Fmappconsole%2Fimage%2F20190705%2F80005e53-e911-45bf-ba92-78451e68df2a.jpg&refer=http%3A%2F%2Fwww.baidu.com&app=2021&size=b200,200&n=0&g=0n&er=404&q=75&fmt=auto&maxorilen2heic=2000000",
    "sourceName": "zol壁纸",
    "sourceUrl": "https://app.zol.com.cn/bizhi/fengjing/{{page}}.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 373,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773224753953,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".wc3 li",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "人气：{{@@tag.span.0@text}} · 大小：{{@@tag.span.1@text}}",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "东方玄幻::https://m.zei8.me/xuanhuan\n传统武侠::https://m.zei8.me/chuantongwuxia\n恐怖惊悚::https://m.zei8.me/kongbujing\n现代都市::https://m.zei8.me/xiandaidushi\n人物传记::https://m.zei8.me/renwuchuanji\n网游动漫::https://m.zei8.me/wangyoudongman\n军事历史::https://m.zei8.me/junshilishi\n热点资源::https://m.zei8.me/redianziyuan\n西方奇幻::https://m.zei8.me/xifangqihuan\n仙侠修真::https://m.zei8.me/xianxiaxiuzhen\n侦探推理::https://m.zei8.me/zhentantuili\n经典科幻::https://m.zei8.me/jingdiankehuan\n名著杂志::https://m.zei8.me/mingzhuzazhi\n历史穿越::https://m.zei8.me/lishichuanyue\n传统言情::https://m.zei8.me/chuantongyanqing\n都市社会::https://m.zei8.me/dushishehui\n幻想现言::https://m.zei8.me/huanxiangxianyan\n耽美百合::https://m.zei8.me/danmeibaihe",
    "sourceGroup": "书源",
    "sourceIcon": "https://tse1-mm.cn.bing.net/th/id/OIP-C.-aFdxcsvUb_2C_YJK7uYHAAAAA?w=150&h=150&c=7&o=5&dpr=3&pid=1.7",
    "sourceName": "贼吧",
    "sourceUrl": "https://m.zei8.me",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 383,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "tr.boardlist!0:1:2",
    "ruleContent": ".read@all",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@div@text}}😊{{@a@title}}",
    "ruleTitle": "{{@td.0@text}}😊{{@a@text}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "百合堂::https://bbs.jjwxc.net/board.php?board=55&page={{page}}\n读书心得::https://bbs.jjwxc.net/board.php?board=4&page={{page}}\n网友留言::https://bbs.jjwxc.net/board.php?board=2&page={{page}}\n宠物情缘::https://bbs.jjwxc.net/board.php?board=40&page={{page}}\n时尚::https://bbs.jjwxc.net/board.php?board=16&page={{page}}\n战😍::https://bbs.jjwxc.net/board.php?board=20&page={{page}}\n妈咪::https://bbs.jjwxc.net/board.php?board=39&page={{page}}\n动漫::https://bbs.jjwxc.net/board.php?board=12&page={{page}}\n晋江::https://bbs.jjwxc.net/board.php?board=14&page={{page}}\n交易::https://bbs.jjwxc.net/board.php?board=11&page={{page}}",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://img.7xdown.com/up/2006/202068152643.png",
    "sourceName": "晋江论坛",
    "sourceUrl": "https://bbs.jjwxc.net/board.php?board=55&page=1",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 384,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765214387244,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "table@tr.center01",
    "ruleContent": "table!-1:-2:-3:-4:-5@all",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "script@html##.*2,\\['(.*?)', '(.*?)'\\],.*##$2###",
    "ruleTitle": "{{@a@text}}{{@a.1@title}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "闲聊大区::https://bbs.faloo.com/l/66/{{page}}.html\n小说圈子::http://bbs.faloo.com/l/85/{{page}}.html\n粉丝圈子::http://bbs.faloo.com/l/44/{{page}}.html\n小说论坛::http://bbs.faloo.com/l/101/{{page}}.html\n小说封面::http://bbs.faloo.com/l/107/{{page}}.html\n编辑吐槽::http://bbs.faloo.com/l/108/{{page}}.html",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://app.yinrss.com/Ninja108.png",
    "sourceName": "飞卢论坛",
    "sourceUrl": "https://bbs.faloo.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 392,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217390132,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".game_list@a",
    "ruleImage": "img@src",
    "ruleLink": "href",
    "ruleNextPage": "page",
    "rulePubDate": "img@alt",
    "ruleTitle": "p@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "游戏",
    "sourceIcon": "http://tools.liumingye.cn/favicon.ico",
    "sourceName": "7k女神推荐游戏",
    "sourceUrl": "http://m.7k7k.com/tag/506/index_{{page}}.htm",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 393,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773224506491,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "data",
    "ruleImage": "pic",
    "ruleLink": "playlink",
    "ruleNextPage": "page",
    "rulePubDate": "{{$.category}}😊{{$.html5introduce}}",
    "ruleTitle": "title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "游戏",
    "sourceIcon": "https://www.aoaostar.com/favicon.ico",
    "sourceName": "4399变态版在线玩",
    "sourceUrl": "http://h.4399.com/data/android_s148_{{page}}.js?t=1650965242",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 394,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213889758,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "data.gameList",
    "ruleImage": "png_72",
    "ruleLink": "http://h.17yy.com/#/pages/detail/detail?yy_id={{$.yy_id}}&isLogin=1&gameType=mingame",
    "ruleNextPage": "page",
    "rulePubDate": "desc",
    "ruleTitle": "{{$.gamename}}😊{{$.pingfen}}",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "游戏",
    "sourceIcon": "http://www.yxssp.com/wp-content/uploads/2017/12/yx250.png",
    "sourceName": "17玩无敌版",
    "sourceUrl": "http://h.17yy.com/api/auth/game/gameList.php?appid=wx95c1fa8fbaa09658&action=ztGames&ztid=237&sortType=zt&pageNo={{page}}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 395,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765539059753,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "data",
    "ruleImage": "spic",
    "ruleLink": "url",
    "rulePubDate": "{{$.synopsis}}😏{{$.hot}}",
    "ruleTitle": "{{$.gname}}😏{{$.gtype}}",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "游戏",
    "sourceIcon": "http://wallpaper.cdn.pandora.xiaomi.com/thumbnail/png/w100/MiTv/09698595a4fc3c7ee4d684d39e80b1b0242434583",
    "sourceName": "乐趣小游戏(有请大佬提取下一页)",
    "sourceUrl": "http://h.lequ.com/Load/loadxsjgame",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 396,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236537131,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://static.17k.com/pic/app_logo.png",
    "sourceName": "17K小说",
    "sourceUrl": "https://h5.17k.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 407,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213791273,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "li.item",
    "ruleContent": "{{@h1@text}}{{@.entry-info@html}}{{@.entry-content@all##软件截图##软件截图在醉底部}}<img src=\"{{@img.aligncenter.1@data-original}}\"><img src=\"{{@img.aligncenter.3@data-original}}\"><img src=\"{{@img.aligncenter.5@data-original}}\"><img src=\"{{@img.aligncenter.7@data-original}}\">",
    "ruleImage": "img@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@span.0@text}}  {{@span.1@text}}  阅读{{@span.2@text}}  点赞{{@span.3@text}}",
    "ruleTitle": "{{@a.1@text}}  {{@a.2@text}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "美图::https://www.fy6b.com/category/all/android/launcher/page/{{page}}",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://p.ssl.qhimg.com/dr/160_160_/t01be16f6e1145ea5fb.png",
    "sourceName": "枫音美图应用",
    "sourceUrl": "https://www.fy6b.com",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 411,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775591629811,
    "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": "涩图",
    "sourceIcon": "https://cdn.sshs.rip/7b/ef/7b521fec7f16375cdae775707e1c63ef.webp",
    "sourceName": "eve",
    "sourceUrl": "http://www.everiaclub.com/",
    "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": 1775586071363,
    "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": "涩图",
    "sourceIcon": "https://pashalism.com/wp-content/uploads/2022/03/2341-33.jpg",
    "sourceName": "👙工口画像",
    "sourceUrl": "https://pashalism.com/##@Mengteen",
    "type": 0,
    "variableComment": "🏄Mengteen提示：在此输入关键词搜索！"
  },
  {
    "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": 1775586135304,
    "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": "美涩",
    "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": 1775586154133,
    "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": "美涩",
    "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": 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": 1775591657745,
    "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": "涩图",
    "sourceIcon": "https://i0.hdslb.com/bfs/article/8f90cb146c0388ad895f504affee82f1ab0d9f6f.jpg@656w_820h_progressive.webp",
    "sourceName": "EVERIA.CLUB",
    "sourceUrl": "https://everia.club",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 431,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775586218163,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.list@li",
    "ruleContent": "class.block recipe-show@html",
    "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": "工具",
    "sourceIcon": "https://s.chuimg.com/favicon.ico",
    "sourceName": "下厨房",
    "sourceUrl": "https://www.xiachufang.com/category/40076/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 446,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208207598,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".clearFix.1@li",
    "ruleContent": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n{{@tag.title@html}}\n{{@.detail_top@html}}",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": ".listnext@href",
    "rulePubDate": "{{@tag.span@text}}",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "今日谈::http://www.banyuetan.org/byt/jinritan/index.html\n时政讲解::http://www.banyuetan.org/byt/shizhengjiangjie/index.html\n军事::http://www.banyuetan.org/byt/junshi/index.html\n国际::http://www.banyuetan.org/byt/guoji/index.html\n基层治理::http://www.banyuetan.org/byt/jicengzhili/index.html\n文化::http://www.banyuetan.org/byt/wenhua/index.html\n教育::http://www.banyuetan.org/byt/jiaoyu/index.html\n经济::http://www.banyuetan.org/byt/jingji/index.html\n人物::http://www.banyuetan.org/byt/renwu/index.html\n思想::http://www.banyuetan.org/byt/sixiang/index.html\n民生::http://www.banyuetan.org/byt/minshenghuati/index.html\n思政::http://www.banyuetan.org/byt/zllb/index.html\n",
    "sourceGroup": "新闻",
    "sourceIcon": "http://www.banyuetan.org/favicon.ico",
    "sourceName": "半月谈",
    "sourceUrl": "http://www.banyuetan.org/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 469,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765537953665,
    "loadWithBaseUrl": true,
    "loginUrl": "https://www.qtfm.cn",
    "preload": false,
    "ruleArticles": "$.data.channels",
    "ruleImage": "$.cover",
    "ruleLink": "https://m.qtfm.cn/vchannels/{$.id}",
    "ruleNextPage": "page",
    "rulePubDate": "$.update_time",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "小說::https://i.qtfm.cn/capi/neo-channel-filter?category=521&attrs=0&curpage={{page}}\n評書::https://i.qtfm.cn/capi/neo-channel-filter?category=3496&attrs=0&curpage={{page}}\n脫口秀::https://i.qtfm.cn/capi/neo-channel-filter?category=3251&attrs=0&curpage={{page}}\n相聲::https://i.qtfm.cn/capi/neo-channel-filter?category=527&attrs=0&curpage={{page}}\n頭條::https://i.qtfm.cn/capi/neo-channel-filter?category=545&attrs=0&curpage={{page}}\n情感::https://i.qtfm.cn/capi/neo-channel-filter?category=529&attrs=0&curpage={{page}}\n兒童::https://i.qtfm.cn/capi/neo-channel-filter?category=1599&attrs=0&curpage={{page}}\n出版::https://i.qtfm.cn/capi/neo-channel-filter?category=3636&attrs=0&curpage={{page}}\n歷史::https://i.qtfm.cn/capi/neo-channel-filter?category=531&attrs=0&curpage={{page}}\n音樂::https://i.qtfm.cn/capi/neo-channel-filter?category=523&attrs=0&curpage={{page}}\n財經::https://i.qtfm.cn/capi/neo-channel-filter?category=533&attrs=0&curpage={{page}}\n教育::https://i.qtfm.cn/capi/neo-channel-filter?category=537&attrs=0&curpage={{page}}\n娛樂::https://i.qtfm.cn/capi/neo-channel-filter?category=547&attrs=0&curpage={{page}}\n影視::https://i.qtfm.cn/capi/neo-channel-filter?category=3588&attrs=0&curpage={{page}}\n文化::https://i.qtfm.cn/capi/neo-channel-filter?category=3613&attrs=0&curpage={{page}}\n外語::https://i.qtfm.cn/capi/neo-channel-filter?category=543&attrs=0&curpage={{page}}\n汽車::https://i.qtfm.cn/capi/neo-channel-filter?category=3385&attrs=0&curpage={{page}}\n科技::https://i.qtfm.cn/capi/neo-channel-filter?category=535&attrs=0&curpage={{page}}\n戲曲::https://i.qtfm.cn/capi/neo-channel-filter?category=3276&attrs=0&curpage={{page}}\n廣播劇::https://i.qtfm.cn/capi/neo-channel-filter?category=3442&attrs=0&curpage={{page}}\n二次元::https://i.qtfm.cn/capi/neo-channel-filter?category=3427&attrs=0&curpage={{page}}\n校園::https://i.qtfm.cn/capi/neo-channel-filter?category=1737&attrs=0&curpage={{page}}\n品牌電台::https://i.qtfm.cn/capi/neo-channel-filter?category=3600&attrs=0&curpage={{page}}\n超級會員::https://i.qtfm.cn/capi/neo-channel-filter?category=3637&attrs=0&curpage={{page}}\n聯合專區::https://i.qtfm.cn/capi/neo-channel-filter?category=3631&attrs=0&curpage={{page}}\n生活::https://i.qtfm.cn/capi/neo-channel-filter?category=3670&attrs=0&curpage={{page}}\n母嬰::https://i.qtfm.cn/capi/neo-channel-filter?category=3675&attrs=0&curpage={{page}}",
    "sourceGroup": "资源绘",
    "sourceIcon": "http://mmbiz.qpic.cn/mmbiz_png/JiaKAiafaUovVnI8GusB9Ml5eF2vywHT8oTgGNVOM5yTdruufEpR9PoGaxicyMPJu2jdYSiaaHzVetOoJRWmGSOriaA/0?wx_fmt=png",
    "sourceName": "蜻蜓FM",
    "sourceUrl": "蜻蜓FM",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 473,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775644760047,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".pics@.fleft",
    "ruleContent": "\nclass.talk_pic@tag.img@src##\\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\">\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\n<script src=\"http://libs.baidu.com/jquery/2.0.0/jquery.min.js\"></script>\n<h3>{{@@.tcenter.0@text}}</h3>\n<h6>{{@@.fleft.3@text}}</h6>\n<div id=\"box\"></div>\n<h6 id=\"loads\"><i>加载中...</i></h6>\n\n<script>\n    srclist = \"{{result}}\".split(\"$\")\n    page = srclist.length\n\n    box = document.getElementById(\"box\")\n    loads = document.getElementById(\"loads\")\n\n    h5 = '<h5 style=\"border-left:2px solid#000;margin-bottom:0;padding-left:5;\">'\n    h55 = '/' + page + '</h5>'\n\n    img = '<img onload=\"box.viewer.update()\" src=\"'\n\n    $(document).ready(function () {\n        //初始加载四张图\n        for (i = 0; i < 4; i++) {\n            box.innerHTML += h5 + (i + 1) + h55\n            box.innerHTML += img + srclist[i] + '\">'\n        }\n        new Viewer(box, { title: false, interval: 3000 })\n        i = 4\n        io = new IntersectionObserver(x => {\n            if (x[0].intersectionRatio <= 0) return\n            for (I = 0; I < 4; I++) {\n                getImg(i, page, srclist)\n                i += 1\n            }\n        }).observe(loads)\n\n    })\n\n    function getImg(i, page, srclist) {\n\n        if (i <= page && srclist[i] != undefined) {\n            box.innerHTML += h5 + (i + 1) + h55\n            box.innerHTML += img + srclist[i] + '\">'\n        } else {\n            $('#loads').html(\"\");\n          \n        }\n    }\n</script>",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".greyc@text",
    "ruleTitle": ".tits@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "随机::http://ciyuandao.com/photo/list/0-0-{{Math.ceil(Math.random()*448)}}\n图集::http://ciyuandao.com/photo/list/0-0-{{page}}\n变量搜索::http://ciyuandao.com/photo/list/0-0-{{page}}?key={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('cos'):\"\"}}{{source.getVariable()}}",
    "sourceGroup": "资源绘",
    "sourceIcon": "http://ciyuandao.com/favicon.ico?v=3IKjOmQZJTyJIoJ39HHfDV4Nfy42njGvPwLEvonkJB8",
    "sourceName": "次元岛",
    "sourceUrl": "http://ciyuandao.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 477,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207204270,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".list-item-wrap||.bbs-sl-web-post-body",
    "ruleLink": "https://m.hupu.com/bbs{{@@a.0@href}}",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@@.t-lights@text}}{{@@.t-replies@text}}{{@@.post-datum@text}},{{@@.post-auth@text}},{{@@.post-time@text}}",
    "ruleTitle": ".t-title@text||.post-title@a.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "热贴::https://bbs.hupu.com/all-gambia\n主干道::https://bbs.hupu.com/topic-daily\n股票区::https://bbs.hupu.com/stock\n历史区::https://bbs.hupu.com/history-hot\n恋爱区::https://bbs.hupu.com/love-hot\n校园区::https://bbs.hupu.com/school-hot\n职场区::https://bbs.hupu.com/workplace-hot",
    "sourceGroup": "新闻",
    "sourceIcon": "https://imgslim.geekpark.net/geekpark-icon-196-black.png",
    "sourceName": "虎扑步行街（一起来吃瓜）",
    "sourceUrl": "https://bbs.hupu.com/all-gambia",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 503,
    "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": 1773207487287,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.lis",
    "ruleContent": "html",
    "ruleImage": "img@data-original",
    "ruleLink": ".bt@a@href##https://www##https://m",
    "ruleNextPage": "page",
    "rulePubDate": ".time@text",
    "ruleTitle": ".bt@a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "原创::https://m.3dmgame.com/original_all_{{page}}/\n新闻::https://m.3dmgame.com/news_all_{{page}}/\n娱乐::https://m.3dmgame.com/bagua_all_{{page}}/",
    "sourceGroup": "游戏",
    "sourceIcon": "https://www.3dmgame.com/newpage/images/logo.png",
    "sourceName": "3DMGAME",
    "sourceUrl": "https://m.3dmgame.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 504,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208232906,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "#main@article",
    "ruleContent": "{{@@head@all}}\n{{@@#main@.single-content@all}}",
    "ruleImage": "img@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".date@text",
    "ruleTitle": "h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "图文教程::https://www.cadzxw.com/tuwenjiaocheng/page/{{page}}\r\n习题库::https://www.cadzxw.com/xitiku/page/{{page}}",
    "sourceGroup": "工具",
    "sourceIcon": "https://gdown.baidu.com/appcenter/source/5343068711/e4d5e5515b1725c640e69e8f06d65edf/res/5X1.png",
    "sourceName": "CAD",
    "sourceUrl": "https://www.cadzxw.com/",
    "style": ".single-content{margin:1em}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 505,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765538242550,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.info||$.data.list",
    "ruleImage": "$.cover||$.img_url.[0]",
    "ruleLink": "<js>\nif(/piyao/.test(baseUrl)){\n\t\t\"https://piyao.kepuchina.cn/h5/videodetail?id={{$.id}}\";\n\t\t}else{\t\n\t\t\t\"https://h5.kepuchina.cn/scientificwebsite/article?id={{$.id}}\"\n}\n</js>",
    "ruleNextPage": "page",
    "rulePubDate": "$.shelve_time||$.publish_date\n<js>\nif(/\\d{10}/.test(result)){\njava.timeFormatUTC(result*1000,\"yyyy/MM/dd HH:mm:ss\",28800000)\n\t}else{\n\tresult\n}\n</js>",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "辟谣::https://piyao.kepuchina.cn/h5/ajaxGetMediaList?page={{page}}&page_type=2&title=\n健康::https://m.kepuchina.cn/api/channel/list?url=jiankang&page={{page}}&size=10\n前沿::https://m.kepuchina.cn/api/channel/list?url=qianyan&page={{page}}&size=10\n百科::https://m.kepuchina.cn/api/channel/list?url=baike&page={{page}}&size=10\n军事::https://m.kepuchina.cn/api/channel/list?url=junshi&page={{page}}&size=10\n科幻::https://m.kepuchina.cn/api/channel/list?url=kehuan&page={{page}}&size=10\n安全::https://m.kepuchina.cn/api/channel/list?url=anquan&page={{page}}&size=10\n人物::https://m.kepuchina.cn/api/channel/list?url=renwu&page={{page}}&size=10\n智农::https://m.kepuchina.cn/api/channel/list?url=zhinong&page={{page}}&size=10\n资源::https://m.kepuchina.cn/api/channel/list?url=ziyuan&page={{page}}&size=10\n视频科普::https://cloud.kepuchina.cn/h5/searchList?page={{page}}&type=2&size=16\n挂图科普::https://cloud.kepuchina.cn/h5/searchList?page={{page}}&type=3&size=16\n音频::https://cloud.kepuchina.cn/h5/searchList?page={{page}}&type=4&size=16\n图片科普::https://cloud.kepuchina.cn/h5/searchList?page={{page}}&type=5&size=16",
    "sourceGroup": "新闻",
    "sourceIcon": "http://mmbiz.qpic.cn/mmbiz_png/JiaKAiafaUovVnI8GusB9Ml5eF2vywHT8oTgGNVOM5yTdruufEpR9PoGaxicyMPJu2jdYSiaaHzVetOoJRWmGSOriaA/0?wx_fmt=png",
    "sourceName": "科普中国",
    "sourceUrl": "https://m.kepuchina.cn/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 512,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207231710,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.items",
    "ruleContent": "<body>\n{{$.data.content}}\n{{$.data.[0].content}}\n</body>",
    "ruleImage": "$.pic",
    "ruleLink": "<js>\nif(/yaowen/.test(baseUrl)){\n\t\t\"https://app.guancha.cn/news/content?device=android&id={{$.id}}&type=1\";\n\t\t}else{\t\n\t\t\t\"https://app.guancha.cn/post/get-post-by-id-v2?device=android&post_id={{$.id}}\"\n}\n</js>",
    "ruleNextPage": "page",
    "rulePubDate": "{{$.user_nick}}🐮{{$.created_at}}🐮{{$.location_text}}{{$.news_time}}",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "新闻::https://app.guancha.cn/news/yaowen-new.json?pageNo={{page}}\n风闻::https://app.guancha.cn/main/get-index-list?v=202212021&device=android&access-token=&page_no={{page}}&order=1",
    "sourceGroup": "新闻",
    "sourceIcon": "https://tse2-mm.cn.bing.net/th/id/OIP-C.OIFN79QtHbzGGt-fzbpKogHaEo?pid=ImgDet&rs=1",
    "sourceName": "这就是中国🇨🇳",
    "sourceUrl": "https://app.guancha.cn/main/get-index-list?v=202212021&device=android&access-token=&page_no={{page}}&order=1",
    "style": "p {\r\n    display: block;\r\n    margin-block-start: 1em;\r\n    margin-block-end: 1em;\r\n    margin-inline-start: 0px;\r\n    margin-inline-end: 0px;\n    line-height:200%;\r\n}\nbody {\r\n    background: #f6f6f6;\r\n}\nimg{\n\twidth: 360px;\r\n  height: auto;\r\n  object-fit: cover;\n\t}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 531,
    "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": 1773224473196,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data[?(@.vote_positive>=@.vote_negative && @.vote_negative<30)]",
    "ruleDescription": "$.images[*].full_url##\\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=\"'+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{{$.content##\\#img\\#}}\r\n<ul id=\"box\">\r\n{{result}}\r\n</ul>\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>\r\nroot = document.getElementById('box');\r\n//查看大图插件\r\nnew Viewer(root,{title:false,interval:3000});\r\n</script>",
    "ruleImage": "$.images[0].url",
    "ruleLink": "$.images[0].url",
    "ruleNextPage": "@js:\nresult = '{{baseUrl}}'.replace(/\\?start_id=\\d{7,}$/,'')+'?start_id={{$.data[-1].id}}'",
    "rulePubDate": "$.date##^(\\d{4}-\\d{2}-\\d{2})T(\\d{2}:\\d{2}:\\d{2})\\+08:00$##$1&nbsp;$2",
    "ruleTitle": "👍{{$.vote_positive}}&nbsp; 🤢{{$.vote_negative}}&nbsp; 🖼️{{$.images.length()}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "无聊图::/api/v1/comment/list/26402\n随手拍::/api/v1/comment/list/21183\n女装::/api/v1/comment/list/108629",
    "sourceGroup": "新闻",
    "sourceIcon": "https://cdn.jandan.net/static/img/favicon.ico",
    "sourceName": "煎蛋无聊图",
    "sourceUrl": "https://api.jandan.net",
    "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": 555,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "$(document).ready(function(){\n    $(\".text-center\").remove();\n    $(\"iframe\").remove();\n    $(\"script\").eq(12).text(\"\");\n    $(\"div.root--ujvuu\").remove();\n});",
    "lastUpdateTime": 1773224432529,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "（挂梯使用）",
    "sourceGroup": "美涩",
    "sourceIcon": "https://assets-cdn.jable.tv/assets/icon/favicon-32x32.png",
    "sourceName": "Jable视频",
    "sourceUrl": "https://jable.tv/?lang=zh",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 569,
    "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\"}",
    "lastUpdateTime": 1773224373558,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "动漫漫画",
    "sourceIcon": "https://asset.brandfetch.io/idIlKj_n7C/idSsbP7h1m.png",
    "sourceName": "Pixiv",
    "sourceUrl": "https://www.pixiv.net/novel",
    "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": 1775587134866,
    "loadWithBaseUrl": true,
    "loginUrl": "https://xchina.co/login.php",
    "preload": false,
    "ruleArticles": "class.item",
    "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": "美涩",
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 573,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775587193273,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "美涩",
    "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,
    "lastUpdateTime": 1773224617784,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "li",
    "ruleContent": ".post@all",
    "ruleLink": "a@href<js>result=\"https://www.fojingzaixian.com/\"+result\nresult</js>",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "大藏经::https://www.fojingzaixian.com/dazhengzang.html\n乾隆大藏经::https://www.fojingzaixian.com/qianlongdazangjing.html",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://img1.baidu.com/it/u=4002694570,770476022&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=534",
    "sourceName": "佛经大全",
    "sourceUrl": "www.fojingzaixian.com/dazhengzang.html",
    "style": "*{\n\tmax-width:100%;\n\theight: auto;\n\tletter-spacing: 0.5;\n\tword-wrap: break-word\n}\n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 575,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773224624431,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".fojing@ul@li",
    "ruleContent": ".post@all",
    "ruleLink": "a@href",
    "ruleTitle": "a@text<js>\nresult=result.replace(\"大正藏\" ,\"\").replace(\"乾隆大藏经\" ,\"\").replace(\"中央统战部\" ,\"\").replace(\"国家宗教事务局\" ,\"\").replace(\"人民网\" ,\"\").replace(\"新华网\" ,\"\").replace(\"中国网\" ,\"\").replace(\"支付宝公益\" ,\"\").replace(\"腾讯公益\" ,\"\")\nresult\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://img1.baidu.com/it/u=4002694570,770476022&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=534",
    "sourceName": "经典佛经",
    "sourceUrl": "https://www.fojingzaixian.com/",
    "style": "*{\n\tmax-width:100%;\n\theight: auto;\n\tletter-spacing: 0.5;\n\tword-wrap: break-word\n}\n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 578,
    "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": 1773224163585,
    "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",
    "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": "美涩",
    "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": 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": 1775591692028,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "article",
    "ruleImage": "img@data-src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".meta-date@text",
    "ruleTitle": "img@alt",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "涩图",
    "sourceIcon": "https://cdn.sshs.rip/42/e4/42a57308ab5eb9698a51342e1b658be4.webp",
    "sourceName": "呦糖社",
    "sourceUrl": "https://www.nicesss.com/siz/rosiyxm/page/{{page}}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 591,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773206563509,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.four columns box-item-fixed-index a-relative",
    "ruleContent": "link@all&&.row!0:1@all",
    "ruleImage": ".mockup-thumb@style##.*\\(|\\);",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".d-btn@text",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "简体::https://font.sucai999.com/search/0_1_{{page}}.html\n繁体::https://font.sucai999.com/search/0_2_{{page}}.html",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://c-ssl.duitang.com/uploads/item/202005/30/20200530081030_xrh5J.thumb.1000_0.jpeg",
    "sourceName": "字体下载",
    "sourceUrl": "https://font.sucai999.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 605,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1767884471715,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "阅读资源共享QQ群：1015950952",
    "sourceGroup": "工具",
    "sourceIcon": "https://img1.baidu.com/it/u=3899318445,482323021&fm=253&fmt=auto&app=138&f=PNG?w=256&h=256",
    "sourceName": "坚果云登陆页面",
    "sourceUrl": "https://www.jianguoyun.com/d/signup?next=%2Fs%2Fpricing&signup_pricing=true#from=https%3A%2F%2Fwww.jianguoyun.com%2Fs%2Fpricing",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 634,
    "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": 1775645046847,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".product-list.gallery ul li",
    "ruleContent": ".info-box@p.-1@all&&.bigimg@img@all##src=\"https://img.yalayi.net/v2/images/mbg.png\" data-original##src",
    "ruleImage": "img@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": "em@text##\\n##   ",
    "ruleTitle": "a.1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "涩图",
    "sourceIcon": "https://imgsa.baidu.com/forum/pic/item/d0c8a786c9177f3e8ebb0cca7ecf3bc79e3d566e.jpg",
    "sourceName": "雅拉伊美图",
    "sourceUrl": "https://m.yalayi.com/gallery/index<,_{{page}}>.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 651,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773208399117,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".box@.excerpt.excerpt-one",
    "ruleImage": "img@data-original##$##,{\"headers\":{\"Referer\":\"https://www.san449.com\"}}",
    "ruleLink": "h2@a@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@.text-muted.1@text}} {{@p.note@text}}",
    "ruleTitle": "{{@a@text}} {{@.subtitle@text}} {{@.post-tags@text}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "美女写真::https://www.san449.com/meinv/page/{{page}}\n连载漫画::https://www.san449.com/item/%e8%bf%9e%e8%bd%bd/page/{{page}}\n完结漫画::https://www.san449.com/item/%e5%ae%8c%e7%bb%93/page/{{page}}\n爱情漫画::https://www.san449.com/mh/page/{{page}}\n\n搜索::https://www.san449.com/?s={{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('00后'):\"\"}}{{source.getVariable()}}&page/{{page}},{'webView': true}",
    "sourceGroup": "美涩",
    "sourceIcon": "https://www.san449.com/favicon.ico",
    "sourceName": "快乐图书",
    "sourceUrl": "https://www.san449.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 687,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773229509262,
    "loadWithBaseUrl": true,
    "loginUrl": "◎③小说◎\n【https://www.xssousou.com/?from=chaonengsou】《📚Ⅰ小说搜搜》『分享全本』\n【https://noveless.com/】《📚Ⅰ书荒部落》『精校网络小说，全本下载』\n【http://m.s5l.com/】《📚Ⅰ小说社区》『论坛，社区，下载』\n【https://m.huangdizhijia.com/】《📚Ⅰ皇帝之家》『精校全本，txt无错』\n【https://m.txt80.com/​】《📚Ⅰ八零电子书》『电子书下载，需要等待三秒打开』\n【http://www.12z.cn/index.html】《📚Ⅰ免费小说网》『精校全本，txt无错』\n【http://zxcs.info/】《📚Ⅰ知轩藏书①》『比较精选』\n【https://zxcstxt.com/】《📚Ⅰ知轩藏书②》『比较精选』\n【https://www.zei8.vip/】《📚Ⅰ贼吧网》『txt格式下载』\n【https://www.youasj.com/】《📚Ⅰ右岸书居》『网盘下载』\n【https://www.hts886.com】《📚Ⅰ黑图电子书》『完本小说下载』\n【https://sj.qubook.cc】《📚Ⅰ手机趣书》『宝书网』\n【https://www.15huang.com】《📚Ⅰ书荒网》『男频，显示下载量和大小』\n【http://www.txtnovel.top/】《📚Ⅰ书香门第》『女频交流论坛，有声剧』\n【http://m.aqtxt.com/】《📚Ⅰ爱奇txt》『比较杂，网络小说下载』\n【https://book.gouyg.com】《📚Ⅰ狗狗小说网》『精校网文』\n【https://www.qiantxt.com/】《📚Ⅰ千书小说》『txt无错』\n【https://www.downtxts.com/】《📚Ⅰtxt免费》『txt格式』\n◎④出版◎\n【https://zlib.wiki】《🗞️ⅠZ-Library》『https://zlib.inkⅠhttps://zlib.quest』\n【https://swpdf.com/?ref=adzhp.vip】《🗞️Ⅰ三无书舍》『资源全,pdf』\n【https://www.youyidu.xyz/】《🗞️Ⅰ有益读》『书籍有用，高质量内容』\n【http://www.ssylu.com/】《🗞️Ⅰ书山有路》『下载方便』\n【https://www.pdfdrive.com/】《🗞️ⅠPDF DRIVE》『7000多万本书，666』\n【https://bks.thefuture.top/】《🗞️ⅠTHEFUTURE 阅读》『资源全，电子书下载』\n【https://sobooks.net/】《🗞️Ⅰsobooks》『出版文学』\n【https://www.iyd.wang/】《🗞️Ⅰ爱阅读》『内容不多，支持多种格式下载』\n【http://www.panduoduo.top/t/2】《🗞️Ⅰ盘多多资源》『网盘资源，比较全』\n【https://www.tianlangbooks.com/】《🗞️Ⅰ天浪书屋》『下载站，暗号』\n【https://www.jiumodiary.com/】《🗞️Ⅰ鸠摩搜书》『知名电子书下载搜索网站』\n【https://xmsoushu.com/】《🗞️Ⅰ熊猫搜书》『聚合电子书搜索』\n【https://zure.fun/】《🗞️Ⅰzure电子书》『mobi,eupb』\n【https://kgbook.com/】《🗞️Ⅰ苦瓜书盘》『精选下载小站』\n【https://www.soushu.vip/】《🗞️Ⅰ搜书网》『免费搜书引擎，多种格式下载』\n【https://ibooks.org.cn/】《🗞️Ⅰ读书小站》『简洁，无广告』\n【http://www.duodu.cc/】《🗞️Ⅰ多读》『各领域书籍』\n【https://xxurls.com/】《🗞️Ⅰxx资源网》『各领域，教科书下载』\n【https://www.sxpdf.com/】《🗞️Ⅰ龙行天下》『pdf格式』\n【https://ebooklist.mobi/】《🗞️Ⅰ书单》『电子书免费下载』\n【https://new.shuge.org/】《🗞️Ⅰ书格》『古籍』\n【http://www.tushu007.com/】《🗞️Ⅰ第一图书网》『图书馆』\n【http://ebook.name/】《🗞️Ⅰ采书》『聚合，下载』\n【https://ibooks.org.cn/】《🗞️Ⅰ读书小站》『简洁』\n【https://www.shuxiangjia.cn/?ref=adzhp.vip】《🗞️Ⅰ书享家》『资源全』\n◎⑤杂志◎\n【http://www.fuyoutech.club/】《📰Ⅰ期刊杂志》『杂志大全』\n【https://m.fx361.com/】《📰Ⅰ参考网》『期刊』\n【http://www.53bk.com/baokan/】《📰Ⅰ报纸大全》『报纸』\n【https://web.591adb.cn/sxsfdxtsg.html】《📰Ⅰ爱读宝》『杂志期刊免费』\n【https://www.92gushi.com/】《📰Ⅰ就爱故事网》『故事』\n【http://www.92yilin.com/】《📰Ⅰ意林》『大名鼎鼎』\n◎⑥书单◎\n【https://vt.sm.cn/api/novelStarReco/index】《📜Ⅰ星云推书☆网文》『搜索，随机推荐』\n【https://www.yousuu.com/】《📜Ⅰ优书网☆网文》『不多说，应该都知道』\n【https://www.tuishujun.com/】《📜Ⅰ推书君☆网文》『类似优书网』\n【http://www.twiwen.com/】《📜Ⅰ闲也推文☆网文》『女频』\n【https://www.douban.com/group/658662/discussion?start=0】《📜Ⅰ豆瓣小组☆网文》『不多说』\n【https://www.tuituishu.com/】《📜Ⅰ推推书☆出版》『书籍较少，比较精选』\n【https://www.mrsd.top/shudan/】《📜Ⅰ莫若书单☆出版》『100本推书随机，也可下载』\n【https://http561856124.wordpress.com/】《📜Ⅰ多读书☆出版》『书籍推荐，书单，epub』\n【https://shenmezhidedu.com/】《📜Ⅰ什么值得读☆出版》『资源较杂』\n【https://www.boyunso.com/】《📜Ⅰ拨云搜索☆查找》『查找小说』\n◎⑦工具◎\n【https://urlify.cn/】《🛠️Ⅰ短链接》『输入网址，生成一个极短的跳转链接』\n【https://t.xxgeek.com/?ref=www.8kmm.com】《🛠️Ⅰ极客》『小功能工具箱，常用』\n【https://www.ilovepdf.com/zh-cn?ref=www.8kmm.com】《🛠️ⅠPDF爱好者》『免费，在线压缩，转换』\n【https://tools.miku.ac/?ref=adzhp.vip】《🛠️ⅠMikuTools - 工具集合》『非常牛，工具多，分类全』\n【https://www.remove.bg/zh】《🛠️Ⅰ在线抠图》『上传图片，抠图，好用』\n【https://convertio.co/zh/mobi-converter/】《🛠️Ⅰconvertio转换器》『多种格式转换』\n【http://24mail.chacuo.net/】《🛠️Ⅰ临时邮箱》『搭建一个临时邮箱，24小时』\n【https://cli.im/】《🛠️Ⅰ草料二维码》『文件链接转换二维码』\n【https://bigjpg.com/】《🛠️ⅠAI人工智能图片放大》『上传图片，放大，升级』\n【https://www.ip138.com/】《🛠️Ⅰ查询网》『ip查询，备用域名』\n【https://www.toolfk.com/】《🛠️Ⅰ最强工具箱》『小工具贼多，好用』\n【https://cp.anyknew.com/】《🛠️Ⅰ拷贝兔》『不同设备间文件或文本的临时性快速分享』\n【https://pearocr.com/】《🛠️ⅠpearOCR》『文字识别，ocr』\n【https://www.67tool.com/?ref=adzhp.vip】《🛠️Ⅰ即时工具》『安全，快捷，好用』\n【https://d.xbcpy.com/jx.php】《🛠️Ⅰ去水印》『输入链接地址，有次数限制』\n【https://www.99cankao.com/】《🛠️Ⅰ参考计算网》『计算工具』\n【https://qrbtf.com/】《🛠️Ⅰ二维码参数》『制作二维码』\n【https://zh.recompressor.com/】《🛠️Ⅰ图像压缩》『免费』\n◎⑧查询◎\n【https://www.qweather.com/】《🔭Ⅰ查询天气》『查询天气』\n【http://www.jsons.cn/ipbatch/】《🔭Ⅰ域名地址查询》『批量，多选』\n【https://www.kuaidi.com/】《🔭Ⅰ查询快递》『单号』\n【https://www.gaitubao.com/exif】《🔭Ⅰ查询照片》『照片数据，编码』\n【https://www.matools.com/unit-time】《🔭Ⅰ时间换算》『换算』\n【https://www.beijing-time.org/riqi.htm】《🔭Ⅰ查询日期》『日期』\n【https://www.ip138.com/carlist.htm】《🔭Ⅰ查询车牌》『车牌』\n【http://www.114best.com/tel/】《🔭Ⅰ查询电话》『电话』\n◎⑨字体◎\n【https://m.qiuziti.com/#/】《✏️Ⅰ求字体网》『查找字体，pc端可下载』\n【https://www.hellofont.cn/】《✏️Ⅰ字由》『免费和商用字体，全』\n【http://www.zhaozi.cn/】《✏️Ⅰ找字网》『多款免费字体』\n【https://www.dafont.com/】《✏️ⅠDAFONT》『提供英文字体下载』\n【http://m.17ziti.com/】《✏️Ⅰ字体之家》『字体厂商大全』\n【http://www.maoken.com】《✏️Ⅰ猫啃网》『最新最全的免费商用字体下载网站』\n【https://fontru.com/?ref=adzhp.vip】《✏️Ⅰ字如网》『下载字体』\n【https://www.100font.com/】《✏️Ⅰ100font》『精选』\n◎⑩影视◎\n【http://www.549.tv/】《📺Ⅰ影视森林☆》『聚合影视，全，有他就够了』\n【https://ymck.me/】《📺Ⅰ影猫仓库☆》『聚合影视，全，有他就够了』\n【https://www.wandou.pro/】《📺Ⅰ豌豆电影》『电影，多站点』\n【http://dyxs11.com/】《📺Ⅰ电影先生》『高清』\n【https://33.agilestudio.cn/invite?userCode=a3bkHMAw】《📺Ⅰ33台词》『通过台词找电影』\n【https://zhaotaici.cn/mindex.html】《📺Ⅰ找台词》『免费』\n【https://www.mvcat.com/】《📺Ⅰ影猫》『电影引擎搜索』\n【https://zimuku.org/】《📺Ⅰ字幕库》『界面简洁清爽，下载字幕台词』",
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('•');\nfor(i = 0;i<list.length-1;i++){\n\tlet index =/【(.*?)】/.test(list[i])?list[i].match(/【(.*?)】/)[1]:\"\";\n\tlet src = /@(.*?)@/.test(list[i])?list[i].match(/@(.*?)@/)[1]:\"\";\n\tlet text = /《(.*?)》/.test(list[i])?list[i].match(/《(.*?)》/)[1]:\"\";\n\tlet intro = /『(.*?)』/.test(list[i])?list[i].match(/『(.*?)』/)[1]:\"\";\tjson.push({index:index,src:src,text:text,intro:intro})\n\t}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleDescription": "❗️0、3、开始❗️\n<style>\niframe{\n\twidth:0;\n\theight:0\n\t}\n\tbutton{\n\t\tposition:absolute;\n\ttop:35%;\n\tfont-size:2em;\n\twidth:80px;\n\theight:50px;\n\tright:0\n\t\t}\ninput{\n\twidth:80%;\n\theight:40px;\n\tborder:1px solid #000;\n\tborder-radius:5px;\n\toutline:0;\n\tposition:absolute;\n\ttop:25%\n\t}\n</style>\n<input type=\"text\" id=\"text\">\n<button onClick=\"clickme()\">导入</button>\n<iframe id=\"iframe\" src=\"\"></iframe>\n<script > var content = clipboardData.getData(\"Text\"); if (content!=null) { document.write(\"<center><font size=5 color=red>WARNING, TEXT RETRIEVED:</font> (see below)<br><br><span style='background-color: #FFFF00'>\"); document.write(content); document.write(\"</span>\");} else { document.write('<center>No text found in clipboard. This is a good thing!<br><br>Works with Internet Explorer and Netscape.'); } </script>\n<script>\nfunction clickme(){\ntext=document.getElementById('text').value;\nurl=\"legado://import/auto?src=\"+text;\ndocument.getElementById('iframe').src=url;\n}\n</script>\n❗️0、3、结束❗️\n❗️0、1、开始❗️\n <script>function $(selector) { return document.querySelector(selector); }\nfunction $$(selector) { return document.querySelectorAll(selector); }</script>\n\n<style>\nbutton,input{\nmargin:5px\n}\n#basic-addon1,#replaceSpan1{\nbackground-color:Azure;\npadding:3px\n}\nbutton,input[type=\"button\"]{\n\toutline:none;\n\theight:30px;\n\tbox-shadow:2px 1px #CFD8DC;\n\tbackground:#fff;\n\tborder:1px solid #607D8B;\n\tborder-radius:6px;\n\t}\ntextarea{\nbackground-color:GhostWhite;\nborder:0px solid black\n}\n.bt1,.bt4{\n\tbackground:#fff;\n\twidth:30%;\n\tborder:1px solid green;\n\tborder-radius:10px;\n\t}\n#bt4:active,#bt2:active{\n\tbackground:#CFD8DC\n\t}\n\t#bt4,#bt2{\n\t\tbackground:#fff;\n\twidth:100%;\n\tborder:1px solid #607D8B;\n\tborder-radius:6px;\n\t\t}\n\t\tbutton:active,input[type=\"button\"]:active{\n\tbackground:#C8E6C9\n\t}\n\t#success{\n\t\ttext-align:center;\n\t\tborder:1px solid green;\n\t\tposition:fixed;\n\t\tleft:40%;\n\t\twidth:20%;\n\t\tbackground:#fff;\n\t\tborder-radius:5px;\n\t\tdisplay:none;\n\t\ttop:2px;\n\t\tbox-shadow:2px 1px 3px #CFD8DC;\n\t\t}\n\t\t#pageclass,#pageclass2{\n\t\t\twidth:100%\n\t\t\t}\n\t\t\t.pageclass{\n\t\t\t\tfont-size:10px\n\t\t\t\t}\n</style>\n \n<a href=\"https://www.sojson.com/rehtml\">html转义</a>&nbsp;&nbsp;<a href=\"http://www.jsons.cn/urlencode/\">URL解码</a>\n<textarea rows=\"10\" id=\"input\" onfocus=\"di()\" placeholder=\"输入带html标签的发现内容\"></textarea>\n<button onclick=\"getInput();dis()\" class=\"bt1\">格式化发现[旧]</button>\n<button onclick=\"getInput2();dis()\" class=\"bt1\">格式化发现[新]</button>\n<button onclick=\"getInput3();\" class=\"bt1\">发现格式互转</button>\n\n<button onclick=\"getInput4(1);\" id=\"bt4\">（新发现）改样式先点这个</button>\n<button onclick=\"getInput4(2,1);\" class=\"bt4\">一排一个</button>\n<button onclick=\"getInput4(2,2);\" class=\"bt4\">一排两个</button>\n<button onclick=\"getInput4(2,3);\" class=\"bt4\">一排三个</button>\n<button onclick=\"getInput4(2,4);\" class=\"bt4\">一排四个</button>\n\n<button onclick=\"copyText()\" id=\"bt2\">一键复制</button>\n\n<div class=\"pageclass\">输入分类里的链接，如：\n/sort/xuanhuan/\n写成\n/sort/分类/\n</div>\n<input id=\"pageclass\">\n<div class=\"pageclass\">输入带有翻页的链接，如：\n/sort/xuanhuan/2.html\n写成\n/sort/分类/页码.html\n</div>\n<input id=\"pageclass2\">\n\n<div class=\"pageclass\">\n第一页跟第二页不一样？\n输入不一样的部分（第二页比第一页多出来的部分）\n如\nindex_页码.html\n</div>\n<input id=\"pageclass3\">\n\n\n<button onclick=\"okpage()\">确认加入翻页（仅旧发现）</button>\n\n\n<p id=\"success\">复制成功！</p><br><br><br>\n<p>正则表达式匹配替换</p>\n <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n                        <textarea class=\"form-control\" onmouseover=\"this.focus();\" id=\"textSour\" name=\"textSour\" rows=\"10\" style=\"max-height: 2222px;\" placeholder=\"请输入要验证的文本\"></textarea>\n                    </div>\n                </div>\n                <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n                        <div class=\"input-group\">\n                            <span class=\"input-group-addon\" id=\"basic-addon1\">正则表达式</span>\n                            <input type=\"text\" class=\"form-control\" id=\"textPattern\" name=\"textPattern\" placeholder=\"请输入自定义正则表达式 例如：\\d{6}\" aria-describedby=\"basic-addon1\" style=\"width: 65%;\">\n                        </div>\n                    </div>\n                </div>\n                <div class=\"form-group\">\n                    <div class=\"col-sm-2\">\n                        <div class=\"input-group\" style=\"margin-left: 20px;\">\n                            <label class=\"checkbox\" style=\"cursor: pointer;\">\n                                <input type=\"checkbox\" value=\"global\" checked=\"checked\" id=\"optionGlobal\" name=\"optionGlobl\">全局搜索</label>\n                        </div>\n                    </div>\n                    <div class=\"col-sm-2\">\n                        <div class=\"input-group\" style=\"margin-left: 20px;\">\n                            <label class=\"checkbox\" style=\"cursor: pointer;\">\n                                <input type=\"checkbox\" value=\"ignoreCase\" id=\"optionIgnoreCase\" name=\"optionIgnoreCase\">忽略大小写</label>\n                        </div>\n                    </div>\n                    <div class=\"col-sm-8\">\n                        <input type=\"button\" onclick=\"return onMatch();\" value=\"验证匹配内容\" class=\"btn btn-success\">\n                        <input type=\"button\" onclick=\"Empty();\" value=\"清空输入框\" class=\"btn btn-danger\">\n<button onclick=\"copyText3()\">一键复制</button>\n                    </div>\n                </div>\n                <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n<div id=\"textResult\"></div>\n                        <textarea onmouseover=\"this.focus();\" id=\"textMatchResult\" class=\"form-control\" rows=\"10\" style=\"max-height: 2222px;\" placeholder=\"得到验证后内容，内容为空为验证失败\" readonly=\"readonly\"></textarea>\n                    </div>\n                </div>\n                <div class=\"form-group\">\n                    <div class=\"col-sm-4\">\n                        <div class=\"input-group\" style=\"width: 98%;\">\n                            <span class=\"input-group-addon\" id=\"replaceSpan1\">替换文本</span>\n                            <input type=\"text\" class=\"form-control\" id=\"textReplace\" name=\"textReplace\" placeholder=\"请输入替换内容\" aria-describedby=\"replaceSpan1\" style=\"width: 70%;\">\n<button value=\"{\\{page}}\" onclick=\"pp(this.value)\">page</button>\n\n<button value=\"$\" onclick=\"pp(this.value)\">$</button>\n\n<button value=\"'\" onclick=\"pp(this.value)\">'</button>\n<button value=\"/\" onclick=\"pp(this.value)\">/</button>\n<button value=\"_\" onclick=\"pp(this.value)\">_</button>\n<button value=\"-\" onclick=\"pp(this.value)\">-</button>\n                        </div>\n                    </div>\n                    <div class=\"col-sm-2\">\n                        <div class=\"input-group\">\n                            <button onclick=\"return onReplace()\" class=\"btn btn-success\">替换匹配内容</button>\n<button onclick=\"copyText2()\">一键复制</button>\n                        </div>\n                    </div>\n                    <div class=\"col-sm-6\">\n                    </div>\n                </div>\n                <div class=\"form-group\">\n                    <div class=\"col-sm-12\">\n                        <textarea readonly=\"readonly\" id=\"textReplaceResult\" class=\"form-control\" rows=\"10\" placeholder=\"此处为替换后内容\"></textarea>\n                    </div>\n                </div>\n                </form>\n            </div>\n        </div>\n<script>\n var copyText = function() {\n\tvar text = document.getElementById('input');\n    // 选中文本\n    text.select()\n    // 复制\n    document.execCommand('copy')\n    text.blur()\n    $(\"#success\").style.display = \"block\";\n    setTimeout(function(){\n                $(\"#success\").style.display = \"none\";\n          },500)\n}\n\nvar copyText2 = function() {\n    var text = document.getElementById('textReplaceResult');\n    // 选中文本\n    text.select()\n    // 复制\n    document.execCommand('copy')\n    text.blur()\n    $(\"#success\").style.display = \"block\";\n    setTimeout(function(){\n                $(\"#success\").style.display = \"none\";\n          },500)\n}\n\nvar copyText3 = function() {\n    var text = document.getElementById('textMatchResult');\n    // 选中文本\n    text.select()\n    // 复制\n    document.execCommand('copy')\n    text.blur()\n    $(\"#success\").style.display = \"block\";\n    setTimeout(function(){\n                $(\"#success\").style.display = \"none\";\n          },500)\n}\n\n</script>\n\n\n<script>\nfunction pp(a){\n\tb=a.replace(/\\\\/,'');\n$(\"#textReplace\").value+=b;\n$(\"#textReplace\").focus()\n}\nfunction dis(){\ndocument.getElementById(\"bt1\").disabled=true;\ndocument.getElementById(\"bt2\").disabled=true\n}\nfunction di(){\ndocument.getElementById(\"bt1\").disabled=false;\ndocument.getElementById(\"bt2\").disabled=false\n}\n\nfunction parseToDOM(str){\n   var div = document.createElement(\"div\");\n   if(typeof str == \"string\")\n       div.innerHTML = str;\n   return div.querySelectorAll(\"a\"); ;\n}\n\n\nfunction okpage(){\n\tpageclass = $(\"#pageclass\").value.replace(/(\\+|\\?)/g,'\\\\$1');\n\n\tpageclass=pageclass.replace(/分类$/g,'(.*)').replace(/分类(?!$)/g,'(.*?)');\n\t\n\treg = new RegExp(pageclass)\n\tpageclass2 = $(\"#pageclass2\").value;\n\thtml = $(\"#input\").value;\n\tpageclass2=pageclass2.replace(/页码/g,'{\\{page}}');\n\t\n\tpageclass3 =$(\"#pageclass3\").value.replace(/(\\+|\\?)/g,'\\\\$1').replace(/页码/,'{\\{page}}')\n\n\th = \"\";\n\tif(html.match(/::/) && pageclass!=\"\" && pageclass2!=\"\" && !/{\\{page}}/.test(html)){\n\t\tlist = html.split(/\\n|&&/);\n\t  for(i in list){\n\t  \tif(list[i].match(/::/)){\n\t       \ttext = list[i].match(/(.*?)::/)[1];\n\t       \thref=list[i].match(/::(.*)/)[1]\n\t       \tif(href.match(reg)){\n\t  \t        \thref = pageclass2.replace(/分类/g,href.match(reg)[1])\n\t  \t\t   }else{href=href}\t\n\t      \t\th+=text+\"::\"+href+\"\\n\"\n\t  \t }\n\t  \t}\n\t  \t$(\"#input\").value = h\n\t\t}\n\t\t\n\t\thtml = $(\"#input\").value\n\t\tif(pageclass3!=\"\" && !/<,.*?>/.test(html)){\n\t\t\t reg=new RegExp(\"(\"+pageclass3+\")\",'g');\n\t\t  $(\"#input\").value =\thtml.replace(reg,'<,$1>')\n\t\t\t\n\t\t\t}\n\t\t\n\t\t\n\t}\n\n\n\nfunction getInput(){\nvar str=$(\"#input\").value;\nvar list = parseToDOM(str);\nif(list.length==0){\n\t$(\"#input\").placeholder = \"格式化失败！！！请检查是否为带html标签的文本\"\n\t}else{\n\t\t\nvar html = \"\";\nfor (let i=0;i<list.length;i++){\n\tlet text = list[i].innerText;\n\tlet href = list[i].getAttribute(\"href\");\n\thtml += text + \"::\" + href +\"\\n\"\n\t}\n$(\"#input\").value = html\n}\n}\n\nfunction getInput2(){\nvar str=$(\"#input\").value;\nvar list = parseToDOM(str);\nif(list.length==0){\n\t$(\"#input\").placeholder = \"格式化失败！！！请检查是否为带html标签的文本\"\n\t}else{\nvar html = [];\nfor (let i=0;i<list.length;i++){\n\tlet text = list[i].innerText;\n\tlet href = list[i].getAttribute(\"href\");\n\thtml.push({\n\t\ttitle:text,\n\t\turl : href\n\t\t})\n\t}\n$(\"#input\").value = JSON.stringify(html)\n}\n}\n\nfunction getInput3(){\ntext=$(\"#input\").value;\nif(text.match(/\\&\\&|::/g)){\ntext=text.replace(/\\&\\&/g,'\\n');\nlist=text.match(/.*::.*/g);\nhtml=[];\nfor(i=0;i<list.length;i++){\nl=list[i].match(/(.*)::(.*)/);\ntitle=l[1];url=l[2]\nhtml.push({\ntitle:title,\nurl:url\n})\n}\n$(\"#input\").value=JSON.stringify(html)\n}else{\nhtml=\"\";\njson=eval(text);\nfor(i in json){\nhtml+=json[i].title+\"::\"+json[i].url+\"\\n\"\n}\n$(\"#input\").value=html\n}\n}\n\n\nfunction getInput4(flag,x){\ntext=$(\"#input\").value;\nif(flag==1){\njson=JSON.parse(text);\nfor(i in json){\njson[i].style={}\njson[i].style.layout_flexGrow=1\n}\n}else if(flag==2){\n\tdata={1:1,2:0.4,3:0.25,4:0.2}\njson=JSON.parse(text);\nfor(i in json){\njson[i].style.layout_flexBasisPercent=data[x]\n}\n}\n$(\"#input\").value=JSON.stringify(json)\n}\n\n\n\n\nfunction setVisible(idElement, visible) {\n    var obj = document.getElementById(idElement);\n    obj.style.visibility = visible ? \"visible\" : \"hidden\";\n}\nfunction isValidFields() {\n    var textSour = document.getElementById(\"textSour\");\n    if (null == textSour.value || textSour.value.length < 1) {\n        textSour.focus();\n        JsonsMessageBox($(\"#textSour\"), \"请输入待匹配文本\");\n        return false;\n    }\n    var textPattern = document.getElementById(\"textPattern\");\n    if (null == textPattern.value || textPattern.value.length < 1) {\n        textPattern.focus();\n        JsonsMessageBox($(\"#textPattern\"), \"请输入正则表达式\");\n        return false;\n    }\n    return true;\n}\nfunction buildRegex() {\n    var op = \"\";\n    if (document.getElementById(\"optionGlobal\").checked) op = \"g\";\n    if (document.getElementById(\"optionIgnoreCase\").checked) op = op + \"i\";\n    return new RegExp(document.getElementById(\"textPattern\").value, op);\n}\nfunction onMatch() {\n    if (!isValidFields())\n        return false;\n    document.getElementById(\"textMatchResult\").value = \"\";\n    var regex = buildRegex();\n    var result = document.getElementById(\"textSour\").value.match(regex);\n    if (null == result || 0 == result.length) {\n        document.getElementById(\"textMatchResult\").value = \"（没有匹配）\";\n        return false;\n    }\n    if (document.getElementById(\"optionGlobal\").checked) {\nvar re=\"\";\n        var strResult = \"共找到 \" + result.length + \" 处匹配：\\r\\n\";\ndocument.getElementById(\"textResult\").innerText=strResult;\nfor (var i = 0; i < result.length; ++i){ re += result[i] + \"\\r\\n\";}\n        document.getElementById(\"textMatchResult\").value = re;\n    }\n    else {\n   document.getElementById(\"textMatchResult\").value = \"匹配位置：\" + regex.lastIndex + \"\\r\\n匹配结果：\"+result[0];\n    }\n    return true;\n}\nfunction onReplace() {\n    var str = document.getElementById(\"textSour\").value;\n    var regex = buildRegex();\n    document.getElementById(\"textReplaceResult\").value = str.replace(regex, document.getElementById(\"textReplace\").value);\n}\nfunction reset() {\n     $(\"#textSour\").value=\"\";\n    $(\"#textPattern\").value=\"\";\n    $(\"#textMatchResult\").value=\"\";\n    $(\"#textReplace\").value=\"\";\n    $(\"#textReplaceResult\").value=\"\";\n}\n$(\"#regCommon a\").click(function () {\n    $(\"#textPattern\").val($(this).attr(\"t\"));\n    onMatch();\n});\nfunction Empty() {\n    $(\"#textSour\").value=\"\";\n    $(\"#textMatchResult\").value=\"\";\n    $(\"#textReplace\").value=\"\";\n    $(\"#textReplaceResult\").value=\"\";\n    $(\"#textSour\").select();\n}\n</script>\n\n❗️0、1、结束❗️\n\n——————分割线————————\n{{}}\n<js>\nindex='{{$.index}}';\nif(index.match(/\\d+、\\d+、/)){\nreg=eval('/❗️'+index+'开始❗️[\\\\s\\\\S]+?❗️'+index+'结束❗️/g');\nreg2=eval('/❗️'+index+'..❗️/g');\nresult=result.match(reg)?result.match(reg)[0]:'<br/>'\nresult.replace(reg2,'')}else{result=''}\n</js>",
    "ruleImage": "$.src",
    "ruleLink": "$.index\n@js:\nif(!result.match(/^http/) && !result.match(/\\d+、\\d+、/)){\nresult=\"https://www.coolapk.com/link?url=\"+encodeURIComponent(result)\n}else{result=result}",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\nlet result =\"\";\ns = String(source.loginUrl);\nlet list;\nif(/------------------/.test(s)){\n\tlist=s.split('------------------\\n');\nfor(i = 0;i<list.length-1;i++){\n\t分类名称 = list[i].match(/◎(.*?)◎/)[1];\nlet all =\tString(list[i]).replace(/◎.*◎\\n/,'').split('\\n');\nresult += 分类名称+\"::http://www.baidu.com?wd=\";\n\t\t\tfor(j in all){\n\tresult += all[j]+\"•\"\n\t\t}\n\t\tresult +=\"\\n\"\n\t}\nresult = String(result).replace(/••/g,'•');\n\t}else{\n\t\t分类名数组 = s.match(/◎.*◎\\n/g);\n\t\tlist = s.split(/◎.*?◎\\n/);\n\t\tfor(i = 1;i<list.length;i++){\n\t分类名称 = 分类名数组[i-1].match(/◎(.*)◎/)[1];\nlet all =\tlist[i].split('\\n');\nresult += 分类名称+\"::http://www.baidu.com?wd=\";\n\t\t\tfor(j in all){\n\tresult += all[j]+\"•\"\n\t\t}\n\t\tresult +=\"\\n\"\n   \n\t}\nresult = String(result).replace(/••/g,'•')\n\t\n\t\t}\nresult",
    "sourceComment": "序号为0、0、这种格式，用于自定义网页，自定义网页写在描述规则里，序号不能重复，格式如下：\n❗️0、0、开始❗️\n自定义网页源码\n❗️0、0、结束❗️\n\n自定义分类请参考以下格式，符号不可以变，分类写在登录url里，一行一个内容\n\n◎分类1◎\n【序号或链接】《列表名称》@图片链接@『简介』\n【序号或链接】《列表名称》@图片链接@『简介』\n【序号或链接】《列表名称》@图片链接@『简介』\n------------------\n◎分类2◎\n【序号或链接】《列表名称》@图片链接@『简介』\n------------------\n◎分类3◎\n【序号或链接】《列表名称》@图片链接@『简介』\n\n\n或者以下格式\n◎分类1◎\n【序号或链接】《列表名称》@图片链接@『简介』\n【序号或链接】《列表名称》@图片链接@『简介』\n◎分类2◎\n【序号或链接】《列表名称》@图片链接@『简介』\n◎分类3◎\n【序号或链接】《列表名称》@图片链接@『简介』\n\n❗️两种格式不能混用",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://img95.699pic.com/photo/40139/2123.gif_wh300.gif!/fh/300",
    "sourceName": "聚合2.0",
    "sourceUrl": "风停",
    "style": "#jhss a{\nfont-size:10px;\ncolor:red;\ntext-decoration:none;\n}\n\n#jhss p{\ndisplay:inline-block;\nwidth:8em;\n}\n\n#jhss p{\nmargin:0;\npadding:0;\ncolor:#666;\n}\n\n#jhss div{\nmargin:0;\npadding:10px;\n}\n\n#jhss h1{\nmargin:0;\npadding:9px;\nfont-size:20px;\n}\n\n#jhss input{\nmargin:2px;\npadding:2px 6px;\nfont-size: 1em;\nbackground-color:rgba(200,200,200,0.5);\ncolor:#A00;\nborder:0;\nborder-radius: 3px;\ntext-decoration: none;\ntext-align:center;\n}\ntextarea{\nwidth:100%\n}\n.menu {\n\tjustify-content: space-between;\n\tmax-width: 900px;\n\tmargin: 0 5px;\n}\n.menu .button {\n\twidth: 55px;\n\theight: 15px;\n\tmin-height: 5px;\n\tmargin: 5px 0px;\n\tcursor: pointer;\n}\n.button text {\n\ttext-anchor: middle;\n\tdominant-baseline: middle;\n}\n\n.button rect {\n\twidth: 100%;\n\theight: 100%;\n\tfill: transparent;\n\tstroke: #666;\n\tstroke-width: 2px;\n}\n.button rect.busy {\n\tstroke: #fD1850;\n\tstroke-dasharray: 30 90;\n\tanimation: stroker 1s linear infinite;\n}\n.tabbox {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-flow: column;\n}\n.tabtitle {\n\tdisplay: flex;\n\tz-index: 1;\n\tjustify-content: center;\n}\n.tabtitle>div {\n\tcursor: pointer;\n\tpadding: 1px 10px 0 10px;\n\tborder-bottom: 3px solid transparent;\n\tfont-weight: bold;\n}\n.tabtitle>.this {\n\tcolor: #4f9da6;\n\tborder-bottom-color: #4EBBE4;\n}\n.tabbody {\n\tflex: 1;\n\tdisplay: flex;\n\tmargin-top: -1px;\n\tborder: 1px solid #A9A9A9;\n\theight: 0;\n}\n.tabbody>* {\n\tflex: 1;\n\tflex-flow: column;\n\tdisplay: none;\n}\n.tabbody>.this {\n\tdisplay: flex;\n}\n.tabbody>*>.titlebar{\n\tdisplay: flex;\n}\n.tabbody>*>.titlebar>*{\n\tflex: 1;\n\tmargin: 1px 1px 1px 1px;\n}\n.tabbody>*>.context {\n\tflex: 1;\n\tflex-flow: column;\n\tborder: 0;\n\tpadding: 5px;\n\toverflow-y: auto;\n}\n.tabbody>*>.inputbox{\n\tborder: 0;\n\tborder-bottom: #A9A9A9 solid 1px;\n\theight: 15px;\n\ttext-align:center;\n}\n.link>* {\n\tdisplay: flex;\n\tmargin: 5px;\n\tborder-bottom: 1px solid;\n\ttext-decoration: none;\n}\n#RuleList>label>* {\n\tbackground: #eee;\n\tpadding-left: 3px;\n\tmargin: 2px 0;\n\tcursor: pointer;\n}\n#RuleList input[type=radio] {\n\tdisplay: none;\n}\n#RuleList input[type=\"radio\"]:checked+* {\n\tbackground: #15cda8;\n}\n.isError {\n\tcolor: #FF0000;\n}\n#RuleJsonString{\nheight:600px\n}\nsvg text{\nfont-size:10px\n}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 843,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775587350326,
    "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,
    "sourceGroup": "资源绘",
    "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": 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": 1775587587385,
    "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": "美涩",
    "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,
    "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": 1775587757157,
    "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": "美涩",
    "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": 1775587836217,
    "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": "美涩",
    "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": 3,
    "cacheFirst": false,
    "customOrder": 947,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775587987390,
    "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": "美涩",
    "sourceIcon": "http://p6.itc.cn/images01/20201202/8d012ed623d647a78635557e7d235ab6.jpeg",
    "sourceName": "91大事件🥝",
    "sourceUrl": "https://jbr7z1.xwgjwrua.cc/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 953,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775588065990,
    "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": "美涩",
    "sourceIcon": "http://p6.itc.cn/images01/20201202/8d012ed623d647a78635557e7d235ab6.jpeg",
    "sourceName": "51吃瓜🥝",
    "sourceUrl": "https://behind.qjaeyfzu.xyz/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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}",
    "lastUpdateTime": 1775588319799,
    "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": "美涩",
    "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": 1775588357478,
    "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": "美涩",
    "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": 1775588400382,
    "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": "美涩",
    "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": 1775591744706,
    "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": "美涩",
    "sourceIcon": "https://img4.tuwandata.com/v2/thumb/jpg/NWFkMywxMTI1LDAsOSwzLDEsLTEsTk9ORSwsLDkw/u/res.tuwan.com/zipgoods/20190508/3b6408c569f8eb687a8dd6eb3578bdb9.jpg",
    "sourceName": "姐姐视频",
    "sourceUrl": "https://wap.jiejiesp19.xyz",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1079,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775588476623,
    "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": "涩图",
    "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": 1775591752645,
    "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": "美涩",
    "sourceIcon": "https://img4.tuwandata.com/v2/thumb/jpg/NWFkMywxMTI1LDAsOSwzLDEsLTEsTk9ORSwsLDkw/u/res.tuwan.com/zipgoods/20190508/3b6408c569f8eb687a8dd6eb3578bdb9.jpg",
    "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": 1085,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765540615667,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "by.felicita\n\n感谢@寿衡@喵公子..等\n\n如有侵权，请联系删除！\n主页：yuanjinwu.xyz\n\n加入Q群：961786195",
    "sourceGroup": "书源",
    "sourceIcon": "https://cdn.z.wiki/autoupload/20240829/lGqZ/img-17169804730360a11514b15bfaa3a6fbe30a1e0b92cf1151780f081c4c5aa0657fda4b16bd0ec.jpg",
    "sourceName": "阅读教程",
    "sourceUrl": "https://www.yuque.com/120031xufengnian/yuedu?#《阅读》",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1087,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773223809711,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.archive-list@class.col-12@class.waterfall-item",
    "ruleContent": "<html>\n    <head>\n        <meta charset=\"UTF-8\"></meta>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge, chrome=1\"></meta>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no\"></meta>\n        <meta name=\"robots\" content=\"max-image-preview:large\"></meta>\n        <link rel=\"alternate\" type=\"application/rss+xml\" title=\"日式JK » Feed\" href=\"https://www.jk.rs/feed\"></link>\n        <link rel=\"alternate\" type=\"application/rss+xml\" title=\"日式JK » 评论 Feed\" href=\"https://www.jk.rs/comments/feed\"></link>\n        <link rel=\"alternate\" type=\"application/rss+xml\" title=\"日式JK » 夏的JK 评论 Feed\" href=\"https://www.jk.rs/2024/09/06/910.html/feed\"></link>\n        <style id=\"classic-theme-styles-inline-css\" type=\"text/css\">\n            \n/*! This file is auto-generated */\n.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}\n\n        </style>\n\n        <link rel=\"stylesheet\" id=\"jimu-lightgallery-css\" href=\"https://www.jk.rs/wp-content/plugins/nicetheme-jimu/modules/base/assets/lightGallery/css/lightgallery.min.css\" type=\"text/css\" media=\"all\"></link>\n        <link rel=\"stylesheet\" id=\"jimu-css\" href=\"https://www.jk.rs/wp-content/plugins/nicetheme-jimu/modules/jimu.css\" type=\"text/css\" media=\"all\"></link>\n        <link rel=\"stylesheet\" id=\"jimu-blocks-css\" href=\"https://www.jk.rs/wp-content/plugins/nicetheme-jimu/modules/blocks.css\" type=\"text/css\" media=\"all\"></link>\n        <link rel=\"stylesheet\" id=\"glightbox-css\" href=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/plugins/glightbox/glightbox.min.css\" type=\"text/css\" media=\"all\"></link>\n        <link rel=\"stylesheet\" id=\"bootstrap-css\" href=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/plugins/bootstrap/bootstrap.min.css\" type=\"text/css\" media=\"all\"></link>\n        <link rel=\"stylesheet\" id=\"iconfont-css\" href=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/plugins/iconfont/iconfont.css\" type=\"text/css\" media=\"all\"></link>\n        <link rel=\"stylesheet\" id=\"animate-css\" href=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/css/animate.min.css\" type=\"text/css\" media=\"all\"></link>\n        <link rel=\"stylesheet\" id=\"reset-css\" href=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/css/reset.css\" type=\"text/css\" media=\"all\"></link>\n        <link rel=\"stylesheet\" id=\"style-css\" href=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/style.css\" type=\"text/css\" media=\"all\"></link>\n\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-includes/js/jquery/jquery.min.js\" id=\"jquery-core-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-includes/js/jquery/jquery-migrate.min.js\" id=\"jquery-migrate-js\"></script>\n        <script defer=\"\" type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/plugins/nicetheme-jimu/library/static/alpine.min.js\" id=\"alpine-defer-js\"></script>\n        <link rel=\"canonical\" href=\"https://www.jk.rs/2024/09/06/910.html\"></link>\n        <link rel=\"alternate\" type=\"application/json+oembed\" href=\"https://www.jk.rs/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.jk.rs%2F2024%2F09%2F06%2F910.html\"></link>\n        <link rel=\"alternate\" type=\"text/xml+oembed\" href=\"https://www.jk.rs/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.jk.rs%2F2024%2F09%2F06%2F910.html&format=xml\"></link>\n        <link rel=\"pingback\" href=\"https://www.jk.rs/xmlrpc.php\"></link>\n        <link rel=\"icon\" href=\"https://www.jk.rs/wp-content/uploads/2024/05/cropped-ICO2-32x32.png\" sizes=\"32x32\"></link>\n        <link rel=\"icon\" href=\"https://www.jk.rs/wp-content/uploads/2024/05/cropped-ICO2-192x192.png\" sizes=\"192x192\"></link>\n        <link rel=\"apple-touch-icon\" href=\"https://www.jk.rs/wp-content/uploads/2024/05/cropped-ICO2-180x180.png\"></link>\n        <meta name=\"msapplication-TileImage\" content=\"https://www.jk.rs/wp-content/uploads/2024/05/cropped-ICO2-270x270.png\"></meta>\n        <style>\n            \n            @font-face {\n                font-family: 'DINAlternate-Bold';\n                src: url(https://www.jk.rs/wp-content/themes/Mango-1.1.1/fonts/DINAlternate-Bold.ttf) format(\"truetype\");\n                font-style: normal;\n            }\n\n            .font-price {\n                font-family: 'DINAlternate-Bold', arial, sans-serif\n            }\n\n            .font-number {\n                font-family: 'DINAlternate-Bold', arial, sans-serif\n            }\n        \n        </style>\n        <script>\n            \n    window.GeetestCaptcha = {\n        runCaptcha: () => true\n    }\n\n        </script>\n        <style id=\"theia-sticky-sidebar-stylesheet-TSS\">\n            .theiaStickySidebar:after {content: \"\"; display: table; clear: both;}\n        </style>\n    </head>\n    <body class=\"post-template-default single single-post postid-910 single-format-image\" style=\"transform: none;\">\n{{@class.masonry-list@html}}\n\n                <a href=\"javascript:\" class=\"login-close btn btn-light btn-icon btn-rounded btn-sm \">\n                    <span>\n                        <i class=\"iconfont icon-guanbi_close1\"></i>\n                    </span>\n                </a>\n            </div>\n        </div>\n        <div class=\"mobile-overflow\"></div>\n        <script>\n        </script>\n        <script defer=\"\" src=\"https://tj.u2.cm/random-string.js\" data-website-id=\"5d82d153-8c11-4c5c-b2bf-36be4f5fe845\"></script>\n        <script type=\"text/javascript\" id=\"wpopt_front-js-extra\">\n            \n/* <![CDATA[ */\nvar wpopt = {\"ajax_url\":\"https:\\/\\/www.jk.rs\\/wp-admin\\/admin-ajax.php\",\"ajax_name\":\"wp_opt\",\"is_post\":\"1\",\"post_id\":\"910\",\"module_post_views_open\":\"1\"};\n/* ]]> */\n\n        </script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/plugins/wp-opt/static/js/front.min.js\" id=\"wpopt_front-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/plugins/nicetheme-jimu/modules/base/assets/lightGallery/js/lightgallery-all.min.js\" id=\"jimu-lightgallery-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/plugins/nicetheme-jimu/modules/base/assets/lightGallery/js/lightgallery-load.min.js\" id=\"jimu-lightgallery-load-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/plugins/nicetheme-jimu/modules/jimu.js\" id=\"jimu-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/plugins/nicetheme-module-bigger-share-module/static/nice-poster.js\" id=\"nice-poster-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/plugins/nicetheme-module-nice-blocks/assets/blocks.js\" id=\"nc-blocks-js-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/plugins/vanilla-lazyload/lazyload.min.js\" id=\"lazyload-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/plugins/shuffle/shuffle.min.js\" id=\"shuffle-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/js/ajax-comment.js\" id=\"ajax-comments-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-includes/js/clipboard.min.js\" id=\"clipboard-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/plugins/glightbox/glightbox.min.js\" id=\"glightbox-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/js/image-post.js\" id=\"imagepost-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/plugins/theia-sticky-sidebar/ResizeSensor.min.js\" id=\"ResizeSensor-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/plugins/theia-sticky-sidebar/theia-sticky-sidebar.min.js\" id=\"stickySidebar-js\"></script>\n        <script type=\"text/javascript\" src=\"https://www.jk.rs/wp-content/themes/Mango-1.1.1/js/nicetheme.js\" id=\"nicetheme-js\"></script>\n        <div class=\"nice-popup\" :class=\"{ 'nice-popup-open': itemToBeRemoved.length > 0 }\" x-data=\"imageDeletePopupData\">\n            <div class=\"nice-popup-overlay\" @click=\"itemToBeRemoved = ''\"></div>\n            <div class=\"nice-popup-body\">\n                <div class=\"nice-popup-close\" @click=\"itemToBeRemoved = ''\">\n                    <span class=\"svg-white\"></span>\n                    <span class=\"svg-dark\"></span>\n                </div>\n                <div class=\"nice-popup-content\">\n                    <div class=\"popup-body\">\n                        <div class=\"text-center\">\n                            <i class=\"text-64 text-danger iconfont icon-guansuo_lock-one my-3\"></i>\n                            <h2 class=\"text-lg mb-4\"> 您确定要删除此图像吗？ </h2>\n                        </div>\n                    </div>\n                    <div class=\"popup-footer\">\n                        <div class=\"row g-2 g-md-3\">\n                            <div class=\"col\">\n                                <button @click=\"itemToBeRemoved = ''\" class=\"btn btn-light btn-block\"> 取消 </button>\n                            </div>\n                            <div class=\"col\">\n                                <button @click=\"remove\" class=\"btn btn-primary btn-block\"> 移除 </button>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </body>\n</html>",
    "ruleLink": "@class.item-content@class.item-title@a@href",
    "ruleNextPage": "page",
    "ruleTitle": "@class.item-content@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "jk::jk/page/{{page}}",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://www.jk.rs/wp-content/uploads/2024/05/日式JK-5-1.webp",
    "sourceName": "日式jk",
    "sourceUrl": "https://www.jk.rs/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1089,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\"User-Agent\": \"Mozilla/5.0 (Linux; Android 14; 23124RN87C Build/UP1A.231005.007) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.193 Mobile Safari/537.36\"\n}",
    "injectJs": "// ==UserScript==\n// @name              网页加速器\n// @namespace         https://github.com/Gao-Lezhe/instantpage\n// @version           1.0.3\n// @author            YouXiaoHou、高乐喆（Greasy Fork用户名：lezhe）\n// @description       自动帮你加速网页中的超链接，加快打开网页的速度，实测符合条件的网页打开速度减少50%以上。\n// @license           AGPL\n// @supportURL        https://github.com/Gao-Lezhe/instantpage\n// @require           https://registry.npmmirror.com/sweetalert2/10.16.6/files/dist/sweetalert2.min.js\n// @resource          swalStyle https://registry.npmmirror.com/sweetalert2/10.16.6/files/dist/sweetalert2.min.css\n// @match             *://*/*\n// @noframes\n// @run-at            document-idle\n// @grant             GM_openInTab\n// @grant             GM_setValue\n// @grant             GM_getValue\n// @grant             GM_registerMenuCommand\n// @grant             GM_getResourceText\n// @icon              data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjggMTI4Ij48cGF0aCBkPSJNMCA3OWMwLTM1LjQgMjguNS02NCA2My45LTY0LjFzNjQuMSAyOC42IDY0LjEgNjRjMCA5LjQtMi4xIDE4LjQtNS43IDI2LjUtMSAyLjMtMi4zIDQuNi0zLjYgNi43LS40LjYtMSAxLTEuNyAxSDExYy0uNyAwLTEuMy0uNC0xLjctMS0xLjMtMi4yLTIuNS00LjQtMy42LTYuN0MyLjEgOTcuNCAwIDg4LjQgMCA3OXptMjQuNC0zOS43Yy01LjIgNS4xLTkuMiAxMS4xLTEyIDE3LjgtMyA2LjktNC41IDE0LjItNC41IDIxLjhhNTUuODYgNTUuODYgMCAwIDAgNC40IDIxLjhjLjcgMS42IDEuNCAzLjIgMi4yIDQuN2g5OC44Yy44LTEuNSAxLjYtMy4xIDIuMi00LjdhNTUuODYgNTUuODYgMCAwIDAgNC40LTIxLjggNTUuODYgNTUuODYgMCAwIDAtNC40LTIxLjhjLTIuOC02LjctNi45LTEyLjctMTItMTcuOC01LjEtNS4yLTExLjEtOS4yLTE3LjgtMTJhNTUuODYgNTUuODYgMCAwIDAtMjEuOC00LjQgNTUuODYgNTUuODYgMCAwIDAtMjEuOCA0LjRjLTYuNiAyLjgtMTIuNiA2LjgtMTcuNyAxMnoiIGZpbGw9IiM0NDQiLz48cGF0aCBkPSJNMTIuNCA1Ny4xYzIuOC02LjcgNi45LTEyLjcgMTItMTcuOCA1LjEtNS4yIDExLjEtOS4yIDE3LjgtMTJBNTUuODYgNTUuODYgMCAwIDEgNjQgMjIuOWE1NS44NiA1NS44NiAwIDAgMSAyMS44IDQuNGM2LjcgMi44IDEyLjcgNi45IDE3LjggMTIgNS4yIDUuMSA5LjIgMTEuMSAxMiAxNy44YTU1Ljg2IDU1Ljg2IDAgMCAxIDQuNCAyMS44IDU1Ljg2IDU1Ljg2IDAgMCAxLTQuNCAyMS44Yy0uNyAxLjYtMS40IDMuMi0yLjIgNC43SDE0LjZjLS44LTEuNS0xLjYtMy4xLTIuMi00LjdBNTUuODYgNTUuODYgMCAwIDEgOCA3OC45Yy0uMS03LjYgMS40LTE0LjkgNC40LTIxLjh6IiBmaWxsPSIjNjQ5OTUwIi8+PHBhdGggZD0iTTc3LjUgNjAuOUM2OCA4MS4yIDY0LjkgODQuNiA2NC42IDg1Yy0xLjUgMS41LTMuNSAyLjMtNS42IDIuM3MtNC4xLS44LTUuNi0yLjNhNy45MSA3LjkxIDAgMCAxIDAtMTEuMmMuMy0uNCAzLjgtMy40IDI0LjEtMTIuOXptMC04Yy0xLjEgMC0yLjMuMi0zLjQuOEM2My4yIDU4LjggNTEgNjQuOSA0Ny44IDY4LjFjLTYuMiA2LjItNi4yIDE2LjMgMCAyMi41IDMuMSAzLjEgNy4yIDQuNyAxMS4yIDQuN3M4LjEtMS42IDExLjItNC43YzMuMi0zLjIgOS4zLTE1LjQgMTQuNC0yNi4zIDIuNi01LjYtMS43LTExLjQtNy4xLTExLjR6TTYzLjkgMjkuOGMtMjcuMiAwLTQ5LjUgMjIuNi00OS4xIDQ5LjggMCAzLjYuNSA3LjIgMS4zIDEwLjYuNCAxLjggMiAzLjEgMy45IDMuMSAyLjYgMCA0LjQtMi40IDMuOS00LjktLjctMy0xLjEtNi4yLTEuMS05LjNBNDIuMDQgNDIuMDQgMCAwIDEgMjYgNjNjMi01IDUtOS40IDguOC0xMy4yUzQzIDQzLjEgNDcuOSA0MWE0Mi4wNCA0Mi4wNCAwIDAgMSAzMi4yIDBjNC45IDIuMSA5LjMgNS4xIDEzLjEgOC45Qzk3IDUzLjYgOTkuOSA1OCAxMDIgNjNhNDIuMDQgNDIuMDQgMCAwIDEgMy4yIDE2LjFjMCAzLjItLjQgNi4zLTEuMSA5LjMtLjYgMi41IDEuMyA0LjkgMy45IDQuOSAxLjggMCAzLjUtMS4zIDMuOS0zLjEuOC0zLjYgMS4zLTcuMyAxLjMtMTEuMSAwLTI3LjMtMjIuMS00OS4zLTQ5LjMtNDkuM3oiIGZpbGw9IiM0NDQiLz48L3N2Zz4=\n// @downloadURL https://update.greasyfork.org/scripts/487625/%E7%BD%91%E9%A1%B5%E5%8A%A0%E9%80%9F%E5%99%A8.user.js\n// @updateURL https://update.greasyfork.org/scripts/487625/%E7%BD%91%E9%A1%B5%E5%8A%A0%E9%80%9F%E5%99%A8.meta.js\n// ==/UserScript==\n\n(function () {\n    'use strict';\n\n    let util = {\n        getValue(name) {\n            return GM_getValue(name);\n        },\n\n        setValue(name, value) {\n            GM_setValue(name, value);\n        },\n\n        include(str, arr) {\n            str = str.replace(/[-_]/ig, '');\n            for (let i = 0, l = arr.length; i < l; i++) {\n                let val = arr[i];\n                if (val !== '' && str.toLowerCase().indexOf(val.toLowerCase()) > -1) {\n                    return true;\n                }\n            }\n            return false;\n        },\n\n        addStyle(id, tag, css) {\n            tag = tag || 'style';\n            let doc = document, styleDom = doc.getElementById(id);\n            if (styleDom) return;\n            let style = doc.createElement(tag);\n            style.rel = 'stylesheet';\n            style.id = id;\n            tag === 'style' ? style.innerHTML = css : style.href = css;\n            doc.head.appendChild(style);\n        },\n\n        reg: {\n            chrome: /^https?:\\/\\/chrome.google.com\\/webstore\\/.+?\\/([a-z]{32})(?=[\\/#?]|$)/,\n            chromeNew: /^https?:\\/\\/chromewebstore.google.com\\/.+?\\/([a-z]{32})(?=[\\/#?]|$)/,\n            edge: /^https?:\\/\\/microsoftedge.microsoft.com\\/addons\\/.+?\\/([a-z]{32})(?=[\\/#?]|$)/,\n            firefox: /^https?:\\/\\/(reviewers\\.)?(addons\\.mozilla\\.org|addons(?:-dev)?\\.allizom\\.org)\\/.*?(?:addon|review)\\/([^/<>\"'?#]+)/,\n            microsoft: /^https?:\\/\\/(?:apps|www).microsoft.com\\/(?:store|p)\\/.+?\\/([a-zA-Z\\d]{10,})(?=[\\/#?]|$)/,\n        }\n    };\n\n    let main = {\n        initValue() {\n            let value = [{\n                name: 'setting_success_times',\n                value: 0\n            }, {\n                name: 'allow_external_links',\n                value: true\n            }, {\n                name: 'allow_query_links',\n                value: true\n            }, {\n                name: 'enable_store_link',\n                value: true\n            }, {\n                name: 'enable_target_self',\n                value: false\n            }, {\n                name: 'enable_animation',\n                value: false\n            }, {\n                name: 'delay_on_hover',\n                value: 65\n            }, {\n                name: 'exclude_list',\n                value: ''\n            }, {\n                name: 'exclude_keyword',\n                value: 'login\\nlogout\\nregister\\nsignin\\nsignup\\nsignout\\npay\\ncreate\\nedit\\ndownload\\ndel\\nreset\\nsubmit\\ndoubleclick\\ngoogleads\\nexit'\n            }];\n\n            value.forEach((v) => {\n                util.getValue(v.name) === undefined && util.setValue(v.name, v.value);\n            });\n        },\n\n        registerMenuCommand() {\n            GM_registerMenuCommand('🚀 已加速：' + util.getValue('setting_success_times') + '次', () => {\n                Swal.fire({\n                    showCancelButton: true,\n                    title: '确定要重置加速次数吗？',\n                    icon: 'warning',\n                    confirmButtonText: '确定',\n                    cancelButtonText: '取消',\n                    customClass: {\n                        popup: 'instant-popup',\n                    },\n                }).then((res) => {\n                    if (res.isConfirmed) {\n                        util.setValue('setting_success_times', 0);\n                        history.go(0);\n                    }\n                });\n            });\n            GM_registerMenuCommand('⚙️ 设置', () => {\n                let dom = `<div style=\"font-size: 1em;\">\n                              <label class=\"instant-setting-label\">加速外部链接<input type=\"checkbox\" id=\"S-External\" ${util.getValue('allow_external_links') ? 'checked' : ''} class=\"instant-setting-checkbox\"></label>\n                              <label class=\"instant-setting-label\"><span>加速含参数链接 <a href=\"https://www.youxiaohou.com/tool/install-instantpage.html#%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E\">详见</a></span><input type=\"checkbox\" id=\"S-Query\" ${util.getValue('allow_query_links') ? 'checked' : ''} \n                              class=\"instant-setting-checkbox\"></label>\n                              <label class=\"instant-setting-label\">加速扩展商店链接<input type=\"checkbox\" id=\"S-Store\" ${util.getValue('enable_store_link') ? 'checked' : ''} class=\"instant-setting-checkbox\"></label>\n                              <label class=\"instant-setting-label\">加速链接在当前页打开<input type=\"checkbox\" id=\"S-Target\" ${util.getValue('enable_target_self') ? 'checked' : ''} class=\"instant-setting-checkbox\"></label>\n                              <label class=\"instant-setting-label\">加速动画效果<input type=\"checkbox\" id=\"S-Animate\" ${util.getValue('enable_animation') ? 'checked' : ''} \n                              class=\"instant-setting-checkbox\"></label>\n                              <label class=\"instant-setting-label\">链接预读延时（毫秒）<input type=\"number\" min=\"65\" id=\"S-Delay\" value=\"${util.getValue('delay_on_hover')}\" \n                              class=\"instant-setting-input\"></label>\n                              <label class=\"instant-setting-label-col\">排除下列网址 <textarea placeholder=\"列表中的域名将不开启加速器，一行一个，例如：www.baidu.com\" id=\"S-Exclude\" class=\"instant-setting-textarea\">${util.getValue('exclude_list')}</textarea></label>\n                              <label class=\"instant-setting-label-col\">排除下列关键词 <textarea placeholder=\"链接中含关键词将不开启加速器，一行一个，例如：logout\" id=\"S-Exclude-Word\" class=\"instant-setting-textarea\">${util.getValue('exclude_keyword')}</textarea></label>\n                            </div>`;\n                Swal.fire({\n                    title: '加速器配置',\n                    html: dom,\n                    showCloseButton: true,\n                    confirmButtonText: '保存',\n                    footer: '<div style=\"text-align: center;font-size: 1em;\">点击查看 <a href=\"https://www.youxiaohou.com/tool/install-instantpage.html\" target=\"_blank\">使用说明</a>，助手免费开源，Powered by <a href=\"https://www.youxiaohou.com\">油小猴</a></div>',\n                    customClass: {\n                        popup: 'instant-popup',\n                    },\n                }).then((res) => {\n                    if (res.isConfirmed) {\n                        history.go(0);\n                    }\n                });\n\n                document.getElementById('S-External').addEventListener('change', (e) => {\n                    util.setValue('allow_external_links', e.currentTarget.checked);\n                });\n                document.getElementById('S-Query').addEventListener('change', (e) => {\n                    util.setValue('allow_query_links', e.currentTarget.checked);\n                });\n                document.getElementById('S-Store').addEventListener('change', (e) => {\n                    util.setValue('enable_store_link', e.currentTarget.checked);\n                });\n                document.getElementById('S-Target').addEventListener('change', (e) => {\n                    util.setValue('enable_target_self', e.currentTarget.checked);\n                });\n                document.getElementById('S-Animate').addEventListener('change', (e) => {\n                    util.setValue('enable_animation', e.currentTarget.checked);\n                });\n                document.getElementById('S-Delay').addEventListener('change', (e) => {\n                    util.setValue('delay_on_hover', e.currentTarget.value);\n                });\n                document.getElementById('S-Exclude').addEventListener('change', (e) => {\n                    util.setValue('exclude_list', e.currentTarget.value);\n                });\n                document.getElementById('S-Exclude-Word').addEventListener('change', (e) => {\n                    util.setValue('exclude_keyword', e.currentTarget.value);\n                });\n            });\n        },\n\n        //在排除名单里\n        inExcludeList() {\n            let exclude = util.getValue('exclude_list').split('\\n');\n            let host = location.host;\n            return exclude.includes(host);\n        },\n\n        //加速主代码\n        instantPage() {\n            if (window.instantLoaded) return;\n            let mouseoverTimer;\n            let lastTouchTimestamp;\n            const prefetches = new Set();\n            const prefetchElement = document.createElement('link');\n            const isSupported = prefetchElement.relList && prefetchElement.relList.supports && prefetchElement.relList.supports('prefetch')\n                && window.IntersectionObserver && 'isIntersecting' in IntersectionObserverEntry.prototype;\n            const isOnline = () => window.navigator.onLine;\n            const allowQueryString = 'instantAllowQueryString' in document.body.dataset || util.getValue('allow_query_links');\n            const allowExternalLinks = 'instantAllowExternalLinks' in document.body.dataset || util.getValue('allow_external_links');\n            const useWhitelist = 'instantWhitelist' in document.body.dataset;\n            const mousedownShortcut = 'instantMousedownShortcut' in document.body.dataset;\n            const DELAY_TO_NOT_BE_CONSIDERED_A_TOUCH_INITIATED_ACTION = 1111;\n            const enableAnimation = util.getValue('enable_animation');\n            const enableTargetSelf = util.getValue('enable_target_self');\n            const enableStoreLink = util.getValue('enable_store_link');\n            window.instantLoaded = true;\n            const excludeKeyword = util.getValue('exclude_keyword').split('\\n');\n\n            let delayOnHover = util.getValue('delay_on_hover');\n            let useMousedown = false;\n            let useMousedownOnly = false;\n            let useViewport = false;\n\n            if ('instantIntensity' in document.body.dataset) {\n                const intensity = document.body.dataset.instantIntensity;\n\n                if (intensity.substr(0, 'mousedown'.length) === 'mousedown') {\n                    useMousedown = true;\n                    if (intensity === 'mousedown-only') {\n                        useMousedownOnly = true;\n                    }\n                } else if (intensity.substr(0, 'viewport'.length) === 'viewport') {\n                    if (!(navigator.connection && (navigator.connection.saveData || (navigator.connection.effectiveType && navigator.connection.effectiveType.includes('2g'))))) {\n                        if (intensity === \"viewport\") {\n                            if (document.documentElement.clientWidth * document.documentElement.clientHeight < 450000) {\n                                useViewport = true;\n                            }\n                        } else if (intensity === \"viewport-all\") {\n                            useViewport = true;\n                        }\n                    }\n                } else {\n                    const milliseconds = parseInt(intensity);\n                    if (!Number.isNaN(milliseconds)) {\n                        delayOnHover = milliseconds;\n                    }\n                }\n            }\n\n            if (isSupported) {\n                const eventListenersOptions = {\n                    capture: true,\n                    passive: true,\n                };\n\n                if (!useMousedownOnly) {\n                    document.addEventListener('touchstart', touchstartListener, eventListenersOptions);\n                }\n\n                if (!useMousedown) {\n                    document.addEventListener('mouseover', mouseoverListener, eventListenersOptions);\n                } else if (!mousedownShortcut) {\n                    document.addEventListener('mousedown', mousedownListener, eventListenersOptions);\n                }\n\n                if (mousedownShortcut) {\n                    document.addEventListener('mousedown', mousedownShortcutListener, eventListenersOptions);\n                }\n\n\n                if (useViewport) {\n                    let triggeringFunction;\n                    if (window.requestIdleCallback) {\n                        triggeringFunction = (callback) => {\n                            requestIdleCallback(callback, {\n                                timeout: 1500,\n                            });\n                        };\n                    } else {\n                        triggeringFunction = (callback) => {\n                            callback();\n                        };\n                    }\n\n                    triggeringFunction(() => {\n                        const intersectionObserver = new IntersectionObserver((entries) => {\n                            entries.forEach((entry) => {\n                                if (entry.isIntersecting) {\n                                    const linkElement = entry.target;\n                                    intersectionObserver.unobserve(linkElement);\n                                    preload(linkElement);\n                                }\n                            });\n                        });\n\n                        document.querySelectorAll('a').forEach((linkElement) => {\n                            if (isPreloadable(linkElement)) {\n                                intersectionObserver.observe(linkElement);\n                            }\n                        });\n                    });\n                }\n            }\n\n            function touchstartListener(event) {\n                /* Chrome on Android calls mouseover before touchcancel so `lastTouchTimestamp`\n                 * must be assigned on touchstart to be measured on mouseover. */\n                lastTouchTimestamp = performance.now();\n\n                const linkElement = event.target.closest('a');\n\n                if (!isPreloadable(linkElement)) {\n                    return;\n                }\n\n                preload(linkElement);\n            }\n\n            function mouseoverListener(event) {\n                if (performance.now() - lastTouchTimestamp < DELAY_TO_NOT_BE_CONSIDERED_A_TOUCH_INITIATED_ACTION) {\n                    return;\n                }\n\n                if (!('closest' in event.target)) {\n                    // Without this check sometimes an error “event.target.closest is not a function” is thrown, for unknown reasons\n                    // That error denotes that `event.target` isn’t undefined. My best guess is that it’s the Document.\n\n                    // Details could be gleaned from throwing such an error:\n                    //throw new TypeError(`instant.page non-element event target: timeStamp=${~~event.timeStamp}, type=${event.type}, typeof=${typeof event.target}, nodeType=${event.target.nodeType}, nodeName=${event.target.nodeName}, viewport=${innerWidth}x${innerHeight}, coords=${event.clientX}x${event.clientY}, scroll=${scrollX}x${scrollY}`)\n                    return\n                }\n\n                const linkElement = event.target.closest('a');\n\n                if (!isPreloadable(linkElement)) {\n                    return;\n                }\n\n                linkElement.addEventListener('mouseout', mouseoutListener, {passive: true});\n\n                mouseoverTimer = setTimeout(() => {\n                    preload(linkElement);\n                    mouseoverTimer = undefined;\n                }, delayOnHover);\n            }\n\n            function mousedownListener(event) {\n                const linkElement = event.target.closest('a');\n\n                if (!isPreloadable(linkElement)) {\n                    return;\n                }\n\n                preload(linkElement);\n            }\n\n            function mouseoutListener(event) {\n                if (event.relatedTarget && event.target.closest('a') === event.relatedTarget.closest('a')) {\n                    return;\n                }\n\n                if (mouseoverTimer) {\n                    clearTimeout(mouseoverTimer);\n                    mouseoverTimer = undefined;\n                }\n            }\n\n            function mousedownShortcutListener(event) {\n                if (performance.now() - lastTouchTimestamp < DELAY_TO_NOT_BE_CONSIDERED_A_TOUCH_INITIATED_ACTION) {\n                    return;\n                }\n\n                const linkElement = event.target.closest('a');\n\n                if (event.which > 1 || event.metaKey || event.ctrlKey) {\n                    return;\n                }\n\n                if (!linkElement) {\n                    return;\n                }\n\n                linkElement.addEventListener('click', function (event) {\n                    if (event.detail === 1337) {\n                        return;\n                    }\n\n                    event.preventDefault();\n                }, {capture: true, passive: false, once: true});\n\n                const customEvent = new MouseEvent('click', {\n                    view: window,\n                    bubbles: true,\n                    cancelable: true,\n                    detail: 1337\n                });\n                linkElement.dispatchEvent(customEvent);\n            }\n\n            function isPreloadable(linkElement) {\n                if (!linkElement || !linkElement.href) {\n                    return;\n                }\n\n                if (util.include(linkElement.href, excludeKeyword)) {\n                    if (!util.reg.chrome.test(linkElement.href) &&\n                        !util.reg.chromeNew.test(linkElement.href) &&\n                        !util.reg.edge.test(linkElement.href) &&\n                        !util.reg.edge.test(linkElement.href) &&\n                        !util.reg.microsoft.test(linkElement.href)) {\n                        return;\n                    }\n                }\n\n                if (useWhitelist && !('instant' in linkElement.dataset)) {\n                    return;\n                }\n\n                if (!allowExternalLinks && linkElement.origin !== location.origin && !('instant' in linkElement.dataset)) {\n                    return;\n                }\n\n                if (!['http:', 'https:'].includes(linkElement.protocol)) {\n                    return;\n                }\n\n                if (linkElement.protocol === 'http:' && location.protocol === 'https:') {\n                    if (linkElement.href.indexOf('http://www.baidu.com/link?url') === 0) {\n                        linkElement.href = linkElement.href.replace('http', 'https');\n                    } else {\n                        return;\n                    }\n                }\n                //下载文件不加速\n                if (/\\.[a-zA-Z0-9]{0,5}$/i.test(linkElement.href)) {\n                    //排除域名，网站扩展名\n                    if (!/(com|cn|top|ltd|net|tech|shop|vip|xyz|wang|cloud|online|site|love|art|xin|store|fun|cc|website|press|space|beer|luxe|video|ren|group|fit|yoga|org|pro|ink|biz|info|design|link|work|mobi|kim|pub|name|tv|co|asia|red|live|wiki|gov|life|world|run|show|city|gold|today|plus|cool|icu|company|chat|zone|fans|law|host|center|club|email|fund|social|team|guru|htm|html|php|asp|jsp)$/i.test(linkElement.href)) {\n                        return;\n                    }\n                }\n\n                if (!allowQueryString && linkElement.search && !('instant' in linkElement.dataset)) {\n                    return;\n                }\n\n                if (linkElement.hash && linkElement.pathname + linkElement.search === location.pathname + location.search) {\n                    return;\n                }\n\n                if (linkElement.dataset.filename || linkElement.dataset.noInstant) {\n                    return;\n                }\n\n                return true;\n            }\n\n            function preload(linkElement) {\n                let url = linkElement.href;\n\n                if (!isOnline()) {\n                    return;\n                }\n\n                if (prefetches.has(url)) {\n                    return;\n                }\n\n                if (enableStoreLink) {\n                    if (util.reg.chromeNew.test(url)) {\n                        linkElement.href = url.replace(\"chromewebstore.google.com\", \"chrome.crxsoso.com/webstore\");\n                    }\n                    if (util.reg.edge.test(url)) {\n                        linkElement.href = url.replace(\"microsoftedge.microsoft.com\", \"microsoftedge.crxsoso.com\");\n                    }\n                    if (util.reg.firefox.test(url)) {\n                        linkElement.href = url.replace(\"addons.mozilla.org\", \"addons.crxsoso.com\");\n                    }\n                }\n\n                const prefetcher = document.createElement('link');\n                prefetcher.rel = 'prefetch';\n                prefetcher.href = url;\n                document.head.appendChild(prefetcher);\n\n                prefetches.add(url);\n\n                if (enableAnimation) {\n                    linkElement.classList.add(\"link-instanted\");\n                }\n                if (enableTargetSelf) {\n                    linkElement.target = '_self';\n                }\n\n                util.setValue('setting_success_times', util.getValue('setting_success_times') + 1);\n            }\n        },\n\n        addPluginStyle() {\n            let style = `\n                .instant-popup { font-size: 14px !important; }\n                .instant-setting-label { display: flex;align-items: center;justify-content: space-between;padding-top: 15px; }\n                .instant-setting-label-col { display: flex;align-items: flex-start;;padding-top: 15px;flex-direction:column }\n                .instant-setting-checkbox { width: 16px;height: 16px; }\n                .instant-setting-textarea { width: 100%; margin: 14px 0 0; height: 60px; resize: none; border: 1px solid #bbb; box-sizing: border-box; padding: 5px 10px; border-radius: 5px; color: #666; line-height: 1.2; }\n                .instant-setting-input { border: 1px solid #bbb; box-sizing: border-box; padding: 5px 10px; border-radius: 5px; width: 100px}\n                 @keyframes instantAnminate { from { opacity: 1; } 50% { opacity: 0.4 } to { opacity: 0.9; }}\n                .link-instanted { animation: instantAnminate 0.6s 1; animation-fill-mode:forwards }\n                .link-instanted * { animation: instantAnminate 0.6s 1; animation-fill-mode:forwards }\n            `;\n\n            if (document.head) {\n                util.addStyle('swal-pub-style', 'style', GM_getResourceText('swalStyle'));\n                util.addStyle('instant-style', 'style', style);\n            }\n\n            const headObserver = new MutationObserver(() => {\n                util.addStyle('swal-pub-style', 'style', GM_getResourceText('swalStyle'));\n                util.addStyle('instant-style', 'style', style);\n            });\n            headObserver.observe(document.head, {childList: true, subtree: true});\n        },\n\n        init() {\n            this.initValue();\n            this.addPluginStyle();\n            this.registerMenuCommand();\n            if (this.inExcludeList()) return;\n            this.instantPage();\n        }\n    };\n    main.init();\n})();",
    "lastUpdateTime": 1773223856268,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://simgbb.com/images/favicon.png",
    "sourceName": "imgbb（图片上传）",
    "sourceUrl": "https://imgbb.com/",
    "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": 1775588632623,
    "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": "美涩",
    "sourceIcon": "https://u25m.seguidh.xyz/static/logo.png",
    "sourceName": "色鬼影院(调用系统自带视频播放器打开)",
    "sourceUrl": "https://u25m.seguidh.xyz/",
    "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": 1775588680668,
    "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": "美涩",
    "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": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "tag.article",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleImage": "class.focus@tag.img@data-src",
    "ruleLink": "class.focus@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.cat@text&&tag.time@text",
    "ruleTitle": "tag.h2.tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "https://note.youdao.com/yws/public/resource/bc48248f2c3431cb06447ab7ec93741e/xmlnote/d477b174db98bac52823081bac32c1a4/360",
    "sourceName": "福利吧",
    "sourceUrl": "http://fulibus.net/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1096,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773223757339,
    "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": "新闻",
    "sourceIcon": "https://i.postimg.cc/7ZBmz6L3/1667311271566.png",
    "sourceName": "全球🍺欣赏",
    "sourceUrl": "https://www.jiuhuar.com/craftbeer?rule=newest&filter=all&page={{page}}",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1098,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775588705888,
    "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": "美涩",
    "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": 1099,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775591993875,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sortUrl": "https://onehu.xyz/categories/",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://z3.ax1x.com/2021/02/07/ytBcZj.gif",
    "sourceName": "我不是盐神",
    "sourceUrl": "https://onehu.xyz/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1100,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208451667,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.content@class.post",
    "ruleContent": "class.post-mode2 single@html",
    "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": "美涩",
    "sourceIcon": "https://img0.baidu.com/it/u=1963232328,869139301&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1351",
    "sourceName": "买家秀",
    "sourceUrl": "https://www.ikmjx.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1101,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208478669,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".song_fication@ul@li",
    "ruleContent": "all\n@js:\nfunction removeParent(doc,txt,index){\ne=doc.select(txt).get(0);\nwhile(e!=null&&e.hasParent()&&index>0){\ne=e.parent()\nindex--\n}\nif(e!=null){e.remove()}\n}\nvar doc=org.jsoup.Jsoup.parse(result,baseUrl);\n//去底部\ndoc.select('.song_fication').remove();\n//去一级菜单\ndoc.select('.comment').remove();\n//去用户登陆\ndoc.select('.footer').remove();\n//去顶部\ndoc.select('.header_content').remove();\n//去左侧菜单\ndoc.select('.header_nav').remove();\n//去源代码\ndoc.select('.video_text').remove();\n//去广告(支持源仓库的吧200ps.com 去掉即可)\ndoc.select('[src*=\"8989ad.com\"]').remove();\ndoc.select('[src*=\"ad\"]').remove();\n//去猜你喜欢\ndoc.html()",
    "ruleImage": "img.1@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "ruleTitle": "span@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "嘟拉儿歌::https://m.61ertong.com/erge/?tid=10&page={{page}}",
    "sourceComment": "分类自行补全\n分类快速生成\nhttp://dalaoha.github.io/yuedu",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://s3.ax1x.com/2020/12/10/rizlTO.png",
    "sourceName": "61儿歌网",
    "sourceUrl": "https://m.61ertong.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1102,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765538656091,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.data.site.subs[0].items",
    "ruleLink": "https://www.anyknew.com/go/{$.iid}",
    "rulePubDate": "$.add_date@js:\nresult=result+\"000\"\njava.timeFormat(result)",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "微博热搜::https://www.anyknew.com/api/v1/sites/weibo&&知乎热榜::https://www.anyknew.com/api/v1/sites/zhihu&&今日头条热搜::https://www.anyknew.com/api/v1/sites/toutiao&&360热搜::https://www.anyknew.com/api/v1/sites/360&&百度热点::https://www.anyknew.com/api/v1/sites/baidu&&搜狗热搜::https://www.anyknew.com/api/v1/sites/sogou&&网易新闻(国际)::https://www.anyknew.com/api/v1/sites/163&&果壳(科学人)::https://www.anyknew.com/api/v1/sites/guokr&&36kr热榜::https://www.anyknew.com/api/v1/sites/36kr&&科学松鼠会::https://www.anyknew.com/api/v1/sites/songshuhui&&cnBate::https://www.anyknew.com/api/v1/sites/cnbeta&&哔哩哔哩日排行::https://www.anyknew.com/api/v1/sites/bilibili&&梨视频::https://www.anyknew.com/api/v1/sites/pearvideo&&澎湃(视频)::https://www.anyknew.com/api/v1/sites、thepaper&&艺恩实时::https://www.anyknew.com/api/v1/sites/cbo&&汽车之家::https://www.anyknew.com/api/v1/sites/autohome&&腾讯新闻::https://www.anyknew.com/api/v1/sites/tencent&&zol(手机)::https://www.anyknew.com/api/v1/sites/zol&&界面新闻::https://www.anyknew.com/api/v1/sites/jiemian&&什么值得买::https://www.anyknew.com/api/v1/sites/smzdm&&游民星空::https://www.anyknew.com/api/v1/sites/gamesky&&steam实时::https://www.anyknew.com/api/v1/sites/steam&&时光网::https://www.anyknew.com/api/v1/sites/mtime&&开发者头条::https://www.anyknew.com/api/v1/sites/toutiaoio&&掘金::https://www.anyknew.com/api/v1/sites/juejin&&开源中国::https://www.anyknew.com/api/v1/sites/oschina&&雪球::https://www.anyknew.com/api/v1/sites/xueqiu&&财新数据::https://www.anyknew.com/api/v1/sites/caixin&&英为财情::https://www.anyknew.com/api/v1/sites/investing",
    "sourceGroup": "新闻",
    "sourceIcon": "http://img.100weidu.com/weixin/head/MzI5NTA4NjgwNw==",
    "sourceName": "AnyKnew",
    "sourceUrl": "https://www.anyknew.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1104,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208492133,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.Content_L@class.news_list@class.list@tag.a&&class.Min2_M@tag.a&&class.Revision_list@class.selectpost",
    "ruleImage": "class.imgst@tag.img@src&&class.img@tag.img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.next@tag.a@href",
    "rulePubDate": "class.time@text",
    "ruleTitle": "class.bt@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "新闻中心::https://www.3dmgame.com/news_all_{{page}}\n游戏新闻::https://www.3dmgame.com/news/game\n影视动漫::https://www.3dmgame.com/news/acg\n智能数码::https://www.3dmgame.com/news/next\n时事焦点::https://www.3dmgame.com/news_36_{{page}}\n娱乐频道::https://www.3dmgame.com/bagua\n娱乐八卦::https://www.3dmgame.com/bagua_62_1\n人在囧途::https://www.3dmgame.com/bagua_65_1/\n涨涨姿势::https://www.3dmgame.com/bagua_63_1/\n精选壁纸::https://www.3dmgame.com/bagua_66_1",
    "sourceGroup": "游戏",
    "sourceIcon": "https://ps.ssl.qhmsg.com/t023694f5f40f3c6887.jpg",
    "sourceName": "3DM",
    "sourceUrl": "https://www.3dmgame.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1105,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.rescont.data",
    "ruleContent": "<video src=\"{{$.rescont.videopath}}\" controls width=\"auto\" height=\"auto\"></video>",
    "ruleImage": "$.coverpath",
    "ruleLink": "http://lu3fcm.aksdsrle.com/api/videoplay/{{$.id}}?&uuid=1",
    "ruleNextPage": "page",
    "rulePubDate": "{{$.authername}}",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "测试::http://lu3fcm.aksdsrle.com/api/videosort/9?orderby=&page=1&uuid=1&device=0\n网红主播::http://lu3fcm.aksdsrle.com/api/videosort/42?orderby=&page={{page}}&uuid=1&device=0\n国产AV::http://lu3fcm.aksdsrle.com/api/videosort/44?orderby=&page={{page}}&uuid=1&device=0\n狼友求片::http://lu3fcm.aksdsrle.com/api/videosort/43?orderby=&page={{page}}&uuid=1&device=0\n18::http://lu3fcm.aksdsrle.com/api/videosort/41?orderby=&page={{page}}&uuid=1&device=0\n16::http://lu3fcm.aksdsrle.com/api/videosort/38?orderby=&page={{page}}&uuid=1&device=0\n15::http://lu3fcm.aksdsrle.com/api/videosort/37?orderby=&page={{page}}&uuid=1&device=0\n\n9::http://lu3fcm.aksdsrle.com/api/videosort/50?orderby=&page={{page}}&uuid=1&device=0\nAV解说::http://lu3fcm.aksdsrle.com/api/videosort/49?orderby=&page={{page}}&uuid=1&device=0\n破解版::http://lu3fcm.aksdsrle.com/api/videosort/48?orderby=&page={{page}}&uuid=1&device=0\n6::http://lu3fcm.aksdsrle.com/api/videosort/27?orderby=&page={{page}}&uuid=1&device=0\n三级电影::http://lu3fcm.aksdsrle.com/api/videosort/25?orderby=&page={{page}}&uuid=1&device=0\n欧美激情::http://lu3fcm.aksdsrle.com/api/videosort/16?orderby=&page={{page}}&uuid=1&device=0\n动漫::http://lu3fcm.aksdsrle.com/api/videosort/14?orderby=&page={{page}}&uuid=1&device=0\n国产精品::http://lu3fcm.aksdsrle.com/api/videosort/10?orderby=&page={{page}}&uuid=1&device=0\n1::http://lu3fcm.aksdsrle.com/api/videosort/9?orderby=&page={{page}}&uuid=1&device=0",
    "sourceGroup": "美涩",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/073.webp",
    "sourceName": "视频规则补一下",
    "sourceUrl": "http://lu3fcm.aksdsrle.com/api/videosort/9?orderby=&page=1&uuid=1&device=0",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1106,
    "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": "美涩",
    "sourceIcon": "https://img0.baidu.com/it/u=2874790938,228875074&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=1149",
    "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": 1,
    "cacheFirst": false,
    "customOrder": 1110,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773208507884,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data",
    "ruleDescription": "$.content",
    "ruleImage": "@js:'{{java.getString('$.content').match(/<img.*?src=\"(.*?)\".*?>/)?java.getString('$.content').match(/<img.*?src=\"(.*?)\".*?>/)[1]:null}}'",
    "ruleLink": "$.url",
    "ruleNextPage": "page",
    "rulePubDate": "{{java.timeFormatUTC(java.getString(\"updated\")*1000,\"YYYY-MM-dd HH:mm:ss\",8)}}",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "https://www.zhihu.com/api/v4/columns/c_1085975047386050560/items?limit=30&offset={{(page-1)*30}}",
    "sourceComment": "1.打开浏览器，打开你要制作的知乎专栏页面，查看url，例如‘每天60秒读懂世界’的页面url为<https://www.zhihu.com/column/c_1261258401923026944>\n2.复制url后半段<c_1261258401923026944>，这是专栏的id\n3.修改知乎专栏模板订阅源\n（1）.修改上面的源url，把你复制的<c_1261258401923026944>知乎专栏id，替换进去。位置在/columns/和/items之间\n（2）.修改下面的分类url，把你复制的<c_1261258401923026944>知乎专栏id，替换进去。位置在/columns/和/items之间\n（3）.修改订阅源名称",
    "sourceGroup": "新闻",
    "sourceIcon": "https://picx.zhimg.com/v2-624f6eb03f71a1b045034d25185d29f4_l.jpg?source=d16d100b",
    "sourceName": "知乎每日早报",
    "sourceUrl": "https://www.zhihu.com/api/v4/columns/c_1085975047386050560/items?limit=30&offset={{(page-1)*30}}",
    "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": 1112,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208523949,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://mms1.baidu.com/it/u=3889785552,3676099628&fm=253&app=138&f=JPEG&fmt=auto&q=75?w=500&h=500",
    "sourceName": "起点男生",
    "sourceUrl": "https://m.qidian.com/rank/hotsales/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1116,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "书源",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/gedoor/legado@master/app/src/main/res/mipmap-hdpi/ic_launcher.png",
    "sourceName": "使用说明",
    "sourceUrl": "https://www.yuque.com/legado",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1118,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 10.0.0;  XXX Pro Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36\"}",
    "lastUpdateTime": 1773207674845,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.container@class.col-md-3 col-xs-6",
    "ruleContent": "all## <script type=\"text/javascript\">var cnzz_protocol = [\\s\\S]+?</script> ",
    "ruleImage": "img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.pager@tag.a.-1@href",
    "rulePubDate": "class.table@span@text##\\n##·",
    "ruleTitle": "class.card-caption@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索用::https://www.yikm.net/search?name=拳皇\n\n\nGBA游戏::https://www.yikm.net/nes?page=1&tag=&e=2\n街机游戏::https://www.yikm.net/nes?page=1&tag=9\nH5游戏::https://www.yikm.net/nes?page=1&tag=1\n动作冒险::https://www.yikm.net/nes?page=1&tag=2\n小游戏::https://www.yikm.net/nes?page=1&tag=8\n飞行射击::https://www.yikm.net/nes?page=1&tag=3\n格斗::https://www.yikm.net/nes?page=1&tag=4\n棋牌::https://www.yikm.net/nes?page=1&tag=5\n射击::https://www.yikm.net/nes?page=1&tag=6\n运动比赛::https://www.yikm.net/nes?page=1&tag=7\n角色扮演::https://www.yikm.net/nes?page=1&tag=10",
    "sourceGroup": "游戏",
    "sourceIcon": "http://srvcn.xbext.com/touch_icons/96x96/mobile.h5_games.png",
    "sourceName": "在线游戏",
    "sourceUrl": "https://www.yikm.net/nes?tag=9",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1118,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"Referer\":\"baseUrl\"}",
    "lastUpdateTime": 1775588768128,
    "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": "美涩",
    "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": 0,
    "cacheFirst": false,
    "customOrder": 1119,
    "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": 1773207683931,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.container@class.col-md-3 col-xs-6",
    "ruleContent": "all## <script type=\"text/javascript\">var cnzz_protocol = [\\s\\S]+?</script> ",
    "ruleImage": "img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.pager@tag.a.-1@href",
    "rulePubDate": "class.table@span@text##\\n##·",
    "ruleTitle": "class.card-caption@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索用::https://www.yikm.net/search?name=逆转裁判\n\n\nGBA游戏::https://www.yikm.net/nes?page=1&tag=&e=2\n街机游戏::https://www.yikm.net/nes?page=1&tag=9\nH5游戏::https://www.yikm.net/nes?page=1&tag=1\n动作冒险::https://www.yikm.net/nes?page=1&tag=2\n小游戏::https://www.yikm.net/nes?page=1&tag=8\n飞行射击::https://www.yikm.net/nes?page=1&tag=3\n格斗::https://www.yikm.net/nes?page=1&tag=4\n棋牌::https://www.yikm.net/nes?page=1&tag=5\n射击::https://www.yikm.net/nes?page=1&tag=6\n运动比赛::https://www.yikm.net/nes?page=1&tag=7\n角色扮演::https://www.yikm.net/nes?page=1&tag=10",
    "sourceGroup": "游戏",
    "sourceIcon": "http://srvcn.xbext.com/touch_icons/96x96/mobile.h5_games.png",
    "sourceName": "在线游戏",
    "sourceUrl": "https://www.yikm.net/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1126,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208579364,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://mms0.baidu.com/it/u=3057616090,4224022483&fm=253&app=138&f=PNG&fmt=auto&q=75?w=500&h=500",
    "sourceName": "17K男生",
    "sourceUrl": "https://h5.17k.com/top/list.html?type=2&classId=2",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1137,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775592067105,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@css:.cell.item",
    "ruleContent": "<js>var doc=org.jsoup.Jsoup.parse(result.replace(/data-src=/g,\"src=\"));\n\n\"<style>img{max-width:100% !important; width:auto; height:auto;</style><h2>\"+doc.getElementsByTag(\"h1\").text()+\"</h2>\"+doc.getElementById(\"js_content\").outerHtml()</js>",
    "ruleImage": "@css:.topic_image>img@src",
    "ruleLink": "@css:.item_title>a@href",
    "rulePubDate": "@css:.fade@text",
    "ruleTitle": "@css:.item_title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "推书点评",
    "sourceIcon": "http://img.100weidu.com/weixin/head/MzI5NTA4NjgwNw==",
    "sourceName": "赤戟的书荒救济所",
    "sourceUrl": "http://www.jintiankansha.me/column/qOcZgyKfdi",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1139,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/mgz0227/meowcloud/icon.png",
    "sourceName": "Meow云",
    "sourceUrl": "https://pan.miaogongzi.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1144,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207725925,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "https://raw.githubusercontent.com/FurryGamesIndex/games/master/assets/_README/logo.png",
    "sourceName": "兽人控游戏索引",
    "sourceUrl": "https://furrygames.top/zh-cn/list-b.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1146,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/gedoor/legado@master/app/src/main/res/mipmap-hdpi/ic_launcher.png",
    "sourceName": "乌云净化规则",
    "sourceUrl": "https://www.lanzoux.com/b0bw8jwoh",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1146,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775588940919,
    "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": "美涩",
    "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": 1775588980159,
    "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": "美涩",
    "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": 1775589016933,
    "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": "美涩",
    "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": 1773207714795,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "https://img.srkyxk.com/logo-512x512.png",
    "sourceName": "兽人游戏库",
    "sourceUrl": "https://kemono.games/zh-Hans/explore?sort=latest_update",
    "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": 1775589094611,
    "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": "美涩",
    "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": 0,
    "cacheFirst": false,
    "customOrder": 1158,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773207789295,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "https://images.furrycons.cn/logo_800x800.png",
    "sourceName": "兽展日历",
    "sourceUrl": "https://www.furrycons.cn/",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1160,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775589134832,
    "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": "美涩",
    "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": 1166,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773225480134,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "https://www.furryfusion.net/images/LOGO.png",
    "sourceName": "兽聚汇总",
    "sourceUrl": "https://www.furryfusion.net/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1167,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773206749127,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.pins",
    "ruleContent": "<style>\nbody{\npadding:10px;\nline-height:2em;\nletter-spacing:2px;\nbackground:floralwhite;\nfont-family: sans-serif-Helvetica;\n}\np{ \ntext-indent:2em;\n}\na {\ncolor: grey;\ntext-decoration:none;\n}\nh1{\ntext-align:center;\nfont-size:20px;\nline-height:1.5em;\n}\nimg{padding:5px 0;max-width:100% !important;width:auto;height:auto;}\n</style>\n<div>\n<h1>{$.pin.board.title}</h1>\n<p>By：{$.pin.user.username}</p>\n<p>{$.pin.raw_text}</p>\n<p>{$.pin.board.description}</p>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.file.key}\"/>\n<p>相关推荐：</p>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[0].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[1].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[2].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[3].file.key}\"/>\n<div><a href=\"https://huaban.com/pins/{$.pin.pin_id}\">阅读原文</a></div>\n</div>",
    "ruleImage": "https://hbimg.huabanimg.com//{$.file.key}",
    "ruleLink": "https://api.huaban.com/pins/{$.pin_id}",
    "rulePubDate": "$.created_at@js:(new Date(result*1000)).toLocaleDateString();",
    "ruleTitle": "$.board.title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "https://ae02.alicdn.com/kf/U8cec6a5f56f346a0948b2789382700a4I.jpg",
    "sourceName": "花瓣-美图",
    "sourceUrl": "https://api.huaban.com/favorite/quotes?limit=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": 1775589219936,
    "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": "美涩",
    "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": 1775589239559,
    "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": "美涩",
    "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": 1177,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773949985857,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.pins",
    "ruleContent": "<style>\nbody{\npadding:10px;\nline-height:2em;\nletter-spacing:2px;\nbackground:floralwhite;\nfont-family: sans-serif-Helvetica;\n}\np{ \ntext-indent:2em;\n}\na {\ncolor: grey;\ntext-decoration:none;\n}\nh1{\ntext-align:center;\nfont-size:20px;\nline-height:1.5em;\n}\nimg{padding:5px 0;max-width:100% !important;width:auto;height:auto;}\n</style>\n<div>\n<h1>{$.pin.board.title}</h1>\n<p>By：{$.pin.user.username}</p>\n<p>{$.pin.raw_text}</p>\n<p>{$.pin.board.description}</p>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.file.key}\"/>\n<p>相关推荐：</p>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[0].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[1].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[2].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[3].file.key}\"/>\n<div><a href=\"https://huaban.com/pins/{$.pin.pin_id}\">阅读原文</a></div>\n</div>",
    "ruleImage": "https://hbimg.huabanimg.com//{$.file.key}",
    "ruleLink": "https://api.huaban.com/pins/{$.pin_id}",
    "rulePubDate": "$.created_at@js:(new Date(result*1000)).toLocaleDateString();",
    "ruleTitle": "$.board.title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://www.lifves.com/favicon.ico",
    "sourceName": "花瓣-热门",
    "sourceUrl": "https://api.huaban.com/popular?limit=100",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1178,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773222091698,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://qinggongju.com/wp-content/uploads/2020/12/hdImg_fbfcbb35309ba72a78da9be4a6b45f9415985150181.png",
    "sourceName": "轻工具",
    "sourceUrl": "https://qinggongju.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1181,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775591503531,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.pins",
    "ruleContent": "<style>\nbody{\npadding:10px;\nline-height:2em;\nletter-spacing:2px;\nbackground:floralwhite;\nfont-family: sans-serif-Helvetica;\n}\np{ \ntext-indent:2em;\n}\na {\ncolor: grey;\ntext-decoration:none;\n}\nh1{\ntext-align:center;\nfont-size:20px;\nline-height:1.5em;\n}\nimg{padding:5px 0;max-width:100% !important;width:auto;height:auto;}\n</style>\n<div>\n<h1>{$.pin.board.title}</h1>\n<p>By：{$.pin.user.username}</p>\n<p>{$.pin.raw_text}</p>\n<p>{$.pin.board.description}</p>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.file.key}\"/>\n<p>相关推荐：</p>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[0].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[1].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[2].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[3].file.key}\"/>\n<div><a href=\"https://huaban.com/pins/{$.pin.pin_id}\">阅读原文</a></div>\n</div>",
    "ruleImage": "https://hbimg.huabanimg.com//{$.file.key}",
    "ruleLink": "https://api.huaban.com/pins/{$.pin_id}",
    "rulePubDate": "$.created_at@js:(new Date(result*1000)).toLocaleDateString();",
    "ruleTitle": "$.board.title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://api.huaban.com/favicon.ico",
    "sourceName": "花瓣-漫画",
    "sourceUrl": "https://api.huaban.com/favorite/illustration?limit=100",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1187,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775591510167,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.pins",
    "ruleContent": "<style>\nbody{\npadding:10px;\nline-height:2em;\nletter-spacing:2px;\nbackground:floralwhite;\nfont-family: sans-serif-Helvetica;\n}\np{ \ntext-indent:2em;\n}\na {\ncolor: grey;\ntext-decoration:none;\n}\nh1{\ntext-align:center;\nfont-size:20px;\nline-height:1.5em;\n}\nimg{padding:5px 0;max-width:100% !important;width:auto;height:auto;}\n</style>\n<div>\n<h1>{$.pin.board.title}</h1>\n<p>By：{$.pin.user.username}</p>\n<p>{$.pin.raw_text}</p>\n<p>{$.pin.board.description}</p>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.file.key}\"/>\n<p>相关推荐：</p>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[0].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[1].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[2].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[3].file.key}\"/>\n<div><a href=\"https://huaban.com/pins/{$.pin.pin_id}\">阅读原文</a></div>\n</div>",
    "ruleImage": "https://hbimg.huabanimg.com//{$.file.key}",
    "ruleLink": "https://api.huaban.com/pins/{$.pin_id}",
    "rulePubDate": "$.created_at@js:(new Date(result*1000)).toLocaleDateString();",
    "ruleTitle": "$.board.title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://api.huaban.com/favicon.ico",
    "sourceName": "花瓣-旅行",
    "sourceUrl": "https://api.huaban.com/favorite/travel_places?limit=100",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1191,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.pins",
    "ruleContent": "<style>\nbody{\npadding:10px;\nline-height:2em;\nletter-spacing:2px;\nbackground:floralwhite;\nfont-family: sans-serif-Helvetica;\n}\np{ \ntext-indent:2em;\n}\na {\ncolor: grey;\ntext-decoration:none;\n}\nh1{\ntext-align:center;\nfont-size:20px;\nline-height:1.5em;\n}\nimg{padding:5px 0;max-width:100% !important;width:auto;height:auto;}\n</style>\n<div>\n<h1>{$.pin.board.title}</h1>\n<p>By：{$.pin.user.username}</p>\n<p>{$.pin.raw_text}</p>\n<p>{$.pin.board.description}</p>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.file.key}\"/>\n<p>相关推荐：</p>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[0].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[1].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[2].file.key}\"/>\n<img src=\"https://hbimg.huabanimg.com//{$.pin.board.pins[3].file.key}\"/>\n<div><a href=\"https://huaban.com/pins/{$.pin.pin_id}\">阅读原文</a></div>\n</div>",
    "ruleDescription": "",
    "ruleImage": "https://hbimg.huabanimg.com//{$.file.key}",
    "ruleLink": "https://api.huaban.com/pins/{$.pin_id}",
    "rulePubDate": "$.created_at@js:(new Date(result*1000)).toLocaleDateString();",
    "ruleTitle": "$.board.title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "动漫漫画",
    "sourceIcon": "https://c-ssl.duitang.com/uploads/item/201806/21/20180621181320_zXad3.png",
    "sourceName": "花瓣-动漫",
    "sourceUrl": "https://api.huaban.com/favorite/anime?limit=100",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1196,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767885059536,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://img.tukuppt.com/png_preview/00/29/16/4Q5dsqL9IG.jpg%21/fw/780",
    "sourceName": "夸克榜单",
    "sourceUrl": "https://quark.sm.cn/api/rest?method=Novelnew.home&format=html&schema=v2&gender=male&cate=%E5%85%A8%E9%83%A8&rank=rank_hot&pv=2420440",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1197,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208269091,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "美涩",
    "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://xn--ksp-mxgmxgcom-yp8ve33bkpevz1kpxq.mxgmh.com/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1197,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775589411655,
    "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": "美涩",
    "sourceIcon": "https://i.postimg.cc/j5ZxW6v7/1657950527553.png",
    "sourceName": "©痴汉",
    "sourceUrl": "https://99imm13.xyz/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1200,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773206812994,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "http://www.17k.cc/favicon.ico",
    "sourceName": "少数派",
    "sourceUrl": "https://sspai.com/feed",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1203,
    "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": "if(location.href.indexOf('https://passport.csdn.net/signwap')!=-1 || location.href.indexOf('https://passport.gitcode.net/cross')!=-1){localStorage.removeItem('isLogin')};function getCookie(name){var cookies = document.cookie.split(';');for (var i = 0; i < cookies.length; i++) {var cookie = cookies[i].trim();if (cookie.indexOf(name + '=') === 0) {return cookie.substring(name.length + 1);}} return null;}if(getCookie('UserName') && localStorage.getItem('isLogin')!=1){localStorage.setItem('isLogin',1);location.href=`https://blog.csdn.net/${getCookie('UserName')}`};setTimeout(()=>{ if(getCookie('UserName')){if(document.querySelector('.logout')){var para = document.createElement('a');para.setAttribute('href','https://passport.csdn.net/account/logout');para.setAttribute('class','openApp');para.innerHTML='退出';document.querySelector('.openApp').parentNode.replaceChild(para,document.querySelector('.openApp'));}else{var para = document.createElement('a');para.setAttribute('href',`https://blog.csdn.net/${getCookie('UserName')}`);para.setAttribute('class','openApp');para.innerHTML='个人中心';document.querySelector('.openApp').parentNode.replaceChild(para,document.querySelector('.openApp'));}}else{ document.querySelector('.openApp').parentNode.removeChild(document.querySelector('.openApp'));} },300);setTimeout(()=>{document.querySelector('.m_toolbar_left_app_btn').parentNode.removeChild(document.querySelector('.m_toolbar_left_app_btn'));},300);",
    "lastUpdateTime": 1773207948641,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://g.csdnimg.cn/static/logo/favicon32.ico",
    "sourceName": "CSDN",
    "sourceUrl": "https://passport.csdn.net/signwap",
    "style": ".openApp,.m_toolbar_left_app_btn{display:none !important;}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1204,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207962509,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.list",
    "ruleContent": "<js>\nvar doc=org.jsoup.Jsoup.parse(result)\nString(doc.select(\".article-content\").html()).replace(/data-src\\=/g,\"src=\")\n</js>",
    "ruleImage": "$..url",
    "ruleLink": "link",
    "rulePubDate": "{$.source}|{$.ptime}",
    "ruleTitle": "title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "http://t11.baidu.com/it/u=1293811828,1877564984&fm=58",
    "sourceName": "网易",
    "sourceUrl": "https://3g.163.com/touch/nc/api/user/recommend/GuessLike/1-30-10-30.do?__rnd=95949755&callback=",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1205,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "\"headers\":{\"User-Agent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\"}}",
    "lastUpdateTime": 1765047869646,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\n\nx=String(baseUrl).replace(\"https://m.baidu.com/s?word=\",\"\")\nlist=[];\n\n//判断导入类型\npre=String(String(x).match(/◆(.*?)】/)[1]);\nif(pre=='订阅'){java.put('pre','yuedu://rsssource/importonline?src=')}else if(pre=='书源'){java.put('pre','yuedu://booksource/importonline?src=')}else if(pre=='净化'){java.put('pre','yuedu://replace/importonline?src=')}else{java.put('pre','yuedu://auto/importonline?src=')}\n\n\nx.replace(/【([^\\s★☆◆【】]+?)★([^\\n★☆◆【】]+?)☆([^\\s★☆◆【】]+?)◆([^\\s★☆◆【】]*?)】/g,function (ozr,a,b,c,d) { list.push({title:a,data:b,url:c,description:d});\n})\nlist\n</js>",
    "ruleContent": "<js>\nif(String(baseUrl).indexOf('.json')==-1){\n\n\nfunction removeParent(doc,txt,index){\ne=doc.select(txt).get(0);\nwhile(e!=null&&e.hasParent()&&index>0){\ne=e.parent()\nindex--\n}\nif(e!=null){e.remove()}\n}\nvar doc=org.jsoup.Jsoup.parse(result,baseUrl);\ndoc.html()\n\n}else{\njava.log(String(src).length)\nif(String(src).length<4096){src=src}else{\n\t//src='文本太大，为防止卡顿和闪退，不予显示'\n\tsrc=String(src).slice(0,4096);\n}\n\n\nbase=java.get('pre')+baseUrl\n\ncontent='<html>\\n<head></head>\\n<body>\\n<h1></h1><iframe src=\"'+base+'\"hidden></iframe><a href=\"'+base+'\">3.0一键导入</a><button onclick=\"复制代码()\">复制代码</button><input type=\"text\" id=\"链接\" value=\"'+baseUrl+'\"><button onclick=\"复制链接()\">复制链接</button><textarea readonly id=\"源代码\" width=\"100%;\">'+src+'</textarea>'+'  <script>\\nfunction 复制代码(){txt = document.getElementById(\\'源代码\\');txt.select();document.execCommand(\"copy\");alert(\"复制成功\")};\\nfunction 复制链接(){txt = document.getElementById(\\'链接\\');txt.select();document.execCommand(\"copy\");alert(\"复制成功\")};\\n</script>\\n<style>h1{text-align:center;padding:20px}textarea{width:100%;height:70%;border:2px solid #000F;padding:20px}a{width:auto;border-radius:10px;\ttext-decoration:none; background:-webkit-linear-gradient(left, #ff799e, #547396);\tcolor:#fff;\tfont-size:2rem;padding:0.25rem 0.55rem;}input{padding:0.50rem 0.29rem;}body{text-align:center}button{width:80px;height: 70px;background-color: #547396;border-radius:10px;text-decoration:none; background:-webkit-linear-gradient(left, #ff799e, #547396);\tcolor:#fff;\tfont-size:0.9rem;padding:0.25rem 0.55rem;}</style></body>\\n</html>'\n}\n</js>",
    "ruleLink": "url",
    "rulePubDate": "data",
    "ruleTitle": "title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "精校小说::https://m.baidu.com/s?word=【书荒部落★精校全本下载☆https://noveless.com/◆网页】【书本网★普通网络小说下载☆https://www.xbookben.net/◆】【小说下载站★飞卢刺猬猫等小说下载☆https://down.imwcr.com/1/main/◆】【免费小说网★校对小说下载☆http://www.12z.cn/index.html◆】【知轩藏书★网络小说下载，资源分享☆http://zxcs.me/◆】【贼书吧★精品全本电子书，多种格式下载☆https://www.zei8.vip/◆】【书香门第★交流论坛，男女频小说下载☆http://www.txtnovel.top/◆】【千秋书在★小说，漫画，出版，资源杂，登陆☆https://www.qqszz.com/◆】【黑图电子书★网络小说全本下载☆https://www.hts886.com◆】【右岸书居★TXT小说下载，冷门资源☆https://www.youasj.com/◆】【趣书网★免费TXT小说下载☆https://m.qubook.cc/◆】【巴士书库★言情小说下载☆http://m.84sk.com/◆】【书荒网★完结小说推荐和TXT小说下载☆https://www.15huang.com/◆】【精校小说吧★百度贴吧（暗笑）☆https://tieba.baidu.com/f?kw=%BE%AB%D0%A3%D0%A1%CB%B5&fr=ala0&loc=rec◆】【云搜小说★小说搜索☆http://www.woyaoso.cn/◆】【精校吧★校对全本TXT小说下载☆https://www.jingjiaoba.com/◆】【拨云搜索★主角姓名查找小说☆https://www.boyunso.com/◆】【河洛网★需要登陆☆https://www.horou.com/touch/?mobile=2◆】【小说社区★精校全本电子书网站☆http://m.s5l.com/◆】【爱奇电子书★资源比较杂，啥都有☆http://m.aqtxt.com/◆】【书荒网★小说下载，还不错☆https://15huang.com/◆】\n\n出版书籍::https://m.baidu.com/s?word=【Z-library★全球最大电子书下载网站☆https://zh.art1lib.com/◆网页】【LoreFree★免费下载海量电子书资源，七万本☆https://ebook2.lorefree.com/◆】【鸠魔搜书★一个知名电子书搜索下载网站，网盘资源☆https://www.jiumodiary.com/◆】【天浪书屋★获取地址之前需要关注公众号获取暗号☆https://www.tianlangbooks.com/◆】【TheFuture书籍搜索★网站与鸠摩搜书类似☆https://bks.thefuture.top/◆】【第一图书网★关键字，用命令去百度搜索☆http://www.tushu007.com/◆】【书舟★关注公众号下载，资源比较丰富☆https://www.shuzhou.cc/◆】【搜书网★聚合搜索，支持搜索随书光盘☆https://www.soushu.vip/◆】【熊猫搜书★聚合电子书搜索☆https://xmsoushu.com/◆】【采书★和熊猫搜书类似，聚合电子书搜索☆http://ebook.name/◆】【文津搜索★搜索国图和地方图书馆馆藏☆http://find.nlc.cn/◆】【PDFDrive★7000多万本电子书☆https://www.pdfdrive.com/◆】【MoreRead★需要先注册登录。☆http://moreread.me/◆】【书格★中国古书的实拍照片，支持在线预览、支持多种方式下载☆https://new.shuge.org/◆】【读书小站★简洁，支持下载☆https://ibooks.org.cn/◆】【苦瓜书盘★奇特☆https://kgbook.com/◆】【阅读链★推书☆https://www.yuedu.pro/◆】【淘链客★教材，ppt,论文☆https://toplinks.cc/s/◆】【参考网★免费期刊，杂志，在线阅读☆https://m.fx361.com/◆】\n\n精校出版::https://m.baidu.com/s?word=【书格★有品格的数字古籍图书馆☆https://new.shuge.org/◆网页】【知轩藏书★藏尽网络中最好的精校小说☆http://zxcs.me/◆】【知轩精校★精校小说☆https://m.zxcs.info/◆】【皇帝之家★精品全本电子书☆https://m.huangdizhijia.com/◆】【狗狗电子书★小说下载、电子书搜索☆https://book.gouyg.com/◆】【添喜郎★登录｜电子书、Txt小说下载☆https://m.tianxilang.com/◆】【小说社区★精校小说社区☆http://m.s5l.com/index.php?c=home◆】【宅男小说★完结小说下载☆http://m.zntxt.com/◆】【搜我小说★TXT全本小说下载☆http://m.jjxsz.cn/◆】【趣书网★免费TXT小说下载☆https://m.qubook.cc/◆】【巴士书库★言情小说下载☆http://m.84sk.com/◆】【书荒网★完结小说推荐和TXT小说下载☆https://www.15huang.com/◆】【千书小说★完本小说TXT下载站☆https://www.qiantxt.com/◆】【爱久久小说★电子书资源免费下载☆https://m.ijjxs.com/◆】【精校吧★校对全本TXT小说下载☆https://www.jingjiaoba.com/◆】【58网盘★精校小说网盘下载☆https://www.58file.com/◆】【TXT下载★TXT小说网盘下载☆https://www.downtxts.com/◆】【书荒部落★精校全本☆https://noveless.com/◆】【书行天下★PDF电子书学习下载站☆https://www.sxpdf.com/◆】【数字图书馆★登录｜网络、实体书多种格式下载☆https://zh.booksc.eu/◆】【图欧学习资源库★B站某UP主整合的学习资源☆https://tuostudy.com/◆】【书本网★普通网络小说下载☆https://www.xbookben.net/◆】【小说下载站★飞卢刺猬猫等小说下载☆https://down.imwcr.com/1/main/◆】\n\n佛学经典::https://m.baidu.com/s?word=【佛学辞典★佛学辞典☆https://deerpark.app◆】【劝学网★劝学网☆http://www.quanxue.cn/◆】【中华典藏★中华典藏☆https://www.zhonghuadiancang.com◆】【华人佛教★华人佛教☆https://m.hrfjw.com/◆】",
    "sourceComment": "【本订阅所有网站如下】\n\n书荒部落：https://noveless.com/\n书本网：https://www.xbookben.net/\n小说下载站：https://down.imwcr.com/1/main/\n免费小说网：http://www.12z.cn/index.html\n知轩藏书：http://zxcs.me/\n知轩精校：https://m.zxcs.info/\n贼书吧：https://www.zei8.vip/\n书香门第：http://www.txtnovel.top/\n千秋书在：https://www.qqszz.com/\n黑图电子书：https://www.hts886.com\n右岸书居：https://www.youasj.com/\n趣书网：https://m.qubook.cc/\n巴士书库：http://m.84sk.com/\n书荒网：https://www.15huang.com/\n云搜小说：http://www.woyaoso.cn/\n精校吧：https://www.jingjiaoba.com/\n拨云搜索：https://www.boyunso.com/\n河洛网：https://www.horou.com/touch/?mobile=2\n小说社区：http://m.s5l.com/\n爱奇电子书：http://m.aqtxt.com/\n书荒网：https://15huang.com/\nZ-library：https://zh.art1lib.com/\nLoreFree：https://ebook2.lorefree.com/\n鸠摩搜书：https://www.jiumodiary.com/\n天浪书屋：https://www.tianlangbooks.com/\nTheFuture书籍搜索：https://bks.thefuture.top/\n第一图书网：http://www.tushu007.com/\n书舟：https://www.shuzhou.cc/\n搜书网：https://www.soushu.vip/\n熊猫搜书：https://xmsoushu.com/\n采书：http://ebook.name/\n文津搜索：http://find.nlc.cn/\nPDFDrive：https://www.pdfdrive.com/\nMoreRead：http://moreread.me/\n书格：https://new.shuge.org/\n读书小站：https://ibooks.org.cn/\n苦瓜书盘：https://kgbook.com/\n阅读链：https://www.yuedu.pro/\n淘链客：https://toplinks.cc/s/\n参考网：https://m.fx361.com/\n书格：https://new.shuge.org/\n皇帝之家：https://m.huangdizhijia.com/\n狗狗电子书：https://book.gouyg.com/\n添喜郎：https://m.tianxilang.com/\n宅男小说：http://m.zntxt.com/\n搜我小说：http://m.jjxsz.cn/\n趣书网：https://m.qubook.cc/\n巴士书库：http://m.84sk.com/\n书荒网：https://www.15huang.com/\n千书小说：https://www.qiantxt.com/\n爱久久小说：https://m.ijjxs.com/\n精校吧：https://www.jingjiaoba.com/\n58网盘：https://www.58file.com/\nTXT下载：https://www.downtxts.com/\n书荒部落：https://noveless.com/\n书行天下：https://www.sxpdf.com/\n数字图书馆：https://zh.booksc.eu/\n图欧学习资源库：https://tuostudy.com/\n精校小说吧：https://tieba.baidu.com/f?kw=%BE%AB%D0%A3%D0%A1%CB%B5&fr=ala0&loc=rec",
    "sourceGroup": "书源",
    "sourceIcon": "https://i.postimg.cc/j2D8ChDH/1679066629719.png",
    "sourceName": "寻书阁_出版精校网站合集",
    "sourceUrl": "出版书籍和精校小说下载网站",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1207,
    "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}",
    "injectJs": "function shangxiShow(id, idjm, shiid) {window.location.href=`https://so.gushiwen.cn/nocdn/ajaxshangxi.aspx?id=${idjm}`}\r\nfunction fanyiShow(id, idjm, shiid) {window.location.href=`https://so.gushiwen.cn/nocdn/ajaxfanyi.aspx?id=${idjm}`  }\r\nfunction ziliaoShow2020(id, authorid) {window.location.href=`https://so.gushiwen.cn/authors/ajaxziliao.aspx?id=${id}`}\r\nfunction OnYiwen(id, idjm) {window.location.href = `https://so.gushiwen.cn/nocdn/ajaxshiwencont230427.aspx?id=${idjm}&value=yi`}\r\nfunction OnZhushi(id, idjm) {window.location.href = `https://so.gushiwen.cn/nocdn/ajaxshiwencont230427.aspx?id=${idjm}&value=yizhu`}\r\nfunction OnShangxi(id, idjm) {window.location.href = `https://so.gushiwen.cn/nocdn/ajaxshiwencont230427.aspx?id=${idjm}&value=yizhushang`}\r\nfunction OnYiwen230427(id, idjm) {window.location.href = `https://so.gushiwen.cn/nocdn/ajaxshiwencont230427.aspx?id=${idjm}&value=yi`}\r\nfunction OnZhushi230427(id, idjm) {window.location.href = `https://so.gushiwen.cn/nocdn/ajaxshiwencont230427.aspx?id=${idjm}&value=yizhu`}\r\nfunction OnShangxi230427(id, idjm) {window.location.href = `https://so.gushiwen.cn/nocdn/ajaxshiwencont230427.aspx?id=${idjm}&value=yizhushang`}\r\nfunction OnPinyin230427(id, idjm) {window.location.href = `https://so.gushiwen.cn/nocdn/ajaxshiwencont230427.aspx?id=${idjm}&value=yin`}\nconst styleDom=document.createElement('style')\r\nstyleDom.innerHTML=`\r\n.pinyinContson{ clear:both; overflow:hidden; margin-top:10px;}\r\n.pinyinContson span{ line-height:100%; width:39px;text-align:center;display:inline-block;}\r\n.pinyinContson .pinyin{ clear:both; line-height:160%; font-size:12px;font-weight:normal;float:left; width:36px;}\r\n.pinyinContson .hanzi{clear:both; margin-bottom:10px;  text-align:center;float:left; font-size:20px; height:36px; width:36px; line-height:36px; text-align:center;  background:url(https://ziyuan.guwendao.net//dict/imgs/bigImgbk2.png) no-repeat 2px; background-size:32px 32px;font-family:KaiTi;}\r\n.contson{ clear:both; overflow:hidden;}\r\n.contson .hr{ height:15px; margin-top:15px; overflow:hidden; border-top:1px solid #DAD9D1;}\r\n.sourceimg{height:auto; clear:both; margin-top:30px; text-align:center; color:#999999; margin-bottom: 25px;}\r\n.sourceimg a{color:#999999;font-size:14px;}\r\n.contyishang{ height:auto; clear:both; margin-top:10px; font-size:14px; margin-left:20px; margin-right:20px; line-height:200%;}\r\n.contyishang p{ margin-bottom:10px; line-height:200%;}\r\n.contyishang a{ font-size:14px;  padding-left:0px; color:#19537D; line-height:200%; text-decoration:underline;}\r\n.contyishang span{ line-height:200%;}\r\n.contyishang .contson{ clear:both; overflow:hidden;}\r\n.source{display: flex;align-items: center;}\r\n.source img{ float:left; width:25px; height:25px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px; margin-right:10px;}\r\n.source a{font-size:12px; color:#65645F;line-height:27px;}\r\n.source span{ color:#65645F;font-size:12px;}\r\n`\ndocument.getElementsByTagName('head')[0].appendChild(styleDom)\r\n",
    "lastUpdateTime": 1773236588233,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://ts2.cn.mm.bing.net/th?id=ODLS.0fb30a7c-5c0c-461f-a214-20ac5d3cd0b4&w=32&h=32&qlt=91&pcl=fffffa&o=6&pid=1.2",
    "sourceName": "古诗文网",
    "sourceUrl": "https://www.gushiwen.cn/",
    "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": 1775589435044,
    "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": "涩图",
    "sourceIcon": "https://mak803-ad398-dke3e.xofulitu765.xyz/favicon.ico",
    "sourceName": "美足美图",
    "sourceUrl": "https://mak803-ad398-dke3e.xofulitu765.xyz/label/sort?ck=",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1219,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773221974181,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://mmbiz.qpic.cn/mmbiz_png/hpfMV8hEuL2eS6vnCxvTzoOiaCAibV6exBzJWq9xMic9xDg3YXAick87tsfafic0icRwkQ5ibV0bJ84JtSuxhPuEDVquA/0?wx_fmt=png",
    "sourceName": "十八小说",
    "sourceUrl": "https://m.po18uu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1238,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775589506003,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/acgboxlink/acgbox/logo/86742914_p0.png",
    "sourceName": "ACG盒子",
    "sourceUrl": "https://www.acgbox.link",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "concurrentRate": "20/10000",
    "contentBlacklist": "",
    "customOrder": 1241,
    "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": "美涩",
    "sourceIcon": "https://android-artworks.25pp.com/fs08/2016/06/08/0/1_64c34da744af4616fdd2f88ca37f4314_con_130x130.png",
    "sourceName": "Jable.tv",
    "sourceUrl": "https://jable.tv/#xh",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "contentBlacklist": "https://img\\..+\\.com/.+\\.gif",
    "customOrder": 1254,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"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\"}",
    "lastUpdateTime": 1765536908291,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".module-item",
    "ruleContent": "<js>\nh=org.jsoup.Jsoup.parse(src);\n$=(a,b)=>Array.from(a.select(b));\n\n\n//格式化解析\njiexi = eval(String(source.sourceComment)).map($=>'<button onclick=\"xuan(this,0)\" value=\"'+$[1]+'\"><b>'+$[0]+'</b></button>');\n\n\njiekou = $(h, '.module-tab-items-box>div');\njishu = $(h, '.module-play-list-content')\n.map((h,i)=>{\n\n//格式化接口\n\t\tt1 = jiekou[i].select('span').text()\n\t\tt2 = jiekou[i].select('small').text()\n\t\tjiekou[i] = '<button onclick=\"huan('+i+')\"><b>'+t1+'<sup><small>'+t2+'</small></sup></b></button>';\n\n//格式化集数\n\t\treturn '<div>\\n\\t\\t'+$(h, 'a').map(a=>'<button onclick=\"xuan(this,1)\" value=\"https://app.jinmantv.com'+a.attr('href')+'\"><b>'+a.text()+'</b></button>').join('\\n\\t\\t')+'\\n</div>';\n\t});\n\n\n//返回json\nJSON.stringify({\n\tjiexi: '<div>\\n\\t\\t'+jiexi.join('\\n\\t\\t')+'\\n</div>',\n\tjiekou: '<div>\\n\\t\\t'+jiekou.join('\\n\\t\\t')+'\\n</div>',\n\tjishu: jishu.join('\\n')\n});\n</js><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><title>{{@@h1@text}}</title></p>\n<hr>\n\n\n<details>\n<summary><h3>{{@@h1@text}}</h3></summary>\n<br><img src=\"{{@@.module-item-pic.0@img@data-original}}\" onerror=\"this.src='{{source.sourceIcon}}'\">\n标签：<br>{{@@.module-info-tag-link@text##\\n##/}}\n{{@@.module-info-item!0@html}}\n简介：{{@@.show-desc@html}}\n<br><br>\n</details>\n<hr>\n\n\n<div class=\"jiexi\">\n<p>解析</p>\n{{JSON.parse(result).jiexi}}\n</div>\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//切换分类\nhuan = (index) =>{\n\t\tt1 = '.jiekou button'\n\t\tt2 = '.jishu div'\n\t\tomit($(t1+'.active,'+t2+'.active'))\n\t\tactive($(t1),index)\n\t\treturn active($(t2),index)\n\t}\n\n\n//选择集数\nxuan = (item,type)=>{\n\t\ttype = type==0?'jiexi':'jishu';\n\t\tbtn = $('.'+type+' button.active');\n\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//获取资源链接\nfunction geturl(){\n\turl=$('.jishu button.active')[0].value.trim();\n\tfetch(url).then(res=>res.text())\n\t\t.then(ajaxhtml=>{\n\t\t\t\turl = String(ajaxhtml).match(/[\\s\\S]*url\":\"([^\"]*)/)[1].replace(/\\\\/g,'').trim();\n\t\t\t\tif(/^\\s*$/.test(url))return;\n\n\t\t\t\turl = $('.jiexi button.active')[0].value.trim()+url;\n\t\t\t\treturn $('iframe')[0].src = $('body p')[0].innerText = url\n\t\t\t})\n\t\t.catch(ajaxerr=>{\n\t\t\t\treturn $('body p')[0].innerText = '获取失败，请重新尝试';\n\t\t\t});\n}\n\n\n\n//初始化\n(()=>{\n\t\tactive($('.jiexi button'),0)\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>\n##<(/?)a.*?>##<$1span>",
    "ruleImage": "img@data-original",
    "ruleLink": "a.0@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "🔖 {{@@.module-item-note@text}}　🏷️ {{@@.module-item-douban@text||div.1:7@text##\\n##/}}",
    "ruleTitle": "a.1@text||title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "变量搜索::/index.php/vod/search/wd/{{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('狂飙');source.getVariable()}}.html\n电影::/index.php/vod/show/id/1.html\n电视剧::/index.php/vod/show/id/2.html\n动漫::/index.php/vod/show/id/3.html\n综艺::/index.php/vod/show/id/4.html\n纪录片::/index.php/vod/show/id/5.html\n电影解说::/index.php/vod/show/id/20.html",
    "sourceComment": "//网站发布页：https://jinman.tv/\n\n\n[//解析列表_开始\n\n\n[\"网站默认♳\",\"https://kan.xi1.tv/player/?url=\"],\n[\"网站默认♴\",\"https://kan.xi1.tv/player/analysis.php?v=\"],\n\n\n]//解析列表_结束",
    "sourceGroup": "影视",
    "sourceIcon": "https://th.bing.com/th/id/Rce3b98cde41dd80537150a506b332420?rik=NHlWwGaBsvsE5w&riu=http%3a%2f%2fimg95.699pic.com%2fphoto%2f40176%2f0615.gif_wh860.gif&ehk=McGXgh81%2bo10mDtbt7M6HzQvu%2fMgwStx%2fhG6Z6o0P%2fw%3d&risl=1&pid=ImgRaw",
    "sourceName": "金曼TV",
    "sourceUrl": "https://app.jinmantv.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": 1259,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208783581,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://m.ndlib.cn/03/images/Defaulted_logo.png",
    "sourceName": "移动阅读",
    "sourceUrl": "http://m.ndlib.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1266,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773209040108,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "广告屏蔽测试，阅读版本需要22.11.08以上",
    "sourceGroup": "美涩",
    "sourceIcon": "https://img13.360buyimg.com/ddimg/jfs/t1/180015/34/30499/3188/635abb87E47815c6a/bdb7d18fcb5281a0.png",
    "sourceName": "漫蛙",
    "sourceUrl": "https://www.mwkk.cc/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1274,
    "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=\"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}}\n91原创::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.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": "",
    "sourceGroup": "美涩",
    "sourceIcon": "https://i.postimg.cc/3NHQTJpJ/1658938308728.png",
    "sourceName": "©91porn视频",
    "sourceUrl": "https://91porn.com/index.php",
    "style": "body{background-color:black;margin:0;padding:0;width:100%;}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1284,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.video-img-box",
    "ruleContent": "class.pb-e-lg-30@script.-1@all\n<js>\nresult=result.match(/http.*m3u8/)[0]</js>\n<video src=\"{{result}}\" width=\"100%\" height=\"auto\" controls></video>",
    "ruleDescription": "",
    "ruleImage": "img@data-src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "ruleTitle": "class.title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索🕵️::https://jable.tv/search/{{source.getVariable()}}/\n\n婚纱::https://jable.tv/tags/wedding-dress/\n热门::https://jable.tv/hot/\n肉丝::https://jable.tv/tags/flesh-toned-pantyhose/\n黑丝::https://jable.tv/tags/black-pantyhose/\n调教::https://jable.tv/categories/bdsm/\n凌辱::https://jable.tv/categories/rape/\n制服::https://jable.tv/categories/uniform/\n纹身::https://jable.tv/tags/tattoo/\n白虎::https://jable.tv/tags/hairless-pussy/\n萝莉::https://jable.tv/tags/loli/\n群交::https://jable.tv/categories/groupsex/\n女同::https://jable.tv/categories/lesbian/\n美腿::https://jable.tv/categories/pantyhose/\n偷拍::https://jable.tv/categories/hidden-cam/\n无码::https://jable.tv/categories/uncensored/\n视角::https://jable.tv/categories/pov/\n最新::https://jable.tv/latest-updates/",
    "sourceGroup": "美涩",
    "sourceIcon": "https://i.postimg.cc/wxQpYXF9/1660809059840.png",
    "sourceName": "©Jable视频",
    "sourceUrl": "https://jable.tv/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1285,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775589784432,
    "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",
    "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": "美涩",
    "sourceIcon": "https://ppp.porn/favicon.ico",
    "sourceName": "P站",
    "sourceUrl": "https://ppp.porn/",
    "style": "video{width:100%}img{width:100%}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1293,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207152365,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "https://p1.ssl.qhimg.com/t01679c85020154b0ff.png",
    "sourceName": "异次元软件世界",
    "sourceUrl": "http://feed.iplaysoft.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1296,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.itemList[?(@.type!=\"textCard\")]",
    "ruleContent": "//\n更改id=后的数字\n\n#广告  16  #剧情  12  #运动   1022  #创意   2       #旅行 1019   #记录 24  #音乐  1018   #影视  1025\n#科技  1024  #开胃  1020   #游戏  30  #搞笑  140        #时尚  26  #综艺  28  #生活  666",
    "ruleDescription": "<a href=\"{{$.data.content.data.webUrl.raw||$.data.webUrl.raw}}\">原文地址</a>\n<center><strong>{{$.data.content.data.title||$.data.title}}</strong></center><video src=\"{{$.data.content.data.playUrl||$.data.playUrl}}\" controls=\"controls\"  poster=\"{{$.data.content.data.cover.feed||$.data.feed}}\"></video><p>{{$.data.content.data.description||$.data.description}}</p>",
    "ruleImage": "$.data.content.data.cover.feed",
    "ruleLink": "$.data.text||$.data.content.data.webUrl.raw||$.data.web.raw",
    "ruleNextPage": "{{$.nextPageUrl}}&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28",
    "rulePubDate": "$.data.header.description",
    "ruleTitle": "$.data.text||$.data.content.data.title||$.data.title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "https://z3.ax1x.com/2021/02/07/ytBcZj.gif",
    "sourceName": "开眼·日报",
    "sourceUrl": "http://baobab.kaiyanapp.com/api/v5/index/tab/feed?udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1299,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773221705657,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://p.ssl.qhimg.com/dmsmflm/318_210_/ss/40_130/t01fd769330483feaa4.png",
    "sourceName": "优设",
    "sourceUrl": "https://www.uisdc.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1302,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236923897,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "#searchList@li||.myui-panel_bd@li",
    "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<script src=\"//cdn.staticfile.org/jquery/2.2.4/jquery.min.js\"></script>\n<script src=\"//cdn.staticfile.org/dplayer/1.25.0/DPlayer.min.js\"></script>\n<link rel =\"stylesheet\" href = \"//cdn.staticfile.org/dplayer/1.25.0/DPlayer.min.css\">\n</head>\n\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.nav nav-tabs active@a@html}}</ul></div>\n{{@@class.myui-content__list@html}}\n\n\n<script>\nfunction video(url){\n$.get(url,function(result){json=result.match(/var player.*?=(\\{.*\\})/)[1];\nsrc= JSON.parse(json).url;\nloadding='https://ftp.bmp.ovh/imgs/2021/05/5c31747aeb7bff4e.gif'\n//假如提取到的视频带 mp4|m3u8 就采用dp播放器播放\nif(src.match(/mp4|m3u8/)){\nvar dplayer = new DPlayer({element:document.getElementById(\"dplayer\"),autoplay: true,lang: 'zh-cn',video:{url:src,pic:loadding}});}else\n//直接提取的前面带https://jx.quanmingjiexi.com/?url= 进行播放\n{\nsrc=\"https://jx.quanmingjiexi.com/?url=\"+src;\niframe='<iframe src=\"'+src+'\" width=\"350\" height=\"280\" id=\"cciframe\" scrolling=\"no\"allowfullscreen=\"true\" webkitallowfullscreen=\"true\" autoplay=\"true\" mozallowfullscreen=\"true\"></iframe>'\n\n$(\".dplayer\").html(iframe)\n}\n$(\".dz\").html(src);\n});\n}\n\n(function(){\n$(\".myui-content__list\").hide();\n$(\".myui-content__list:eq(0)\").show();\n$(\"li:eq(0)\").addClass(\"active\")})();\n\n$(\"button\").click(function(){\n$(\"button\").removeClass(\"upBtn\");\n$(this).addClass(\"upBtn\");\nurl='http://www.hc34567.com/'+$(this).val();\nvideo(url)\n});\n\n$(\"button\").click(function(){\n$(\"button\").removeClass(\"upBtn\");\n$(this).addClass(\"upBtn\");\nurl='http://www.hc34567.com/'+$(this).val();\nvideo(url);\n});\n\n$(\"li\").click(function(){\n$(\"li\").removeClass(\"active\");\n$(this).addClass(\"active\");\nindex=$(this).index();\n$(\".myui-content__list\").hide();\n$(\".myui-content__list:eq(\"+index+\")\").show();\n})\n</script>\n</html>\n\n@js:\nresult = result.replace(/.*href=\"([^\"]+)\">([^<]+).*/g,'<button value=\"$1\">$2</button>').replace(/<a/g,'<li').replace(/<\\/a>/g,'</li>')",
    "ruleImage": "a@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "p.2@textNodes||.myui-vodlist__detail@p@text",
    "ruleTitle": "h4@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::hcvodsearch/{{source.getVariable()}}----------{{page}}---.html\n电影::/hcvodtype/1-{{page}}.html\n电视剧::/hcvodtype/2-{{page}}.html\n动漫::/hcvodtype/4-{{page}}.html\n综艺::/hcvodtype/3-{{page}}.html\n豆瓣电影::/hcvodtype/42-{{page}}.html",
    "sourceGroup": "影视",
    "sourceIcon": "http://www.hc34567.com/static/images/logo.png",
    "sourceName": "影视森林",
    "sourceUrl": "http://www.hc34567.com/",
    "style": "#tab{\nheight:40px;\nmargin-bottom:8px;\n}\n\n.dz {\npadding:5px 0;\noverflow:scroll;\nbackground:#1C1B1E;color:#D3D3D3;;\n}\n\nul{\nmargin:0;\npadding:0;\n}\n\n#tab li {\nfont-size:15px;\nlist-style:none;\nfloat:left;\nheight:30px;\nmargin-right:5px;\ncolor:#D3D3D3;\nline-height:25px;\n}\n\n#tab li.active {\ncolor:#FF8C00;\nborder-bottom:3px solid #FF8C00;\n}\n\nbutton{\noutline:none;\nheight:35px; \nborder:3px solid #1C1B1E ;\nborder-radius:8px;\nmargin-bottom:8px;\nbackground:#1C1B1E;color:#A9A9A9;\nvertical-align:middle; \nwidth:24%;\noverflow:scroll\n}\n\nbutton.upBtn{\nborder:1px solid #FF8C00 ;\nbackground-color:#555555; \n}\n\nbody{\nmargin:0;\nbackground-color: #333333; \n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1303,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213986908,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "http://www.sixyin.com/wp-content/uploads/member/avatars/238a0b923820dcc5.1608735888.jpg",
    "sourceName": "TOPYS",
    "sourceUrl": "https://m.topys.cn",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1304,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\t\"referer\":\"http://android.jjwxc.net/?v=357\",\n\t\"versionCode\":\"357\",\n\t\"versiontype\":\"reading\",\n  \"User-Agent\": \"Dalvik/2.1.0\"\n}",
    "injectJs": "\n// 是书籍详情页时\nif( /m\\.jjwxc\\.net\\/book2\\/\\d+/.test(window.location.href) ){\ndocument.getElementById(\"info\").style.position=\"relative\";\ndocument.getElementById(\"app\").remove()\n// 获取书籍链接\n\t\tbookid = String(window.location.href).replace(/^.*\\//,'');\n\t\tbooksrc = \"http://app-cdn.jjwxc.net/androidapi/novelbasicinfo?novelId=\"+bookid;\n\n\n// 新建a标签\n\t\tA = document.createElement(\"a\");\n\n\t\tA.href = `legado://import/addToBookshelf?src=${ encodeURIComponent(booksrc) },{origin:'https://m.jjwxc.net/channel/'}`;\n\n\t\tA.innerHTML = `<button style=\"outline:none; position:absolute; top:12%; right:3%; z-index:999; border-radius:5px;background:#8BB587; color:#fff;width:30px\"><b>加入书架</b></button>`;\n\n\n//添加到body\n\t\tdocument.body.appendChild(A);\n\t}",
    "lastUpdateTime": 1773221481120,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.data[*]",
    "ruleContent": "<div class=\"booklist_desc\">\n    <p class=\"listname\">\n        <span class=\"level\">\n            &emsp;{{$.data.booklist_desc.level}}级&emsp;\n        </span>\n          {{$.data.booklist_desc.listname}}\n     </p>\n     <span class=\"dateline\">\n         {{$.data.booklist_desc.dateline||$.data.booklist_desc.create_time}}\n     </span>\n     <p class=\"des\">\n         荐书描述 共{{$.data.booklist_desc.booknum}}本\n     </p>\n     <div class=\"introduction\">\n           <p>{{$.data.booklist_desc.introduction}}</p>\n     </div>\n</div>\n\n<br>\n<br>\n\n<js>\ntry{\n   function getBooklist(list){\n   \tlet html=\"\";\n   \tfor(i in list){\n    \t  $ = list[i];\n    \t  let novelid = \"https://m.jjwxc.net/book2/\"+$.novelid;\n    \t  let cover = $.cover;\n    \t  let novelname = $.novelname;\n    \t  let authorname = $.authorname;\n    \t  let novelstep_name = $.novelstep_name || $.novelstep_str;\n    \t  let novelsize = $.novelsize;\n    \t  let novel_review_score = $.novel_review_score || ($.fav_count_str+\"收藏\");\n    \t  let novelstar = $.novelstar || 0;\n    \t  let s=\"\";\n    \t  for(i=0;i<novelstar;i++){s+=\"★\"}\n    \t  novelstar=s;\n    \t  let novelintroshort = $.novelintroshort;\n    \t  let comment = $.comment || \"\";\n    \t  let novelclass_str = $.novelclass_str;\n    \t  \n\t      html +=`\n\t         <div class=\"book\">\n\t            <div class=\"bookdes\">\n\t             <div class=\"pic\">\n\t                 <img src=\"${cover}\" referrerpolicy=\"no-referrer\">\n\t             </div>\n\t             <div class=\"details>\n\t                  <p class=\"bookname\">\n\t                      <span class=\"name\">\n\t                         <a href=\"${novelid}\">${novelname}</a>\n\t                      </span>\n\t                      <br>\n\t                      <span class=\"author\">\n\t                         ——${authorname}\n\t                      </span>\n\t                  </p>\t\n\t                  <p class=\"tag\">\n\t                  ${novelsize}•${novelstep_name}•${novel_review_score}<br><br>\n\t                    ${novelintroshort}<br><br>\n\t                    ${novelclass_str}<br><br>\n\t                    ${novelstar}\n\t                  </p>             \n\t             </div>\t             \n\t             </div>\n\t             <div class=\"comment\">\n\t                 ${comment}\n\t             </div>            \n\t         </div>     \n\t         `;\n\t    }\n\t    return html\n   \t}\n\n    list = JSON.parse(src).data.novel_lists || JSON.parse(src).data.booklist_desc.recommend_novelinfo;\n     reply = \"\";\n     if(/subjectDetail/.test(baseUrl)){\n     \treply_url = \"https://app.jjwxc.org/app.jjwxc/android/reading/BookListFindBook/replyList?versionCode=357&listid={{baseUrl.match(/id=(\\d+)/)[1]}}&page=1&filter_recommend=0\";\n    l = JSON.parse(java.ajax(reply_url)).data.data;\n    for(j in l){\n    \t    reply+='<div class=\"comment\">'+l[j].body+'</div>'+getBooklist(l[j].recommend_novelinfo)+\"<br><br>\";\n    \t}\n    \n    reply = \"<hr><br><br>全部讨论（{{$.data.booklist_desc.reply_count}}）回复<br><br>\"+reply\n     \t}\n     \n\t    html = result + '<div class=\"booklists\">'+getBooklist(list)+reply+'</div>';\n\t    \n\t    result = String(html)\n.replace(/<div class=\"comment\">\\s*<\\/div>|<span class=\"level\">\\s*&emsp;级&emsp;\\s*<\\/span>|全部讨论（0）回复/g,'');\n     result = /subjectDetail/.test(baseUrl)?result.replace(/荐书描述 共\\d+本/,'找书描述'):result\n     }catch(e){\n     \tjava.log(e)\n     \t}\n</js>",
    "ruleImage": "$.display_novelinfo[0].ebookurl||$.display_novelinfo[0].localImg\n@js:\ntry{\n\tif(/(?:postimg|bmp|alicdn|i9-static)\\./.test(result)){\n\tresult = \"https://i9-static.jjwxc.net/novelimage.php?novelid={{$.display_novelinfo[0].novelid}}\";\n\t}else{\n\t\tresult = result\n\t\t}\n\t\theader = {\n\t\t\"headers\":{\n\t\t\t\"referer\":result.match(/(^https?:\\/\\/.*?\\/)/)[1]\n\t\t\t}\n\t\t}\nresult = (result +\",\"+ JSON.stringify(header)).replace(/wx\\d+/,'wx2')\n}catch(e){\n\tjava.log(e)\n\t}\nresult",
    "ruleLink": "<js>\ndata_type = java.getString(\"$.data_type\");\nif(data_type==\"2\"){\n\t\"https://app-cdn.jjwxc.com/app.jjwxc/android/reading/Booklist/getDetail?listid={{$.listid}}\"\n\t}else{\n\t\t\"https://app.jjwxc.org/app.jjwxc/android/reading/BookListFindBook/subjectDetail?versionCode=357&listid={{$.listid}}\"\n\t\t}\n</js>",
    "ruleNextPage": "<js>\nif(/rec_new_offset/.test(baseUrl)){\n\tresult = \"https://app.jjwxc.org/app.jjwxc/android/reading/BookListFindBook/square?versionCode=357&rec_new_offset={{$.data.rec_new_offset}}&find_new_offset={{$.data.find_new_offset}}&rec_edit_offset={{$.data.rec_edit_offset}}\"\n\t}else{\n\t\tjava.log(baseUrl)\n\t\tresult = baseUrl.replace(/page=\\d+/,\"page=\"+(Number(baseUrl.match(/page=(\\d+)/)[1])+1));\n\t\t\n\t\t\t}\n\t\t\n</js>",
    "rulePubDate": "{{java.getString(\"$.data_type\")==1?\"找书\":\"荐书\"}}•{{$.level}}级 {{$.recommend_count}}本 {{$.fav_count}}收藏##•级",
    "ruleTitle": "$.subject##</*.*?>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "书单广场::https://app.jjwxc.org/app.jjwxc/android/reading/BookListFindBook/square?versionCode=357&rec_new_offset=0&find_new_offset=0&rec_edit_offset=0&page={{page}}\n\n搜索百合::https://app.jjwxc.org/app.jjwxc/android/reading/BookListSearch/search?versionCode=357&keywords=百合&page=1&sort=fav_count\n\n搜索书单::https://app.jjwxc.org/app.jjwxc/android/reading/BookListSearch/search?versionCode=357&keywords={{source.getVariable()}}&page=1&sort=fav_count",
    "sourceComment": "//点击右上角三点，设置源变量搜索书单",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m-static.jjwxc.net/images/wap/logo.png",
    "sourceName": "晋江书单",
    "sourceUrl": "https://app.jjwxc.org",
    "style": "a:link {color:#415E44;}\na:visited{color:#8EB28B}\n.listname{\n\tfont-size:20px;\n\theight:4px;\n\tfont-weight:bolder\n\t}\n.level{\n\tbackground:#9DD8ED;\n\tfont-size:15px;\n\tborder-radius:8px;\n\t}\n.dateline{\n\tcolor:#BABABB;\n\tfont-size:12px\n\t}\n.introduction{\n\tborder:2px dashed #3A9DBF;\n\tborder-radius:10px;\n\t}\n.introduction p{\n\ttext-indent: 3ch;\n\tmargin:5px;\n\tfont-size:18px;\n\tfont-weight:bold\n\t}\n.des{\n\tmargin-top:10px;\n\tmargin-bottom:0px;\n\tmargin-left:18px;\n\tfont-weight:bolder;\n\tcolor:#1D5F22\n\t}\n.bookdes{\n\tdisplay: flex;\n\tflex-direction:row;\n\tmargin:5px;\n\twidth:100%;\n\tposition: relative;\n\t}\n.book{\n\twidth:100%;\n\tdisplay: flex;\n\tflex-direction:column;\n\talign-items:flex-start;\n\tmargin-bottom:8px;\n\t}\n.pic{\n\twidth:25vw;\n\tmargin-right:20px;\n\t}\n.pic img{\n\tboder:1px solid #C4C4C4;\n\tborder-radius:5px;\n box-shadow: 1px 2px 2px black;\n\twidth:97%;\n\theight:auto;\n\t}\n.details{\n\twidth:72vw;\n\tmargin-left:25px;\n\t}\n\n.name{\n\tfont-size:20px;\n\tcolor:#000;\n\t}\n.author{\n\tcolor:#929292;\n\tfont-size:15px;\n\tdisplay:inline-block;\n\tposition:absolute;\n\tright:5px;\n\t}\n.tag{\n\tcolor:#929292;\n\tfont-size:12px;\n\tmargin-top:-10px;\n\t}\n.comment{\n\tpadding:10px;\n\tmargin-bottom:18px;\n\tmargin-top:-3px;\n\tbackground:#E8F6E9;\n\tborder-radius:5px;\n\twidth:100%;\n\t}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1307,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773221669882,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://bkimg.cdn.bcebos.com/pic/80cb39dbb6fd5266b9277876a918972bd4073647?x-bce-process=image/resize,m_lfit,h_700,limit_1/quality,Q_80",
    "sourceName": "胶片的味道",
    "sourceUrl": "http://letsfilm.org",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1310,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773219026936,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://c-ssl.duitang.com/uploads/people/201908/23/20190823164218_8ZA3v.png",
    "sourceName": "堆糖",
    "sourceUrl": "https://m.duitang.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1312,
    "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": 1773221592043,
    "loadWithBaseUrl": true,
    "loginUi": "[\n{name:\"接口\",type:\"text\"}\n,{name:\"　　　  设置填写的接口为当前接口  　　　\",type:\"button\",action:\"$()\"}\n,{name:\"　 log当前接口 　\",type:\"button\",action:\"look(0)\"}\n,{name:\"　确定启用接口　\",type:\"button\",action:\"yes()\"}\n,{name:\"　 log历史接口 　\",type:\"button\",action:\"look(1)\"}\n,{name:\"　　　　   ༺ˇ»`ʚ  Ⓐ 优质  ɞ´«ˇ༻   　　　　\",type:\"button\"}\n,{name:\"⓪ 量子Ⓐ\",type:\"button\",action:\"$(0)\"}\n,{name:\"① 非凡Ⓐ\",type:\"button\",action:\"$(1)\"}\n,{name:\"② 卧龙Ⓐ\",type:\"button\",action:\"$(2)\"}\n,{name:\"③ 三九Ⓐ\",type:\"button\",action:\"$(3)\"}\n,{name:\"④ 乐活Ⓐ\",type:\"button\",action:\"$(4)\"}\n,{name:\"⑤ 酷点Ⓐ\",type:\"button\",action:\"$(5)\"}\n,{name:\"⑥ 无尽Ⓐ\",type:\"button\",action:\"$(6)\"}\n,{name:\"⑦ 飘零Ⓐ\",type:\"button\",action:\"$(7)\"}\n,{name:\"⑧ 飞速Ⓐ\",type:\"button\",action:\"$(8)\"}\n,{name:\"⑨ FOXⒶ \",type:\"button\",action:\"$(9)\"}\n,{name:\"⑩ iKunⒶ\",type:\"button\",action:\"$(10)\"}\n,{name:\"⑪ UKUⒶ \",type:\"button\",action:\"$(11)\"}\n,{name:\"⑫ 天空Ⓐ\",type:\"button\",action:\"$(12)\"}\n,{name:\"⑬ 闪电Ⓐ\",type:\"button\",action:\"$(13)\"}\n,{name:\"⑭ 映迷Ⓐ\",type:\"button\",action:\"$(14)\"}\n,{name:\"　　　　   ༺ˇ»`ʚ  Ⓑ 普通  ɞ´«ˇ༻   　　　　\",type:\"button\"}\n,{name:\"⑮ 天猫Ⓑ\",type:\"button\",action:\"$(15)\"}\n,{name:\"⑯ 金鹰Ⓑ\",type:\"button\",action:\"$(16)\"}\n,{name:\"⑰ 鱼乐Ⓑ\",type:\"button\",action:\"$(17)\"}\n,{name:\"⑱ 红牛Ⓑ\",type:\"button\",action:\"$(18)\"}\n,{name:\"⑲ 光速Ⓑ\",type:\"button\",action:\"$(19)\"}\n,{name:\"⑳ 樱花Ⓑ\",type:\"button\",action:\"$(20)\"}\n,{name:\"　　　　   ༺ˇ»`ʚ  Ⓒ 较差  ɞ´«ˇ༻   　　　　\",type:\"button\"}\n,{name:\"　㉑ 汤姆资源Ⓒ　\",type:\"button\",action:\"$(21)\"}\n,{name:\"　㉒ 星海资源Ⓒ　\",type:\"button\",action:\"$(22)\"}\n,{name:\"　㉓ 仓库资源Ⓒ　\",type:\"button\",action:\"$(23)\"}\n,{name:\"　㉔ 七七韩剧Ⓒ　\",type:\"button\",action:\"$(24)\"}\n,{name:\"　　　　   ༺ˇ»`ʚ  Ⓓ 正版  ɞ´«ˇ༻   　　　　\",type:\"button\"}\n,{name:\"　㉕ 影图解析Ⓓ　\",type:\"button\",action:\"$(25)\"}\n,{name:\"　㉖ 百淘影视Ⓓ　\",type:\"button\",action:\"$(26)\"}\n,{name:\"　㉗ 追剧达人Ⓓ　\",type:\"button\",action:\"$(27)\"}\n,{name:\"　㉘ 小鸟动漫Ⓓ　\",type:\"button\",action:\"$(28)\"}\n]",
    "loginUrl": "//请求头参数说明\n//i=>当前选中\n//ci0=>当前使用\n//ci1-ci3=>历史使用\n//api=>资源链接\n\n$$$ = JSON.parse(JSON.stringify(source.getLoginHeaderMap()));\nif($$$==null)$$$={};//初始化\nnnn = '\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n';\nkkk = '　　　　　　　　　　';\n\n\n//保存请求头\nfunction put(json){\n\t\treturn source.putLoginHeader(\n\t\t\tJSON.stringify(json)\n\t\t);\n\t}\n\n\n//获取参数对应的api名称\nfunction name(i){\n\t\tif(i==undefined)i=0;//默认接口\n\t\treturn x[i]+' 【'+$$[i][0].replace(/([^\\.])$/,'$1资源').replace(/\\.$/,'')+'】 '\n\t}\n\n\n//log字符串\nfunction login(t){\n\t\tif(t==undefined)return;\n\t\tjava.log(t+kkk+kkk+nnn);\n\t\tjava.toast(t+kkk+kkk+nnn+nnn);\n\t}\n\n\n//log当前接口\nfunction look(type){\n\t\tif(type==0){\n\t\treturn login('【查看当前接口】\\n\\n\\n　　当前接口为序号'+name($$$.ci0));\n\t\t}else{\n\t\treturn login('【查看历史接口】\\n\\n\\n　　ci1:　'+name($$$.ci1)+'\\n\\n　　ci2:　'+name($$$.ci2)+'\\n\\n　　ci3:　'+name($$$.ci3)+'\\n');\n\t\t}\n\t}\n\n\n//put接口序号\nfunction $(i){\n\tif(i==undefined)i=result.接口;\n\tif(/^ci[123]$/.test(i))eval('i=$$$.'+i);\n\n\n//接口错误\nif( /\\D|^$/.test(i) || i<0 || i>=$$.length ){\n\t\treturn login('【接口错误提示】\\n\\n\\n　　无法获取填写的接口');\n\t}\nelse if(i==$$$.i){\n\t\tlogin('【取消选中提示】\\n\\n\\n　　已取消选中');\n\t\tdelete $$$.i\n\t\treturn put($$$);\n\t}\nelse if(i==$$$.ci0){\n\t\tlogin('【无法选中提示】\\n\\n\\n　　正在使用此接口，无需更换');\n\t\tdelete $$$.i\n\t\treturn put($$$);\n\t}\n\n\t\tlogin('【确定选择提示】\\n\\n\\n　　确定选择序号'+name(i)+'为当前接口吗？\\n\\n\\n　　点击上方 【确定启用接口】 按钮启用');\n\t\t$$$.i=i\n\t\treturn put($$$);\n}\n\n\n//确定启用接口\nfunction yes(){\n\t\ti = $$$.i\n\t\tif(i==undefined){\n\t\t\treturn login('【接口启用提示】\\n\\n\\n　　启用失败，没有选中接口');\n\t\t\t}\n\t\telse{\n\t\tdelete $$$.i;\n\t\tif(i==$$$.ci0){\n\t\t\t\tlogin('【接口启用提示】\\n\\n\\n　　正在使用此接口，无需启用');\n\t\t\t\treturn put($$$);\n\t\t\t}\n\n\t\tlogin('【接口启用提示】\\n\\n\\n　　启用成功，已选择序号'+name(i)+'为当前接口\\n\\n\\n\\n\\n　　退出/成功登录后  -  右上角设置  -  刷新分类即可');\n\t\t$$$.api = $$[i][1]\n\t\t$$$.ci3 = $$$.ci2\n\t\t$$$.ci2 = $$$.ci1\n\t\t$$$.ci1 = $$$.ci0\n\t\t$$$.ci0 = i\n\t\treturn put($$$);\n\t}\n}\n\n\n//资源链接\nx=\"⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳\";$$=[\n[\"量子\",\"https://cj.lziapi.com\"],\n[\"非凡\",\"https://cj.ffzyapi.com\"],\n[\"卧龙\",\"https://collect.wolongzyw.com\"],\n[\"三九\",\"https://www.39kan.com\"],\n[\"乐活\",\"https://lehootv.com\"],\n[\"酷点\",\"https://kudianzy.com\"],\n[\"无尽\",\"https://api.wujinapi.net\"],\n[\"飘零\",\"https://p2100.net\"],\n[\"飞速\",\"https://www.feisuzy.com\"],\n[\"FOX\",\"https://api.foxzyapi.com\"],\n[\"iKun\",\"https://ikunzyapi.com\"],\n[\"UKU\",\"https://api.ukuapi.com\"],\n[\"天空\",\"https://api.tiankongapi.com\"],\n[\"闪电\",\"https://sdzyapi.com\"],\n[\"映迷\",\"https://www.inmi.app\"],\n[\"天猫\",\"https://www.tianmaozy.com\"],\n[\"金鹰\",\"https://jyzyapi.com\"],\n[\"鱼乐\",\"https://api.ylzy1.com\"],\n[\"红牛\",\"https://hongniuzy2.com\"],\n[\"光速\",\"https://api.guangsuapi.com\"],\n[\"樱花\",\"https://m3u8.apiyhzy.com\"],\n[\"汤姆采集.\",\"https://api.tomcaiji.com\"],\n[\"星海资源.\",\"https://xhzy01.com\"],\n[\"菲菲六七.\",\"https://feifei67.com\"],\n[\"七七韩剧.\",\"https://www.77hanju.com\"],\n[\"影图解析.\",\"https://cj.vodimg.top\"],\n[\"百淘影视.\",\"http://ys.58g8.com\"],\n[\"追剧达人.\",\"http://zjdr.tv\"],\n[\"小鸟动漫.\",\"http://xydm.baicai.buzz\"] ];",
    "preload": false,
    "ruleArticles": "$.list",
    "ruleDescription": "<js>//解析列表，自行按格式添加\njiexi = [ [\"Ⓧ 禁用\",\"\"],\n\n//S 可以换线路\n[\"Ⓢ Wandhi\",\"http://vip.wandhi.com/?v=\"],\n[\"Ⓢ 酷云\",\"http://jx.kuvun.com/?v=\"],\n[\"Ⓢ 星辰\",\"https://www.gchaucer.com/jiexi/jiexi-gf/?url=\"],\n[\"Ⓢ 奇米\",\"http://www.qimiqimi.net/jiexi/?url=\"],//有上次观看记录\n\n//A ui好\n[\"Ⓐ AG解析\",\"https://www.codjx.com/?url=\"],\n[\"Ⓐ Aliplayer\",\"https://zy.aoxtv.com/m3u8.php?url=\"],\n[\"Ⓐ 追剧啦\",\"https://www.zhuiju.la/player/?url=\"],//有弹幕(和视频无关)\n[\"Ⓐ 云解析\",\"https://www.jiexila.com/?url=\"],\n[\"Ⓐ 猪蹄解析\",\"https://jx.iztyy.com/svip/?url=\"],\n\n//B 普通\n[\"Ⓑ 无尽解析\",\"https://jx.wujinkk.com/dplayer/?url=\"],\n[\"Ⓑ 无名解析\",\"https://jx.bozrc.com:4433/player/?url=\"],\n[\"Ⓑ 九单解析\",\"https://y.9dan.cc/dp/?url=\"],\n[\"Ⓑ 03+解析\",\"https://api.leeleo.cn/api3.php?url=\"],\n[\"Ⓑ Bplayer\",\"https://api.tinga88.com/?url=\"],\n\n//C 较差\n[\"Ⓒ 鸭奈飞\",\"https://netflixvip.4kya.com/?url=\"],//暂停有广告\n[\"Ⓒ 冰豆解析\",\"https://api.qianqi.net/vip/?url=\"],//暂停有广告\n[\"Ⓒ OK解析♳\",\"https://okjx.cc/?url=\"],//可以换线路，高频弹窗跳转APP\n[\"Ⓒ OK解析♴\",\"https://api.okjx.cc:3389/jx.php?url=\"],//同上\n\n\n].map($=>'\\t\\t<button onclick=\"jiexi(this)\" value=\"'+$[1]+'\"><b>'+$[0]+'</b></button>').join('\\n');\n\n\n\n//获取接口\njiekou = String(src.vod_play_from).split('$$$').map(($,i)=>'\\t\\t<button onclick=\"jiekou('+i+')\"><b>'+$+'</b></button>').join('\\n');\n\n\n\n//获取集数\njishu = String(src.vod_play_url).split('$$$').map((a,i)=>{\n\t\ta = a.split('#').map((a,i)=>{\n\t\t\t\ta = String(a).split('$')\n\t\t\t\tif(a.length>1){\n\t\t\t\t\t\tvalue = a[1]\n\t\t\t\t\t\tname = /\\S/.test(a[0])?a[0]:i+1\n\t\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t\tvalue = a[0]\n\t\t\t\t\t\tname = i+1\n\t\t\t\t\t}\n\t\t\t\tif(i==0)java.put('value',value);\n\t\t\t\treturn '\\t\\t<button onclick=\"jishu(this)\" value=\"'+value+'\"><b>'+name+'</b></button>'\n\t\t\t}).join('\\n');\n\t\treturn '<div>\\n'+a+'\\n</div>';\n\t}).join('\\n');\n\n\n\n//返回json\nJSON.stringify({\n\tjiexi: '<div>\\n'+jiexi+'\\n</div>',\n\tjiekou: '<div>\\n'+jiekou+'\\n</div>',\n\tjishu: jishu\n})\n</js><title>{{$.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\n\n<iframe frameborder=\"no\" allowfullscreen></iframe>\n<p></p>\n<hr>\n\n\n\n<details>\n<summary><h3>{{$.vod_name}}</h3></summary>\n<br><img src=\"{{$.vod_pic}}\" onerror=\"this.src='{{source.sourceIcon}}'\">\n<p>导演：{{$.vod_director##\\n|,##, }}</p>\n<p>编剧：{{$.vod_writer##\\n|,##, }}</p>\n<p>主演：{{$.vod_actor##\\n|,##, }}</p>\n<p>地区：{{$.vod_area}}</p>\n<p>年代：{{$.vod_year}}</p>\n<p>语言：{{$.vod_lang}}</p>\n<p>标签：{{$.type_name&&$.vod_tag&&$.vod_class##\\n|,##, }}</p>\n<p>评分：网站{{$.vod_score}} | 豆瓣{{$.vod_douban_score}}</p>\n<p>@get:{p}{{$.vod_time## .*}}</p>\n<p>简介：{{$.vod_content}}</p>\n<br><br>\n</details>\n<hr>\n\n\n<div class=\"jiexi\">\n<p>解析</p>\n{{JSON.parse(result).jiexi}}\n</div>\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<script>\n//选中标签\nfunction $(rule){\n\t\treturn document.querySelectorAll(rule);\n\t}\n//删除选中标签的class\nfunction omit(items){\n\t\treturn Array.from(items,(item)=>{\n\t\t\t\treturn item.className=\"\";\n\t\t\t});\n\t}\n//选中标签的class增加active\nfunction active(items,index){\n\t\treturn items[index].className=\"active\";\n\t}\n\n\n//点击按钮时调用的函数\nfunction jiekou(index){\n\t\tomit($('.jiekou .active, .jishu div.active'));\n\t\tactive($('.jiekou button'),index);\n\t\treturn active($('.jishu>div'),index);\n\t}\nfunction jishu(item){\n\t\tomit($('.jishu button.active'));\n\t\titem.className=\"active\";\n\t\treturn geturl();\n\t}\nfunction jiexi(item){\n\t\tomit($('.jiexi .active'));\n\t\titem.className=\"active\";\n\t\treturn geturl();\n\t}\n\n\n//获取视频URL\nfunction geturl(){\n\t\tjxurl = $(\".jiexi .active\")[0].value;\n\t\tzyurl = $(\".jishu button.active\")[0].value;\n\t\tpjurl = jxurl+zyurl;\n\t\tvideo = $('iframe')[0];\n//防止链接重复导致重新加载\n\t\tif(video.src==pjurl)return;\n\t\t$(\"body>p\")[0].innerText=pjurl;\n\t\treturn video.src=pjurl\n\t}\n\n\n//初始化，默认启用第一个\n(()=>{\n\t\tactive($('.jiexi button'),0);\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>",
    "ruleImage": "$.vod_pic",
    "ruleLink": "{{eval(String(source.sourceComment));api}}?ac=detail&ids={{$.vod_id}}",
    "ruleNextPage": "page",
    "rulePubDate": "@js:java.log(src)\nfunction $(type){\n\t\treturn String(eval('src.vod_'+type))\n\t}\n\na=$('duration')\nif(/\\d\\:\\d/.test(a)){\n\t\tp='时长：'+a\n\t\ta='⏱️ '+a\n\t}\nelse{\n\t\ta=$('remarks')\n\t\tif(/\\S/.test(a)){\n\t\t\t\tp=`最新：${a} / 共{{$.vod_total}}集`\n\t\t\t\ta='🔖 '+a\n\t\t\t}\n\t\telse{\n\t\t\t\ta=$('state')\n\t\t\t\tif(/\\S/.test(a)){\n\t\t\t\t\t\tp='视频：'+a\n\t\t\t\t\t\ta='📺 '+a\n\t\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t\tp=''\n\t\t\t\t\t\ta='🔖 '+$('score')+'分'\n\t\t\t\t\t}\n\t\t\t}\n\t}\njava.put('p',String(p).replace(/ \\/ 共(\\s*0+)?\\s*集/,'').replace(/(.+)/,'$1 • ').replace(/^$/,'最新：'));\na+`　📆 {{$.vod_time## .*}}`",
    "ruleTitle": "$.vod_name##\\.mp4$",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "@js:\neval(String(source.sourceComment));\nurl=api+\"?ac=detail&pg={{page}\\}\";\n\n\n//刷新分类时弹窗当前api\njava.toast(String(api).replace(/\\/api\\.php.*/,''))\n\n\n//搜索url\nfunction surl(){\nkey=source.getVariable()\nif(key==\"\"||key==null){\nsource.setVariable('伍六七');//默认搜索关键词\n\t}\nkey=source.getVariable()\nreturn \"变量搜索::\"+url+\"&wd=\"+key+\"\\n\";\n}\n\n\n//分类url\nsort=cache.get(api);\nif(sort==null){//分类无缓存时调用\nsort=\"\";x=0\njava.toast(\"api no put cache\\n　get Sort ing...\")\n\n//获取分类URL\nfunction getUrls(){\ntry{\n\t\turllist = []\n\t\tI = JSON.parse(java.ajax(api)).class.map($=>{\n\t\t\t\tturl = url+\"&t=\"+$.type_id;\n\t\t\t\turllist.push(turl);\n\t\t\t\treturn $.type_name+\"::\"+turl;\n\t\t\t}).join('\\n').split('\\n');\n\t\tx = 0\n\t\tjava.toast('Yes  get Urls\\n　Urls is now being verified')\n\t\treturn verifyUrls()\n\t}\ncatch(e){//ajax失败会重新请求两次\n\t\tx++\n\t\tif(x<3){\n\t\t\t\tjava.toast('ajax err\\n　Try again  get Urls '+x)\n\t\t\t\treturn getUrls()\n\t\t\t}\n\t\telse{\n\t\t\t\treturn java.toast('No  get Urls\\n　Sort  acquisition failure')\n\t\t\t}\n\t}\n}\n\n//校验分类URL\n//加载urllist的链接，测试能否获取name，如果无法获取name就定义为失效分类，保存剩下的有效分类在sort\nfunction verifyUrls(){\ntry{\n\t\tjava.ajaxAll(urllist).map((a,i)=>{\n\t\t\t\ttry{\n\t\t\t\t\t\ta = JSON.parse(a.body()).list[0].vod_name;\n\t\t\t\t\t}\n\t\t\t\tcatch(e){\n\t\t\t\t\t\ta = undefined\n\t\t\t\t\t}\n\t\t\t\tsort += a!=undefined?\"\\n\"+I[i]:\"\";\n\t\t\t});\n\t\tcache.put(api,sort)\n\t\treturn java.toast('Yse  verify Urls\\n　Sort  acquires success')\n\t}\ncatch(e){//ajaxAll失败会重新加载两次\n\t\tx++\n\t\tif(x<3){\n\t\t\t\tjava.toast('ajaxAll err\\n　Try again  verify Urls '+x)\n\t\t\t\treturn verifyUrls()\n\t\t\t}\n\t\telse{\n\t\t\t\treturn java.toast('No  verify Urls\\n　Sort  acquisition failure')\n\t\t\t}\n\t}\n}\n\t\tgetUrls()\n\t}\n\n\n//最后拼接，删掉\"surl()+\"可以关闭搜索\n\"最近更新::\"+url+'\\n'+\nsurl()+\nsort",
    "sourceComment": "//v2.0\n\n//登录接口填写ci1/ci2/ci3可调用历史接口\n\n//更改搜索关键词后需要刷新分类才能重新搜索\n\n\n//获取当前接口\ntry{\n\t\tapi = source.getLoginHeaderMap().api\n\t}\ncatch(e){\n\t\tapi = undefined\n\t}\n\n//默认接口，序号⓪ 【量子资源】\nif(api==undefined){\n\t\tapi = \"https://cj.lziapi.com\"\n\t}\n\napi += \"/api.php/provide/vod\"",
    "sourceGroup": "影视",
    "sourceIcon": "https://imgapi.cn/api.php?zd=zsy&fl=fengjing",
    "sourceName": "电影采集🏝️",
    "sourceUrl": "电影采集㊣",
    "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:1;\n}\niframe{\n\tposition:sticky;top:0;\n\tbackground:#000;color:#fff;\n\theight:285px;\n\tz-index:1;\n}\ndetails{\n\twidth:90%;\n\tmargin:0 5%;\n\tpadding:10px 0;\n}\nsummary{\n\twidth:90%;\n\tmargin:0 5%;\n\toutline:none;\n\ttext-align:center;\n}\nsummary::-webkit-details-marker {\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{\n\tdisplay:none;\n\ttext-align:center;\n}\n.jishu>div.active{\n\tdisplay:inline;\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}\nbutton.active{\n\tcolor:#166188;\n\tposition:sticky;\n\tleft:0;right:0;\n}\n.jishu button.active{\n\ttop:300;bottom:0;\n}",
    "type": 0,
    "variableComment": "【确定后】要【刷新分类】才能重新搜索"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1320,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773219004807,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "http://cdn.jandan.net/static/img/icon.png",
    "sourceName": "煎蛋",
    "sourceUrl": "http://jandan.net/pic",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1321,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "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}",
    "injectJs": "// 获取书籍链接\nbookid = String(window.location.href).match(/novel-(\\d+)/)[1];\n\t\n\tbooksrc = \"https://webapi.gongzicp.com/novel/novelInfo?id=\"+bookid;\n\t\n\taddbook = `legado://import/addToBookshelf?src=${encodeURIComponent(booksrc)},{origin:'https://webapi.gongzicp.com'}`;\n\t\n fetch(booksrc)\n  .then((response) => response.json())\n  .then((data) =>{\n  \ttitle = data.data.novel_name\n  \t\n  \t//获取作者名称\nauthor = data.data.author_nickname;\n\n//create(搜索的内容,\"bookName or bookAuthor\",距离顶部距离,[跳转其他url])\ncreate(title,\"addBookshelf\",14,addbook);\ncreate(title,\"bookName\",18)\ncreate(author,\"bookAuthor\",22)\n\n  \t\n  \t});\nfunction create(name,type,top,url){\n \t    type = type+\"=\"+name;\n \t    url = url!=undefined?url+\"#\"+type:\"\";\n \t    \n     let \ttypebutton;\n     if(/bookName/.test(type)){\n     \t    typebutton=\"搜索书名\"\n     \t}else if(/bookAuthor/.test(type)){\n     \t\t   typebutton=\"搜索作者\"\n     \t}else{\n     \t\t\t   typebutton=\"加入书架\"\n     \t}\n    \n    \tlet Url = location.search!=\"\"?location.search.replace(/&*book[AN].*?=.*/,'')+\"&\"+type:window.location.pathname+\"?\"+type;\n    \turl = url!=\"\"?url:Url;\n    \tA = document.createElement(\"a\");\n\t\t A.href = url.replace(/#addBookshelf.*/,'');\n\t\t\n\t\tA.innerHTML = `<button style=\"outline:none; position:fixed; top:${top}%; right:7%; z-index:999; border-radius:5px; color:#166188;background:#fff;padding:4px;border:1px solid #000\"><b>${typebutton}</b></button>`;\n    \tdocument.body.appendChild(A);\n \t}\t",
    "lastUpdateTime": 1775592052971,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.list[*]",
    "ruleImage": "$.collection_cover##\\?.*",
    "ruleLink": "https://m.gongzicp.com/home/bookView-{{$.collection_id}}.html",
    "ruleNextPage": "<js>\nif(/getList/.test(baseUrl)){\n\tresult = \"https://m.gongzicp.com/webapi/book/getList?type=3&pre={{$.data.pre}}&bid=0\"\n\t}else{\n\t\tresult = baseUrl.replace(/page=\\d+/,\"page=\"+(Number(baseUrl.match(/page=(\\d+)/)[1])+1));\n\t\t\n\t\t\t}\n\t\t\n</js>",
    "rulePubDate": "{{$.category}}•{{$.collection_list_count}}本•{{$.collection_intro}}",
    "ruleTitle": "$.collection_name",
    "shouldOverrideUrlLoading": "if(/[\\?#&]book[AN]/.test(url)){\n\ttitle = url.match(/[\\?#&]book[AN].+?=(.*)/)[1];\n\tURLDecoder = Packages.java.net.URLDecoder;\n\tgb2312Str = URLDecoder.decode(title,\"gbk\");\n utf8Str = URLDecoder.decode(title,\"utf-8\");\n\t result = gb2312Str.length() >= utf8Str.length();\n\t title = result?decodeURI(title):gb2312Str;\n\tjava.searchBook(title)\n\t}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新书单::https://m.gongzicp.com/webapi/book/getList?type=3&pre=0&bid=0\n热门书单::https://m.gongzicp.com/webapi/book/getList?type=2&pre=0&bid=0\n推荐书单::https://m.gongzicp.com/webapi/book/getList?type=1&pre=0&bid=0\n搜索书单::https://m.gongzicp.com/webapi/search/books?k={{source.getVariable()}}&page=1",
    "sourceComment": "设置源变量搜索书单",
    "sourceGroup": "推书点评",
    "sourceIcon": "https://pp.myapp.com/ma_icon/0/icon_52680621_1713258197/256",
    "sourceName": "长佩书单",
    "sourceUrl": "长佩书单",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1327,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218960164,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.item-issue!-1:-2@div!0:-1",
    "ruleContent": "class.text-detail@html&&class.picture-detail@html@js:\"<a href=\"+baseUrl+\">原文地址<a>\"+result",
    "ruleImage": "tag.img@src",
    "ruleLink": "class.div-link@href",
    "rulePubDate": "@js:if(String(result).match(/issue-article/)){a=String(result).match(/作者([^<]+)</);result=\"文章·\"+a[1]}else{if(String(result).match(/issue-picture/)){a=String(result).match(/class=\"date\">([^\"]+)<span class=\"issue-no\">([^\"]+)<\\/span>/);\nresult=\"图文·\"+a[1]+a[2]}else{result=\"问答\"}}",
    "ruleTitle": "class.text-content-short@text||class.text-title@text##作者.*",
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "http://image.wufazhuce.com/apple-touch-icon.png",
    "sourceName": "一个",
    "sourceUrl": "http://m.wufazhuce.com/index",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1332,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765538951155,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://www.yuque.com/favicon.ico",
    "sourceName": "博海拾贝",
    "sourceUrl": "https://bh.sb",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1334,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207075217,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://cdn1-images.nutaku.com/images/icons/favicon.ico",
    "sourceName": "网易",
    "sourceUrl": "https://3g.163.com/main",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1336,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207104624,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://www.williamlong.info/favicon.ico",
    "sourceName": "南方网",
    "sourceUrl": "http://www.southcn.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1337,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765541075837,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://p5.img.cctvpic.com/photoAlbum/templet/common/DEPA1604367490409644/logonew190218.jpg",
    "sourceName": "央视网",
    "sourceUrl": "https://m.cctv.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1338,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765541064734,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://file.thepaper.cn/wap/v3/img/deskicon.png",
    "sourceName": "澎湃新闻",
    "sourceUrl": "https://m.thepaper.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1340,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765541087627,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "http://m.people.cn/img/WIRELESS/2016/06/218/images/tip-logo.png",
    "sourceName": "人民网",
    "sourceUrl": "http://m.people.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1342,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765541101834,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://n.sinaimg.cn/default/80905340/20200331/sinalogo.png",
    "sourceName": "新浪网",
    "sourceUrl": "https://sina.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1345,
    "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": "美涩",
    "sourceIcon": "https://i03piccdn.sogoucdn.com/14b82bd552025ec1",
    "sourceName": "黑料",
    "sourceUrl": "https://heiliao461.pro/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1347,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767885380778,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_1123392_1568202681/256",
    "sourceName": "观察者",
    "sourceUrl": "https://m.guancha.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1349,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765541138746,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "http://www.gov.cn/govweb/xhtml/2016gov/images/public/logo.jpg",
    "sourceName": "国务院",
    "sourceUrl": "http://www.gov.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1351,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765541152667,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://rs2.huanqiucdn.cn/huanqiu/image/www/common/favicon1.ico",
    "sourceName": "环球网",
    "sourceUrl": "https://www.huanqiu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1353,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218941090,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://p0.ssl.qhimgs1.com/t025076f8584480d390.jpg",
    "sourceName": "联合国",
    "sourceUrl": "https://www.un.org/zh/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1356,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218874613,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://cdn.aixifan.com/dotnet/20130418/umeditor/dialogs/emotion/images/ac/47.gif",
    "sourceName": "今日头条",
    "sourceUrl": "https://m.toutiao.com/?W2atIF=1",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1358,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775644994371,
    "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=Chinese&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=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/search/srch.php?q=anus&limit=20&offset={{(page-1)*20}}\n",
    "sourceComment": "需VPN\n搜索自行替换关键字，只支持英文搜索\n<js>github@ifwlzs</js>",
    "sourceGroup": "涩图",
    "sourceIcon": "https://i.postimg.cc/8CnkM6sZ/Screenshot-20230503-195814.jpg",
    "sourceName": "Porn图",
    "sourceUrl": "https://www.pornpics.com/",
    "style": "img{\n\twidth:100%;\n\theight:auto;\n\t}##github@ifwlzs",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1359,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218778980,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.data",
    "ruleContent": "<style>body{background:floralwhite;}</style>\n<center><h3>帖子详情</h3></center><h3>【{{$..category.name}}】{{$.data.threadInfo.title}}</h3>\n<p>发布者：{{$.data.threadInfo.userInfo.nickname}}</p>\n<p>{{$.data.threadInfo.content..text}}</p>*************************************<center>\n<img src=\"{{$..coverImg}}\" width='130px' height='180px'>\n<h3>{{$.data.threadInfo..bookName}}</h3>\n<p>作者：{{$..authorPenName}}</p>\n<p>{{$..bookChannel.name}}·{{$..bookCategory.name}}·{{$..authLevel.name}}</p>\n<p>更新至：{{$..lastUpdateChapter.name}}</p></center><p>简介：{{$..introduction}}</p>",
    "ruleImage": "$..coverImg",
    "ruleLink": "http://api.17k.com/sns/thread/{{$.id}}?groupId={{$.groupId}}&clientType=1&cpsOpid=17Kxiaomi&_filterData=1&channel=0&_versions=1041&merchant=17Kxiaomi&appKey=4037465544&cpsSource=0&platform=2",
    "rulePubDate": "summary",
    "ruleTitle": "【{{$.groupName}}】{{$.title}}",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://is4-ssl.mzstatic.com/image/thumb/Purple123/v4/9a/1e/39/9a1e39a1-9918-8997-65ed-5e5359a60479/AppIcon-0-0-1x_U007emarketing-0-0-0-7-0-0-85-220.png/246x0w.png",
    "sourceName": "17k找书圈",
    "sourceUrl": "http://api.17k.com/sns/group/thread?num=100&typeId=5&id=2519733&page=1&type=0&clientType=1&cpsOpid=17Kxiaomi&_filterData=1&channel=0&_versions=1041&merchant=17Kxiaomi&appKey=4037465544&cpsSource=0&platform=2",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1360,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765541286889,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://p3.ssl.qhimgs1.com/t01b3884c2667659e59.gif",
    "sourceName": "百度风云",
    "sourceUrl": "http://top.baidu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1361,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765541275039,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@css:.t_news",
    "ruleContent": "@js:org.jsoup.Jsoup.parse(result).select(\".news_content\").html()",
    "ruleImage": "@css:.img_t>a:eq(0)>img@src",
    "ruleLink": "@css:.news_tit02 a@href",
    "rulePubDate": "@css:.news_info>span:eq(1)@text",
    "ruleTitle": "@css:.news_tit02 a@text",
    "showWebLog": false,
    "singleUrl": true,
    "sortUrl": "抗疫::https://m.thepaper.cn/channel_90077\n时事::https://m.thepaper.cn/channel_25950\n财经::https://m.thepaper.cn/channel_25951\n思想::https://m.thepaper.cn/channel_25952\n生活::https://m.thepaper.cn/channel_25953",
    "sourceGroup": "新闻",
    "sourceIcon": "https://file.thepaper.cn/wap/v3/img/deskicon.png",
    "sourceName": "澎湃新闻",
    "sourceUrl": "http://m.thepaper.cn",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1362,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775645009959,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "id.container@tag.li",
    "ruleContent": "class.ss-image@href\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\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": "tag.img@data-src",
    "ruleLink": "tag.a@href",
    "ruleNextPage": "page",
    "ruleTitle": "tag.a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部::https://lamalinks.com/search/{{page}}/\n穴::https://lamalinks.com/search/close-up-virgins-hymen-pics/{{page}}/\n张开::https://lamalinks.com/search/spreading-ass/{{page}}/\n白虎::https://lamalinks.com/search/shaved-pussy/{{page}}/\nSM::https://lamalinks.com/search/bdsm/{{page}}/\n搜索::https://lamalinks.com/search/{{source.getVariable()}}/{{page}}/",
    "sourceGroup": "涩图",
    "sourceIcon": "https://i.postimg.cc/8CnkM6sZ/Screenshot-20230503-195814.jpg",
    "sourceName": "L~link图",
    "sourceUrl": "https://lamalinks.com/search/1/",
    "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": 1363,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765541326747,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://img.jiemian.com/static/jmw/image/logoh.gif",
    "sourceName": "界面新闻",
    "sourceUrl": "https://m.jiemian.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1365,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236946484,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://oss-xpc0.xpccdn.com/Upload/edu/2019/09/095d75c392a6a3f.png",
    "sourceName": "新片场",
    "sourceUrl": "https://www.xinpianchang.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1366,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775644980288,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.card-columns@class.card",
    "ruleContent": "<js>`<html><body style=\"background-color:black\">${java.getString('$.*image.*url',java.getString('//script[@type=\"application/ld+json\"]/text()'),false).split('\\n').map(src=>`\\n<img src=\"${src}\">`).join('')}</body></html>`</js>",
    "ruleImage": "@js:\"https://i.postimg.cc/7L8qL87P/687cf285f127379bf829737153a87066.png\"",
    "ruleLink": "class.visited@href",
    "ruleNextPage": "page",
    "ruleTitle": "class.card-body@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "Gravure::https://www.photos18.com/cat/12?page={{page}}\n\nAidol::https://www.photos18.com/cat/13?page={{page}}\n\nMagazine::https://www.photos18.com/cat/14?page={{page}}\n\n清凉写真::https://www.photos18.com/zh-hans/cat/3?page={{page}}&per-page=100\n\n美女::https://www.photos18.com/cat/5?page={{page}}\n\n极品::https://www.photos18.com/cat/11?page={{page}}\n\n丝袜::https://www.photos18.com/cat/4?page={{page}}\n\n亚洲::https://www.photos18.com/cat/9?page={{page}}\n\n素人::https://www.photos18.com/cat/6?page={{page}}\n\n欧美::https://www.photos18.com/cat/10?page={{page}}\n\n泰国::https://www.photos18.com/cat/16?page={{page}}\n\nKorea1::https://www.photos18.com/cat/15?page={{page}}\n\n夜店::https://www.photos18.com/cat/2?page={{page}}",
    "sourceGroup": "涩图",
    "sourceIcon": "https://i.postimg.cc/8CnkM6sZ/Screenshot-20230503-195814.jpg",
    "sourceName": "色图网",
    "sourceUrl": "https://www.photos18.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1367,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218762938,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://dgss3.bdstatic.com/-bA2ezTa2gU2pMbgoY3K/img/0/512_512/ce8d065cbedf24ecf82449b4033450f2.png",
    "sourceName": "哔哩哔哩",
    "sourceUrl": "https://m.bilibili.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1371,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218751213,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://p5.ssl.qhimgs1.com/t02de0a0e3fdc546afb.jpg",
    "sourceName": "速影TV",
    "sourceUrl": "https://suyingtv.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1375,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218639346,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://www.mvcat.com/img/logo_appicon.png",
    "sourceName": "影猫",
    "sourceUrl": "https://www.mvcat.com",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 1379,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236982164,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.pins",
    "ruleContent": "<style>\n:root {\n    --text-color: #333;\n    --bg-color: #f8f5f2;\n    --title-color: #222;\n    --link-color: #666;\n    --highlight-color: #d4a373;\n    --border-color: #e9e5e1;\n}\n\n@media (prefers-color-scheme: dark) {\n    :root {\n        --text-color: #e0e0e0;\n        --bg-color: #1a1a1a;\n        --title-color: #ffffff;\n        --link-color: #aaaaaa;\n        --highlight-color: #d4a373;\n        --border-color: #333;\n    }\n}\n\nbody {\n    padding: 20px;\n    line-height: 1.8;\n    letter-spacing: 0.5px;\n    background: var(--bg-color);\n    color: var(--text-color);\n    word-wrap: break-word;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n    max-width: 1200px;\n    margin: 0 auto;\n    transition: all 0.3s ease;\n}\n\nh1 {\n    text-align: center;\n    font-size: 24px;\n    line-height: 1.4;\n    margin: 25px 0 15px;\n    color: var(--title-color);\n    font-weight: 600;\n    position: relative;\n    padding-bottom: 15px;\n}\n\nh1:after {\n    content: \"\";\n    position: absolute;\n    bottom: 0;\n    left: 50%;\n    transform: translateX(-50%);\n    width: 80px;\n    height: 2px;\n    background: var(--highlight-color);\n}\n\np {\n    text-indent: 2em;\n    margin: 15px 0;\n    font-size: 16px;\n    color: var(--text-color);\n}\n\n.author {\n    font-style: italic;\n    color: var(--highlight-color);\n    text-align: center;\n    margin: 10px 0 25px;\n    font-size: 15px;\n}\n\n.board-description {\n    background: rgba(212, 163, 115, 0.1);\n    padding: 15px;\n    border-radius: 6px;\n    margin: 20px 0;\n    border-left: 3px solid var(--highlight-color);\n}\n\n.recommendations-title {\n    font-weight: 700;\n    margin: 50px 0 30px;\n    color: var(--title-color);\n    font-size: 26px;\n    text-align: left;\n    position: relative;\n    padding: 20px 0;\n    letter-spacing: 1.5px;\n    line-height: 1.3;\n    background: linear-gradient(135deg, rgba(212, 163, 115, 0.1) 0%, transparent 50%, rgba(212, 163, 115, 0.1) 100%);\n    border-radius: 10px;\n}\n\n.image-container {\n    margin: 25px 0;\n    border-radius: 8px;\n    overflow: hidden;\n    box-shadow: 0 5px 15px rgba(0,0,0,0.1);\n}\n\n.image-container img {\n    display: block;\n    width: 100%;\n    height: auto;\n    transition: transform 0.3s ease;\n}\n\n.image-container img:hover {\n    transform: scale(1.02);\n}\n\n/* 优化瀑布流布局，确保图片间距合适 */\n.recommendations {\n    column-count: 4;\n    column-gap: 20px;\n    margin: 30px 0;\n}\n\n.recommendations img {\n    width: 100%;\n    height: auto;\n    border-radius: 10px;\n    margin-bottom: 20px;\n    break-inside: avoid;\n    transition: all 0.3s ease;\n    box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n    display: block;\n}\n\n.recommendations img:hover {\n    transform: translateY(-5px);\n    box-shadow: 0 8px 25px rgba(0,0,0,0.2);\n}\n\n/* 响应式调整 - 确保在不同屏幕下都能完整显示 */\n@media (max-width: 1024px) {\n    .recommendations {\n        column-count: 3;\n    }\n    \n    .recommendations-title {\n        font-size: 24px;\n        margin: 40px 0 25px;\n        padding: 18px 0;\n    }\n    \n    .recommendations-title:before {\n        left: 25%;\n    }\n    \n    .recommendations-title:after {\n        right: 25%;\n    }\n}\n\n@media (max-width: 768px) {\n    .recommendations {\n        column-count: 2;\n        column-gap: 15px;\n    }\n    \n    .recommendations-title {\n        font-size: 22px;\n        margin: 35px 0 20px;\n        padding: 15px 0;\n        letter-spacing: 1px;\n    }\n    \n    .recommendations-title:before,\n    .recommendations-title:after {\n        font-size: 18px;\n    }\n    \n    .recommendations-title:before {\n        left: 20%;\n    }\n    \n    .recommendations-title:after {\n        right: 20%;\n    }\n    \n    body {\n        max-width: 100%;\n        padding: 15px;\n    }\n}\n\n@media (max-width: 480px) {\n    .recommendations {\n        column-count: 1;\n        column-gap: 10px;\n    }\n    \n    .recommendations-title {\n        font-size: 20px;\n        margin: 30px 0 15px;\n        padding: 12px 0;\n        background: rgba(212, 163, 115, 0.08);\n    }\n    \n    .recommendations-title:before,\n    .recommendations-title:after {\n        display: none; /* 在小屏幕上隐藏装饰图标，确保文字完全显示 */\n    }\n}\n\n.original-link {\n    text-align: center;\n    margin: 50px 0 25px;\n}\n\n.original-link a {\n    color: var(--link-color);\n    text-decoration: none;\n    font-size: 16px;\n    padding: 10px 25px;\n    border: 1px solid var(--border-color);\n    border-radius: 25px;\n    transition: all 0.3s ease;\n    display: inline-block;\n}\n\n.original-link a:hover {\n    color: var(--highlight-color);\n    border-color: var(--highlight-color);\n    background: rgba(212, 163, 115, 0.05);\n    transform: translateY(-2px);\n}\n</style>\n\n<div>\n    <h1>{{$.pin.board.title}}</h1>\n    <p class=\"author\">By：{{$.pin.user.username}}</p>\n    \n    <div class=\"image-container\">\n        <img src=\"https://hbimg.huabanimg.com//{{$.pin.file.key}}\"/>\n    </div>\n    \n    <p>{{$.pin.raw_text}}</p>\n    \n    <p class=\"board-description\">{{$.pin.board.description}}</p>\n    \n    <!-- 优化后的相关推荐标题 - 更大更突出，确保完全显示 -->\n    <p class=\"recommendations-title\">相关推荐</p>\n    \n    <div class=\"recommendations\">\n        {{json=JSON.parse(java.getElements('$.pin.board.pins'));\n        img='';\n        for (i in json){\n        key=json[i].file.key;\n        img=img+'<img src=\"https://hbimg.huabanimg.com//'+key+'\"/>'\n        }\n        img\n        }}\n    </div>\n    \n    <div class=\"original-link\">\n        <a href=\"https://huaban.com/pins/{{$.pin.pin_id}}\">阅读原文</a>\n    </div>\n</div>\n",
    "ruleImage": "https://hbimg.huabanimg.com//{$.file.key}",
    "ruleLink": "https://api.huaban.com/pins/{$.pin_id}",
    "ruleNextPage": "page",
    "rulePubDate": "$.created_at@js:(new Date(result*1000)).toLocaleDateString();",
    "ruleTitle": "{{$.board.title}}•{{$.raw_text}}",
    "searchUrl": "https://api.huaban.com/search/file?sort=created_at&limit=62&text={{key}}&page={{page}}&position=search_pin",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://api.huaban.com/search/file?sort=created_at&limit=62&text={{svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/><text x=\"200\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"70\" fill=\"#333\" font-weight=\"bold\">输入要搜索的内容</text></svg>`));if(page==1){let a=\"\";try{a=java.getVerificationCode('data:image/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()}source.setVariable(a);a}else{source.getVariable()};}}&page={{page}}&position=search_pin\nUI/UX::https://api.huaban.com/favorite/web_app_icon?limit=100&page={{page}}&&平面::https://api.huaban.com/favorite/design?limit=100&page={{page}}&&插画/漫画::https://api.huaban.com/favorite/illustration?limit=100&page={{page}}&&摄影::https://api.huaban.com/favorite/photography?limit=100&page={{page}}&&游戏::https://api.huaban.com/favorite/games?limit=100&page={{page}}&&动漫::https://api.huaban.com/favorite/anime?limit=100&page={{page}}&&工业设计::https://api.huaban.com/favorite/industrial_design?limit=100&page={{page}}&&建筑设计::https://api.huaban.com/favorite/architecture?limit=100&page={{page}}&&人文艺术::https://api.huaban.com/favorite/art?limit=100&page={{page}}&&家居/家装::https://api.huaban.com/favorite/home?limit=100&page={{page}}&&女装/搭配::https://api.huaban.com/favorite/apparel?limit=100&page={{page}}&&男士/风尚::https://api.huaban.com/favorite/men?limit=100&page={{page}}&&造型/美妆::https://api.huaban.com/favorite/modeling_hair?limit=100&page={{page}}&&手工/布艺::https://api.huaban.com/favorite/diy_crafts?limit=100&page={{page}}&&美食::https://api.huaban.com/favorite/food_drink?limit=100&page={{page}}&&旅行::https://api.huaban.com/favorite/travel_places?limit=100&page={{page}}&&婚礼::https://api.huaban.com/favorite/wedding_events?limit=100&page={{page}}&&儿童::https://api.huaban.com/favorite/kids?limit=100&page={{page}}&&宠物::https://api.huaban.com/favorite/pets?limit=100&page={{page}}&&美图::https://api.huaban.com/favorite/quotes?limit=100&page={{page}}&&明星::https://api.huaban.com/favorite/people?limit=100&page={{page}}&&美女::https://api.huaban.com/favorite/beauty?limit=100&page={{page}}&&礼物::https://api.huaban.com/favorite/desire?limit=100&page={{page}}&&极客::https://api.huaban.com/favorite/geek?limit=100&page={{page}}&&数据图::https://api.huaban.com/favorite/data_presentation?limit=100&page={{page}}&&汽车/摩托::https://api.huaban.com/favorite/cars_motorcycles?limit=100&page={{page}}&&电影/图书::https://api.huaban.com/favorite/film_music_books?limit=100&page={{page}}&&生活百科::https://api.huaban.com/favorite/tips?limit=100&page={{page}}&&教育::https://api.huaban.com/favorite/education?limit=100&page={{page}}&&运动::https://api.huaban.com/favorite/sports?limit=100&page={{page}}&&搞笑::https://api.huaban.com/favorite/funny?limit=100&page={{page}}&&健身/舞蹈::https://api.huaban.com/favorite/fitness?limit=100&page={{page}}&&其它::https://api.huaban.com/favorite/other?limit=100&page={{page}}&&3C数码::https://api.huaban.com/favorite/digital?limit=100",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://api.huaban.com/favicon.ico",
    "sourceName": "花瓣\n合集",
    "sourceUrl": "https://api.huaban.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1381,
    "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": ".catagory-list ul li",
    "ruleContent": ".post-content@all",
    "ruleImage": "@js:\"https://i.postimg.cc/rwJKQgWq/1680488577806.png\"",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "span@text",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "人妻熟女::https://dwkm.xyz/category/milf.html\n师生校园::https://dwkm.xyz/category/school.html\n都市生活::https://dwkm.xyz/category/city.html\n强暴虐待::https://dwkm.xyz/category/bdsm.html\n家庭乱伦::https://dwkm.xyz/category/family.html\n明星名媛::https://dwkm.xyz/category/celebrity.html\n成人武侠::https://dwkm.xyz/category/classic.html\n",
    "sourceGroup": "美涩",
    "sourceIcon": "https://i.postimg.cc/8CnkM6sZ/Screenshot-20230503-195814.jpg",
    "sourceName": "📖宽面",
    "sourceUrl": "https://dwkm.xyz/category/school-p{{page}}.html",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1382,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775644953446,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".main@li",
    "ruleContent": "all##ul##details",
    "ruleImage": "img@realsrc",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@.love@text}} {{@@span@text}}",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "性感美女::https://m.tuiimg.com/xingganmeinv/list_{{page}}.html\n清纯美女::https://m.tuiimg.com/qingchunmeinv/list_{{page}}.html\n妹子图::https://m.tuiimg.com/meizitu/list_{{page}}.html\n美女写真::https://m.tuiimg.com/meinvxiezhen/list_{{page}}.html",
    "sourceGroup": "涩图",
    "sourceIcon": "https://img2.baidu.com/it/u=674439633,2502913322&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800",
    "sourceName": "超甜妹子图",
    "sourceUrl": "https://m.tuiimg.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1388,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773221878177,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.result||$.[*]",
    "ruleContent": "<js>var doc=org.jsoup.Jsoup.parse(result);\ndoc.select(\"style\")+doc.select(\"div[class=layout__Skeleton-zgzfsa-3 styled__ArticleInfo-sc-1ctyfcr-2 styled__MobileArticleInfo-sc-1ctyfcr-3 gXWHhR]\").html()+doc.select(\"div[class=rich_media_meta_list]\").html()+doc.select(\"div[class=rich_media_content]\").html()</js>",
    "ruleImage": "$.small_image",
    "ruleLink": "https://www.guokr.com/article/{{$.id}}/",
    "ruleNextPage": "page",
    "rulePubDate": "$.date_created",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://www.guokr.com/beta/proxy/science_api/articles?limit=16&page={{page}}\r\n科学人::https://www.guokr.com/beta/proxy/science_api/articles?retrieve_type=by_category&page={{page}}\r\n物种日历::https://www.guokr.com/apis/minisite/article.json?retrieve_type=by_wx&channel_key=pac&offset={{page-1}}0&limit=10\r\n吃货研究所::https://www.guokr.com/apis/minisite/article.json?retrieve_type=by_wx&channel_key=predator&offset={{page-1}}0&limit=10\r\n美丽也是技术活::https://www.guokr.com/apis/minisite/article.json?retrieve_type=by_wx&channel_key=beauty&offset={{page-1}}0&limit=10",
    "sourceGroup": "新闻",
    "sourceIcon": "https://android-artworks.25pp.com/fs08/2019/11/15/7/106_4213117808d53ee3721efc0fdf294589_con.png",
    "sourceName": "果壳",
    "sourceUrl": "https://www.guokr.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1389,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218415285,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.zhubo",
    "ruleContent": "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n<script src=\"http://bilibili.github.io/flv.js/dist/flv.js\"></script>\n</head>\n<body>\n\t\t\t<video id=\"player1\"  autoplay=\"autoplay\" preload=\"auto\" muted controls=\"controls\">\n\t\t</video>\n\t\t<p>\n    <button onclick=\"enableMute()\" type=\"button\">关闭声音</button>\n\n    <button onclick=\"disableMute()\" type=\"button\">打开声音</button>\n\n</p> \n<div>\n直播链接:{{baseUrl.replace(/zhibo/,\"flv\").replace(/http:\\/\\/api.hclyz.com:81/,\"不可播放rtmp:/\")}}\n</div>\n</body>\n</html>\n<script>\n    if (flvjs.isSupported()) {\n        var videoElement = document.getElementById('player1');\n\t\tvar flvPlayer = flvjs.createPlayer({\n            type: 'flv', \n            url: '{{baseUrl.replace(/zhibo/,\"flv\").replace(/http:\\/\\/api.hclyz.com:81/,\"rtmp://\")}}',\n     });\n\t\tflvPlayer.attachMediaElement(videoElement);\n\t\tflvPlayer.load();\n\t\t//flvPlayer.play();\n    }\n</script>\n <script>\n\nvar myVid = document.getElementById(\"player1\");\n\nfunction enableMute() { \n\n    myVid.muted = true;\n\n} \n\nfunction disableMute() { \n\n    myVid.muted = false;\n\n} \n</script> ",
    "ruleImage": "$.img",
    "ruleLink": "$.address@js:result\n.replace(/\\.flv/,\".zhibo\")\n.replace(/rtmp:\\//,\"\")",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "偶遇::http://api.hclyz.com:81/mf/jsonouyu.txt\n依依::http://api.hclyz.com:81/mf/jsonyiyi.txt\n夜色::http://api.hclyz.com:81/mf/jsonyese.txt\n亚米::http://api.hclyz.com:81/mf/jsonyami.txt\n色趣::http://api.hclyz.com:81/mf/jsonsequ.txt\n咪狐::http://api.hclyz.com:81/mf/jsonmihu.txt\n夜律::http://api.hclyz.com:81/mf/jsonyelu.txt\n暗语::http://api.hclyz.com:81/mf/jsonanyu.txt\n咪咪::http://api.hclyz.com:81/mf/jsonmimi.txt\n糯米::http://api.hclyz.com:81/mf/jsonnuomi.txt\n苦瓜::http://api.hclyz.com:81/mf/jsonkugua.txt\n蝴蝶::http://api.hclyz.com:81/mf/jsonhudie.txt\n云鹿::http://api.hclyz.com:81/mf/jsonyunlu.txt\n付宝::http://api.hclyz.com:81/mf/jsonfubao.txt\n菠萝::http://api.hclyz.com:81/mf/jsonboluo.txt\n夜艳::http://api.hclyz.com:81/mf/jsonyeyan.txt\n二嫂::http://api.hclyz.com:81/mf/jsonersao.txt\n土豪::http://api.hclyz.com:81/mf/jsontuhao.txt\n盘他::http://api.hclyz.com:81/mf/jsonpanta.txt\n美夕::http://api.hclyz.com:81/mf/jsonmeixi.txt\n坦克::http://api.hclyz.com:81/mf/jsontanke.txt\n蜜桃::http://api.hclyz.com:81/mf/jsonmitao.txt\n她秀::http://api.hclyz.com:81/mf/jsontaxiu.txt\n金鱼::http://api.hclyz.com:81/mf/jsonjinyu.txt\n浴火::http://api.hclyz.com:81/mf/jsonyuhuo.txt\n套路::http://api.hclyz.com:81/mf/jsontaolu.txt\n日出::http://api.hclyz.com:81/mf/jsonrichu.txt\n桃花::http://api.hclyz.com:81/mf/jsontaohua.txt\nLOVE::http://api.hclyz.com:81/mf/jsonLOVE.txt\n久久::http://api.hclyz.com:81/mf/jsonjiujiu.txt\n杏趣::http://api.hclyz.com:81/mf/jsonxingqu.txt\n媚颜::http://api.hclyz.com:81/mf/jsonmeiyan.txt\n灰灰::http://api.hclyz.com:81/mf/jsonhuihui.txt\n爱零::http://api.hclyz.com:81/mf/jsonailing.txt\n爱恋::http://api.hclyz.com:81/mf/jsonailian.txt\n杏播::http://api.hclyz.com:81/mf/jsonxingbo.txt\n金呗::http://api.hclyz.com:81/mf/jsonjinbei.txt\nmoon::http://api.hclyz.com:81/mf/jsonmoon.txt\n夜纯::http://api.hclyz.com:81/mf/jsonyechun.txt\n彩云::http://api.hclyz.com:81/mf/jsoncaiyun.txt\n妞妞::http://api.hclyz.com:81/mf/jsonniuniu.txt\n艳后::http://api.hclyz.com:81/mf/jsonyanhou.txt\n蓝猫::http://api.hclyz.com:81/mf/jsonlanmao.txt\n情趣::http://api.hclyz.com:81/mf/jsonqingqu.txt\n翠鸟::http://api.hclyz.com:81/mf/jsoncuiniao.txt\n糖果::http://api.hclyz.com:81/mf/jsontangguo.txt\n么么哒::http://api.hclyz.com:81/mf/jsonmemeda.txt\n豹娱l::http://api.hclyz.com:81/mf/jsonbaoyul.txt\n卡哇伊::http://api.hclyz.com:81/mf/jsonkawayi.txt\n小妖::http://api.hclyz.com:81/mf/jsonxiaoyao.txt\n幽梦::http://api.hclyz.com:81/mf/jsonyoumeng.txt\n风流::http://api.hclyz.com:81/mf/jsonfengliu.txt\n樱桃::http://api.hclyz.com:81/mf/jsonyingtao.txt\n享色::http://api.hclyz.com:81/mf/jsonxiangse.txt\n娇媚::http://api.hclyz.com:81/mf/jsonjiaomei.txt\n爱爱你::http://api.hclyz.com:81/mf/jsonaiaini.txt\n花房::http://api.hclyz.com:81/mf/jsonhuafang.txt\n卡路里::http://api.hclyz.com:81/mf/jsonkaluli.txt\n名流::http://api.hclyz.com:81/mf/jsonmingliu.txt\n倾心::http://api.hclyz.com:81/mf/jsonqingxin.txt\n樱花::http://api.hclyz.com:81/mf/jsonyinghua.txt\n飘雪::http://api.hclyz.com:81/mf/jsonpiaoxue.txt\n入巷::http://api.hclyz.com:81/mf/jsonruxiang.txt\n蝶恋::http://api.hclyz.com:81/mf/jsondielian.txt\n彩虹::http://api.hclyz.com:81/mf/jsoncaihong.txt\n奥斯卡::http://api.hclyz.com:81/mf/jsonaosika.txt\n皇后::http://api.hclyz.com:81/mf/jsonhuanghou.txt\n牵手::http://api.hclyz.com:81/mf/jsonqianshou.txt\n台妹l::http://api.hclyz.com:81/mf/jsontaimeil.txt\n夜妖姬::http://api.hclyz.com:81/mf/jsonyeyaoji.txt\n一直播::http://api.hclyz.com:81/mf/jsonyizhibo.txt\n玲珑::http://api.hclyz.com:81/mf/jsonlinglong.txt\n橙秀::http://api.hclyz.com:81/mf/jsonchengxiu.txt\n黄瓜::http://api.hclyz.com:81/mf/jsonhuanggua.txt\n颜如玉::http://api.hclyz.com:81/mf/jsonyanruyu.txt\n蛟龙::http://api.hclyz.com:81/mf/jsonjiaolong.txt\n好基友::http://api.hclyz.com:81/mf/jsonhaojiyou.txt\n夜女郎::http://api.hclyz.com:81/mf/jsonyenulang.txt\n娇喘::http://api.hclyz.com:81/mf/jsonjiaochuan.txt\n小妲己::http://api.hclyz.com:81/mf/jsonxiaodaji.txt\n花蝴蝶::http://api.hclyz.com:81/mf/jsonhuahudie.txt\n尤物岛::http://api.hclyz.com:81/mf/jsonyouwudao.txt\n77直播::http://api.hclyz.com:81/mf/json77zhibo.txt\n十八禁::http://api.hclyz.com:81/mf/jsonshibajin.txt\n蝴蝶飞::http://api.hclyz.com:81/mf/jsonhudiefei.txt\n喜欢你::http://api.hclyz.com:81/mf/jsonxihuanni.txt\n兔女郎::http://api.hclyz.com:81/mf/jsontunulang.txt\n双碟::http://api.hclyz.com:81/mf/jsonshuangdie.txt\n约直播::http://api.hclyz.com:81/mf/jsonyuezhibo.txt\n九尾狐::http://api.hclyz.com:81/mf/jsonjiuweihu.txt\n红妆::http://api.hclyz.com:81/mf/jsonhongzhuang.txt\n花仙子::http://api.hclyz.com:81/mf/jsonhuaxianzi.txt\n持久男::http://api.hclyz.com:81/mf/jsonchijiunan.txt\n丽柜厅::http://api.hclyz.com:81/mf/jsonliguiting.txt\n桃花运::http://api.hclyz.com:81/mf/jsontaohuayun.txt\n903娱乐::http://api.hclyz.com:81/mf/json903yule.txt\n视觉秀::http://api.hclyz.com:81/mf/jsonshijuexiu.txt\n芒果派::http://api.hclyz.com:81/mf/jsonmangguopai.txt\n七仙女s::http://api.hclyz.com:81/mf/jsonqixiannus.txt\n夜来香::http://api.hclyz.com:81/mf/jsonyelaixiang.txt\n星宝贝::http://api.hclyz.com:81/mf/jsonxingbaobei.txt\n小蜜蜂::http://api.hclyz.com:81/mf/jsonxiaomifeng.txt\n小棉袄::http://api.hclyz.com:81/mf/jsonxiaomianao.txt\n小辣椒::http://api.hclyz.com:81/mf/jsonxiaolajiao.txt\n小仙女::http://api.hclyz.com:81/mf/jsonxiaoxiannu.txt\n兰桂坊::http://api.hclyz.com:81/mf/jsonlanguifang.txt\n花果山::http://api.hclyz.com:81/mf/jsonhuaguoshan.txt\n招财猫::http://api.hclyz.com:81/mf/jsonzhaocaimao.txt\n心之恋::http://api.hclyz.com:81/mf/jsonxinzhilian.txt\n睡美人::http://api.hclyz.com:81/mf/jsonshuimeiren.txt\n小花螺::http://api.hclyz.com:81/mf/jsonxiaohualuo.txt\n小天使::http://api.hclyz.com:81/mf/jsonxiaotianshi.txt\n小红帽::http://api.hclyz.com:81/mf/jsonxiaohongmao.txt\n樱花雨i::http://api.hclyz.com:81/mf/jsonyinghuayui.txt\n小萌猪::http://api.hclyz.com:81/mf/jsonxiaomengzhu.txt\n小坏蛋::http://api.hclyz.com:81/mf/jsonxiaohuaidan.txt\n小性感::http://api.hclyz.com:81/mf/jsonxiaoxinggan.txt\n红浪漫::http://api.hclyz.com:81/mf/jsonhonglangman.txt\n蚊香社::http://api.hclyz.com:81/mf/jsonwenxiangshe.txt\n蓝月亮::http://api.hclyz.com:81/mf/jsonlanyueliang.txt\n小精灵::http://api.hclyz.com:81/mf/jsonxiaojingling.txt\n红高粱::http://api.hclyz.com:81/mf/jsonhonggaoliang.txt\n小天仙::http://api.hclyz.com:81/mf/jsonxiaotianxian.txt",
    "sourceComment": "某个软件的聚合直播\nrtmp的手机网页应该是无法播放\nmp4的都是广告没管",
    "sourceGroup": "美涩",
    "sourceIcon": "https://img2.baidu.com/it/u=3810767422,2486090729&fm=253&fmt=auto&app=138&f=PNG?w=192&h=192",
    "sourceName": "H直播大全",
    "sourceUrl": "http://api.hclyz.com:81",
    "style": "video{\nwidth:100%;\nheight:auto;}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1413,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".bloglist@ul@tr",
    "ruleContent": ".contentbox@all##上一篇(.|\\n)*",
    "ruleImage": "@js:\"https://i.postimg.cc/SsyT3xzC/1683726499157.png\"",
    "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": "美涩",
    "sourceIcon": "https://i.postimg.cc/W4phMYsP/1659057345748.png",
    "sourceName": "📖色文",
    "sourceUrl": "https://233335.xyz/e/action/ListInfo/?classid=1",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1416,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775591487860,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://imgsa.baidu.com/forum/pic/item/d0c8a786c9177f3e8ebb0cca7ecf3bc79e3d566e.jpg",
    "sourceName": "吾爱破解",
    "sourceUrl": "https://www.52pojie.cn/forum.php?mod=rss",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1430,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217842916,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://www.bl210.com/templets/default/images/img/favicon.ico",
    "sourceName": "爱妖灵",
    "sourceUrl": "https://www.bl210.com",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1431,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\t\"User-Agent\": \"picasso,315,tencent\"\n}",
    "lastUpdateTime": 1773206596612,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.res.category||$.res.album\n@js:\njson=[]\nif(baseUrl.match(/skip=/)){json=result}\nelse{eval(String(source.sourceComment))\ns=\"搜索\";x=\"最新\";r=\"热门\";f=\"发现\";t=\"推荐\"\nu1=['http://www.dmoe.cc/random.php?', 'http://api.mtyqx.cn/tapi/random.php?', 'https://api.ixiaowai.cn/api/api.php?', 'https://acg.toubiec.cn/random.php?']\nu2=['http://api.guaqb.cn/v1/onesaid?', 'https://v1.hitokoto.cn/?encode=text&', 'https://v1.jinrishici.com/rensheng.txt?', 'http://yijuzhan.com/api/word.php?']\n\n\nfunction Json(result){\n\tfor(i in result){\n\t\tjson.push(JSON.stringify(result[i]))\n\t}\n}\n\n\nfunction push(name){\n\tX = Math.ceil(Math.random()*4)-1\n\tcover  = 其他.随机封面?u1[X]+Math.random():''\n\tdesc = 其他.随机语句?java.ajax(u2[X]+Math.random()):''\n\tdata = [{\"name\": name, \"cover\": cover, \"desc\": desc}]\n\tJson(data)\n}\n\n\n\nfunction 分类(list){\n\tcate=[]\n\tfor(i in list){\n\t\t\tif(list[i]==true){\n\t\t\t\t\tcate.push(result[i])\n\t\t\t\t}\n\t\t}\n\tJson(cate)\n}\n\n\nfunction 专辑(list){\n\tfor(i in list){\n\t\tif(list[i]==true){\n\t\t\tif(i==list.length-1){\n\t\t\t\tid = '/v2/'+uid\n\t\t\t}else{\n\t\t\t\tid = '/v1/'+uid+'/category/'+result[i].id\n\t\t\t}\n\t\t\turl = 'http://service.picasso'+uri+id+'/album?limit=10'\n\t\t\tbreak\n\t\t}\n\t}\n\tjava.put('url', url)\n\talbum = JSON.parse(java.ajax(url)).res.album\n\tJson(album)\n}\n\n\nif(uid=='vertical'){\n\t\t竖屏.搜索?push(s):''\n\t\t竖屏.最新?push(x):''\n\t\t竖屏.热门?push(r):''\n\t\t发现.竖屏?push(f):''\n\t\t竖屏.分类.显示?分类(竖屏.分类.设置):''\n\t\t竖屏.专辑.显示?专辑(竖屏.专辑.设置):''\n\t}\nelse if(uid=='wallpaper'){\n\t\t横屏.搜索?push(s):''\n\t\t横屏.最新?push(x):''\n\t\t横屏.热门?push(r):''\n\t\t发现.横屏?push(f):''\n\t\t横屏.分类.显示?分类(横屏.分类.设置):''\n\t\t横屏.专辑.显示?专辑(横屏.专辑.设置):''\n\t}\nelse if(uid=='videowp'){\n\t\t动态.最新?push(x):''\n\t\t动态.热门?push(r):''\n\t\t动态.推荐?push(t):''\n\t\t发现.动态?push(f):''\n\t\t动态.分类.显示?分类(动态.分类.设置):''\n\t}\nelse{\n\t\t发现.头像?push(f):''\n\t\t头像.最新?push(x):''\n\t\t头像.分类.显示?分类(头像.分类.设置):''\n\t}\n}\njson",
    "ruleContent": "<title>@get:{name}</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<button id=\"b\" onclick=\"跳转指定页数()\">></button><br>\n<h6><i><br>p1</i></h6>\n<div id=\"box\"></div>\n<h6 id=\"loads\"><i>加载中...</i></h6>\n\n<script>\n//获取源变量对应的img宽度\nv=\"{{eval(String(source.sourceComment));V}}\"\nif(v==4){\n\tw='22.5'\n}else if(v==3){\n\tw='30.8'\n}else if(v==1){\n\tw='97.5'\n}else{\n\tw='47.5'\n}\nImg = '<img onload=\"box.viewer.update()\" style=\"width:'+w+'%\" src=\"'\n\n\nbox = document.getElementById(\"box\")\nloads = document.getElementById(\"loads\")\n\na=\"{{eval(String(source.sourceComment));其他.历史浏览}}\"\nb=\"{{eval(String(source.sourceComment));其他.跳转按钮}}\"\nc=document.getElementById('b')\nif(!b==true){c.style.display='none'}\n\n\n//p1图片\nsrc = \"{{$.res.vertical[*].img||$.res.wallpaper[*].img||$.res.videowp[*].img||$.res.data[*].img||$.res.avatar[*].thumb##\\n##,}}\".split(',')\nfor(i in src){\n\tbox.innerHTML += Img+src[i]+'\">'\n}\n\n\ni=1\np=1\npg=\"{{String(java.get('pg'))/12}}\"\nu=\"{{baseUrl}}&skip=\"\n\nwindow.onload = () => {\n\tnew Viewer(box,{title:false,interval:3000})\n\tio = new IntersectionObserver(entries => {\n\t\tif(entries[0].intersectionRatio){\n\t\t\tif(i==1&&a==true){加载历史浏览()}\n\t\t\tif(p>3){i++;p=1}\n\n\t\t\turl = u+i*12\n\t\t\tif(pg!=0){\n\t\t\t\tif(i<Math.ceil(pg)){\n\t\t\t\t\tfetchJson(url)\n\t\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tio.unobserve(loads)\n\t\t\t\t\tloads.innerText='我是有底线的'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\telse{\n\t\t\t\tfetchJson(url)\n\t\t\t\t}\n\t\t}\n\t},{\n\t\trootMargin:`0px 0px 100px 0px`\n\t})\n\tio.observe(loads)\n}\n\n\nfunction 加载历史浏览(){\n\ts = window.localStorage\n\tif(!s.getItem('s')){s.setItem('s',i)}\n\ts = parseInt(s.getItem('s'))+1\n\tx = window.prompt(\"检测到历史浏览，是否跳转？\",s)\n\tx = (x==''||x==null)?1:(x==1?x:x-1)\n\ti = parseInt(x)\n}\n\n\nfunction 跳转指定页数(){io.observe(loads)\n\tx = window.prompt(\"跳转到第几页？\"+(pg!=0?'最多跳转到'+Math.ceil(pg)+'? ':''),'')\n\tx = (x==''||x==null)?i:x-1\n\ti = parseInt(x)\n}\n\n\n\nfunction fetchJson(url){\n\tP = \"p\"+(parseInt(i)+1)\n\tloads.innerText = P+\"加载中...\"\n\n//加载链接( json格式\n\tfetch(url).then(res=>res.json())\n\n//加载成功\n\t.then($=>{\n\t\tsrc = ($.res.vertical||$.res.wallpaper||$.res.videowp||$.res.data||$.res.avatar)\n\t\tbox.innerHTML += '<h6><i>'+P+'</i></h6>'\n\t\tfor(I in src){\n\t\t\tbox.innerHTML += Img+(src[I].img||src[I].thumb)+'\">'\n\t\t\t}\n\t\tif(p>1){p=1}\n\t\twindow.localStorage.setItem('s',i)\n\t\ti++\n\t})\n\n//加载失败\n\t.catch(x=>{\n\t\tbox.innerHTML += '<h6><i>'+P+'加载失败...<sup>'+p+'</sup></i></h6>'\n\t\tp++\n\t})\n}\n</script>",
    "ruleImage": "$.cover||$.img",
    "ruleLink": "$.id||$._id\n@js:\nid = String(result)\nname = String(java.get('name'))\neval(String(source.sourceComment))\n\n\na='http://service.picasso'+uri\nb='/'+uid\nc='/v1'+b\nd='https://service.'+uid+uri+c\n\n\nif(name==\"搜索\"){\n\t\tv = (v&&v!=\"\"&&v!=\"null\")?v:\"夏日\"\n\t\tkey = 其他.变量搜索?v:String(java.getVerificationCode(\"https://thomasyo.coding.net/p/yuedu/d/dingyue/git/raw/master/yanzheng/sou.jpg\"))\n\t\turl = 'http://so.picasso'+uri+'/v1/search'+b+'/resource/'+key+'?'\n\t}\n\nelse if(name==\"最新\"){\n\t\turl = a+c+b+'?'\n\t\tif(uid=='videowp'){\n\t\t\t\turl = d+b+'?'\n\t\t\t}\n\t}\n\nelse if(name==\"热门\"){\n\t\tif(uid=='videowp'){\n\t\t\t\turl = d+b+'?order=hot&'\n\t\t\t}\n\t\telse if(uid=='wallpaper'){\n\t\t\t\turl = a+'/v3/homepage?'\n\t\t\t}\n\t\telse{\n\t\t\t\turl = a+'/v4/homepage'+b+'?'\n\t\t\t}\n\t}\n\nelse if(name==\"推荐\"){\n\t\turl = d+'/featured?'\n\t}\n\nelse if(name==\"发现\"){\n\t\turl = 'http://m'+uri+'/v1/explore/set?'\n\t}\n\nelse{\n\t\tif(uid=='videowp'){\n\t\t\t\turl = d+'/category/'+id+'?'\n\t\t\t}\n\t\telse if(uid=='avatar'){\n\t\t\t\turl = a+c+b+'?cid='+id+'&'\n\t\t\t}\n\t\telse{\n\t\t\t\turl = a+c+ (String(java.getString('$.user')).length?'/album/':'/category/') +id+b+'?'\n\t\t\t}\n\t}\nurl+'limit=12'",
    "ruleNextPage": "@js:\nif(!baseUrl.match(/skip=/)){\n\t\turl = (u=String(java.get('url'))).length? u+'&skip=10':''\n\t}\nelse{\n\t\tp = baseUrl.match(/skip=(\\d+)0/)[1]\n\t\tp = 'skip='+(parseInt(p)+1)*10\n\t\turl = baseUrl.replace(/skip=(\\d+)/, p)\n\t}\nurl",
    "rulePubDate": "$.count\n@js:\npg=\"\"\nif(java.get('name').match(/^(美女|动漫|风景|游戏|文字|视觉|情感|设计|明星|物语|男人|机械|城市|动物)$/)){result=\"\"}\nif(result!=\"\"){\n\tpg = '共'+java.put('pg', result)+'张 &nbsp;'\n}\npg+java.getString('$.desc')",
    "ruleTitle": "$.name||$.category\n@js:java.put('name',result)",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "竖屏::http://service.picasso.adesk.com/v1/vertical/category\n横屏::http://service.picasso.adesk.com/v1/wallpaper/category\n动态::https://service.videowp.adesk.com/v1/videowp/category\n头像::http://m.adesk.com/v1/avatar/category",
    "sourceComment": "//v3.5\n//修复扩展列表后无法获取分类的问题\n//专辑转换分类后可以加载下一页了(by 关耳\n//四大分类可以自定义默认列表是否显示了\n\n\n\n//1启用，0禁用\n竖屏 = {\n\n//启用搜索？\n\t\t搜索: 0 ,\n\n//显示最新？\n\t\t最新: 0 ,\n\n//显示热门？\n\t\t热门: 0 ,\n\n//显示默认分类？\n//启用专辑后可能会有隐藏的需求\n\t\t分类: {\n\t\t\t\t显示: 1 ,\n\n//可多选，是否显示以下分类\n\t\t\t\t设置: [\n\t\t\t\t\t\t1 ,//美女\n\t\t\t\t\t\t1 ,//动漫\n\t\t\t\t\t\t1 ,//风景\n\t\t\t\t\t\t1 ,//游戏\n\t\t\t\t\t\t1 ,//文字\n\t\t\t\t\t\t1 ,//视觉\n\t\t\t\t\t\t1 ,//情感\n\t\t\t\t\t\t1 ,//设计\n\t\t\t\t\t\t1 ,//明星\n\t\t\t\t\t\t1 ,//物语\n\t\t\t\t\t\t1 ,//男人\n\t\t\t\t\t\t1 ,//机械\n\t\t\t\t\t\t1 ,//城市\n\t\t\t\t\t\t1 ,//动物\n\t\t\t\t\t]\n\t\t\t},\n\n//启用专辑？\n\t\t专辑: {\n\t\t\t\t显示: 0 ,\n\n//单选，专辑类型\n//依次遍历，只获取第一个启用的分类\n\t\t\t\t设置: [\n\t\t\t\t\t\t1 ,//美女\n\t\t\t\t\t\t0 ,//动漫\n\t\t\t\t\t\t0 ,//风景\n\t\t\t\t\t\t0 ,//游戏\n\t\t\t\t\t\t0 ,//文字\n\t\t\t\t\t\t0 ,//视觉\n\t\t\t\t\t\t0 ,//情感\n\t\t\t\t\t\t0 ,//设计\n\t\t\t\t\t\t0 ,//明星\n\t\t\t\t\t\t0 ,//物语\n\t\t\t\t\t\t0 ,//男人\n\t\t\t\t\t\t0 ,//机械\n\t\t\t\t\t\t0 ,//城市\n\t\t\t\t\t\t0 ,//动物\n\t\t\t\t\t\t1 ,//最新(默认)\n\t\t\t\t\t]\n\t\t\t}\n\t}\n\n\n\n横屏 = {\n\t\t搜索: 0 ,\n\t\t最新: 0 ,\n\t\t热门: 0 ,\n\t\t分类: {\n\t\t\t\t显示: 1 ,\n\t\t\t\t设置: [\n\t\t\t\t\t\t1 ,//美女\n\t\t\t\t\t\t1 ,//动漫\n\t\t\t\t\t\t1 ,//风景\n\t\t\t\t\t\t1 ,//游戏\n\t\t\t\t\t\t1 ,//文字\n\t\t\t\t\t\t1 ,//视觉\n\t\t\t\t\t\t1 ,//情感\n\t\t\t\t\t\t1 ,//设计\n\t\t\t\t\t\t1 ,//明星\n\t\t\t\t\t\t1 ,//物语\n\t\t\t\t\t\t1 ,//男人\n\t\t\t\t\t\t1 ,//机械\n\t\t\t\t\t\t1 ,//城市\n\t\t\t\t\t\t1 ,//动物\n\t\t\t\t\t]\n\t\t\t},\n\t\t专辑: {\n\t\t\t\t显示: 0 ,\n\t\t\t\t设置: [\n\t\t\t\t\t\t0 ,//美女\n\t\t\t\t\t\t0 ,//动漫\n\t\t\t\t\t\t0 ,//风景\n\t\t\t\t\t\t0 ,//游戏\n\t\t\t\t\t\t0 ,//文字\n\t\t\t\t\t\t0 ,//视觉\n\t\t\t\t\t\t0 ,//情感\n\t\t\t\t\t\t0 ,//设计\n\t\t\t\t\t\t0 ,//明星\n\t\t\t\t\t\t0 ,//物语\n\t\t\t\t\t\t0 ,//男人\n\t\t\t\t\t\t0 ,//机械\n\t\t\t\t\t\t0 ,//城市\n\t\t\t\t\t\t0 ,//动物\n\t\t\t\t\t\t1 ,//最新(默认)\n\t\t\t\t\t]\n\t\t\t}\n\t}\n\n\n\n//显示的是动图封面，video无法适配？\n动态 = {\n\t\t最新: 0 ,\n\t\t热门: 0 ,\n\t\t推荐: 0 ,\n\t\t分类: {\n\t\t\t\t显示: 1 ,\n\t\t\t\t设置: [\n\t\t\t\t\t\t1 ,//动漫新番\n\t\t\t\t\t\t1 ,//网络红人\n\t\t\t\t\t\t1 ,//游戏专区\n\t\t\t\t\t\t1 ,//热门推荐\n\t\t\t\t\t\t1 ,//风景名胜\n\t\t\t\t\t\t1 ,//其他资源\n\t\t\t\t\t\t1 ,//歌曲热舞\n\t\t\t\t\t\t1 ,//娱乐明星\n\t\t\t\t\t\t1 ,//热门影视\n\t\t\t\t\t\t1 ,//动物萌宠\n\t\t\t\t\t]\n\t\t\t}\n\t}\n\n\n\n头像 = {\n\t\t最新: 1 ,\n\t\t分类: {\n\t\t\t\t显示: 1 ,\n\t\t\t\t设置: [\n\t\t\t\t\t\t1 ,//个性男头\n\t\t\t\t\t\t1 ,//个性女头\n\t\t\t\t\t\t1 ,//动漫\n\t\t\t\t\t\t1 ,//情侣\n\t\t\t\t\t\t1 ,//有趣\n\t\t\t\t\t\t1 ,//萌宠\n\t\t\t\t\t\t1 ,//emo\n\t\t\t\t\t\t1 ,//简约\n\t\t\t\t\t\t1 ,//欧美\n\t\t\t\t\t\t1 ,//治愈\n\t\t\t\t\t\t1 ,//风景\n\t\t\t\t\t\t1 ,//古风\n\t\t\t\t\t\t1 ,//文字\n\t\t\t\t\t\t1 ,//团头\n\t\t\t\t\t\t1 ,//萌娃\n\t\t\t\t\t\t1 ,//明星\n\t\t\t\t\t\t1 ,//星座\n\t\t\t\t\t\t1 ,//节日\n\t\t\t\t\t]\n\t\t\t}\n\t}\n\n\n\n//发现的路径是唯一的\n//四个分类只能存在一个发现\n发现 = {\n\t\t竖屏: 0 ,\n\t\t横屏: 0 ,\n\t\t动态: 0 ,\n\t\t头像: 1\n\t}\n\n\n\n其他 = {\n\n//额外增加的列表显示随机封面\n\t\t随机封面: 1 ,\n\n//额外增加的列表显示随机语句\n\t\t随机语句: 0 ,\n\n//开启搜索时使用源变量搜索\n//禁用会使用验证码搜索\n\t\t变量搜索: 1 ,\n\n//加载正文第二页时弹窗历史浏览\n\t\t历史浏览: 0 ,\n\n//正文右上角显示跳转按钮\n\t\t跳转按钮: 1\n\t}\n\n\n\nuri = '.adesk.com'\nuid = baseUrl.match(/\\/v\\d\\/([^\\/]+)/)[1]\nif(uid=='wallpaper'){k=1}else{k=2}\nv = String(source.getVariable())\nK = v.match(/^[1234]$/)?v:k\nV = (横屏.搜索||竖屏.搜索)?(其他.变量搜索? k:K):K",
    "sourceGroup": "资源绘,动漫漫画",
    "sourceIcon": "https://i0.hdslb.com/bfs/face/982a96bbebd11773dd03b913e2eacf3a42fe6d0a.jpg",
    "sourceName": "壁纸喵",
    "sourceUrl": "http://service.picasso.adesk.com/v1/lightwp/category",
    "style": "h6{\n\tmargin:0;\n\ttext-align:center;\n}\nimg,button{\n\tmargin:1.25%;\n\tborder-radius:20px;\n}\nbutton{\n\toutline:none;\n\tfloat:right;\n\tposition:sticky;\n\ttop:0;\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1436,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217737488,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "http://m.haoqu99.com/favicon.ico",
    "sourceName": "好趣网（电视频道）",
    "sourceUrl": "http://m.haoqu99.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1447,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217439611,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://www.kan.cc/statics/logo/favicon.ico",
    "sourceName": "看韩剧",
    "sourceUrl": "https://www.kan.cc",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1452,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "html",
    "ruleContent": "<js>\norg.jsoup.Jsoup.parse(result).select(\"html\").html()\n</js>##<div class=\"banquan\">[\\s\\S]*</div>",
    "ruleImage": "",
    "ruleLink": "@js:result=baseUrl",
    "rulePubDate": "",
    "ruleTitle": "title@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "",
    "sourceGroup": "美涩",
    "sourceIcon": "",
    "sourceName": "94ij视频网",
    "sourceUrl": "https://www.106niuav.com/",
    "style": "",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1460,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217097585,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://www.iqiyipic.com/common/fix/h5-read//logo2.png",
    "sourceName": "爱奇艺文学",
    "sourceUrl": "https://wenxue.m.iqiyi.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1461,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217053941,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://yuedu-cms.bj.bcebos.com/v1/wap/logo_300x300-1493192637282.png",
    "sourceName": "百度阅读",
    "sourceUrl": "https://yd.baidu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1464,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217610419,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/acgboxlink/acgbox/logo/86742914_p0.png",
    "sourceName": "咪咕阅读",
    "sourceUrl": "https://wap.cmread.com/r/p/index.jsp",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1466,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216987951,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://wap.hanwujinian.com/public/static/wap/wap1/image/icon/img_1.png",
    "sourceName": "寒武纪年",
    "sourceUrl": "http://wap.hanwujinian.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1468,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216968241,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://qidian.gtimg.com/hongxium/img/activities/download-header-logo-dda168a850.png",
    "sourceName": "红袖添香",
    "sourceUrl": "https://m.hongxiu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1470,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216943714,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m.gongzicp.com/favicon.ico",
    "sourceName": "长佩文学",
    "sourceUrl": "https://m.gongzicp.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1473,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216934121,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m.ruochu.com/favicon.ico",
    "sourceName": "若初文学",
    "sourceUrl": "https://m.ruochu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1479,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216922671,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".excerpt",
    "ruleImage": "img@data-src",
    "ruleLink": "tag.a.1@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "time@text",
    "ruleTitle": "h2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "玩机教程::https://www.yeyulingfeng.com/category/jishu/wjjc\n网站开发::https://www.yeyulingfeng.com/category/jishu/wzkf\nWordPress::https://www.yeyulingfeng.com/category/jishu/wordpress\n模板主题::https://www.yeyulingfeng.com/category/muban/wzmb\n网站源码::https://www.yeyulingfeng.com/category/muban/wzym\n手机应用::https://www.yeyulingfeng.com/category/ruan/sjyy\n电脑应用::https://www.yeyulingfeng.com/category/ruan/dnyy\niOS专区::https://www.yeyulingfeng.com/category/ruan/ios\n编译开发::https://www.yeyulingfeng.com/category/ruan/kaifa\n游戏::https://www.yeyulingfeng.com/category/pojie/game\n好片推荐::https://www.yeyulingfeng.com/category/qita/dianying\n最新活动::https://www.yeyulingfeng.com/category/huodong/xin\n科技资讯::https://www.yeyulingfeng.com/category/huodong/no1\n实用趣站::https://www.yeyulingfeng.com/category/qita/website\n零散资源::https://www.yeyulingfeng.com/category/qita/scattered\n谈天说地::https://www.yeyulingfeng.com/category/qita/tanhua",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://www.yeyulingfeng.com/favicon.ico",
    "sourceName": "夜雨聆风",
    "sourceUrl": "https://www.yeyulingfeng.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1480,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216894789,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".item",
    "ruleImage": "tag.img@data-original",
    "ruleLink": "tag.a.2@href",
    "ruleNextPage": ".next@href",
    "rulePubDate": "{{@@tag.a.1@text}} · {{@@tag.span.0@text}}",
    "ruleTitle": "tag.a.2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "//搜索项在“=”后面输入要找的内容\n最新::https://www.ghxi.com/category/all\n🔎搜索::https://www.ghxi.com/?s=\n安卓::https://www.ghxi.com/category/all/android\n电脑::https://www.ghxi.com/category/all/pcsoft\n补丁/注册机::https://www.ghxi.com/category/all/patch\n系统::https://www.ghxi.com/category/all/system?btwaf=21993210\n文章::https://www.ghxi.com/category/all/course",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://www.ghxi.com/favicon.ico",
    "sourceName": "果核剥壳",
    "sourceUrl": "https://www.ghxi.com",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1516,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775589978571,
    "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": "涩图",
    "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": 1519,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "injectJs": "\n// 是书籍详情页时\nif( /m\\.jjwxc\\.net\\/book2\\/\\d+/.test(window.location.href) ){\n\n\n// 获取书籍链接\n\t\tbookid = String(window.location.href).replace(/^.*\\//,'');\n\t\tbooksrc = \"http://app-cdn.jjwxc.net/androidapi/novelbasicinfo?novelId=\"+bookid;\n\n\n// 新建a标签\n\t\tA = document.createElement(\"a\");\n\n\t\tA.href = `legado://import/addToBookshelf?src=${ encodeURIComponent(booksrc) },{origin:'https://m.jjwxc.net/channel/'}`;\n\n\t\tA.innerHTML = `<button style=\"outline:none; position:fixed; bottom:7%; right:7%; z-index:999; border-radius:5px; color:#166188;\"><b>加入书架</b></button>`;\n\n\n//添加到body\n\t\tdocument.body.appendChild(A);\n\t}",
    "lastUpdateTime": 1773215836646,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m-static.jjwxc.net/images/wap/logo2.png",
    "sourceName": "晋江文学\n高级搜索",
    "sourceUrl": "https://m.jjwxc.net/assort",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1530,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773215679992,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://cdn.wyteam.net/webapps/maccms/template/blueghost/img/favicon.ico",
    "sourceName": "APP影院",
    "sourceUrl": "https://app.movie",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1549,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773215426987,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://777tv.net/upload/site/20200423-1/20482c8759cc264267864b0143e5c853.png",
    "sourceName": "小鸭影音",
    "sourceUrl": "https://777tv.net",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 1551,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\t\"User-Agent\": \"GSApp/6.5.0 (Android) Android/8.0.0 wap/LND-AL40\",\n\t\"Host\": \"router.gamersky.com\"\n}",
    "lastUpdateTime": 1773215593441,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.listElements[1:]",
    "ruleDescription": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<title>{{$.title}}</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.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\n</head>\n<body>\n\n\n<ul>\n<li><img src=\"https://image.gamersky.com/webimg13/acg/new/logo.png\" data-src=\"{{$..sourceImageUrl##\\n##\"></li>\n<li><img src=\"https://image.gamersky.com/webimg13/acg/new/logo.png\" data-src=\"}}\"></li>\n</ul>\n\n</body>\n<script>\n\troot = document.getElementsByTagName('ul')[0]\n\n\tlazyIntersection = new IntersectionObserver(entires => {\n\t\tentires.forEach((item,index) => {\n\t\t\tif(item.isIntersecting){\n\t\t\t\titem.target.src = item.target.getAttribute('data-src')\n\t\t\t\tlazyIntersection.unobserve(item.target)\n\t\t\t}\n\t\t})\n\t}, {\n\t\troot: root,\n\t\tthreshold: [0],\n\t\trootMargin:\"0px\"\n\t})\n\n\nArray.from(document.getElementsByTagName('img')).forEach(item => {\n\tlazyIntersection.observe(item)\n})\n\n//查看大图插件\nnew Viewer(root,{title:false,interval:3000})\n</script>\n</html>",
    "ruleImage": "$..imageInfes[0].sourceImageUrl",
    "ruleLink": "http://router.gamersky.com/@/postPage/index/6.5.0/0/App_Android,{\n  \"body\": {\n     \"postUrl\": \"{{$.contentUrl}}\"\n  },\n  \"method\": \"POST\"\n}",
    "ruleNextPage": "page",
    "rulePubDate": "{{result.postInfo.imageInfes.length}}p　发布于 {{$.publishTimeCaption}}",
    "ruleTitle": "{{result.postInfo.imageInfes.length}}p {{$.title}}##^0p.*|^\\d+p\\s*(【.*?】\\s*)?",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "让绚丽的色彩永不消褪::http://router.gamersky.com/@/subjectPage/index/6.5.0/0/App_Android,{\"body\": {\"contentUrl\": \"https://club.gamersky.com/topic/22539\",\"pageIndex\": {{page-1}},\"pageSize\": 20,\"contentType\": \"quanBu\",\"order\": \"zuiXinFaBu\"},\"method\": \"POST\"}\n\n用分享的壁纸联结你我::http://router.gamersky.com/@/clubPage/index/6.5.0/0/App_Android,{\"body\": {\"contentUrl\": \"https://club.gamersky.com/forum/108\",\"pageIndex\": {{page-1}},\"pageSize\": 20,\"contentType\": \"quanBu\",\"order\": \"zuiXinFaBu\"},\"method\": \"POST\"}",
    "sourceComment": "模板适合能获取全部图片链接的时候\n\n\n//IntersectionObserver实现图片懒加载\n\nhttps://blog.csdn.net/Deku_Ln/article/details/110707800?utm_source=app&app_version=5.5.0&code=app_1562916241&uLinkId=usr1mkqgl919blen",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/babyyvh/bakuaiwu/img/favicon.ico",
    "sourceName": "游民星空\n壁纸专区",
    "sourceUrl": "https://www.gamersky.com",
    "style": "*{\n\tmargin: 0;\n\tpadding: 0\n}\nul{\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": 1553,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1872452602,484889130&fm=11&gp=0.jpg",
    "sourceName": "泡饭影视",
    "sourceUrl": "https://paofans.tv",
    "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": 1775590061414,
    "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": "美涩",
    "sourceIcon": "https://18oc.life/18link/18j/images/favicon.ico",
    "sourceName": "18J-夜明空",
    "sourceUrl": "https://18oj.life/label/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1554,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773215340196,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "//备用\nhttp://vip.liu16.com\nhttp://s.liu16.com\nhttp://vip.catv1.com\nhttps://www.123mfk.com",
    "sourceGroup": "影视",
    "sourceIcon": "http://cmdy.liu16.com/favicon.ico",
    "sourceName": "草民网",
    "sourceUrl": "http://cmdy.liu16.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1555,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773215283519,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://pic.imgdb.cn/item/600c29733ffa7d37b3d57e0b.png",
    "sourceName": "迅播影院",
    "sourceUrl": "http://www.xunbody.com",
    "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": 1775591761348,
    "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": "美涩",
    "sourceIcon": "https://img4.tuwandata.com/v2/thumb/jpg/NWFkMywxMTI1LDAsOSwzLDEsLTEsTk9ORSwsLDkw/u/res.tuwan.com/zipgoods/20190508/3b6408c569f8eb687a8dd6eb3578bdb9.jpg",
    "sourceName": "Pornkai",
    "sourceUrl": "https://pornkai.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1575,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207533530,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://p3-search.byteimg.com/obj/labis/0a5502af6b95a6b49d3acd488aae8398",
    "sourceName": "完美看看",
    "sourceUrl": "https://www.wanmeikk.me",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1585,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773215014358,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "http://pic.rmb.bdstatic.com/10cea0842ca8b793e2bf2a4a2c568806.jpeg",
    "sourceName": "触乐",
    "sourceUrl": "http://www.chuapp.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1586,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773215150523,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "http://www.milimili.tv/favicon.ico",
    "sourceName": "游研社",
    "sourceUrl": "https://www.yystv.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1587,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773215224330,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "https://pic.imgdb.cn/item/600c29733ffa7d37b3d57e0b.png",
    "sourceName": "游戏时光",
    "sourceUrl": "https://www.vgtime.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1589,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214936067,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "http://www.gamelook.com.cn/wp-content/uploads/2019/05/g003.png",
    "sourceName": "Game Look",
    "sourceUrl": "http://www.gamelook.com.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1593,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216377852,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "http://www.ccrip.com/favicon.ico",
    "sourceName": "私房歌",
    "sourceUrl": "http://www.ningmeng.name",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1595,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214684166,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "#post_container li",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.1@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@@tag.span.0@text}} · {{@@tag.span.1@text}} · {{@@tag.span.-1@text}}",
    "ruleTitle": "tag.a.1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新音乐::http://www.tyqyyw.com/\n轻音乐::http://www.tyqyyw.com/qingyinyue/\n有声音乐::http://www.tyqyyw.com/yuansheng/\n有声电台::http://www.tyqyyw.com/diantai/\n音乐心情::http://www.tyqyyw.com/shenghuo/\n专辑曲目::http://www.tyqyyw.com/wusun/\n轻音乐MV::http://www.tyqyyw.com/mtv/",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://p0.ssl.qhimgs1.com/bdr/300_115_/t02efd713d9df4684ec.jpg",
    "sourceName": "田园轻乐",
    "sourceUrl": "http://www.tyqyyw.com",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 1597,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214609918,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.post",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.page_next@tag.a@href",
    "rulePubDate": "{{@@class.date_y@text}}{{@@class.small-number@text}}",
    "ruleTitle": "tag.a.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "古典民乐::http://www.52qingyin.cn/gudianminyue\n天籁钢琴::http://www.52qingyin.cn/tianlaigangqin\n经典配乐::http://www.52qingyin.cn/jingdianpeiyue\n浅吟心殇::http://www.52qingyin.cn/yinchang\n古风歌曲::http://www.52qingyin.cn/gufenggequ\n新世纪::http://www.52qingyin.cn/newage\n专辑推荐::http://www.52qingyin.cn/tag/zhuanjituijian\n网络美文::http://www.52qingyin.cn/wangluomeiwen\n网络投稿::http://www.52qingyin.cn/contribute\n音画插图::http://www.52qingyin.cn/yinhuatuwen",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://p3.ssl.qhimgs1.com/bdr/300_115_/t02f63c0e5683609e13.jpg",
    "sourceName": "清音陋屋",
    "sourceUrl": "http://www.52qingyin.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1601,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214480110,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.fl_g",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.dt@tag.a@href@js:\"https://www.xn--cjztj18l.com/\"+result",
    "rulePubDate": "tag.dd@text",
    "ruleTitle": "tag.dt@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "https://www.xn--cjztj18l.com/template/xinshutouch/touch/static/images/shaizi.gif",
    "sourceName": "神秘网",
    "sourceUrl": "https://www.xn--cjztj18l.com/forum.php",
    "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": 1775591767759,
    "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": "美涩",
    "sourceIcon": "https://img4.tuwandata.com/v2/thumb/jpg/NWFkMywxMTI1LDAsOSwzLDEsLTEsTk9ORSwsLDkw/u/res.tuwan.com/zipgoods/20190508/3b6408c569f8eb687a8dd6eb3578bdb9.jpg",
    "sourceName": "🎞黑料网",
    "sourceUrl": "https://qbfeh.rcrfesyj.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1603,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214447360,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://qn13.tool.lu/201710/15/103319bpfNNx3ST9v8UKtO_56x56.png",
    "sourceName": "在线工具",
    "sourceUrl": "https://tool.lu",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1605,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775590466136,
    "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": "美涩",
    "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": false,
    "lastUpdateTime": 1773214408104,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_10555_1607931189/256",
    "sourceName": "QQ阅读",
    "sourceUrl": "https://ubook.reader.qq.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1607,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775590497300,
    "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": "美涩",
    "sourceIcon": "http://p6.itc.cn/images01/20201202/8d012ed623d647a78635557e7d235ab6.jpeg",
    "sourceName": "黑料不打洋🥝",
    "sourceUrl": "https://heiliao1076.pro/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1608,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214399110,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://qidian.gtimg.com/qdm/img/favicon.fb0b7.ico",
    "sourceName": "起点中文",
    "sourceUrl": "https://m.qidian.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1609,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214390730,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m.jjwxc.com/images/wap/logo2.png",
    "sourceName": "晋江文学",
    "sourceUrl": "https://m.jjwxc.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1610,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775592043181,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "by：Lingsanya\n2024年10月更新",
    "sourceGroup": "推书点评",
    "sourceIcon": "https://i.postimg.cc/hPp6qQdP/MTXX-PT20241027142957519-edit-971919037356380.jpg",
    "sourceName": "芭时圈子",
    "sourceUrl": "https://www.basequan.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1611,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214378410,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_1129886_1605601942/256",
    "sourceName": "纵横中文",
    "sourceUrl": "https://m.zongheng.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1612,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767885329911,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.itemList",
    "ruleDescription": "<html><head><meta charset=\"utf-8\"><title>开眼</title><style>body{background-color:#8e8e8e}</style></head><body><a href=\"{{$.data.content.data.webUrl.raw||$.data.webUrl.raw}}\" style=\"color:#e0e0e0\">原文地址</a>\n<p style=\"text-align:center;color:#ffffff\"><strong>{{$.data.content.data.title||$.data.title}}</strong></p><video src=\"{{$.data.content.data.playUrl||$.data.playUrl}}\" width=\"350px\" height=\"200px\" controls=\"controls\"  poster=\"{{$.data.content.data.cover.feed||$.data.feed}}\"></video><p style=\"color:#f0f0f0;text-indent: 2em\">{{$.data.content.data.description||$.data.description}}</p></body></html>",
    "ruleImage": "$.data.content.data.cover.feed",
    "ruleLink": "$.data.text||$.data.content.data.webUrl.raw||$.data.web.raw",
    "ruleNextPage": "{{$.nextPageUrl}}&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28",
    "rulePubDate": "$.data.header.description",
    "ruleTitle": "$.data.text||$.data.content.data.title||$.data.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "日报::http://baobab.kaiyanapp.com/api/v5/index/tab/feed?udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&广告::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=16&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&剧情::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=12&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&运动::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1022&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&创意::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=2&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&旅行::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1019&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&记录::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=24&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&音乐::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1018&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&影视::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1025&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&科技::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1024&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&开胃::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1020&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&游戏::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=30&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&搞笑::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=140&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&时尚::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=26&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&综艺::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=28&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&生活::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=666&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28",
    "sourceGroup": "新闻",
    "sourceIcon": "https://api.xinac.net/icon/?url=https://www.biacgn.com/favicon.ico",
    "sourceName": "开眼",
    "sourceUrl": "http://baobab.kaiyanapp.com/api/v1/tag/videos?id=12&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1613,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214357989,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://img3.doubanio.com/f/talion/7c6364aadf368dc0210173c940cfd0f64ceddc66/pics/icon/m_logo_200.png",
    "sourceName": "豆瓣",
    "sourceUrl": "https://m.douban.com/home_guide",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1614,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214340370,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://pp.myapp.com/ma_icon/0/icon_52497318_1606469267/96",
    "sourceName": "品玩",
    "sourceUrl": "https://www.pingwest.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1615,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214331540,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://www.zhangzs.com/wp-content/uploads/2020/05/favicon.png",
    "sourceName": "涨姿势",
    "sourceUrl": "https://www.zhangzs.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1621,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773223692010,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://noveless.com/favicon.ico",
    "sourceName": "理想生活实验室",
    "sourceUrl": "https://www.toodaylab.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1622,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214212753,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://p1.ssl.qhimgs1.com/t01c3bbb937fc25bdcb.png",
    "sourceName": "人人都是产品经理",
    "sourceUrl": "http://www.woshipm.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1628,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213905683,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.item",
    "ruleImage": "tag.img@data-original",
    "ruleLink": "tag.a.2@href",
    "ruleNextPage": "class.next@href",
    "rulePubDate": "{{@@tag.a.1@text}} · {{@@tag.span.0@text}}",
    "ruleTitle": "tag.a.2@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "//搜索项在“=”后面输入要找的内容\n最新::https://www.ghpym.com/category/all\n【搜索】::https://www.ghpym.com/?s=\n安卓::https://www.ghpym.com/category/all/android\n电脑::https://www.ghpym.com/category/all/pcsoft\n补丁/注册机::https://www.ghpym.com/category/all/patch\n系统::https://www.ghpym.com/category/all/system?btwaf=21993210\n文章::https://www.ghpym.com/category/all/course",
    "sourceGroup": "新闻",
    "sourceIcon": "https://www.ghpym.com/favicon.ico",
    "sourceName": "果核剥壳",
    "sourceUrl": "https://www.ghpym.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1632,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213763820,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "http://pub.szzhangchu.com/web/v4.2/images/logo.png",
    "sourceName": "掌厨",
    "sourceUrl": "http://h5.izhangchu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1633,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213750372,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://p0.qhimg.com/t01922e79121dace8ba.png",
    "sourceName": "香哈",
    "sourceUrl": "https://m.xiangha.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1635,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213725312,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://b.bdstatic.com/searchbox/mappconsole/image/20181207/1544154193-98547.png",
    "sourceName": "下厨房",
    "sourceUrl": "https://www.xiachufang.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1639,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213689655,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_9907_1611223786/256",
    "sourceName": "美食天下",
    "sourceUrl": "https://m.meishichina.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1641,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213619532,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://static.36krcdn.com/36kr-mobile/static/logo.78b8c245.png",
    "sourceName": "36氪",
    "sourceUrl": "https://36kr.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1642,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213602063,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://bkimg.cdn.bcebos.com/pic/c8ea15ce36d3d539399dfbaa3087e950352ab033",
    "sourceName": "果壳",
    "sourceUrl": "https://m.guokr.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1643,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213585314,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://img.huxiucdn.com/share/article2020.png",
    "sourceName": "虎嗅",
    "sourceUrl": "https://m.huxiu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1644,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213480409,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_10323034_1606127172/256",
    "sourceName": "IT之家",
    "sourceUrl": "https://m.ithome.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1647,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213470767,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_52685852_1603933852/256",
    "sourceName": "少数派",
    "sourceUrl": "https://sspai.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1648,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213449162,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://m.tmtpost.com/public/css/img/m-logo.png",
    "sourceName": "钛媒体",
    "sourceUrl": "https://m.tmtpost.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1665,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "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": 1773212764521,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "广告屏蔽测试，阅读版本需要22.11.08以上",
    "sourceGroup": "美涩",
    "sourceIcon": "https://www.fulitu.cc/usr/themes/photograph/favicon.png",
    "sourceName": "福利图",
    "sourceUrl": "https://www.fulitu.cc",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1671,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "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": 1773212282326,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "广告屏蔽测试，阅读版本需要22.11.08以上",
    "sourceGroup": "美涩",
    "sourceIcon": "https://www.fulitu.cc/usr/themes/photograph/favicon.png",
    "sourceName": "webtoon",
    "sourceUrl": "https://h-webtoon.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1677,
    "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": 1773211062266,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".common-bookele",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@p.0@text}} {{@p.1@text}}",
    "ruleTitle": "a.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceComment": "广告屏蔽测试，阅读版本需要22.11.08以上",
    "sourceGroup": "美涩",
    "sourceIcon": "https://www.fulitu.cc/usr/themes/photograph/favicon.png",
    "sourceName": "辣文文学",
    "sourceUrl": "https://sspwk.me/booksort/6/{{page}}.html",
    "type": 0,
    "variableComment": "<div class=\"common-bookele\">\n<h3><a href=\"/novel/151097.html\">恨一个人-BL</a></h3>\n<p>作者：<strong>寒衣</strong></p>\n<p class=\"lastupdate\">更新时间：<time>2021-07-01</time></p>\n<span class=\"abstract\"><a href=\"/novel/151097.html\">恨一个人-BL已更新，本站除提供免费在线阅读外（无广告哦）并提供《恨一个人-BL》txt电子书下载服务。</a></span>\n</div>"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1686,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214368832,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://bkimg.cdn.bcebos.com/pic/7e3e6709c93d70cf0048e2ddffdcd100bba12bab?x-bce-process=image/resize,m_lfit,w_268,limit_1/format,f_jpg",
    "sourceName": "潇湘书院",
    "sourceUrl": "https://m.xxsy.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1689,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773224898009,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.list-wrapper@div",
    "ruleContent": "<js>\nvar list=result.match(/backupUrl.*?(360p.*?)\\\\\"\\]/)[1];\nlist=list.replace(/[[\\\\\"]/g,\"\");\nlist=list.replace(/backupUrl\\:/g,\"<\\/details><video src=\\\"\");\n//java.log(list)\ntitle=java.getString(\"title@text\",false);\ntitle1=java.getString(\"class.up-name@text\",false);\npic=java.getString(\"img@src\",false);\nresult=\"<p style=\\\"color:\\#000000\\;text-indent: 2em\\\">\"+title+\"<p>作者:\"+title1+\"</p><details>\"+list+\"\\\" width=\\\"100%\\\" controls height=\\\"285px\\\" poster=\\\"\"+pic+\"\\\"><\\/video>\";\n\n\"<html><head><meta charset=\\\"utf-8\\\"><title>影视</title><style>body\\{background-color:\\#ffffff\\}</style></head>\"+ \"<body>\"+result+\"</body></html>\"\n</js>",
    "ruleImage": "class.list-content-cover@img@src##\\|imageslim",
    "ruleLink": "class.list-content-title.0@a@href##ac##?ac=",
    "ruleNextPage": "page",
    "rulePubDate": "播放:{{@@tag.span.0@text}} 评论:{{@@tag.span.1@text}} 时长:{{@@tag.span.2@text}}",
    "ruleTitle": "class.list-content-title.0@a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "宅舞::https://www.acfun.cn/v/list134/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n颜值::https://www.acfun.cn/v/list218/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n综合舞蹈::https://www.acfun.cn/v/list135/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n偶像::https://www.acfun.cn/v/list129/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n中国舞::https://www.acfun.cn/v/list208/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n治愈系::https://www.acfun.cn/v/list215/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n原创·翻唱::https://www.acfun.cn/v/list136/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n演奏·乐器::https://www.acfun.cn/v/list137/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\nVocaloid::https://www.acfun.cn/v/list103/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n综合音乐::https://www.acfun.cn/v/list139/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n音乐选集·电台::https://www.acfun.cn/v/list185/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n动画综合::https://www.acfun.cn/v/list106/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n短片·手书·配音::https://www.acfun.cn/v/list190/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\nMAD·AMV::https://www.acfun.cn/v/list107/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\nMMD·3D::https://www.acfun.cn/v/list108/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n虚拟偶像::https://www.acfun.cn/v/list207/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n动画资讯::https://www.acfun.cn/v/list159/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\nCOSPLAY·声优::https://www.acfun.cn/v/list133/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n特摄::https://www.acfun.cn/v/list99/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n番剧二创::https://www.acfun.cn/v/list212/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\nTV动画::https://www.acfun.cn/v/list67/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n剧场动画::https://www.acfun.cn/v/list180/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n国产动画::https://www.acfun.cn/v/list120/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n影视混剪::https://www.acfun.cn/v/list219/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n预告·花絮::https://www.acfun.cn/v/list192/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n电影杂谈::https://www.acfun.cn/v/list193/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n剧透社::https://www.acfun.cn/v/list194/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n综艺show::https://www.acfun.cn/v/list195/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}\n纪录片·短片:https://www.acfun.cn/v/list196/index.htm?sortField=rankScore&duration=all&date=default&page={{page}}",
    "sourceComment": "更多订阅源>请关注微信公众号\n爱你小可爱\n免费获取>为防失联(务必关注微信公众号)\n搜索关键词(可以是书名，作者名，歌曲名，视频名等)\n首次使用\n右上角>设置源变量(搜索关键词)>确定>下拉刷新\n更换(搜索关键词)\n\n右上角>设置源变量(搜索关键词)>确定>清除>下拉刷新",
    "sourceGroup": "影视",
    "sourceIcon": "https://p.ananas.chaoxing.com/star3/origin/05bd7b19cfe4d19f88b599530da5725f.jpg",
    "sourceName": "acfun",
    "sourceUrl": "https://m.acfun.cn/v/list134/index.htmhghhbhn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1693,
    "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>",
    "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={{v=source.getVariable();if(/^\\s*$/.test(v)||v==null)source.setVariable('偷情');source.getVariable()}}&orderType=1&page={{page}}&searchType=1&size=40\n\n最新排行::/api/video/app/video/search?category=&orderType=1&page={{page}}&searchType=1&size=40\n\n观看排行::/api/video/app/video/search?category=&orderType=3&page={{page}}&searchType=1&size=40\n\n收藏排行::/api/video/app/video/search?category=&orderType=4&page={{page}}&searchType=1&size=40\n\n国产视频::/api/video/app/video/search?orderType=1&origin=1&page={{page}}&searchType=1&size=40\n\n日本AV::/api/video/app/video/search?orderType=1&origin=2&page={{page}}&searchType=1&size=40\n\nH动漫::/api/video/app/video/search?orderType=1&origin=3&page={{page}}&searchType=1&size=40\n\n自拍偷拍::/api/video/app/video/search?category=自拍偷拍&orderType=1&page={{page}}&searchType=1&size=40\n\n主播福利::/api/video/app/video/search?category=主播福利&orderType=1&page={{page}}&searchType=1&size=40\n\n制服诱惑\n丝袜网袜::/api/video/app/video/search?tag=丝袜网袜&page={{page}}&searchType=1&size=40\n\n泳装水着::/api/video/app/video/search?tag=泳装水着&page={{page}}&searchType=1&size=40\n\nJK制服::/api/video/app/video/search?tag=JK制服&page={{page}}&searchType=1&size=40\n\n女仆::/api/video/app/video/search?tag=女仆&page={{page}}&searchType=1&size=40\n\n吊带袜::/api/video/app/video/search?tag=吊带袜&page={{page}}&searchType=1&size=40\n\n兔女郎::/api/video/app/video/search?tag=兔女郎&page={{page}}&searchType=1&size=40\n\n身材样貌\n少女萝莉::/api/video/app/video/search?tag=少女萝莉&page={{page}}&searchType=1&size=40\n\n白虎::/api/video/app/video/search?tag=白虎&page={{page}}&searchType=1&size=40\n\n苗条::/api/video/app/video/search?tag=苗条&page={{page}}&searchType=1&size=40\n\n美腿美脚::/api/video/app/video/search?tag=美腿美脚&page={{page}}&searchType=1&size=40\n\n美臀::/api/video/app/video/search?tag=美臀&page={{page}}&searchType=1&size=40\n\n熟女::/api/video/app/video/search?tag=熟女&page={{page}}&searchType=1&size=40\n\n巨乳::/api/video/app/video/search?tag=巨乳&page={{page}}&searchType=1&size=40\n\n交合喜好\n颜射::/api/video/app/video/search?tag=颜射&page={{page}}&searchType=1&size=40\n\n肛交::/api/video/app/video/search?tag=肛交&page={{page}}&searchType=1&size=40\n\n潮吹::/api/video/app/video/search?tag=潮吹&page={{page}}&searchType=1&size=40\n\n口交::/api/video/app/video/search?tag=口交&page={{page}}&searchType=1&size=40\n\n69::/api/video/app/video/search?tag=69&page={{page}}&searchType=1&size=40\n\n乳交::/api/video/app/video/search?tag=乳交&page={{page}}&searchType=1&size=40\n\n内射中出::/api/video/app/video/search?tag=内射中出&page={{page}}&searchType=1&size=40\n\n刺激玩法\n捆绑调教::/api/video/app/video/search?tag=捆绑调教&page={{page}}&searchType=1&size=40\n\n痴女痴汉::/api/video/app/video/search?tag=痴女痴汉&page={{page}}&searchType=1&size=40\n\n强奸轮奸::/api/video/app/video/search?tag=强奸轮奸&page={{page}}&searchType=1&size=40\n\n3P群交::/api/video/app/video/search?tag=3P群交&page={{page}}&searchType=1&size=40\n\n奇异催眠::/api/video/app/video/search?tag=奇异催眠&page={{page}}&searchType=1&size=40\n\n出轨::/api/video/app/video/search?tag=出轨&page={{page}}&searchType=1&size=40\n\nNTR::/api/video/app/video/search?tag=NTR&page={{page}}&searchType=1&size=40\n\n角色扮演\n医生护士::/api/video/app/video/search?tag=医生护士&page={{page}}&searchType=1&size=40\n\n空中女郎::/api/video/app/video/search?tag=空中女郎&page={{page}}&searchType=1&size=40\n\n未亡人::/api/video/app/video/search?tag=未亡人&page={{page}}&searchType=1&size=40\n\n老师校园::/api/video/app/video/search?tag=老师校园&page={{page}}&searchType=1&size=40\n\n人妻主妇::/api/video/app/video/search?tag=人妻主妇&page={{page}}&searchType=1&size=40\n\nOL::/api/video/app/video/search?tag=OL&page={{page}}&searchType=1&size=40\n\n姐姐妹妹::/api/video/app/video/search?tag=姐姐妹妹&page={{page}}&searchType=1&size=40\n\n母亲女儿::/api/video/app/video/search?tag=母亲女儿&page={{page}}&searchType=1&size=40\n\nTS人妖::/api/video/app/video/search?tag=TS人妖&page={{page}}&searchType=1&size=40\n\n女高中生::/api/video/app/video/search?tag=女高中生&page={{page}}&searchType=1&size=40",
    "sourceGroup": "美涩",
    "sourceIcon": "https://www.fulitu.cc/usr/themes/photograph/favicon.png",
    "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": 4892,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1767885096249,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.bookLists[*]",
    "ruleContent": "<js>\nvar json=JSON.parse(result).bookList;\n\n\"<h3>[书单]\"+json.title+\"</h3>\"+\"<p>创建者:\"+json.author.nickname+\"</p><p>说明:\"+json.desc+\"</p><p>更新时间:\"+json.updated+\"</p><p>标签:\"+json.tags.join().replace(/\\w+/g,\"\")+\"</p><p>★★★★★★★★★★★★★★★★★★★★</p>\"+json.books.map((x,i)=>\"<h4>No.\"+(i+1)+\"</h4><img src='http://statics.zhuishushenqi.com\"+x.book.cover+\"' width='130px' height='180px'>\"+\"<p>书名:《\"+x.book.title+\"》</p><p>作者:\"+x.book.author+\"</p><p>分类:\"+x.book.majorCate+\",\"+x.book.minorCate+\"</p><p>简介:\"+x.comment+\"</p><p>字数:\"+x.book.wordCount+\"</p><p>人数:\"+x.book.latelyFollower+\"</p><p>读者留存:\"+x.book.retentionRatio.toFixed(1)+\"%</p><p>******************************************</p>\").join(\"\\n\")\n</js>",
    "ruleImage": "http://statics.zhuishushenqi.com{$.cover}",
    "ruleLink": "http://api.zhuishushenqi.com/book-list/{$._id}",
    "rulePubDate": "$.author",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceComment": "by 书海人生 ?",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=3937164469,357845050&fm=58&s=1CC7885A4CF3349A7D2B0FAB0300701E&bpow=200&bpoh=200",
    "sourceName": "追书神器\n[推书]",
    "sourceUrl": "http://api.zhuishushenqi.com/book-list?duration=all&sort=created&start=0&limit=50&gender=male",
    "style": "body{padding:10px;line-height:2em;letter-spacing: 2px;background:floralwhite;font-family:sans-serif-Helvetica;word-wrap: break-word}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4962,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773237020114,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.imgtextlist@li",
    "ruleContent": "class.bdbtn greenBtn@href<js>java.ajax('https://m.txt80.com/'+result)</js>class.module mt10@all",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@@tag.p.1@text}} {{@@tag.p.2@text}} {{@@tag.p.3@text}} {{@@tag.p.4@text}}",
    "ruleTitle": "{{@@img@alt##图片}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://m.txt80.cc/\n书库::https://m.txt80.cc/all/\n排行::https://m.txt80.cc/hot/\n推荐::https://m.txt80.cc/recommendall/\n最新::https://m.txt80.cc/new/\n都市小说::https://m.txt80.com/dushi/\n女生言情::https://m.txt80.com/yanqing/\n玄幻奇幻::https://m.txt80.com/xuanhuan/\n武侠仙侠::https://m.txt80.com/wuxia/\n网游竞技::https://m.txt80.com/wangyou/\n军事历史::https://m.txt80.com/junshi/\n科幻灵异::https://m.txt80.com/kehuan/\n耽美同人::https://m.txt80.com/danmei/\n文学名著::https://m.txt80.com/wenxue/\n其他小说::https://m.txt80.com/qita/",
    "sourceComment": "::",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m.txt80.com/favicon.ico",
    "sourceName": "八零电子",
    "sourceUrl": "https://m.txt80.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4971,
    "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}",
    "lastUpdateTime": 1773237159670,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://s1.hdslb.com/bfs/maoer/assets/images/index/favicon.ico",
    "sourceName": "猫耳有声",
    "sourceUrl": "https://m.missevan.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4974,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775592028794,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.data[*]",
    "ruleImage": "$.cover",
    "ruleLink": "https://baidu.com/s?wd={{$.title}}",
    "ruleNextPage": "page",
    "rulePubDate": "📕{{$.source_name}}  👤{{$.author_nickname}}  🏷️{{$.second_type_name}}  ✏️{{$.word_number_name}}",
    "ruleTitle": "$.title",
    "shouldOverrideUrlLoading": "if (/s?wd=/.test(url)) {\n  java.searchBook(java.toURL(url).searchParams.get('wd').split(' ')[0]);\n  1;\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "畅销榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=best_sell&date_type=day&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n人气榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=popular&date_type=month&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n收藏榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=coll&date_type=month&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n完本榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=finish&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n字数榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=word_number&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n新书榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=new_book&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n全部::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=0&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n起点::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=1&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n晋江::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=2&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n刺猬猫::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=3&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n飞卢::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=4&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n纵横::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=5&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n有毒::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=6&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n息壤::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=7&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n17k::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=8&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n豆瓣::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=9&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\nSF::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=10&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n铁血::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=11&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n番茄::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=12&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}",
    "sourceGroup": "推书点评",
    "sourceIcon": "https://s3.ax1x.com/2020/11/19/DnHXhq.png",
    "sourceName": "推书君子",
    "sourceUrl": "http://www.tuishujun.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4992,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775591474569,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "（自用）精品网站合集",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://imgsa.baidu.com/forum/pic/item/d0c8a786c9177f3e8ebb0cca7ecf3bc79e3d566e.jpg",
    "sourceName": "好用网站",
    "sourceUrl": "https://lkssite.vip/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 39590,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775745799191,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".module-search-item||.module-item",
    "ruleContent": "<js>\nvar list = [], a=1, u = baseUrl, last = 1\ntry {\n\tvar lasta = java.getString(\"text.尾页@href\")\n  last = lasta.match(/page\\/(\\d+)\\.html/)[1]\n\t} catch (e) {}\nfunction getImg(url) {\n\ta++\n\tvar res = java.ajax(url)\n\tjava.setContent(res)\n\tvar imgs = java.getString(\".news-content@p@tag.img@src\")\n\tlist=list.concat(imgs.split('\\n'))\n\tif (a<=last) {\n\t\tvar u2 = u.replace(/page\\/(\\d+).html/, \"page/\"+a+\".html\")\n\t\tgetImg(u2)\n\t}\n}\ngetImg(u)\njava.log(list.length)\r\nli='\\n'\r\nfor(i in list){\r\n\t\tli += '<li><img src=\"https://cci1.dimtown.com/logo/logo.png\" data-src=\"'+list[i]+'\"></li>\\n'\r\n\t}\r\nli\r\n</js>\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>{{@@h1@text}}</h3>\r\n<h6>{{@@.split-line@text}}</h6>\r\n<ul id=\"box\">\r\n{{result}}\r\n</ul>\r\n\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>\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>",
    "ruleImage": "img@data-src",
    "ruleLink": "a.0@href##.html##/page/1.html",
    "ruleNextPage": "text.下一页@href",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::/index.php/vod/search.html?wd={{source.getVariable()}}\n百炼成神图库::/index.php/art/show/id/1.html\n斗破苍穹图库::/index.php/art/show/id/2.html\n完美世界图库::/index.php/art/show/id/3.html\n斗罗大陆图库::/index.php/art/show/id/4.html\n斗罗大陆2图库::/index.php/art/show/id/5.html\n吞噬星空图库::/index.php/art/show/id/59.html\n遮天图库::/index.php/art/show/id/80.html\n仙逆图库::/index.php/art/show/id/89.html\n诛仙图库::/index.php/art/show/id/97.html\n成人修仙传图库::/index.php/art/show/id/105.html\n剑来图库::/index.php/art/show/id/113.html\n王者荣耀图库::/index.php/art/show/id/119.html\n天行九歌图库::/index.php/art/show/id/128.html\n大主宰图库::/index.php/art/show/id/131.html\n师兄啊师兄图库::/index.php/art/show/id/134.html\n穿越火线图库::/index.php/art/show/id/141.html\n牧神记图库::/index.php/art/show/id/146.html\n仙武传图库::/index.php/art/show/id/150.html\n沧元图图库::/index.php/art/show/id/154.html\n神印王座图库::/index.php/art/show/id/159.html\n逆天邪神图库::/index.php/art/show/id/165.html\n逆天至尊图库::/index.php/art/show/id/171.html\n武动乾坤图库::/index.php/art/show/id/174.html\n灵笼图库::/index.php/art/show/id/178.html\n永劫无间图库::/index.php/art/show/id/181.html\n不良人图库::/index.php/art/show/id/187.html\n星辰变图库::/index.php/art/show/id/190.html\n哪吒图库::/index.php/art/show/id/193.html\n神墓图库::/index.php/art/show/id/195.html\n紫川图库::/index.php/art/show/id/198.html\n炼气十万年图库::/index.php/art/show/id/201.html\n妖神记图库::/index.php/art/show/id/227.html\n元龙图库::/index.php/art/show/id/233.html\n成人漫画图库::/index.php/art/show/id/246.html\n雄兵连图库::/index.php/art/show/id/258.html\n崩坏图库::/index.php/art/show/id/265.html\n原神图库::/index.php/art/show/id/288.html\n氪金玩家图库::/index.php/art/show/id/312.html\n神国之上图库::/index.php/art/show/id/319.html\n最新资讯::/index.php/art/type/id/318.html",
    "sourceComment": "26.03.20小说迷 修复正文",
    "sourceGroup": "涩图",
    "sourceIcon": "https://www.dmtr24.xyz/upload/art_editor/20260304-2/ac46e47a35133eb6d3e06ace2e3a52be.jpg",
    "sourceName": "动漫同人",
    "sourceUrl": "https://www.dmtr24.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
  }
]