[
  {
    "articleStyle": 0,
    "customOrder": -10106490,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774456811984,
    "loadWithBaseUrl": true,
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": -10106489,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "ruleArticles": "id.content@h3",
    "ruleLink": "a@href",
    "ruleTitle": "a@textNodes",
    "singleUrl": true,
    "sortUrl": "首页::https://legado.aoaostar.com",
    "sourceGroup": "书源",
    "sourceIcon": "https://www.aoaostar.com/favicon.ico",
    "sourceName": "阅读APP源 - AOAOSTAR",
    "sourceUrl": "https://legado.aoaostar.com"
  },
  {
    "articleStyle": 0,
    "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": -10106488,
    "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,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": -10106487,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216968241,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://qidian.gtimg.com/hongxium/img/activities/download-header-logo-dda168a850.png",
    "sourceName": "红袖添香",
    "sourceUrl": "https://m.hongxiu.com"
  },
  {
    "articleStyle": 1,
    "customOrder": -10106486,
    "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}",
    "jsLib": "function bDe(data){\n\tconst {java} = this;\n\treturn java.base64Decode(data.match(/base64,(.*?),/)[1])\n\t}",
    "lastUpdateTime": 1765913009369,
    "loadWithBaseUrl": true,
    "loginUi": "◎分类1◎\n【序号或链接】《列表名称》@图片链接@『简介』\n------------------\n◎分类2◎\n【序号或链接】《列表名称》@图片链接@『简介』\n❗️0、2、开始❗️\n\n❗️0、2、结束❗️",
    "ruleArticles": "<js>\njson=[];\nlistStr = bDe(baseUrl);\nlist=listStr.split('\\n');\nfor(i = 0;i<list.length;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、2、开始❗️\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  <style>\n    body {\n      font-family: Arial, sans-serif;\n      margin: 0;\n      padding: 10px;\n      background-color: #f9f9f9;\n    }\n    h1 {\n      font-size: 20px;\n      margin: 0 0 10px 0;\n      color: #333;\n    }\n    h2 {\n      font-size: 16px;\n      margin: 0 0 8px 0;\n      color: #555;\n    }\n    .container {\n      display: flex;\n      flex-direction: column;\n      gap: 10px;\n    }\n    .code-input, .preview {\n      width: 100%;\n    }\n    .code-wrapper {\n      display: flex;\n      gap: 10px;\n    }\n    .line-numbers {\n      width: 30px;\n      padding: 8px 0;\n      font-family: monospace;\n      font-size: 14px;\n      text-align: right;\n      color: #888;\n      background-color: #f0f0f0;\n      border: 1px solid #ccc;\n      border-radius: 4px;\n      box-sizing: border-box;\n      user-select: none;\n      overflow-y: hidden;\n      height: 150px;\n    }\n    textarea {\n      width: 100%;\n      height: 150px;\n      padding: 8px;\n      font-family: monospace;\n      font-size: 14px;\n      border: 1px solid #ccc;\n      border-radius: 4px;\n      box-sizing: border-box;\n      line-height: 1.5;\n      resize: none;\n      overflow-y: auto;\n    }\n    .preview {\n      border: 1px solid #ccc;\n      padding: 10px;\n      border-radius: 4px;\n      background-color: #fff;\n    }\n    .console {\n      margin-top: 10px;\n      padding: 8px;\n      background-color: #000;\n      color: #fff;\n      font-family: monospace;\n      font-size: 12px;\n      border-radius: 4px;\n      height: 80px;\n      overflow-y: auto;\n      box-sizing: border-box;\n    }\n    button {\n      margin-top: 8px;\n      padding: 8px 16px;\n      font-size: 14px;\n      background-color: #007bff;\n      color: white;\n      border: none;\n      border-radius: 4px;\n      cursor: pointer;\n    }\n    button:hover {\n      background-color: #0056b3;\n    }\n    .preview-output {\n      height: 400px;\n      border: 1px solid #ccc;\n      border-radius: 4px;\n      background-color: #fff;\n      overflow: auto;\n      box-sizing: border-box;\n      padding: 10px;\n    }\n    .button-group {\n      display: flex;\n      gap: 10px;\n      align-items: center;\n    }\n    .tab-group {\n      display: flex;\n      gap: 10px;\n      margin-bottom: 10px;\n    }\n    .tab-button {\n      padding: 8px 16px;\n      font-size: 14px;\n      background-color: #f0f0f0;\n      color: #333;\n      border: 1px solid #ccc;\n      border-radius: 4px;\n      cursor: pointer;\n    }\n    .tab-button.active {\n      background-color: #007bff;\n      color: white;\n      border-color: #007bff;\n    }\n    .code-input {\n      display: none;\n    }\n    .code-input.active {\n      display: block;\n    }\n    .preview-content {\n      display: none;\n    }\n    .preview-content.active {\n      display: block;\n    }\n    .mode-switch {\n      margin-top: 10px;\n    }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n      <div class=\"preview\">\n      <h2>控制台输出</h2>\n      <div id=\"consoleOutput\" class=\"console\"></div>\n    </div>\n    <div class=\"code-input active\">\n    \n      <div class=\"tab-group\">\n        <button class=\"tab-button active\" onclick=\"switchTab('previewTab')\">预览代码</button>\n        <button class=\"tab-button\" onclick=\"switchTab('debugTab')\">调试 JS</button>\n        <button class=\"tab-button\" onclick=\"switchTab('injectTab')\">注入 JS</button>\n        <button onclick=\"clearConsole()\">清除控制台</button>\n      </div>\n      \n      <div class=\"code-wrapper\">\n        <div id=\"lineNumbers\" class=\"line-numbers\">1</div>\n        <textarea id=\"codeInput\" placeholder=\"请输入 HTML、CSS 或 JavaScript 代码...\" oninput=\"updateLineNumbers()\" onscroll=\"syncLineNumbers()\"></textarea>\n      </div>\n      \n      <div class=\"button-group\">\n        <button id=\"previewButton\" onclick=\"previewCode()\">确认</button>\n        <button id=\"debugButton\" onclick=\"debugJS()\" style=\"display: none;\">调试</button>\n        <button id=\"injectButton\" onclick=\"injectJS()\" style=\"display: none;\">注入</button>\n        <button onclick=\"switchMode('code')\">代码</button>\n        <button onclick=\"switchMode('url')\">网址</button>\n        <button onclick=\"switchPreview('preview')\">预览</button>\n        <button onclick=\"switchPreview('source')\">源码</button>\n         <button onclick=\"clearCode()\">清除</button>\n      </div>\n      \n    </div>\n\n\n        <div class=\"preview\">\n      <div id=\"previewOutput\" class=\"preview-content active preview-output\"></div>\n      <div id=\"sourceCodeOutput\" class=\"preview-content preview-output\"></div>\n    </div>\n  </div>\n\n  <script>\n    // 数据存储\n    var codeData = {\n      preview: '',\n      debug: '',\n      inject: ''\n    };\n\n    // 当前选中的标签\n    var currentTab = 'previewTab';\n\n    // 当前模式（代码模式或网址模式）\n    var currentMode = 'code';\n\n    // 切换标签\n    function switchTab(tab) {\n      currentTab = tab;\n\n      // 更新按钮状态\n      document.querySelectorAll('.tab-button').forEach(button => button.classList.remove('active'));\n      document.querySelector(`.tab-button[onclick=\"switchTab('${tab}')\"]`).classList.add('active');\n\n      // 显示对应的输入框和按钮\n      var codeInput = document.getElementById('codeInput');\n      var previewButton = document.getElementById('previewButton');\n      var debugButton = document.getElementById('debugButton');\n      var injectButton = document.getElementById('injectButton');\n\n      if (tab === 'previewTab') {\n        codeInput.value = codeData.preview;\n        previewButton.style.display = 'inline-block';\n        debugButton.style.display = 'none';\n        injectButton.style.display = 'none';\n      } else if (tab === 'debugTab') {\n        codeInput.value = codeData.debug;\n        previewButton.style.display = 'none';\n        debugButton.style.display = 'inline-block';\n        injectButton.style.display = 'none';\n      } else if (tab === 'injectTab') {\n        codeInput.value = codeData.inject;\n        previewButton.style.display = 'none';\n        debugButton.style.display = 'none';\n        injectButton.style.display = 'inline-block';\n      }\n\n      // 更新行号\n      updateLineNumbers();\n    }\nfunction clearCode(){\nif (currentTab === 'previewTab') {\n        codeData.preview = \"\"\n        codeInput.value = \"\";\n      } else if (currentTab === 'debugTab') {\n      codeData.debug = \"\";\n        codeInput.value = \"\"\n        \n      } else if (currentTab === 'injectTab') {\n      codeData.inject =\"\";\n        codeInput.value = \"\";\n      }\n\n}\n    // 更新行号\n    function updateLineNumbers() {\n      var codeInput = document.getElementById('codeInput');\n      var lineNumbers = document.getElementById('lineNumbers');\n      var lines = codeInput.value.split('\\n').length;\n      lineNumbers.innerHTML = Array.from({ length: lines }, (_, i) => i + 1).join('<br>');\n\n      // 保存当前输入框的数据\n      if (currentTab === 'previewTab') {\n        codeData.preview = codeInput.value;\n      } else if (currentTab === 'debugTab') {\n        codeData.debug = codeInput.value;\n      } else if (currentTab === 'injectTab') {\n        codeData.inject = codeInput.value;\n      }\n    }\n\n    // 同步行号滚动\n    function syncLineNumbers() {\n      var codeInput = document.getElementById('codeInput');\n      var lineNumbers = document.getElementById('lineNumbers');\n      lineNumbers.scrollTop = codeInput.scrollTop;\n    }\n\n    // 捕获本页面的 console 输出\n    var consoleOutput = document.getElementById('consoleOutput');\n    var originalConsole = {\n      log: console.log,\n      error: console.error,\n      warn: console.warn,\n      info: console.info,\n    };\n\n    function captureConsole(type) {\n      return function () {\n        // 将输出保存到控制台输出区域\n        var message = Array.from(arguments).join(' ');\n        var logElement = document.createElement('div');\n        logElement.textContent = `[${type}] ${message}`;\n        consoleOutput.appendChild(logElement);\n\n        // 调用原始的 console 方法\n        originalConsole[type].apply(console, arguments);\n      };\n    }\n\n    // 重写本页面的 console 方法\n    console.log = captureConsole('log');\n    console.error = captureConsole('error');\n    console.warn = captureConsole('warn');\n    console.info = captureConsole('info');\n\n    // 预览代码\n    function previewCode() {\n      if (currentMode === 'code') {\n        // 获取用户输入的代码\n        var code = codeData.preview;\n\n        // 清空预览区域\n        var previewOutput = document.getElementById('previewOutput');\n        previewOutput.innerHTML = '';\n\n        // 移除所有 <a> 标签的 target=\"_blank\" 属性\n        code = code.replace(/<a\\s+([^>]*)\\s*target=\"_blank\"\\s*([^>]*)>/gi, '<a $1 $2>');\n\n        // 创建一个 iframe 来隔离代码环境\n        var iframe = document.createElement('iframe');\n        iframe.style.width = '100%';\n        iframe.style.height = '100%';\n        iframe.style.border = 'none';\n        previewOutput.appendChild(iframe);\n\n        // 捕获 iframe 的 console 输出\n        var iframeWindow = iframe.contentWindow;\n        iframeWindow.console.log = captureConsole('log');\n        iframeWindow.console.error = captureConsole('error');\n        iframeWindow.console.warn = captureConsole('warn');\n        iframeWindow.console.info = captureConsole('info');\n\n        // 将处理后的代码写入 iframe\n        var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;\n        iframeDoc.open();\n        iframeDoc.write(`\n          <!DOCTYPE html>\n          <html>\n            <head>\n              <style>\n                ${code.includes('<style>') ? '' : 'body { margin: 0; padding: 0; }'}\n              </style>\n            </head>\n            <body>\n              ${code}\n              <script>\n                ${code.includes('<script>') ? '' : ''}\n              <\\/script>\n            </body>\n          </html>\n        `);\n        iframeDoc.close();\n\n        // 显示源码\n        updateSourceCode(iframeDoc.documentElement.outerHTML);\n      } else if (currentMode === 'url') {\n        // 加载网址\n        var url = codeData.preview.trim();\n        if (!url) {\n          console.error('请输入网址。');\n          return;\n        }\n\n        // 清空预览区域\n        var previewOutput = document.getElementById('previewOutput');\n        previewOutput.innerHTML = '';\n\n        // 创建一个 iframe 来加载网址\n        var iframe = document.createElement('iframe');\n        iframe.style.width = '100%';\n        iframe.style.height = '100%';\n        iframe.style.border = 'none';\n        previewOutput.appendChild(iframe);\n\n        // 捕获 iframe 的 console 输出\n        var iframeWindow = iframe.contentWindow;\n        iframeWindow.console.log = captureConsole('log');\n        iframeWindow.console.error = captureConsole('error');\n        iframeWindow.console.warn = captureConsole('warn');\n        iframeWindow.console.info = captureConsole('info');\n\n        // 加载网址\n        iframe.src = url;\n\n        // 显示源码\n        iframe.onload = function () {\n          var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;\n          updateSourceCode(iframeDoc.documentElement.outerHTML);\n        };\n      }\n    }\n\n    // 更新源码预览\n    function updateSourceCode(source) {\n      var sourceCodeOutput = document.getElementById('sourceCodeOutput');\n      sourceCodeOutput.textContent = source;\n    }\n\n    // 调试 JS 函数\n    function debugJS() {\n      var code = codeData.debug;\n\n      try {\n        // 使用 eval 执行 JavaScript 代码\n        eval(code);\n      } catch (error) {\n        // 捕获错误并解析行号\n        var errorLine = error.stack.match(/<anonymous>:(\\d+):\\d+/);\n        if (errorLine) {\n          console.error(`调试失败，第 ${errorLine[1]} 行：${error.message}`);\n        } else {\n          console.error('调试失败:', error);\n        }\n      }\n    }\n\n    // 注入 JS 到 iframe\n    function injectJS() {\n      var code = codeData.inject;\n      var iframe = document.querySelector('#previewOutput iframe');\n\n      if (!iframe) {\n        console.error('请先点击“确认预览”创建 iframe。');\n        return;\n      }\n\n      try {\n        // 获取 iframe 的 window 对象\n        var iframeWindow = iframe.contentWindow;\n\n        // 在 iframe 中执行 JavaScript 代码\n        iframeWindow.eval(code);\n\n        // 更新源码预览\n        var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;\n        updateSourceCode(iframeDoc.documentElement.outerHTML);\n      } catch (error) {\n        console.error('注入 JS 失败:', error);\n      }\n    }\n\n    // 切换预览效果和源码预览\n    function switchPreview(type) {\n      var previewOutput = document.getElementById('previewOutput');\n      var sourceCodeOutput = document.getElementById('sourceCodeOutput');\n\n      if (type === 'preview') {\n        previewOutput.classList.add('active');\n        sourceCodeOutput.classList.remove('active');\n      } else if (type === 'source') {\n        previewOutput.classList.remove('active');\n        sourceCodeOutput.classList.add('active');\n      }\n    }\n\n    // 切换模式（代码模式或网址模式）\n    function switchMode(mode) {\n      currentMode = mode;\n      var codeInput = document.getElementById('codeInput');\n\n      if (mode === 'code') {\n        codeInput.placeholder = '请输入 HTML、CSS 或 JavaScript 代码...';\n      } else if (mode === 'url') {\n        codeInput.placeholder = '输入网址，例如：https://example.com';\n      }\n    }\n\n    // 清除控制台\n    function clearConsole() {\n      var consoleOutput = document.getElementById('consoleOutput');\n      consoleOutput.innerHTML = '';\n    }\n\n    // 默认显示预览标签\n    switchTab('previewTab');\n  </script>\n</body>\n</html>\n\n❗️0、2、结束❗️\n\n\n❗️0、3、开始❗️\n<html lang=\"zh-CN\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <title>阅读导入</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n    <meta name=\"description\" content=\"洛娅橙，开源阅读软件，书源、订阅源、字典、净化等json、txt文件导入，小说书籍地址导入,base64，链接净化,精华规则。\">\n    <style>\n        :root {\n            --back-color: #fffbf0;\n            --font-color: black;\n        }\n\n        @media (prefers-color-scheme: dark) {\n            :root {\n                --back-color: #1a1a1a;\n                --font-color: white;\n            }\n        }\n\n        html {\n            background-color: var(--back-color);\n            color: var(--font-color);\n        }\n\n        .hidden {\n            display: none;\n        }\n\n        body {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            min-height: 80vh;\n        }\n\n        textarea {\n            font-size: 12px;\n            color: var(--font-color);\n            width: 96%;\n            margin: 16px 2%;\n            padding: 8px;\n            background-color: rgba(80, 155, 84, 0.1);\n            border-radius: 10px;\n            border: 2px solid rgba(76, 175, 80, 0.3);\n        }\n\n        textarea:focus {\n            border-color: rgb(76, 175, 80);\n            outline: none;\n            box-shadow: 0 0 8px rgba(255, 107, 107, 0.3);\n        }\n\n        button {\n            user-select: none;\n            color: white;\n            border: none;\n            border-radius: 4px;\n            height: 40px;\n            width: 80px;\n            overflow: hidden;\n            transition: 0.3s;\n            font-size: 16px;\n        }\n\n        .an-s {\n            transform: scale(0.8);\n        }\n\n        #btn1 {\n            background-color: rgba(76, 175, 80, 0.9);\n        }\n\n        #btn2 {\n            background-color: rgba(175, 76, 80, 0.9);\n        }\n\n        #btn3 {\n            background-color: rgba(76, 80, 175, 0.9);\n        }\n    </style>\n</head>\n\n<body>\n    <h1 class=\"hidden\">在线导入-洛娅橙</h1>\n    <textarea id=\"copyt\" rows=\"9\" placeholder=\"在这里填写链接\n支持书源、订阅源、净化、字典等json或txt文件\n支持书籍网址（需要有对应的书源）\n支持data或base64加密链接\"></textarea>\n    <br>\n    <button id=\"btn1\" onclick=\"copy(1)\">导入</button>\n    <br>\n    <button id=\"btn2\" onclick=\"cleart()\">清空</button>\n    <br>\n    <button id=\"btn3\" onclick=\"copy(3)\">净化</button>\n    <script>\n        function copy(x) {\n            const btn = document.getElementById('btn' + x);\n            btn.classList.add('an-s');\n            const cpt = document.getElementById(\"copyt\");\n            let url = cpt.value;\n            if (/[删除去消].*(?:[删除去掉].*[中汉我]|汉.*字|中.*文|文.*字)/.test(url)) url = url.replace(/[abphm]站|[一-ꀀ]/g, '');\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');\n            if (url.startsWith('data:')) url = atob(url.match(/^[^,]+,([^\\s,]+)/)[1]);\n            else if (/^[\\da-z\\+\\/]{2,}=*$/i.test(url)) url = atob(url);\n            setTimeout(() => {\n                btn.classList.remove('an-s');\n            }, 500);\n            if (url == '') { alert('请输入内容'); return }\n            if (/^https?\\:/i.test(url) && x == 1) {\n                if (/\\/.+\\.(?:json|txt)/i.test(url)) {\n                    window.location.href = 'legado://import/Source?src=' + url;\n                }\n                else if (/\\/.+\\.(?:zip)/i.test(url)) {\n                    window.location.href = 'legado://import/bookSource?src=' + url;\n                }\n                else {\n                    window.location.href = 'legado://import/addToBookshelf?src=' + url;\n                }\n            }\n            else if (x == 3) { cpt.value = url; }\n            else alert('链接格式错误');\n        }\n        function cleart() {\n            const btn = document.getElementById('btn2');\n            btn.classList.add('an-s');\n            const cpt = document.getElementById(\"copyt\");\n            setTimeout(() => {\n                btn.classList.remove('an-s');\n            }, 300);\n            cpt.value = '';\n        }\n    </script>\n</body>\n\n</html>\n❗️0、3、结束❗️\n\n//发现规则\n❗️0、1、开始❗️\n <script>\n    function $(selector) {\n        return document.querySelector(selector);\n    }\n\n    function $$(selector) {\n        return document.querySelectorAll(selector);\n    }\n</script>\n<style>\n    button,\n    input {\n        margin: 5px\n    }\n\n    #basic-addon1,\n    #replaceSpan1 {\n        background-color: Azure;\n        padding: 3px\n    }\n\n    button,\n    input[type=\"button\"] {\n        outline: none;\n        height: 30px;\n        box-shadow: 2px 1px #CFD8DC;\n        background: #fff;\n        border: 1px solid #607D8B;\n        border-radius: 6px;\n    }\n\n    textarea {\n        background-color: GhostWhite;\n        border: 0px solid black;\n        width: 100%\n    }\n\n    .bt1,\n    .bt4 {\n        background: #fff;\n        width: 29%;\n        border: 1px solid green;\n        border-radius: 10px;\n    }\n\n    #bt4:active,\n    #bt2:active,\n    #bt3:active {\n        background: #CFD8DC\n    }\n\n    #bt4,\n    #bt2,\n    #bt3 {\n        background: #fff;\n        width: 100%;\n        border: 1px solid #607D8B;\n        border-radius: 6px;\n    }\n\n    button:active,\n    input[type=\"button\"]:active {\n        background: #C8E6C9\n    }\n\n    #success {\n        text-align: center;\n        border: 1px solid green;\n        position: fixed;\n        left: 40%;\n        width: 20%;\n        background: #fff;\n        border-radius: 5px;\n        display: none;\n        top: 2px;\n        box-shadow: 2px 1px 3px #CFD8DC;\n    }\n\n    #pageclass,\n    #pageclass2 {\n        width: 100%\n    }\n\n    .pageclass {\n        font-size: 10px\n    }\n</style>\n<a href=\"https://www.sojson.com/rehtml\">html转义</a>&nbsp;&nbsp;<a href=\"http://www.jsons.cn/urlencode/\">URL解码</a>\n<textarea rows=\"23\" 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<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<button onclick=\"copyText()\" id=\"bt2\">一键复制</button>\n<button onclick=\"formatJson()\" id=\"bt3\">格式化Json</button>\n<div class=\"pageclass\">输入分类里的链接，如： /sort/xuanhuan/ 写成 /sort/分类/ </div>\n<input id=\"pageclass\">\n<div class=\"pageclass\">输入带有翻页的链接，如： /sort/xuanhuan/2.html 写成 /sort/分类/页码.html </div>\n<input id=\"pageclass2\">\n<div class=\"pageclass\"> 第一页跟第二页不一样？ 输入不一样的部分（第二页比第一页多出来的部分） 如 index_页码.html </div>\n<input id=\"pageclass3\">\n<button onclick=\"okpage()\">确认加入翻页（仅旧发现）</button>\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            <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            <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        var 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    var 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    var 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</script>\n<script>\n    function pp(a) {\n        b = a.replace(/\\\\/, '');\n        $(\"#textReplace\").value += b;\n        $(\"#textReplace\").focus()\n    }\n\n    function dis() {\n        document.getElementById(\"bt1\").disabled = true;\n        document.getElementById(\"bt2\").disabled = true\n    }\n\n    function di() {\n        document.getElementById(\"bt1\").disabled = false;\n        document.getElementById(\"bt2\").disabled = false\n    }\n\n    function parseToDOM(str) {\n        var div = document.createElement(\"div\");\n        if (typeof str == \"string\") div.innerHTML = str;\n        return div.querySelectorAll(\"a\");;\n    }\n\n    function okpage() {\n        pageclass = $(\"#pageclass\").value.replace(/(\\+|\\?)/g, '\\\\$1');\n        pageclass = pageclass.replace(/分类$/g, '(.*)').replace(/分类(?!$)/g, '(.*?)');\n        reg = new RegExp(pageclass)\n        pageclass2 = $(\"#pageclass2\").value;\n        html = $(\"#input\").value;\n        pageclass2 = pageclass2.replace(/页码/g, '{\\{page}}');\n        pageclass3 = $(\"#pageclass3\").value.replace(/(\\+|\\?)/g, '\\\\$1').replace(/页码/, '{\\{page}}')\n        h = \"\";\n        if (html.match(/::/) && pageclass != \"\" && pageclass2 != \"\" && !/{\\{page}}/.test(html)) {\n            list = html.split(/\\n|&&/);\n            for (i in list) {\n                if (list[i].match(/::/)) {\n                    text = list[i].match(/(.*?)::/)[1];\n                    href = list[i].match(/::(.*)/)[1]\n                    if (href.match(reg)) {\n                        href = pageclass2.replace(/分类/g, href.match(reg)[1])\n                    } else {\n                        href = href\n                    }\n                    h += text + \"::\" + href + \"\\n\"\n                }\n            }\n            $(\"#input\").value = h\n        }\n        html = $(\"#input\").value\n        if (pageclass3 != \"\" && !/<,.*?>/.test(html)) {\n            reg = new RegExp(\"(\" + pageclass3 + \")\", 'g');\n            $(\"#input\").value = html.replace(reg, '<,$1>')\n        }\n    }\n\n    function getInput() {\n        var str = $(\"#input\").value;\n        var list = parseToDOM(str);\n        if (list.length == 0) {\n            $(\"#input\").placeholder = \"格式化失败！！！请检查是否为带html标签的文本\"\n        } else {\n            var html = \"\";\n            for (let i = 0; i < list.length; i++) {\n                let text = list[i].innerText;\n                let href = list[i].getAttribute(\"href\");\n                html += text + \"::\" + href + \"\\n\"\n            }\n            $(\"#pageclass\").value = html.match(/.*?::(.*?)\\n/)[1];\n            $(\"#input\").value = html\n        }\n    }\n\n    function getInput2() {\n        var str = $(\"#input\").value;\n        var list = parseToDOM(str);\n        if (list.length == 0) {\n            $(\"#input\").placeholder = \"格式化失败！！！请检查是否为带html标签的文本\"\n        } else {\n            var html = [];\n            for (let i = 0; i < list.length; i++) {\n                let text = list[i].innerText;\n                let href = list[i].getAttribute(\"href\");\n                html.push({\n                    title: text,\n                    url: href\n                })\n            }\n            $(\"#input\").value = JSON.stringify(html)\n        }\n    }\n\n    function getInput3() {\n        text = $(\"#input\").value;\n        if (text.match(/\\&\\&|::/g)) {\n            text = text.replace(/\\&\\&/g, '\\n');\n            list = text.match(/.*::.*/g);\n            html = [];\n            for (i = 0; i < list.length; i++) {\n                l = list[i].match(/(.*)::(.*)/);\n                title = l[1];\n                url = l[2]\n                html.push({\n                    title: title,\n                    url: url\n                })\n            }\n            $(\"#input\").value = JSON.stringify(html)\n        } else {\n            html = \"\";\n            json = eval(text);\n            for (i in json) {\n                html += json[i].title + \"::\" + json[i].url + \"\\n\"\n            }\n            $(\"#input\").value = html\n        }\n    }\n\n    function getInput4(flag, x) {\n        text = $(\"#input\").value;\n        if (flag == 1) {\n            json = JSON.parse(text);\n            for (i in json) {\n                json[i].style = {}\n                json[i].style.layout_flexGrow = 1\n            }\n        } else if (flag == 2) {\n            data = {\n                1: 1,\n                2: 0.4,\n                3: 0.25,\n                4: 0.2\n            }\n            json = JSON.parse(text);\n            for (i in json) {\n                json[i].style.layout_flexBasisPercent = data[x]\n            }\n        }\n        $(\"#input\").value = JSON.stringify(json)\n    }\n\n    function setVisible(idElement, visible) {\n        var obj = document.getElementById(idElement);\n        obj.style.visibility = visible ? \"visible\" : \"hidden\";\n    }\n\n    function 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    }\n\n    function 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    }\n\n    function onMatch() {\n        if (!isValidFields()) 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) {\n            var re = \"\";\n            var strResult = \"共找到 \" + result.length + \" 处匹配：\\r\\n\";\n            document.getElementById(\"textResult\").innerText = strResult;\n            for (var i = 0; i < result.length; ++i) {\n                re += result[i] + \"\\r\\n\";\n            }\n            document.getElementById(\"textMatchResult\").value = re;\n        } else {\n            document.getElementById(\"textMatchResult\").value = \"匹配位置：\" + regex.lastIndex + \"\\r\\n匹配结果：\" + result[0];\n        }\n        return true;\n    }\n\n    function 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    }\n\n    function 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    });\n\n    function Empty() {\n        $(\"#textSour\").value = \"\";\n        $(\"#textMatchResult\").value = \"\";\n        $(\"#textReplace\").value = \"\";\n        $(\"#textReplaceResult\").value = \"\";\n        $(\"#textSour\").select();\n    }\n    \n\n// 格式方法\n// 公共方法\nfunction transitionJsonToString (jsonObj, callback) {\n\t// 转换后的jsonObj受体对象\n\tvar _jsonObj = null;\n\t// 判断传入的jsonObj对象是不是字符串，如果是字符串需要先转换为对象，再转换为字符串，这样做是为了保证转换后的字符串为双引号\n\tif (Object.prototype.toString.call(jsonObj) !== \"[object String]\") {\n\t\ttry {\n\t\t\t_jsonObj = JSON.stringify(jsonObj);\n\t\t} catch (error) {\n\t\t\t// 转换失败错误信息\n\t\t\talert('您传递的json数据格式有误，请核对...');\n\t\t\talert(error);\n\t\t\tcallback(error);\n\t\t}\n\t} else {\n\t\ttry {\n\t\t\tjsonObj = jsonObj.replace(/(\\')/g, '\\\"');\n\t\t\t_jsonObj = JSON.stringify(JSON.parse(jsonObj));\n\t\t} catch (error) {\n\t\t\t// 转换失败错误信息\n\t\t\talert('您传递的json数据格式有误，请核对...');\n\t\t\talert(error);\n\t\t\tcallback(error);\n\t\t}\n\t}\n\treturn _jsonObj;\n}\n// callback为数据格式化错误的时候处理函数\nfunction formatJson (callback) {\n    var jsonObj = $(\"#input\").value;\n\t// 正则表达式匹配规则变量\n\tvar reg = null;\n\t// 转换后的字符串变量\n\tvar formatted = '';\n\t// 换行缩进位数\n\tvar pad = 0;\n\t// 一个tab对应空格位数\n\tvar PADDING = '  ';\n\t// json对象转换为字符串变量\n\tvar jsonString = transitionJsonToString(jsonObj, callback);\n\tif (!jsonString) {\n\t\treturn jsonString;\n\t}\n\t// 存储需要特殊处理的字符串段\n\tvar _index = [];\n\t// 存储需要特殊处理的“再数组中的开始位置变量索引\n\tvar _indexStart = null;\n\t// 存储需要特殊处理的“再数组中的结束位置变量索引\n\tvar _indexEnd = null;\n\t// 将jsonString字符串内容通过\\r\\n符分割成数组\n\tvar jsonArray = [];\n    // 正则匹配到{,}符号则在两边添加回车换行\n\tjsonString = jsonString.replace(/([\\{\\}])/g, '\\r\\n$1\\r\\n');\n\t// 正则匹配到[,]符号则在两边添加回车换行\n\tjsonString = jsonString.replace(/([\\[\\]])/g, '\\r\\n$1\\r\\n');\n\t// 正则匹配到,符号则在两边添加回车换行\n\tjsonString = jsonString.replace(/(\\,)/g, '$1\\r\\n');\n\t// 正则匹配到要超过一行的换行需要改为一行\n\tjsonString = jsonString.replace(/(\\r\\n\\r\\n)/g, '\\r\\n');\n\t// 正则匹配到单独处于一行的,符号时需要去掉换行，将,置于同行\n\tjsonString = jsonString.replace(/\\r\\n\\,/g, ',');\n\t// 特殊处理双引号中的内容\n\tjsonArray = jsonString.split('\\r\\n');\n\tjsonArray.forEach(function (node, index) {\n\t\t// 获取当前字符串段中\"的数量\n\t\tvar num = node.match(/\\\"/g) ? node.match(/\\\"/g).length : 0;\n\t\t// 判断num是否为奇数来确定是否需要特殊处理\n\t\tif (num % 2 && !_indexStart) {\n\t\t\t_indexStart = index\n\t\t}\n\t\tif (num % 2 && _indexStart && _indexStart != index) {\n\t\t\t_indexEnd = index\n\t\t}\n\t\t// 将需要特殊处理的字符串段的其实位置和结束位置信息存入，并对应重置开始时和结束变量\n\t\tif (_indexStart && _indexEnd) {\n\t\t\t_index.push({\n\t\t\t\tstart: _indexStart,\n\t\t\t\tend: _indexEnd\n\t\t\t})\n\t\t\t_indexStart = null\n\t\t\t_indexEnd = null\n\t\t}\n\t})\n\t// 开始处理双引号中的内容，将多余的\"去除\n\t_index.reverse().forEach(function (item, index) {\n\t\tvar newArray = jsonArray.slice(item.start, item.end + 1)\n\t\tjsonArray.splice(item.start, item.end + 1 - item.start, newArray.join(''))\n\t})\n\t// 奖处理后的数组通过\\r\\n连接符重组为字符串\n\tjsonString = jsonArray.join('\\r\\n');\n\t// 将匹配到:后为回车换行加大括号替换为冒号加大括号\n\tjsonString = jsonString.replace(/\\:\\r\\n\\{/g, ':{');\n\t// 将匹配到:后为回车换行加中括号替换为冒号加中括号\n\tjsonString = jsonString.replace(/\\:\\r\\n\\[/g, ':[');\n\t// 将上述转换后的字符串再次以\\r\\n分割成数组\n\tjsonArray = jsonString.split('\\r\\n');\n    // 将转换完成的字符串根据PADDING值来组合成最终的形态\n    jsonArray.forEach(function (item, index) {\n\t\tconsole.log(item)\n    \tvar i = 0;\n    \t// 表示缩进的位数，以tab作为计数单位\n\t\tvar indent = 0;\n\t\t// 表示缩进的位数，以空格作为计数单位\n\t\tvar padding = '';\n\t\tif (item.match(/\\{$/) || item.match(/\\[$/)) {\n\t\t\t// 匹配到以{和[结尾的时候indent加1\n\t\t\tindent += 1\n\t\t} else if (item.match(/\\}$/) || item.match(/\\]$/) || item.match(/\\},$/) || item.match(/\\],$/)) {\n\t\t\t// 匹配到以}和]结尾的时候indent减1\n\t\t\tif (pad !== 0) {\n\t\t\t\tpad -= 1\n\t\t\t}\n        } else {\n            indent = 0\n        }\n        for (i = 0; i < pad; i++) {\n            padding += PADDING\n        }\n        formatted += padding + item + '\\r\\n'\n\t\tpad += indent\n   \t})\n\t// 返回的数据需要去除两边的空格\n\t$(\"#input\").value = formatted.trim();\n\t\n}\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": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "singleUrl": false,
    "sortUrl": "@js:\nvar input = String(source.sourceComment);\nvar lines = input.split('\\n');\nvar result = [];\nvar groupName = '';\nvar content = '';\n\nfor (var i = 0; i < lines.length; i++) {\n    var line = lines[i].trim();\n    if (line === '') continue;\n\n    // 如果以 ◎ 开头，则是分组名\n    if (line.startsWith('◎')) {\n        // 如果当前分组名和内容已存在，保存上一个分组\n        if (groupName && content) {\n            var encodedContent = java.base64Encode(content); // 使用 java.base64Encode\n            result.push(`${groupName}::data:;base64,${encodedContent},{\"type\":\"\"}`);\n        }\n        groupName = line.slice(1, -1).trim(); // 去掉 ◎，设置新的分组名\n        content = ''; // 重置内容\n    } else if (line.startsWith('【')) {\n        // 如果以 【 开头，则是内容的一部分\n        content += line + '\\n';\n    }\n}\n\n// 保存最后一个分组\nif (groupName && content) {\n    var encodedContent = java.base64Encode(content); // 使用 java.base64Encode\n    result.push(`${groupName}::data:;base64,${encodedContent},{\"type\":\"\"}`);\n}\n\nresult.join(\"\\n\")",
    "sourceComment": "◎我的常用◎\n【0、3、】《📝 | 一键导入》『洛娅橙一键导入【本地html】』\n【0、2、】《📝 | 预览调试》『html网页预览调试【本地html】』\n\n【0、1、】《📝 | 发现规则》『发现一键生成 | 正则替换【本地html】』\n【https://legado.miaogongzi.net/legado/dy.html】《📝 | 喵公子》『阅读相关』\n【https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIzMTc0NzE1MQ==&action=getalbum&album_id=1429936613618188289&scene=126#wechat_redirect】《📖 | 阅读教程》『阅读公众号』\n【https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIzMTc0NzE1MQ==&action=getalbum&album_id=1337256947799916544&scene=126#wechat_redirect】《📖 | 阅读资源》\n【http://www.yckceo.vip】《常用 | 源仓库》『源仓库发布页』\n【https://www.jianguoyun.com】《必备 | 坚果云》『用来云备份』\n【http://mail.qq.com】《登录 | QQ邮箱》\n【http://gitee.com】《登录 | Gitee》\n◎在线工具◎\n【http://www.jsons.cn/reg/】《🛠️ | 正则替换》\n【https://netcut.cn】《🛠️ | 网络剪切板》\n【https://www.dejs.vip/2obfuscator】《🛠️ | DesJs》『Js反混淆 | Js格式化』\n【https://www.51shizhi.com/tool/js-anti-obfuscate-io】《🛠️ | obfuscator.io反混淆》『Js反混淆 | Js格式化』\n【https://tool.lu/】《🛠️ | 工具箱》\n【https://ol.woobx.cn】《🛠️ | 一个木函》\n【https://uutool.cn】《🛠️ | UU在线》\n【http://24mail.chacuo.net】《📱 | 临时邮箱》\n【https://rootsh.com/】《📱 | 十分钟邮箱》\n【https://ykjtb.com/c】《🛠️ | 一块剪切板》\n【https://note.ms】《🛠️ | note剪切板》\n◎教程资料◎\n【https://celetor.github.io/teachme】《📖 | 阅读3.0书源规则》『官方书源规则』\n【https://www.w3school.com.cn】《📕 | W3school》『web相关学习 | html、css、js』\n【https://jsoup.org/apidocs/org/jsoup/select/Selector.html】《📕 | Jsoup Selector》『类似CSS选择器 | 阅读可以用的语法@css:开头』\n【https://www.cnblogs.com/wynjauu/articles/9556396.html】《📕 | JsonPath教程》『阅读可以用的语法 @json:或 $.开头』\n【https://www.runoob.com/xpath/xpath-syntax.html】《📕 | XPath相关》『阅读可以用的语法 @XPath:或 //开头』\n【https://www.bilibili.com/video/BV1z56iY6EB8?p=4】《📕 | Js基础语法参考视频》『P4-P27为Js语法，也就是2-01至6-04』\n【https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Grammar_and_types】《📕 | JavaScript指南》『Js语法』",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "/storage/emulated/0/YueDu3.0/Hr.png",
    "sourceName": "网站整合",
    "sourceUrl": "guaner写源工具整合",
    "variableComment": "◎分类1◎\n【序号或链接】《列表名称》@图片链接@『简介』\n------------------\n◎分类2◎\n【序号或链接】《列表名称》@图片链接@『简介』\n❗️0、2、开始❗️\n\n❗️0、2、结束❗️"
  },
  {
    "articleStyle": 0,
    "customOrder": -10106485,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773206749127,
    "loadWithBaseUrl": 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",
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "https://ae02.alicdn.com/kf/U8cec6a5f56f346a0948b2789382700a4I.jpg",
    "sourceName": "花瓣-美图",
    "sourceUrl": "https://api.huaban.com/favorite/quotes?limit=100"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "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"
  },
  {
    "articleStyle": 1,
    "customOrder": -10106419,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1774770965889,
    "loadWithBaseUrl": true,
    "ruleArticles": ".plist-4-textbox a",
    "ruleLink": "a@href",
    "rulePubDate": "a@title",
    "ruleTitle": "a@text",
    "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/"
  },
  {
    "articleStyle": 1,
    "customOrder": -10106418,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774770960259,
    "loadWithBaseUrl": true,
    "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",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": -10106416,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1774770941098,
    "loadWithBaseUrl": true,
    "ruleArticles": ".recipe-96-horizon,.recipe-list>li",
    "ruleImage": "img@data-src",
    "ruleLink": "a@href",
    "ruleTitle": "header@text",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": -10106403,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774455630522,
    "loadWithBaseUrl": 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",
    "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}"
  },
  {
    "articleStyle": 0,
    "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,
    "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>",
    "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"
  },
  {
    "articleStyle": 0,
    "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}",
    "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",
    "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": "明月书阁"
  },
  {
    "articleStyle": 0,
    "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}",
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": -10100160,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "@js:\nJSON.stringify({\n\t \"User-Agent\":java.getWebViewUA(),\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})",
    "injectJs": "let imgEs = document.querySelectorAll(\".image-container\");\nif(imgEs.length > 0){\n    imgEs.forEach(container => {\n        container.onclick = (e) => {          \n            e.stopPropagation();                      \n            const img = container.querySelector('img');\n            if(img) {\n                const imgUrl = img.src+\",\"+JSON.stringify({\"headers\":{\"if-modified-since\":\"\"}});                \n                java.showPhoto(imgUrl);\n            }\n        };\n    });\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": 1775399685473,
    "loadWithBaseUrl": true,
    "loginUi": "<js>\nlet s = source.getVariable();\ns = /{/.test(s)?s:\"\";\nlet mockData = JSON.parse(s || '{\"users\":[],\"collections\":[],\"grains\":[],\"tags\":[]}');\nlet all = [{\n        \"name\": \"默认启动页\",\n        \"type\": \"button\",   \n        \"action\":`source.put(\"start\",\"\");java.toast(\"恢复默认启动页\");java.reLoginView()`,\n            \"viewName\":`\"\"==\"${source.get(\"start\")}\"?\"✅默认启动页\":\"默认启动页\"`,   \n        \"style\": {\n            \"layout_flexGrow\": 1,            \n            \"layout_flexBasisPercent\": 1          \n        }\n    }];\n\nlet users = mockData.users;\nlet collections = mockData.collections;\nlet grains = mockData.grains;\nlet tags = mockData.tags;\n\n\nif(users.length || collections.length || grains.length ||grains.length){\n\tall.push({\n        \"name\": \"↓选择启动页：打开时会跳转的分类URL↓\",\n        \"type\": \"button\",      \n        \"style\": {\n            \"layout_flexGrow\": 1,            \n            \"layout_flexBasisPercent\": 1          \n        }\n    },{\n        \"name\": \"不再显示启动页\",\n        \"type\": \"button\",   \n        \"action\":`source.get(\"isStart\")==\"1\"?source.put(\"isStart\",\"0\"):source.put(\"isStart\",\"1\");java.reLoginView()`,\n            \"viewName\":`\"1\"==\"${source.get(\"isStart\")}\"?\"✅不再显示启动页\":\"不再显示启动页\"`,   \n        \"style\": {\n            \"layout_flexGrow\": 1,            \n            \"layout_flexBasisPercent\": 1          \n        }\n    })\n\t\n\t}\n\nfunction putStart(list,type){\n\tif(list.length){\n\t\tall.push({\n        \"name\": type,\n        \"type\": \"text\",      \n        \"style\": {\n            \"layout_flexGrow\": 1,            \n            \"layout_flexBasisPercent\": 1          \n        }\n    });\n    \n    list.forEach(x=>{\n    \tall.push({\n            \"name\": type,\n            \"type\": \"button\",    \n            \"action\":`source.put(\"start\",\"${x.id??x}\");java.toast(\"启动页：${x.name??x}\");java.reLoginView()`,\n            \"viewName\":`\"${x.id??x}\"==\"${source.get(\"start\")}\"?\"✅${x.name??x}\":\"${x.name??x}\"`,\n            \"style\": {\n                \"layout_flexGrow\": 1,            \n                \"layout_flexBasisPercent\": 0.25     \n               }\n             })\n    \t})\n\t}\n}\n\nputStart(users,\"用户\")\nputStart(collections,\"合集\")\nputStart(grains,\"粮单\")\nputStart(tags,\"标签\")   \nJSON.stringify(all)\n</js>",
    "loginUrl": "function login(){}",
    "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}else if(/^https?:\\/\\/(?!www\\.)[^\"]+\\.lofter\\.com$/.test(baseUrl)){\n    result = result.match(/window.__initialize_data__ =([\\s\\S]+?)<\\/script>/)?.[1] ?? \"\";    \n    if(result && result!==\" undefined\"){    \t\n    java.setContent(result);\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('$..data.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(\"$..data.blogInfo.blogNickName\"),info,S(\"$..data.blogInfo.bigAvaImg\"),\"👤\",url,S('$..data.blogInfo.blogId'));\n    }else{\n    \t   result = src\n    \t}\n    \n}else if(baseUrl.includes(\"share?collectionId=\")){        \n    result = result.match(/window.__initialize_data__ =([\\s\\S]+?)<\\/script>/)?.[1] ?? \"\";    \n    if(result && result!==\" undefined\"){    \t\n    java.setContent(result);\n    blogid = S('$.data.collection.blogId');\n    id = S('$.data.collection.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('$.data.collection.postCount')}篇🏷${S('$.data.collection.tags||$.data.collection.tagList')}<hr>${S('$.data.collection.description')}`\n     result = getHtmlto(S(\"$.data.collection.name\"),info,S(\"$.data.collection.coverUrl\"),\"📖\",curl)\n    }else{\n    \t   result = src\n    \t}\n}else{\n\nif(/window.__initialize_data__/.test(result)){\n\tresult = result.match(/window.__initialize_data__ =([\\s\\S]+?)<\\/script>/)[1];\n\tjava.setContent(result);\n}\n\n\ncontent = S(\"$..content||$..caption\");\nlet postid =  S(\"$..response.posts[0].post.id||$..postData.postView.id\");\nlet blogid = S(\"$..blogInfo.blogId\")\nimgs = eval(S(\"$..photoLinks\"));\nlet tags = S(\"$..tag\");\n\nlet author = S(\"$..blogInfo.blogNickName\");\nauthoru = `http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-7.4.4,{\"method\": \"POST\",\"body\":\"targetblogid=${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 =S(\"$..postCollection.name\"); \nlet postNum = postCollection?\"（\"+S(\"$..postCollection.postCount\")+\"篇）\":\"\";\npostCollectionu = `https://api.lofter.com/v1.1/postCollection.api?product=lofter-android-7.4.4,{\"method\": \"POST\",\"body\":\"targetblogid=${S(\"$..postCollection.blogId\")}&method=getCollectionSimple&offset=0&limit=500&blogid=${S(\"$..postCollection.blogId\")}&collectionid=${S(\"$..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 = S(\"$.response.posts[0].post.embed\")??\"{x:1}\";\nimg_height = S(\"$.img_height\", embed);\nimg_width = S(\"$.img_width\", embed);\nvideo_first_img = S(\"$.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            let picurl = x.orign.replace(/%7C.*/g, '');\n            img += `<div class=\"image-container\">\n                <div class=\"loading-spinner\">加载中...</div>\n                <img src=\"${picurl}\" loading=\"lazy\" \n                     onload=\"this.parentNode.querySelector('.loading-spinner').style.display='none'; this.classList.add('loaded')\" \n                     onerror=\"this.parentNode.querySelector('.loading-spinner').style.display='none'; this.classList.add('error')\">\n            </div>\\n`;\n        }\n    });\n}\n\n\ncontent = content\n.replace(/<a href=\"(.*?\\.lofter.com\\/post\\/[^\"]+?|.*?\\.lofter.com\\/.*?share\\?collectionId[^\"]+?)\"[^>]+?>([^<]+)<\\/a>/g,'<a onclick=\\'openContent(\"$1\")\\' href=\\'javascript:;\\'>$2</a>')\n.replace(/<a href=\"(https?:\\/\\/(?!www\\.)[^\"]+\\.lofter\\.com)\"[^>]+?>([^<]+)<\\/a>/g,'<a onclick=\\'openContent(\"$1\")\\' href=\\'javascript:;\\'>$2</a>')\n.replace(/<p[^>]*>\\s* * *<\\/p>/g, '')\n.replace(/\\s{2,}/g,'')\n.replace(/title=\"\"[^>]+|style=\"[^\"]+\"/g,'/')\n.replace(/<img([^>]+)\\/?>/g,'<div class=\"image-container\"><div class=\"loading-spinner\">加载中...</div><img$1 loading=\"lazy\" onload=\"this.parentNode.querySelector(\\'.loading-spinner\\').style.display=\\'none\\'; this.classList.add(\\'loaded\\')\" onerror=\"this.parentNode.querySelector(\\'.loading-spinner\\').style.display=\\'none\\'; this.classList.add(\\'error\\')\"></div>')\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>${S(\"$..title||$..content\").replace(/<\\/?([a-z]+)[^>]*>|\\s/g,'')}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n${'<h3 class=\"title-card\" onclick=\"openUrl(2)\">'+(S(\"$..title\") || \"无题\")+'</h3>'+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\n\n   \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    let response,jsonData;\n    try{\n         response = java.ajax(postUrl+\",\"+JSON.stringify({\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     jsonData = JSON.parse(response)\n    }catch(e){\n          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       jsonData = await response.json();\n    }\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                \n             if(t==2){\n               let url2 = \\`https://api.lofter.com/oldapi/post/detail.api?product=lofter-android-8.3.20,{\"method\":\"POST\",\"body\":\"blogdomain=_blogid_${blogid}.lofter.com&postid=${postid}\"}\\`;\n               url2 = \\`legado://import/addToBookshelf?src=$\\{encodeURIComponent(url2)},{\"origin\":\"📖Lofter\"}\\`;\n               window.open(url2)\n               return;\n            }\n                \n                \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                java.log(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(S(\"$..blogInfo.blogNickName\")==\"\"){\n\tresult = S(\"$..msg\")\n\t}\nresult = result.replace(/(<p><br\\s*\\/><\\/p>){1,}/g,'')\n}\n\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>\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>",
    "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",
    "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    position: relative;\n    display: inline-block;\n    margin: 15px 0;\n    text-align: center;\n    width: 100%;\n    min-height: 80px; /* 给加载中提示预留高度 */\n}\n\n.image-container img {\n    max-width: 100%;\n    border-radius: 8px;\n    box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n    width: 100%;\n    height: auto;\n    opacity: 0;\n    transition: opacity 0.3s;\n}\n\n.image-container img.loaded {\n    opacity: 1;\n}\n\n.loading-spinner {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background: #f5f5f5;\n    color: #666;\n    font-size: 14px;\n}\n"
  },
  {
    "articleStyle": 0,
    "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,
    "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)",
    "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#立方"
  },
  {
    "articleStyle": 0,
    "customOrder": -10100154,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774099964721,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": -10100147,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774100495875,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": -10098466,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "//$(\"div.layui-panel\").eq(0).remove();\nsetInterval(function () {\n    $(\"div.layui-hide-md\").css(\"display\",\"none\");\n},100)",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "🛰️ 科技",
    "sourceIcon": "https://www.yckceo.com/favicon.ico",
    "sourceName": "源仓库(去底部广告）",
    "sourceUrl": "https://www.yckceo.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": -10098465,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceComment": "一程空间",
    "sourceIcon": "",
    "sourceName": "阅读-书源＼订阅",
    "sourceUrl": "https://flowus.cn/ycheng/share/923f5a35-6dcf-47d1-b8eb-b9c5ef3ed39b"
  },
  {
    "articleStyle": 0,
    "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,
    "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>",
    "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"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": -10098457,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774100368030,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": -10098457,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775591385863,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://imgsa.baidu.com/forum/pic/item/d0c8a786c9177f3e8ebb0cca7ecf3bc79e3d566e.jpg",
    "sourceName": "互联网资源",
    "sourceUrl": "https://www.lovejay.top/#"
  },
  {
    "articleStyle": 0,
    "customOrder": -10098451,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\": \"\"}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "ruleArticles": "data",
    "ruleContent": "<!doctype html><html><head lang=\"zh\"><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\"><title>隐订阅</title></head><body><div class=\"markdown-body\"><b style=\"font-weight: 700; font-size: 20px; \">{{$..title}}</b><a style=\"display: block; font-size: 13.5px; font-family: serif; color: #999; margin: 10px 0; \">{{$..source}}&nbsp;&nbsp;&nbsp;{{$..date##(.*?)T(.*?).{4}Z##$1 $2###}}</a>\n{{$..content}}\n<a href=\"{{$..url}}\" style=\"display: block;font-size:13.5px;font-family: serif;margin: 10px 0;\">阅读原文</a></div></body></html>\n",
    "ruleImage": "img\n@js:\nr = result;\nr != \"\" ? r: source.sourceIcon;",
    "ruleLink": "/detail?id={$.id}",
    "ruleNextPage": "{{baseUrl}}##&id=\\d*##&id={{$.data[-1].id}}",
    "rulePubDate": "{{$.source}}   {{$.date##(.*?)T(.*?).{4}Z##$1 $2###}}",
    "ruleTitle": "title\n<js>result;</js>\n@@text",
    "singleUrl": false,
    "sortUrl": "@js:\nu = source.key;\nsort = \"\";\nlist = JSON.parse(java.ajax(u+'/source')).data;\nfor (i = 0; i < list.length; i++) {\n  sort += list[i].name + \"::/feed?limit=25&id=&media=\" + list[i].id + \"&keyword=\\n\"\n};\n`变量搜索::/feed?limit=25&id=&media=&keyword={{source.getVariable()}}\n// ↓在此添加↓\n\n\n\n// ↑在此添加↑\n`+sort;",
    "sourceComment": "↓在分类URL↓添加可订阅关键词\n\n关键词::/feed?limit=25&id=&media=&keyword=关键词",
    "sourceGroup": "新闻",
    "sourceIcon": "https://app.yinrss.com/Ninja108.png",
    "sourceName": "新闻",
    "sourceUrl": "https://api.yinrss.com",
    "style": "* {text-underline-offset: .2em;}body {padding: 0 10px;}img {height: auto;}iframe, audio, video {margin: 10px 0;width: 100%;}audio {height: 60px;}button{display: none;}@media (prefers-color-scheme: dark) {.markdown-body, [data-theme=\"dark\"] {color-scheme: dark;--color-prettylights-syntax-comment: #8b949e;--color-prettylights-syntax-constant: #79c0ff;--color-prettylights-syntax-entity: #d2a8ff;--color-prettylights-syntax-storage-modifier-import: #c9d1d9;--color-prettylights-syntax-entity-tag: #7ee787;--color-prettylights-syntax-keyword: #ff7b72;--color-prettylights-syntax-string: #a5d6ff;--color-prettylights-syntax-variable: #ffa657;--color-prettylights-syntax-brackethighlighter-unmatched: #f85149;--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;--color-prettylights-syntax-invalid-illegal-bg: #8e1519;--color-prettylights-syntax-carriage-return-text: #f0f6fc;--color-prettylights-syntax-carriage-return-bg: #b62324;--color-prettylights-syntax-string-regexp: #7ee787;--color-prettylights-syntax-markup-list: #f2cc60;--color-prettylights-syntax-markup-heading: #1f6feb;--color-prettylights-syntax-markup-italic: #c9d1d9;--color-prettylights-syntax-markup-bold: #c9d1d9;--color-prettylights-syntax-markup-deleted-text: #ffdcd7;--color-prettylights-syntax-markup-deleted-bg: #67060c;--color-prettylights-syntax-markup-inserted-text: #aff5b4;--color-prettylights-syntax-markup-inserted-bg: #033a16;--color-prettylights-syntax-markup-changed-text: #ffdfb6;--color-prettylights-syntax-markup-changed-bg: #5a1e02;--color-prettylights-syntax-markup-ignored-text: #c9d1d9;--color-prettylights-syntax-markup-ignored-bg: #1158c7;--color-prettylights-syntax-meta-diff-range: #d2a8ff;--color-prettylights-syntax-brackethighlighter-angle: #8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;--color-fg-default: #e6edf3;--color-fg-muted: #848d97;--color-fg-subtle: #6e7681;--color-canvas-default: #0d1117;--color-canvas-subtle: #161b22;--color-border-default: #30363d;--color-border-muted: #21262d;--color-neutral-muted: rgba(110,118,129,0.4);--color-accent-fg: #2f81f7;--color-accent-emphasis: #1f6feb;--color-success-fg: #3fb950;--color-success-emphasis: #238636;--color-attention-fg: #d29922;--color-attention-emphasis: #9e6a03;--color-attention-subtle: rgba(187,128,9,0.15);--color-danger-fg: #f85149;--color-danger-emphasis: #da3633;--color-done-fg: #a371f7;--color-done-emphasis: #8957e5;}}@media (prefers-color-scheme: light) {.markdown-body, [data-theme=\"light\"] {color-scheme: light;--color-prettylights-syntax-comment: #57606a;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #6639ba;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #116329;--color-prettylights-syntax-keyword: #cf222e;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #82071e;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #82071e;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #cf222e;--color-prettylights-syntax-string-regexp: #116329;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #82071e;--color-prettylights-syntax-markup-deleted-bg: #ffebe9;--color-prettylights-syntax-markup-inserted-text: #116329;--color-prettylights-syntax-markup-inserted-bg: #dafbe1;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-fg-default: #1F2328;--color-fg-muted: #656d76;--color-fg-subtle: #6e7781;--color-canvas-default: #ffffff;--color-canvas-subtle: #f6f8fa;--color-border-default: #d0d7de;--color-border-muted: hsla(210,18%,87%,1);--color-neutral-muted: rgba(175,184,193,0.2);--color-accent-fg: #0969da;--color-accent-emphasis: #0969da;--color-success-fg: #1a7f37;--color-success-emphasis: #1f883d;--color-attention-fg: #9a6700;--color-attention-emphasis: #9a6700;--color-attention-subtle: #fff8c5;--color-danger-fg: #d1242f;--color-danger-emphasis: #cf222e;--color-done-fg: #8250df;--color-done-emphasis: #8250df;}}.markdown-body {-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;margin: 0;color: var(--color-fg-default);background-color: var(--color-canvas-default);font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Noto Sans\",Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\";font-size: 16px;line-height: 1.5;word-wrap: break-word;}.markdown-body .octicon {display: inline-block;fill: currentColor;vertical-align: text-bottom;}.markdown-body h1:hover .anchor .octicon-link:before, .markdown-body h2:hover .anchor .octicon-link:before, .markdown-body h3:hover .anchor .octicon-link:before, .markdown-body h4:hover .anchor .octicon-link:before, .markdown-body h5:hover .anchor .octicon-link:before, .markdown-body h6:hover .anchor .octicon-link:before {width: 16px;height: 16px;content: ' ';display: inline-block;background-color: currentColor;-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>\");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>\");}.markdown-body details, .markdown-body figcaption, .markdown-body figure {display: block;}.markdown-body summary {display: list-item;}.markdown-body [hidden] {display: none !important;}.markdown-body a {background-color: transparent;color: var(--color-accent-fg);text-decoration: none;}.markdown-body abbr[title] {border-bottom: none;-webkit-text-decoration: underline dotted;text-decoration: underline dotted;}.markdown-body b, .markdown-body strong {font-weight: var(--base-text-weight-semibold, 600);}.markdown-body dfn {font-style: italic;}.markdown-body h1 {margin: .67em 0;font-weight: var(--base-text-weight-semibold, 600);padding-bottom: .3em;font-size: 2em;border-bottom: 1px solid var(--color-border-muted);}.markdown-body mark {background-color: var(--color-attention-subtle);color: var(--color-fg-default);}.markdown-body small {font-size: 90%;}.markdown-body sub, .markdown-body sup {font-size: 75%;line-height: 0;position: relative;vertical-align: baseline;}.markdown-body sub {bottom: -0.25em;}.markdown-body sup {top: -0.5em;}.markdown-body img {border-style: none;max-width: 100%;box-sizing: content-box;background-color: var(--color-canvas-default);}.markdown-body code, .markdown-body kbd, .markdown-body pre, .markdown-body samp {font-family: monospace;font-size: 1em;}.markdown-body figure {margin: 1em 40px;}.markdown-body hr {box-sizing: content-box;overflow: hidden;background: transparent;border-bottom: 1px solid var(--color-border-muted);height: .25em;padding: 0;margin: 24px 0;background-color: var(--color-border-default);border: 0;}.markdown-body input {font: inherit;margin: 0;overflow: visible;font-family: inherit;font-size: inherit;line-height: inherit;}.markdown-body [type=button], .markdown-body [type=reset], .markdown-body [type=submit] {-webkit-appearance: button;appearance: button;}.markdown-body [type=checkbox], .markdown-body [type=radio] {box-sizing: border-box;padding: 0;}.markdown-body [type=number]::-webkit-inner-spin-button, .markdown-body [type=number]::-webkit-outer-spin-button {height: auto;}.markdown-body [type=search]::-webkit-search-cancel-button, .markdown-body [type=search]::-webkit-search-decoration {-webkit-appearance: none;appearance: none;}.markdown-body ::-webkit-input-placeholder {color: inherit;opacity: .54;}.markdown-body ::-webkit-file-upload-button {-webkit-appearance: button;appearance: button;font: inherit;}.markdown-body a:hover {text-decoration: underline;}.markdown-body ::placeholder {color: var(--color-fg-subtle);opacity: 1;}.markdown-body hr::before {display: table;content: \"\";}.markdown-body hr::after {display: table;clear: both;content: \"\";}.markdown-body table {border-spacing: 0;border-collapse: collapse;display: block;width: max-content;max-width: 100%;overflow: auto;}.markdown-body td, .markdown-body th {padding: 0;}.markdown-body details summary {cursor: pointer;}.markdown-body details:not([open])>*:not(summary) {display: none !important;}.markdown-body a:focus, .markdown-body [role=button]:focus, .markdown-body input[type=radio]:focus, .markdown-body input[type=checkbox]:focus {outline: 2px solid var(--color-accent-fg);outline-offset: -2px;box-shadow: none;}.markdown-body a:focus:not(:focus-visible), .markdown-body [role=button]:focus:not(:focus-visible), .markdown-body input[type=radio]:focus:not(:focus-visible), .markdown-body input[type=checkbox]:focus:not(:focus-visible) {outline: solid 1px transparent;}.markdown-body a:focus-visible, .markdown-body [role=button]:focus-visible, .markdown-body input[type=radio]:focus-visible, .markdown-body input[type=checkbox]:focus-visible {outline: 2px solid var(--color-accent-fg);outline-offset: -2px;box-shadow: none;}.markdown-body a:not([class]):focus, .markdown-body a:not([class]):focus-visible, .markdown-body input[type=radio]:focus, .markdown-body input[type=radio]:focus-visible, .markdown-body input[type=checkbox]:focus, .markdown-body input[type=checkbox]:focus-visible {outline-offset: 0;}.markdown-body kbd {display: inline-block;padding: 3px 5px;font: 11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height: 10px;color: var(--color-fg-default);vertical-align: middle;background-color: var(--color-canvas-subtle);border: solid 1px var(--color-neutral-muted);border-bottom-color: var(--color-neutral-muted);border-radius: 6px;box-shadow: inset 0 -1px 0 var(--color-neutral-muted);}.markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 {margin-top: 24px;margin-bottom: 16px;font-weight: var(--base-text-weight-semibold, 600);line-height: 1.25;}.markdown-body h2 {font-weight: var(--base-text-weight-semibold, 600);padding-bottom: .3em;font-size: 1.5em;border-bottom: 1px solid var(--color-border-muted);}.markdown-body h3 {font-weight: var(--base-text-weight-semibold, 600);font-size: 1.25em;}.markdown-body h4 {font-weight: var(--base-text-weight-semibold, 600);font-size: 1em;}.markdown-body h5 {font-weight: var(--base-text-weight-semibold, 600);font-size: .875em;}.markdown-body h6 {font-weight: var(--base-text-weight-semibold, 600);font-size: .85em;color: var(--color-fg-muted);}.markdown-body p {margin-top: 0;margin-bottom: 10px;}.markdown-body blockquote {margin: 0;padding: 0 1em;color: var(--color-fg-muted);border-left: .25em solid var(--color-border-default);}.markdown-body ul, .markdown-body ol {margin-top: 0;margin-bottom: 0;padding-left: 2em;}.markdown-body ol ol, .markdown-body ul ol {list-style-type: lower-roman;}.markdown-body ul ul ol, .markdown-body ul ol ol, .markdown-body ol ul ol, .markdown-body ol ol ol {list-style-type: lower-alpha;}.markdown-body dd {margin-left: 0;}.markdown-body tt, .markdown-body code, .markdown-body samp {font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size: 12px;}.markdown-body pre {margin-top: 0;margin-bottom: 0;font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size: 12px;word-wrap: normal;}.markdown-body .octicon {display: inline-block;overflow: visible !important;vertical-align: text-bottom;fill: currentColor;}.markdown-body input::-webkit-outer-spin-button, .markdown-body input::-webkit-inner-spin-button {margin: 0;-webkit-appearance: none;appearance: none;}.markdown-body .mr-2 {margin-right: var(--base-size-8, 8px) !important;}.markdown-body::before {display: table;content: \"\";}.markdown-body::after {display: table;clear: both;content: \"\";}.markdown-body>*:first-child {margin-top: 0 !important;}.markdown-body>*:last-child {margin-bottom: 0 !important;}.markdown-body a:not([href]) {color: inherit;text-decoration: none;}.markdown-body .absent {color: var(--color-danger-fg);}.markdown-body .anchor {float: left;padding-right: 4px;margin-left: -20px;line-height: 1;}.markdown-body .anchor:focus {outline: none;}.markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre, .markdown-body details {margin-top: 0;margin-bottom: 16px;}.markdown-body blockquote>:first-child {margin-top: 0;}.markdown-body blockquote>:last-child {margin-bottom: 0;}.markdown-body h1 .octicon-link, .markdown-body h2 .octicon-link, .markdown-body h3 .octicon-link, .markdown-body h4 .octicon-link, .markdown-body h5 .octicon-link, .markdown-body h6 .octicon-link {color: var(--color-fg-default);vertical-align: middle;visibility: hidden;}.markdown-body h1:hover .anchor, .markdown-body h2:hover .anchor, .markdown-body h3:hover .anchor, .markdown-body h4:hover .anchor, .markdown-body h5:hover .anchor, .markdown-body h6:hover .anchor {text-decoration: none;}.markdown-body h1:hover .anchor .octicon-link, .markdown-body h2:hover .anchor .octicon-link, .markdown-body h3:hover .anchor .octicon-link, .markdown-body h4:hover .anchor .octicon-link, .markdown-body h5:hover .anchor .octicon-link, .markdown-body h6:hover .anchor .octicon-link {visibility: visible;}.markdown-body h1 tt, .markdown-body h1 code, .markdown-body h2 tt, .markdown-body h2 code, .markdown-body h3 tt, .markdown-body h3 code, .markdown-body h4 tt, .markdown-body h4 code, .markdown-body h5 tt, .markdown-body h5 code, .markdown-body h6 tt, .markdown-body h6 code {padding: 0 .2em;font-size: inherit;}.markdown-body summary h1, .markdown-body summary h2, .markdown-body summary h3, .markdown-body summary h4, .markdown-body summary h5, .markdown-body summary h6 {display: inline-block;}.markdown-body summary h1 .anchor, .markdown-body summary h2 .anchor, .markdown-body summary h3 .anchor, .markdown-body summary h4 .anchor, .markdown-body summary h5 .anchor, .markdown-body summary h6 .anchor {margin-left: -40px;}.markdown-body summary h1, .markdown-body summary h2 {padding-bottom: 0;border-bottom: 0;}.markdown-body ul.no-list, .markdown-body ol.no-list {padding: 0;list-style-type: none;}.markdown-body ol[type=\"a s\"] {list-style-type: lower-alpha;}.markdown-body ol[type=\"A s\"] {list-style-type: upper-alpha;}.markdown-body ol[type=\"i s\"] {list-style-type: lower-roman;}.markdown-body ol[type=\"I s\"] {list-style-type: upper-roman;}.markdown-body ol[type=\"1\"] {list-style-type: decimal;}.markdown-body div>ol:not([type]) {list-style-type: decimal;}.markdown-body ul ul, .markdown-body ul ol, .markdown-body ol ol, .markdown-body ol ul {margin-top: 0;margin-bottom: 0;}.markdown-body li>p {margin-top: 16px;}.markdown-body li+li {margin-top: .25em;}.markdown-body dl {padding: 0;}.markdown-body dl dt {padding: 0;margin-top: 16px;font-size: 1em;font-style: italic;font-weight: var(--base-text-weight-semibold, 600);}.markdown-body dl dd {padding: 0 16px;margin-bottom: 16px;}.markdown-body table th {font-weight: var(--base-text-weight-semibold, 600);}.markdown-body table th, .markdown-body table td {padding: 6px 13px;border: 1px solid var(--color-border-default);}.markdown-body table td>:last-child {margin-bottom: 0;}.markdown-body table tr {background-color: var(--color-canvas-default);border-top: 1px solid var(--color-border-muted);}.markdown-body table tr:nth-child(2n) {background-color: var(--color-canvas-subtle);}.markdown-body table img {background-color: transparent;}.markdown-body img[align=right] {padding-left: 20px;}.markdown-body img[align=left] {padding-right: 20px;}.markdown-body .emoji {max-width: none;vertical-align: text-top;background-color: transparent;}.markdown-body span.frame {display: block;overflow: hidden;}.markdown-body span.frame>span {display: block;float: left;width: auto;padding: 7px;margin: 13px 0 0;overflow: hidden;border: 1px solid var(--color-border-default);}.markdown-body span.frame span img {display: block;float: left;}.markdown-body span.frame span span {display: block;padding: 5px 0 0;clear: both;color: var(--color-fg-default);}.markdown-body span.align-center {display: block;overflow: hidden;clear: both;}.markdown-body span.align-center>span {display: block;margin: 13px auto 0;overflow: hidden;text-align: center;}.markdown-body span.align-center span img {margin: 0 auto;text-align: center;}.markdown-body span.align-right {display: block;overflow: hidden;clear: both;}.markdown-body span.align-right>span {display: block;margin: 13px 0 0;overflow: hidden;text-align: right;}.markdown-body span.align-right span img {margin: 0;text-align: right;}.markdown-body span.float-left {display: block;float: left;margin-right: 13px;overflow: hidden;}.markdown-body span.float-left span {margin: 13px 0 0;}.markdown-body span.float-right {display: block;float: right;margin-left: 13px;overflow: hidden;}.markdown-body span.float-right>span {display: block;margin: 13px auto 0;overflow: hidden;text-align: right;}.markdown-body code, .markdown-body tt {padding: .2em .4em;margin: 0;font-size: 85%;white-space: break-spaces;background-color: var(--color-neutral-muted);border-radius: 6px;}.markdown-body code br, .markdown-body tt br {display: none;}.markdown-body del code {text-decoration: inherit;}.markdown-body samp {font-size: 85%;}.markdown-body pre code {font-size: 100%;}.markdown-body pre>code {padding: 0;margin: 0;word-break: normal;white-space: pre;background: transparent;border: 0;}.markdown-body .highlight {margin-bottom: 16px;}.markdown-body .highlight pre {margin-bottom: 0;word-break: normal;}.markdown-body .highlight pre, .markdown-body pre {padding: 16px;overflow: auto;font-size: 85%;line-height: 1.45;color: var(--color-fg-default);background-color: var(--color-canvas-subtle);border-radius: 6px;}.markdown-body pre code, .markdown-body pre tt {display: inline;max-width: auto;padding: 0;margin: 0;overflow: visible;line-height: inherit;word-wrap: normal;background-color: transparent;border: 0;}.markdown-body .csv-data td, .markdown-body .csv-data th {padding: 5px;overflow: hidden;font-size: 12px;line-height: 1;text-align: left;white-space: nowrap;}.markdown-body .csv-data .blob-num {padding: 10px 8px 9px;text-align: right;background: var(--color-canvas-default);border: 0;}.markdown-body .csv-data tr {border-top: 0;}.markdown-body .csv-data th {font-weight: var(--base-text-weight-semibold, 600);background: var(--color-canvas-subtle);border-top: 0;}.markdown-body [data-footnote-ref]::before {content: \"[\";}.markdown-body [data-footnote-ref]::after {content: \"]\";}.markdown-body .footnotes {font-size: 12px;color: var(--color-fg-muted);border-top: 1px solid var(--color-border-default);}.markdown-body .footnotes ol {padding-left: 16px;}.markdown-body .footnotes ol ul {display: inline-block;padding-left: 16px;margin-top: 16px;}.markdown-body .footnotes li {position: relative;}.markdown-body .footnotes li:target::before {position: absolute;top: -8px;right: -8px;bottom: -8px;left: -24px;pointer-events: none;content: \"\";border: 2px solid var(--color-accent-emphasis);border-radius: 6px;}.markdown-body .footnotes li:target {color: var(--color-fg-default);}.markdown-body .footnotes .data-footnote-backref g-emoji {font-family: monospace;}.markdown-body .pl-c {color: var(--color-prettylights-syntax-comment);}.markdown-body .pl-c1, .markdown-body .pl-s .pl-v {color: var(--color-prettylights-syntax-constant);}.markdown-body .pl-e, .markdown-body .pl-en {color: var(--color-prettylights-syntax-entity);}.markdown-body .pl-smi, .markdown-body .pl-s .pl-s1 {color: var(--color-prettylights-syntax-storage-modifier-import);}.markdown-body .pl-ent {color: var(--color-prettylights-syntax-entity-tag);}.markdown-body .pl-k {color: var(--color-prettylights-syntax-keyword);}.markdown-body .pl-s, .markdown-body .pl-pds, .markdown-body .pl-s .pl-pse .pl-s1, .markdown-body .pl-sr, .markdown-body .pl-sr .pl-cce, .markdown-body .pl-sr .pl-sre, .markdown-body .pl-sr .pl-sra {color: var(--color-prettylights-syntax-string);}.markdown-body .pl-v, .markdown-body .pl-smw {color: var(--color-prettylights-syntax-variable);}.markdown-body .pl-bu {color: var(--color-prettylights-syntax-brackethighlighter-unmatched);}.markdown-body .pl-ii {color: var(--color-prettylights-syntax-invalid-illegal-text);background-color: var(--color-prettylights-syntax-invalid-illegal-bg);}.markdown-body .pl-c2 {color: var(--color-prettylights-syntax-carriage-return-text);background-color: var(--color-prettylights-syntax-carriage-return-bg);}.markdown-body .pl-sr .pl-cce {font-weight: bold;color: var(--color-prettylights-syntax-string-regexp);}.markdown-body .pl-ml {color: var(--color-prettylights-syntax-markup-list);}.markdown-body .pl-mh, .markdown-body .pl-mh .pl-en, .markdown-body .pl-ms {font-weight: bold;color: var(--color-prettylights-syntax-markup-heading);}.markdown-body .pl-mi {font-style: italic;color: var(--color-prettylights-syntax-markup-italic);}.markdown-body .pl-mb {font-weight: bold;color: var(--color-prettylights-syntax-markup-bold);}.markdown-body .pl-md {color: var(--color-prettylights-syntax-markup-deleted-text);background-color: var(--color-prettylights-syntax-markup-deleted-bg);}.markdown-body .pl-mi1 {color: var(--color-prettylights-syntax-markup-inserted-text);background-color: var(--color-prettylights-syntax-markup-inserted-bg);}.markdown-body .pl-mc {color: var(--color-prettylights-syntax-markup-changed-text);background-color: var(--color-prettylights-syntax-markup-changed-bg);}.markdown-body .pl-mi2 {color: var(--color-prettylights-syntax-markup-ignored-text);background-color: var(--color-prettylights-syntax-markup-ignored-bg);}.markdown-body .pl-mdr {font-weight: bold;color: var(--color-prettylights-syntax-meta-diff-range);}.markdown-body .pl-ba {color: var(--color-prettylights-syntax-brackethighlighter-angle);}.markdown-body .pl-sg {color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);}.markdown-body .pl-corl {text-decoration: underline;color: var(--color-prettylights-syntax-constant-other-reference-link);}.markdown-body g-emoji {display: inline-block;min-width: 1ch;font-family: \"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";font-size: 1em;font-style: normal !important;font-weight: var(--base-text-weight-normal, 400);line-height: 1;vertical-align: -0.075em;}.markdown-body g-emoji img {width: 1em;height: 1em;}.markdown-body .task-list-item {list-style-type: none;}.markdown-body .task-list-item label {font-weight: var(--base-text-weight-normal, 400);}.markdown-body .task-list-item.enabled label {cursor: pointer;}.markdown-body .task-list-item+.task-list-item {margin-top: 4px;}.markdown-body .task-list-item .handle {display: none;}.markdown-body .task-list-item-checkbox {margin: 0 .2em .25em -1.4em;vertical-align: middle;}.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox {margin: 0 -1.6em .25em .2em;}.markdown-body .contains-task-list {position: relative;}.markdown-body .contains-task-list:hover .task-list-item-convert-container, .markdown-body .contains-task-list:focus-within .task-list-item-convert-container {display: block;width: auto;height: 24px;overflow: visible;clip: auto;}.markdown-body ::-webkit-calendar-picker-indicator {filter: invert(50%);}.markdown-body .markdown-alert {padding: var(--base-size-8) var(--base-size-16);margin-bottom: 16px;color: inherit;border-left: .25em solid var(--color-border-default);}.markdown-body .markdown-alert>:first-child {margin-top: 0;}.markdown-body .markdown-alert>:last-child {margin-bottom: 0;}.markdown-body .markdown-alert .markdown-alert-title {display: flex;font-weight: var(--base-text-weight-medium, 500);align-items: center;line-height: 1;}.markdown-body .markdown-alert.markdown-alert-note {border-left-color: var(--color-accent-emphasis);}.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title {color: var(--color-accent-fg);}.markdown-body .markdown-alert.markdown-alert-important {border-left-color: var(--color-done-emphasis);}.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title {color: var(--color-done-fg);}.markdown-body .markdown-alert.markdown-alert-warning {border-left-color: var(--color-attention-emphasis);}.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title {color: var(--color-attention-fg);}.markdown-body .markdown-alert.markdown-alert-tip {border-left-color: var(--color-success-emphasis);}.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title {color: var(--color-success-fg);}.markdown-body .markdown-alert.markdown-alert-caution {border-left-color: var(--color-danger-emphasis);}.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title {color: var(--color-danger-fg);}"
  },
  {
    "articleStyle": 0,
    "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}",
    "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",
    "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/晴天番茄书荒广场"
  },
  {
    "articleStyle": 0,
    "concurrentRate": "",
    "contentBlacklist": "https://statics.woozooo.com",
    "customOrder": -101025,
    "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": "// 是蓝奏云链接时\nhref = window.location.href;\nif(/lanzou/.test(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\nhref = encodeURIComponent(`https://gj.legado.cc/legado?url=${href.replace('/tp/','/')}&type=down`);\n\n\n\nconst 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 += `${i}`\n        }\n        return text\n      };\n\n\n\n\n\n\nconst autoBtn = document.createElement('div');\n      autoBtn.style.display = \"none\";\n      \n\n      autoBtn.innerHTML = `\n    \n${pubBtn({\n\t自动识别: \"auto\",\n\t导入书源: \"bookSource\",\n\t导入订阅: \"rssSource\",\n\t替换净化: \"replaceRule\"\n})}\n    \n\n    \n\n      \n${decodeURIComponent(href)}\n\n\n    \n\n    \n长按按钮可以关闭弹窗\n\n\n  `;\n\n\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        }\n      }\n      btn = document.querySelector('.mdo');\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\n\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}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "[{\n    name: \"　　　　    ༺ˇ»`ʚ  分类选择  ɞ´«ˇ༻   　　　　\",\n    type: \"button\",\n    action: \"$('全部分类')\"\n}, {\n    name: \"　 查看分类设置 　\",\n    type: \"button\",\n    action: \"look(0)\"\n}, {\n    name: \"　 格式分组名称 　\",\n    type: \"button\",\n    action: \"look(1)\"\n}, {\n    name: \"　　　　　　　　༺  前排推荐  ༻　　　　　　　　\",\n    type: \"button\",\n    action: \"$('🌟 精选推荐,📚 书源整理,📮 订阅合集', '前排推荐相关')\"\n}, {\n    name: \"  🌟 精选  \",\n    type: \"button\",\n    action: \"$('🌟 精选推荐')\"\n}, {\n    name: \"  📚 书源  \",\n    type: \"button\",\n    action: \"$('📚 书源整理')\"\n}, {\n    name: \"  📮 订阅  \",\n    type: \"button\",\n    action: \"$('📮 订阅合集')\"\n}, {\n    name: \"　　　　　　　　༺  书源导入  ༻　　　　　　　　\",\n    type: \"button\",\n    action: \"$('书源导入①,书源导入②,书源导入③', '书源导入相关')\"\n}, {\n    name: \"   书源①   \",\n    type: \"button\",\n    action: \"$('书源导入①')\"\n}, {\n    name: \"   书源②   \",\n    type: \"button\",\n    action: \"$('书源导入②')\"\n}, {\n    name: \"   书源③   \",\n    type: \"button\",\n    action: \"$('书源导入③')\"\n}, {\n    name: \"　　　　　　　　༺  阅读下载  ༻　　　　　　　　\",\n    type: \"button\",\n    action: \"$('📕 阅读3.0,📕 阅读2.0[已停更],📕 阅读pro(不似苏)', '阅读下载相关')\"\n}, {\n    name: \"  阅读3.0  \",\n    type: \"button\",\n    action: \"$('📕 阅读3.0')\"\n}, {\n    name: \"  阅读2.0  \",\n    type: \"button\",\n    action: \"$('📕 阅读2.0[已停更]')\"\n}, {\n    name: \"  阅读pro  \",\n    type: \"button\",\n    action: \"$('📕 阅读pro(不似苏)')\"\n}, {\n    name: \"　　　　　　　　༺  蓝奏云①  ༻　　　　　　　　\",\n    type: \"button\",\n    action: \"$('💠 作者,📺 影视,🦋 迷蝶,🌸 关耳,🗞️ 一程丶,🕊️ 歌行灯', '蓝奏订阅相关1')\"\n}, {\n    \"name\": \"  💠 作者  \",\n    \"type\": \"button\",\n    \"action\": \"$('💠 作者')\"\n}, {\n    \"name\": \"  📺 影视  \",\n    \"type\": \"button\",\n    \"action\": \"$('📺 影视')\"\n}, {\n    \"name\": \"  🦋 迷蝶  \",\n    \"type\": \"button\",\n    \"action\": \"$('🦋 迷蝶')\"\n}, {\n    \"name\": \"  🌸 关耳  \",\n    \"type\": \"button\",\n    \"action\": \"$('🌸 关耳')\"\n}, {\n    \"name\": \"  🗞️ 一程  \",\n    \"type\": \"button\",\n    \"action\": \"$('🗞️ 一程丶')\"\n}, {\n    \"name\": \"  🕊️ 歌行  \",\n    \"type\": \"button\",\n    \"action\": \"$('🕊️ 歌行灯')\"\n}, {\n    name: \"　　　　　　　　༺  蓝奏云②  ༻　　　　　　　　\",\n    type: \"button\",\n    action: \"$('🌌 星空看书,🌵 海阔小刘,🎋 YELLYOO,🌐 烏雲(替换净化),🖋️ 七十六时(字体)', '蓝奏订阅相关3')\"\n}, {\n    \"name\": \"  🌌 星空  \",\n    \"type\": \"button\",\n    \"action\": \"$('🌌 星空看书')\"\n}, {\n    \"name\": \"  🌵 小刘  \",\n    \"type\": \"button\",\n    \"action\": \"$('🌵 海阔小刘')\"\n}, {\n    \"name\": \"🎋 yellyoo\",\n    \"type\": \"button\",\n    \"action\": \"$('🎋 YELLYOO')\"\n}, {\n    \"name\": \" 🌐 烏雲(替换净化) \",\n    \"type\": \"button\",\n    \"action\": \"$('🌐 烏雲(替换净化)')\"\n}, {\n    \"name\": \" 🖋️ 七十六时(字体) \",\n    \"type\": \"button\",\n    \"action\": \"$('🖋️ 七十六时(字体)')\"\n}, {\n    name: \"　　　　　　　反馈Q群：365976134　　　　　　　\",\n    type: \"button\",\n    action: \"http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=x8r6m0bYYon_pCgT0BRc1ohwZmkkY61Q&authKey=DpmUioCvx45WjRRBnbRT2DsJ7LL6DNY3uau%2BFKPgR%2FSKz4EgYqUjEU5tJNi%2BkNPl&noverify=0&group_code=365976134\"\n}]",
    "loginUrl": "a = String(source.sourceComment);\nreg1 = /\\s*『.*?』\\s*/g\nreg2 = /.+《(.*?)》.*/\nsortName = []\n\nb = a.match(reg1);\nb = a.split(reg1).map((list, i) => {\n    if (!/^\\s*$/.test(list)) {\n        try {\n            sort = b[i - 1].match(/『(.*?)』/)[1] + \"::\";\n        }\n        catch (err) {\n            sort = \"🌟 精选推荐::\"\n        }\n\n        url = [];\n        Sort = [\"\"];\n        list.split(/\\s*\\n\\s*/).map(text => {\n            text = String(text);\n            if (text.split('::').length == 2 && /^(?!.*(&&|•)).*::/.test(text)) {\n                Sort.push(text);\n            } else {\n                text.split(/\\s*(&&|•)\\s*/).map(text => {\n                    if (text.split('::').length == 2) Sort.push(text);\n                    else if (!/^\\s*::/.test(sort) && reg2.test(text)) url.push(text);\n                });\n            }\n        });\n        return sort += url.join('•') + Sort.join('\\n');\n    }\n    return list\n}).map(text => {\n    text = String(text).replace(/^\\s*::\\s*|\\s*::\\s*$/g, '');\n    \ntext = text.split('\\n').map(text=>{\n    if (/《/.test(text)) text = text.replace(/^(.+?::)(https?\\:\\/\\/(www.)?baidu.com\\/?\\?wd=\\s*)*/, '$1https://www.baidu.com/?wd=');\n\n\n// 更改连接符\n    return text.replace(/\\s*(♞♞|★)\\s*/g, '•');\n  }).join('\\n');\n    if (/::/.test(text)) {\n        sortName.push(text.replace(/::.*/g, ''))\n        return text\n    }\n    return \"\";\n}).join('\\n');\n\n\n\n\n\n\n\n\n\n\nfunction set(json) {\n    json = JSON.stringify(json).replace(/(\".+?)(\\d[,}])/g,'\\n\\t\\t$1 $2').replace(/}$/,'\\n}');\n    return source.setVariable(json);\n}\n\nfunction get() {\n    try {\n        v = JSON.parse(source.getVariable());\n    } catch (e) {\n        v = null\n    }\n    if (v == null || Array.isArray(v)) v = {};\n}\nget()\n\nsortName = sortName.join(',').replace(/\\s*\\n\\s*/g, ',').split(',').map($ => {\n    $ = $.trim()\n    if (v[$] == undefined) v[$] = 1;\n    return $;\n}).join(',');\nb = b.split('\\n').map(text => {\n    t = text.trim()\n    return v[t.split(/\\s*::/)[0]] ? t : \"\"\n}).join('\\n');\nset(v);\n\n\n//log字符串\nfunction login(t) {\n    if (t == undefined) return true;\n    java.log(t);\n    java.toast(t);\n}\n\n\n//log当前分类状态\nfunction look(type) {\nget();\nif (JSON.stringify(v) == \"{}\") $('全部分类');\nif(type){\n\t\tt = [{name:\"　　　　    ༺ˇ»`ʚ  分类选择  ɞ´«ˇ༻   　　　　\",type:\"button\",action:\"$('全部分类')\"}\n,{name:\"　 查看分类设置 　\",type:\"button\",action:\"look(0)\"}\n,{name:\"　 格式分组名称 　\",type:\"button\",action:\"look(1)\"}];\n\t\tfor (key in v) t.push({\n\t\t\tname:key,\n\t\t\ttype:\"button\",\n\t\t\taction:\"$('\"+key+\"')\"\n\t\t});\n\t\tt.push({name: \"　　　　　　　反馈Q群：365976134　　　　　　　\",type:\"button\",action:\"http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=x8r6m0bYYon_pCgT0BRc1ohwZmkkY61Q&authKey=DpmUioCvx45WjRRBnbRT2DsJ7LL6DNY3uau%2BFKPgR%2FSKz4EgYqUjEU5tJNi%2BkNPl&noverify=0&group_code=365976134\"});\n\t\tset(t)\n\t\tt = \"【格式发现】\\n\\t❗数组是复制到登录ui的❗\\nemmm，登录日志好像没办法长按复制。\\n已保存到源变量，去源变量那里复制吧。\";\n\t}\nelse{\n    t = \"【分类状态】\";\n    for (key in v) t += '\\n\\t' + key + '=>' + (v[key] ? '启用' : '禁用');\n   }\n  return login(t);\n}\n\n\n//启用/禁用\nfunction $(sort, name) {\n    get();\n    if (name == undefined) name = sort.split(',')[0];\n    name = name.trim()\n    if (name == '全部分类') {\n        sort = sortName;\n    } else { //屏蔽错误分类\n        sort1 = []\n        sort2 = sortName.split(',')\n        sort.split(',').map(key1 => {\n            key1 = key1.trim();\n            for (i in sort2) {\n                key2 = sort2[i].trim();\n                if (key1 == key2) {\n                    sort1.push(key1);\n                    break;\n                }\n            }\n        })\n        sort = sort1.join(',')\n    }\n    if (!/^\\s*$/.test(sort)) {\n        sort = String(sort).split(',');\n        f = sort.length > 1 ? '分组' : '分类';\n        V = v[sort[0]];\n        if (name == '全部分类') v = {};\n        login('【更改成功】\\n『' + f + '』 ' + name + ': 已' + (V ? '禁用' : '启用'));\n        sort.map(key => v[key] = V ? 0 : 1);\n        return set(v);\n    }\n    return login('【无法更改】\\n原因：没有有效分类(分类名称不正确)')\n}",
    "ruleArticles": "<js>\ntry {\n    $ = JSON.parse(src).text;\n    if ($ == \"no file\") $ = [];\n} catch (err) {\n    reg = /^(https?\\:\\/\\/((www|m)\\.)?baidu\\.com\\/?\\?wd=\\s*)+/i;\n\n    if (baseUrl == source.sourceUrl) {\n        $ = [{\n            name_all: \"无法获取分类？可能没有启用\",\n            time: \"右上角 - 【登录】启用，再【刷新分类】\"\n        }]\n    }\n\n\n\n    //网站整合\n    else if (baseUrl.match(reg)) {\n        $ = [];\n        baseUrl.replace(reg, '').\n        split(/\\s*•\\s*/).map($$ => $.push({\n            name_all: $$.match(/.*?《(.*?)》/)[1],\n            time: $$.match(/◎.*?◎/) ? $$.match(/.*?◎(.*?)◎/)[1] : \"\",\n            uri: $$.match(/【.*?】/) ? $$.match(/.*?【(.*?)】/)[1] : \"\",\n            url: $$.match(/^([^【《◎]*),?/)[1]\n        }));\n    }\n\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        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        else {\n            json = [];\n            name = java.getString('.user-radio@text||title@text')\n            java.getElements('#folder .mlink').forEach(a => {\n                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\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\n            //get【pwd】(链接提取码)\n            pwd =\n                $(/##[^【]/) ? uri.match(/##(.*?)(【|$)/)[1] :\n                \"\";\n\n\n\n            head = {\n                method: \"POST\",\n                params: {\n                    uri: uri,\n                    img: $(/【[^】]/) ? uri.match(/【([^】]+)/)[1] : \"\"\n                }\n            }\n\n\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】\n            url += \"/filemoreajax.php,\" + JSON.stringify(head);\n\n\n\n            //ajax\n            $ = JSON.parse(java.ajax(url));\n            $ = json.concat($.text != 0 ? $.text :\n\n                //密码错误提示\n                [{\n                    name_all: $.info,\n                    time: uri.replace(/[#\\?].*/, '') + $.info,\n                    url: baseUrl.replace(/[#\\?].*/, '')\n                }])\n            baseUrl = url\n        }\n    }\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==\"自动\")?\"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><h3>{{$.name_all}}</h3>\n<h5>导入不成功？多导入几次试试</h5>\n\n<h6><b>\n↓资源链接，点击复制\n<a href=\"${url}\">一键导入</a>\n<textarea id=\"copy\" onclick=\"copy()\">${decodeURIComponent(String(url).replace(/legado.*?src=/,''))}</textarea>\n{{$.time}}\n</b></h6>\n\n<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\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": "$.uri@js:\nu0 = String(java.get('url'));\nu1 = u0.match(/uri\":\"([^\"]+)/);\nu2 = u0.match(/img\":\"([^\"]+)/);\nuri=String(result)||(u2?u2[1]:u1?u1[1]:\"\");\nfunction $(reg){\n\t\treturn uri.match(reg)?true:false\n\t}\n\n\nsrc =\n$(/https?:\\/\\/|^\\d{3}(\\/\\d\\d){3}$/)? uri:\n$(/【[^】]/)? baseUrl.match(/【(.*?)(】|$)/)[1]:\n\n// 默认封面\n\"\"||source.sourceIcon;\n\n// 补全链接\nsrc.match(/^\\d{3}(\\/\\d\\d){3}$/)?`http://avatar.coolapk.com/data/${src}_avatar_middle.jpg`:src",
    "ruleLink": "$.id@js:\nurl=`{{$.url}}`;\nif(result)url+=`/tp/{{$.id}}`;\nString(url).trim().replace(/^..导入/,'');",
    "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",
    "shouldOverrideUrlLoading": "// 星云推书 - 跳转搜索\nif (url.startsWith(\"https://m.sm.cn/s\")) {\n    var xxx = java.toURL(url)\n    var searchKey = xxx.searchParams.get(\"q\")\n    java.searchBook(String(searchKey).split(\" \")[0])\n    true\n} else false",
    "singleUrl": false,
    "sortUrl": "@js:eval(String(source.loginUrl));b",
    "sourceComment": "书源订阅 v2023-08-01\n\n\n\n\n\n登录更改后要【刷新分类】\n\n刷新分类，刷新分类，刷新分类\n\n\n\n\n\nhttps://legado.cn【017/37/03/54】《🕋丨阅读论坛》◎by 开源阅读交流论坛◎\nhttps://www.yckceo1.com/yuedu/shuyuan/index.html【002/88/03/61】《🏬丨源仓库》◎by 我不是木木◎\nhttps://vt.sm.cn/api/novelStarReco/index【https://ghproxy.com/https://raw.githubusercontent.com/ls125781003/lmtubiao/main/square/56.png】《🌌丨星云推书》◎阅读版本要求：3.23.073011及以上◎\n一键导入https://www.gitlink.org.cn/api/yi-c/yd/raw/sy.json?ref=master【002/55/79/99】《🗞️丨一程丶》◎🏷️ 综合 &nbsp;📆 2023-08-01 &nbsp;🔗 长期更新◎　&&　书源导入https://raw.gitmirror.com/PB-pobing/pobing/pb/sy.json【002/19/08/85】《🏔️丨破冰pobing》◎🏷️ 精简 &nbsp;📆 2023-06-24 &nbsp;🔗 长期更新◎　•　一键导入https://ghproxy.com/https://raw.githubusercontent.com/zmn001125/booksources/master/sources/guaner.txt【002/37/92/04】《🌸丨关耳010225》◎🏷️ 女频 &nbsp;📆 2023-04-21 &nbsp;🔗 长期更新◎\n\n\n\n\n\n\n『📚 书源整理』\nhttp://old.yckceo1.com【002/88/03/61】《🏚️丨原仓库》◎源仓库 - 旧版数据◎\nhttp://yuedu.miaogongzi.net/gx.html【003/77/52/16】《🏣丨喵公子》◎喵公子书源管理◎\nhttps://legado.aoaostar.com【https://avatars.githubusercontent.com/u/86001674】《📕丨aoaostar》◎标示的日期仅为采集刷新日期◎\nhttps://www.coolapk.com/feed/48103146?shareKey=NjU4ODAyOTAxYTVkNjRjOGQ2ODI【001/62/41/31】《🤖丨MultiTTS》◎2022-08-01　by 双子T369◎\nhttps://github.com/jing332/tts-server-android/releases/【https://avatars.githubusercontent.com/u/42014615】《🤖丨tts Server》◎2023-07-26　by jing332◎\nhttps://cdn.jsdelivr.net/gh/ag2s20150909/TTS@release/【000/55/89/24】《🤖丨tts Release》◎2022-12-20　by ag2s20150909◎\n\n\n\n『📮 订阅合集』\n订阅导入http://old.yckceo.com/d/d3URc【https://yinrss.com/favicon.ico】《🌏丨隐订阅v0.2》◎🏷️ 新闻资讯 &nbsp;📆 2022 &nbsp;🔗 导入一次就行◎\n订阅导入https://bushixuanqi.oss-cn-chengdu.aliyuncs.com/通用发现v5.json【002/93/87/83】《🔎丨不世玄奇》◎🏷️ 通用订阅 &nbsp; 📆 2023-04-24 &nbsp;🔗 长期更◎\n订阅导入https://www.gitlink.org.cn/api/yi-c/yd/raw/dy.json?ref=master【002/55/79/99】《🗂️丨一程丶》◎🏷️ 网站整合 &nbsp;📆 2023-08-01 &nbsp;🔗 长期更◎\n订阅导入https://agit.ai/butterfly/yd/raw/branch/yd/迷迭订阅源.json【005/73/38/08】《🦋丨暗香迷迭》◎🏷️ 常用订阅 &nbsp;📆 2023-07-28 &nbsp;🔗 长期更◎\n订阅导入https://gitlab.com/WaterShadow/mylegadosource/-/raw/master/rss/ecollect/ecollectrss.json【014/61/38/62】《❌丨X小影》◎🏷️ 网站整合 &nbsp; 📆 2022-08-13 &nbsp;🔗 已停更◎\n订阅导入https://www.gitlink.org.cn/api/fcdlcb/ydsy/raw/exportRssSource.json?ref=master【006/00/38/60】《🌀丨风停在了窗边》◎🏷️ 网站整合 &nbsp;📆 2022-09-30 &nbsp;🔗 已停更◎\n订阅导入https://files.catbox.moe/9949s1.json【003/66/76/21】《🔞丨Engels》◎🏷️ 特殊订阅 &nbsp;📆 2023-05-?? &nbsp;🔗 已停更◎\n\n\n\n\n📕 阅读3.0beta::https://miaogongzi.lanzout.com/b01rgkhhe##【000/44/04/35】\n💠 作者::https://wwr.lanzoui.com/b03p9ftpc##read【004/33/91/15】\n📺 影视::https://wwr.lanzoui.com/b03q7n81e##read【004/33/91/15】\n🦋 迷蝶::https://wwdn.lanzoue.com/b0d5g0tba##iori【005/73/38/08】\n🌸 关耳::https://wwa.lanzoux.com/b05fs5ccd##guaner【002/37/92/04】\n🗞️ 一程丶::https://y-c.lanzoui.com/b00r1ko0d##sydy【002/55/79/99】\n🕊️ 歌行灯::https://xiao233666.lanzoui.com/b02q6wfuh##投币【011/44/03/00】\n🌌 星空看书::https://yuntuxs.lanzouk.com/b02qlq3wb##aku5【http://xkksapp.com/image/logo.png】\n🌵 海阔小刘::https://ls125781003.lanzoum.com/b066gazed##8u15【https://qqchannel-profile-1251316161.file.myqcloud.com/168776811192b70fa56060f9fe】\n🎋 YELLYOO::https://wwn.lanzoub.com/b01pihymd##yuedu【004/31/76/87】\n🌐 烏雲(替换净化)::https://www.lanzoux.com/b0bw8jwoh##【000/70/83/23】\n🖋️ 七十六时(字体)::https://lsy-again.lanzouf.com/b01dlfjej##5tfp【021/47/37/15】\n📕 阅读pro(不似苏)::https://busisu.lanzoub.com/s/yuedupro##777【003/73/49/21】\n📕 阅读2.0[已停更]::https://kunfei.lanzoui.com/b0f7pt4hi##【000/44/04/35】\n\n\n\n『书源导入①』\n书源导入https://yuedu.xiu2.xyz/shuyuan【https://cdn.staticaly.com/gh/XIU2/Yuedu/master/dist/img/favicon.ico】《💠丨xiu2》◎🏷️ 精品 &nbsp; 📆 2023-07-28 &nbsp;🔗 在更◎\n一键导入https://www.gitlink.org.cn/api/haxc/book/raw/bookSource.json?ref=master【000/19/42/76】《🎨丨haxc981》◎🏷️ 漫画 &nbsp;📆 2023-07-11 &nbsp;🔗 在更◎•一键导入https://www.gitlink.org.cn/api/AzlmZ_del/BookSource/raw/Encrypt_ComicSource.json?ref=master【003/47/84/07】《🎨丨yozlmyo》◎🏷️ 特殊 &nbsp;📆 2023-03-24 &nbsp;🔗 停更◎•一键导入https://shuyuan.mgz6.cc/rss/0222yousheng.txt【002/19/08/85】《🎧丨破冰pobing》◎🏷️ 有声 &nbsp;📆 2022-02-22 &nbsp;🔗 停更◎•一键导入https://agit.ai/pcw21138/mmddm/raw/branch/master/a.json【https://ghproxy.com/https://raw.githubusercontent.com/ls125781003/lmtubiao/main/square/6.png】《🌊丨水西安》◎🏷️ 通用搜索 &nbsp; 📆 2022 &nbsp;🔗 停更◎•一键导入https://bushixuanqi.oss-cn-chengdu.aliyuncs.com/通用书源%2B搜索引擎书源.json【002/93/87/83】《🔎丨不世玄奇》◎🏷️ 通用书源 &nbsp; 📆 2022 &nbsp;🔗 停更◎\n\n\n\n\n\n『书源导入②』\n一键导入https://agit.ai/Namo/Legado3.0BookSource/raw/branch/master/Namo.json【001/89/69/98】《🗼丨namoferr》◎🏷️ 精选 &nbsp;📆 2023-02-09 &nbsp;📟 032◎\n一键导入https://www.gitlink.org.cn/api/fcdlcb/FTSY/raw/shareBookSource.json?ref=master【006/00/38/60】《🌀丨风停在了窗边》◎🏷️ 破防 &nbsp;📆 2022-09-30 &nbsp;📟 032◎•书源导入https://cyao.tk/yuedu/shuyuan【https://avatars.githubusercontent.com/u/10820724】《🐳丨cyao2q》◎🏷️ 精简 &nbsp;📆 2023-07-13 &nbsp;📟 047◎\n书源导入https://gj.legado.cc/legado/?url=https://miaogongzi.lanzout.com/iYlX0125z0la&type=down【004/05/93/95】《📚丨黄凡凡》◎🏷️ API &nbsp; 📆 2023-04-06 &nbsp;📟 062◎\n一键导入https://gitlab.com/lydphp/yun/-/raw/main/es.json【000/51/63/05】《🥦丨財机》◎🏷️ API &nbsp; 📆 2022-08-19 &nbsp;📟 026◎\n一键导入https://gitlab.com/olixina/source/-/raw/main/bookSource.json【000/81/89/46】《🦔丨渊呀》◎🏷️ API &nbsp; 📆 2021-07-31 &nbsp;📟 047◎\n\n\n\n\n『书源导入③』\n一键导入https://jt12.de/SYV2_4/2023/07/25/22/13/32/169029441264bfd88c42cea.json【001/09/25/87】《🏖️丨水幽临渊》◎🏷️ 优质 &nbsp;📆 2023-07-25 &nbsp;📟 395◎\n书源导入https://gj.legado.cc/legado/?url=https://wwxi.lanzouq.com/iEtbE13ux87i&type=down【000/51/60/01】《🌌丨宇宙之神》◎🏷️ 整理 &nbsp;📆 2023-06-04 &nbsp;📟 340◎\n一键导入https://slaijie.gitee.io/legado/legado/BookSource210116.json【001/41/29/44】《🌿丨芜恙》◎🏷️ 自用 &nbsp; 📆 2021-01-16 &nbsp;📟 189◎\n一键导入https://raw.staticdn.net/mzbgf/tangguo/master/exportBookSource.json【005/58/61/55】《🍬丨糖果超甜哒》◎🏷️ 女频 &nbsp; 📆 2022-02-28 &nbsp;📟 138◎\n一键导入http://www.xiaodaoyuedu.com/sourceRules.json【http://www.xiaodaoyuedu.com/favicon.ico】《📱丨小刀阅读》◎🏷️ 阅读套壳，书源通用 &nbsp;📟 109◎\n一键导入http://jiaoxiao166.com/a/book_source.json【http://jiaoxiao166.com/favicon.ico】《📱丨爱猫小说》◎🏷️ 阅读套壳，书源通用 &nbsp;📟 296◎\n\n\n\n\nhttp://oli-fa.github.io/YueDuBackup\n『』🌼 菊鶸\n一键导入https://cdn.jsdelivr.net/gh/oli-fa/YueDuBackup@master/legadoBackUp/replaceRule.json【https://avatars.githubusercontent.com/u/89572235】《💠丨正则⓪》◎🏷️ 替换净化◎•一键导入https://cdn.jsdelivr.net/gh/oli-fa/YueDuBackup@master/R18/R18BookSource.json【001/08/92/56】《📚丨书源①》◎🏷️ 特殊书源◎•一键导入https://cdn.jsdelivr.net/gh/oli-fa/YueDuBackup@master/legadoBackUp/bookSource.json【001/08/92/56】《📚丨书源②》◎🏷️ 未校验の◎•一键导入https://cdn.jsdelivr.net/gh/oli-fa/YueDuBackup@master/R18/R18RssSource.json【001/08/92/56】《📖丨订阅①》◎🏷️ 特殊订阅◎•一键导入https://cdn.jsdelivr.net/gh/oli-fa/YueDuBackup@master/legadoBackUp/rssSources.json【001/08/92/56】《📖丨订阅②》◎🏷️ 未校验の◎\n\n\n🎧 有声:\n:https://wwr.lanzoui.com/b03qhlncd##read【004/33/91/15】\n🏔️ 破冰:\n:https://pobing.lanzoui.com/b0cxk0w8b##59bv【002/19/08/85】\n🍊 夏一L:\n:https://wwk.lanzout.com/b01hqwmji##【http://avatar.coolapk.com/images/avatar_middle.gif】\n🌻 四月天:\n:https://xiahanyun.lanzoum.com/b030q8wyj##1234【003/67/13/18】\n☁️ 千仞云:\n:https://wwu.lanzouv.com/b020rirbg##关山【003/94/61/35】\n🍁 殁漂遥:\n:https://acold.lanzoux.com/b00u00nih##a0iu【https://image.uc.cn/o/uop/g/uop/avatar/26ae5a39835175a411889d98869288ed.jpg】\n🏵️ 于花都:\n:https://wws.lanzoui.com/b0269ornc##2333【005/87/36/52】",
    "sourceGroup": "📱 资源",
    "sourceIcon": "https://ghproxy.com/https://raw.githubusercontent.com/ls125781003/lmtubiao/main/square/63.png",
    "sourceName": "书源订阅(追补阅读beta下载)",
    "sourceUrl": "https://www.lanzoux.com",
    "style": "",
    "variableComment": "【刷新分类】【刷新分类】【刷新分类】"
  },
  {
    "articleStyle": 1,
    "coverDecodeJs": "",
    "customOrder": -100942,
    "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\"}",
    "injectJs": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginCheckJs": "",
    "loginUi": "",
    "loginUrl": "https://www.yckceo.com/yuedu/shuyuan.html",
    "ruleArticles": "class.ylist",
    "ruleContent": "head@all&&class.m-top@all\n@js:sy=result.match(/<a href=\"(.*?)\"/)[1];\nsy='<iframe src=\"'+sy+'\" hidden></iframe>';\nresult=sy+'\\n'+result;",
    "ruleDescription": "",
    "ruleImage": "",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "p@text&&span@title&&span@text##\\n##🔖",
    "ruleTitle": "名称：{{//h2/a[1]/text()##http.*}}\n网址：{{//h2/a[1]/text()##.*(http)##$1}}",
    "singleUrl": false,
    "sortUrl": "看👀\n书源📒::/yuedu/shuyuan/index.html?page={{page}}\n书源合集📒📒::/yuedu/shuyuans/index.html?page={{page}}\n\n订阅源🛎::/yuedu/rss/index.html?page={{page}}\n订阅源合集🛎🛎::/yuedu/rsss/index.html?page={{page}}\n\n异次元🗃::/yiciyuan/tuyuan/index.html?page={{page}}\n\n\n设置源变量[搜索]→::#\n书源关键词搜索📒🔍::/yuedu/shuyuan/index.html?keys={{source.getVariable()}}&uid=&order1=time&order2=1&ver=&faxian=&sousuo=&x18=<,&page={{page}}>\n书源UID搜索📒🔍::/yuedu/shuyuan/index.html?keys=&uid={{source.getVariable()}}&order1=time&order2=1&ver=&faxian=&sousuo=&x18=<,&page={{page}}>\n\n2.0书源📔::/yuedu/shuyuan/index.html?keys=&uid=&order1=time&order2=1&ver=2&faxian=&sousuo=&x18=<,&page={{page}}>\n3.0书源📔::/yuedu/shuyuan/index.html?keys=&uid=&order1=time&order2=1&ver=3&faxian=&sousuo=&x18=<,&page={{page}}>\n\n纯搜索书源📙::/yuedu/shuyuan/index.html?keys=&uid=&order1=time&order2=1&ver=&faxian=0&sousuo=1&x18=<,&page={{page}}>\n纯发现书源📗::/yuedu/shuyuan/index.html?keys=&uid=&order1=time&order2=1&ver=&faxian=1&sousuo=0&x18=<,&page={{page}}>\n搜发书源📙📗::/yuedu/shuyuan/index.html?keys=&uid=&order1=time&order2=1&ver=&faxian=1&sousuo=1&x18=<,&page={{page}}>\n\n搜🔍\n订阅源关键词搜索🛎🔍::/yuedu/rss/index.html?keys={{source.getVariable()}}&uid=&order1=time&order2=1&ver=&faxian=&sousuo=&x18=<,&page={{page}}>\n订阅源UID搜索🛎🔍::/yuedu/rss/index.html?keys=&uid={{source.getVariable()}}&order1=time&order2=1&ver=&faxian=&sousuo=&x18=<,&page={{page}}>\n异次元关键字搜索🗃🔍::/yiciyuan/tuyuan/index.html?keys={{source.getVariable()}}&uid=&order1=time&order2=1&faxian=&sousuo=&x18=<,&page={{page}}>\n异次元UID搜索🗃🔍::/yiciyuan/tuyuan/index.html?keys=&uid={{source.getVariable()}}&order1=time&order2=1&faxian=&sousuo=&x18=<,&page={{page}}>",
    "sourceComment": "by：旅途\n//发布页：https://yckceo.vip/\n//\t主站：https://www.yckceo.com\n//备用地址：https://xgf.yckceo1.com\n//可通过设置源变量搜索\n//通过切换布局，能最大范围查看分享者\n//书源搜索用的较多提到前面，订阅源搜索太少暂时用不上提前\n//书源\n//书源合集\n//订阅\n//订阅合集\n//异次元\n//可通过登录发布源",
    "sourceGroup": "阅读",
    "sourceIcon": "http://www.yckceo.com/favicon.ico",
    "sourceName": "源仓库[书源-订阅-异次元-搜索]",
    "sourceUrl": "https://www.yckceo.com",
    "style": ""
  },
  {
    "articleStyle": 0,
    "customOrder": -100942,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "阅读,书源",
    "sourceIcon": "https://i.loli.net/2021/06/23/S7rvWRZtPIq34MJ.png",
    "sourceName": "源仓库",
    "sourceUrl": "http://www.yckceo.vip"
  },
  {
    "articleStyle": 0,
    "customOrder": -26257,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "参考",
    "sourceIcon": "",
    "sourceName": "格斗出招表",
    "sourceUrl": "https://www.spmoves.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": -10,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "阅读",
    "sourceIcon": "http://mms1.baidu.com/it/u=2460590414,350103885&fm=253&app=138&f=PNG&fmt=auto&q=75?w=256&h=256",
    "sourceName": "书海男生",
    "sourceUrl": "http://m.shuhai.com/top/?method=popular&siteid=0&type=monthsale"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceComment": "官网：www.yiove.com",
    "sourceGroup": "书源",
    "sourceIcon": "https://shuyuan.yiove.com/logo.jpeg",
    "sourceName": "Yiove 书源仓库",
    "sourceUrl": "https://shuyuan.yiove.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "1",
    "sourceIcon": "",
    "sourceName": "源仓库(官方纯净)",
    "sourceUrl": "http://yckceo.vip"
  },
  {
    "articleStyle": 2,
    "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,
    "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",
    "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>"
  },
  {
    "articleStyle": 2,
    "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,
    "ruleArticles": ".col-md-6||ul.col-pd@li",
    "ruleImage": "a@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href||page",
    "ruleTitle": "a@text",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774456432455,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774456774178,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "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",
    "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\"}",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774457759200,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774770723489,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "书源",
    "sourceIcon": "http://v1.gyks.cf/favicon.ico",
    "sourceName": "晴天书源",
    "sourceUrl": "https://sy.gyks.cf"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1774770730087,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "书源",
    "sourceIcon": "http://v1.gyks.cf/favicon.ico",
    "sourceName": "晴天发布页",
    "sourceUrl": "http://vip.gyks.cf"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "💰 正版",
    "sourceIcon": "https://tse2-mm.cn.bing.net/th/id/OIP-C.JSsCfWzbp6kBKtpvNu_1mAAAAA?w=194&h=155&c=7&r=0&o=5&dpr=3.3&pid=1.7",
    "sourceName": "纵横天下榜单",
    "sourceUrl": "https://m.zongheng.com/rank"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "💰 正版",
    "sourceIcon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAsJCQcJCQcJCQkJCwkJCQkJCQsJCwsMCwsLDA0QDBEODQ4MEhkSJRodJR0ZHxwpKRYlNzU2GioyPi0pMBk7IRP/2wBDAQcICAsJCxULCxUsHRkdLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCz/wAARCAFRAa0DASIAAhEBAxEB/8QAHAABAAICAwEAAAAAAAAAAAAAAAQGBQcBAgMI/8QAWBAAAQMDAgIDCggJCAcGBwAAAQACAwQFEQYSITEHE0EUIjJRVWFxgZTTFRYXNkKRtNEjM1JUYnJ0obE0dYSSk7PS8CRTVoKissE1N5Wk4fFDZHODhaPD/8QAGwEBAAIDAQEAAAAAAAAAAAAAAAQFAgMHAQb/xAA7EQEAAQIDBAcFBQcFAAAAAAAAAQIDBAURBhIhMRMUQVFxgcFCUmGh0RUWMrHwIzM0U2KC4SIkQ3KR/9oADAMBAAIRAxEAPwDbiIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAuPGuVjbtebXZoevrZtu7IiiYN00zgM4jbw9ZJAHjXkzEcZZ0W6rtUUURrM9jIoFrip6RasuIorbCxmTh1VI+RxHnbFtA/rH1qN8ol8/Mrf8AVUe8UfrVvvX9OzWY1Rr0ennDaPFOK1d8ol8/Mrf9VR71PlEvn5lb/qqPerzrVvvZfdnMfc+cNo8U4rV3yiXz8yt/1VHvU+US+fmVv+qo96nWrfefdnMfc+cNo8UWrvlEvn5lb/qqPep8ol8/Mrf9VR71OtW+8+7OY+584bRXC1f8ol7/ADK3/VUcf/2rI0PSJE57WXKgMTHcHTUj3SbPOYngOx6HE+Zexirczpq13NnMxt0zVNvXT4wv+excjko1LV0tbDFU0k7JoJBlj2HIPjB7c9hUkZwpPPjCgqpmmd2rmIiI8EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQFwuU8aCPVVENJT1VVOcQ00Uk8pHPZG0uOB4+HBaPudxqrrXT1tSe/kPeMBOyGIHvY2DxBbY1g8s05eCOBLKZvqdURtK01y4nOAOz6vu+tVmNrneil0PZDC29yvFVc9dPCNIn1FyrLSaI1RVNa8w09K1wyO6pu+x+rCHn94Wat/R9URVdNJX1VNPSscTPCxsrTINpw0EEHng+pRabFyrlS+jv59gbOsTciZju4+XioHoXC2fedD2g0VQ+00kza5rWmnY2peWPO9u4OE7iOWccQtcVlDX0EnVVtLNTP8AotmZt3fquGWn1FLlmq3+KGzL84w2YUzNudJ7p5+Oms8EdETx8sc1pXDlcLIUFlvV02mhoZpmHh1pwyEf/ckIafUSrBB0e3+QB01RQw5HBodJK4enDWj/AIitlNquuNaYVuIzXB4adLtyNfH0U9cq6v6O7wAdldRud2BzJWD6xu/gsJctL360xSVFVTxmmjLQ+eCVr2N3EMGQ4NdxJA8HtXs2LlPGYa7OcYHEVRRRcjWUrSF7ltlyhpnvPcVfIyCVpPBkzyGMlA9OGn0+ZbfHIL573Fvfg8WEOb5iOK+g4zljCO1oP7lPwVczTNMvidrsLRbv0XqY41a6+TsiIp74kREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQV3Wnzau/9E+0xLTh7M8Bkczgc88Stx60+bV3/on2mJad4jjxxz4fUD/nxqpxn44n4OnbJRrgbkT73pDd9RfbBRNa2puVGx4a0lgka+QDA+hHl37lHptVaarauCipawyVE7iyNogqGtcQ0vPfPYByBWuaTRmqatocKOKnY7iDVzNYcH9GMOd9YCsFj0XebZdrbX1FRQuippHvkZC6YvO6J8fDcwDtUim7eqmNKeCgxGV5XYt1a4jeriJ0iNNNfn+a/wAkkcTTJI9kcYxufI5rWjJAGS44XlUU1JWROhqYop4JBhzJGB7XBY/UtLV1tkulLSxmWeWOMRxgtaX4lY8gF5DeQPatW0t01Pp2ZsQfU02CT3LWMcYHjtwyThjztIPnWy7fi3VFNUawrssymrH25rs3IiuJ5T+bJ6u01SWU01VRyPFNUzOi6iTvjE4N3d64/R4dqzGlNI2uWjorrcAKp9TG2eGB7fwEIPLc0+EfTw48uGThNRanp79b7bD3PJDVwTvknHB0JGzYDG7O7j5x6zzMmHWpt9ltlutsB7rhpY4ZqipwY43NGCY4weOezJA8xUSJsxc3p5PqrlrNbuX27Ma78zMTPw+M93xjm2Y+SmpYt8r4oIWADdI5sbGjsGXEBYebVulIC4PukLsH/wCAyab6jEwj961cItT6jlMjWV1e8kjrHZ6lh7Q179sLfRwWVh0DqeUAyGhgBGcSTPe4HxHq4yP3rd1mur93RwVf2DgsP/HYjSruj9T+S/UeqdN3CohpKStL6iYuEUboKhhcWtLzgvYG8gTzXhrM50zdvTR/a4lgLFou82y7W6vnnonRU0kjpGxOmLyHQyRjG5gHMhWDWnzZu3po/tcS2b1dVqqa40lWzYwlnMbNOEr3qdadZ+O94Q00/wAF36rv4L6Ei/Fx/qN/gvnt/gu/Vd/BfQkX4uP9Rv8ABacFzq8vVfbZ87Pn6O6IisXPxERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBXdafNq7/ANE+0xLThzw48zwW49afNq7/ANE+0xLTnrx51VYydK4n4OnbIRrgq4/q9Ib5mr7dRsYayrpqfvR/KJo4yeHYHEFRob/p+onipae40stRK4tjjiduLiAXHGOHIFajprBqOtaJILbVuaQNskrRECOwtM5GR6F76TwNR2L/AOvN6v8AR5VsjFVa007vNUVbN4amzcuRe3qqY1mI0/y3RkYUasoaC4Qup6yCKaJ30JGh3HxjtB84IKx2qYpprBd4oI5JZXRRbWRMc+Q4mY47Wt48gT6lrS26o1FaJGxdfJNFGdslLXb3beHggv79p/zgqRdv026opq7VNluUXsbam9h643qZ5cp7OKZqzTMFjMFVSzOdSVMpibFLkvieGl57/tbw7ePnPNZjS2j7bUUlHdbjio7oYJoKbiIGNdyMg5uPqx5jzWN1RqO3Xy22tsLZI6mKpfJPDI0kRjZjIeOBB7P4DGFetL/N6xZ/MYfV3vJRrdFuu9OnGF9j8Zj7GV24u1TFc1TE9+kfrn2ssyOKKNrGMYyKNuGtaA1jWjxAcFAnv2nqYubPdKFrm+E0Tse8dnFrCStZ6lq73cb3daCOWrqYqepdHFS04fI1oAAH4OLPryvCHSGrZwC22mNpxgzzQRn+ru3fuWdWJq1mKKeSHYyDD9HTexmIinejXTx8fo2fHqbS8hw27UYP6cnVj63gBQNXVFNUaXu0kEsUrCaPv4ntkb/Kou1pIVEfonVrBnuKKTzR1EWfqeWrE1drvNvDhWUVVTsOA5z2ExE54DewlmfSVhViLm7MVUJ+GyPA9PRcw+IiZiYnThOuk69miC/wX/qn+C+g4jmOM/oN/gvnx/Brs89rsr6Di/Fx/qN/gmB9rye7Zc7Pn6O6IisnPxERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBXdafNq7/wBE+0xLTh8XoW49afNq7/0T7TEtOHs9IVTjfxw6bsl/A3P+3pD6BGDGM/kf9FpnSfzjsXjM832eVbmHFg/VA/ctb6e0pqOgu9rrqqCBsNPLI6Utna54BhkjGAB4yFKxFNU1UTEcp+j5zJcTas4fFU3KoiaqeEd/NssrG3Ky2e7MLK6ljkOMMlA2zR+dkjO+H149K8NStrHWO6ijE5qeriMQpt/XZbKxxLNnfZwDyWv7brXUFukENfurI2HEkVUDHVM8YEmM5/WB9Szu3aKaopr7UHLstxOJtziMLV/qpnlrpPjCNqTTE1hfHI2cTUdS9zIXOAbKx4G7ZI0d6fMRj0BbI0tx09Yv2KH1cFS9X321Xq2Wl9FLmVtTI+WGTLZYh1ZHfDiPRxKyFFq60WfT1mgZmqrmUccZp4yWCNzRg9dIRgfUT5u1RrU27dydOS+x9vHY7L7NFyiZub0xPDx5/Veo4YIy8xxMYXuL37GtBc483OwuJailg/HTwx55dbIxn/MVqOp1Hq6+SOhp5KraT/J7Ux4DQ44Ae6PL/rcusWjtXVGZHUGzccl1TPCHHPaQHErZ1rX93Tqhxs7FuP8Ae4imie7n9G22V1vkcGsrKV7jyDJ4nH6mlYXWePi1dz4zRfaolQX6H1YwZFJA/txHUx59Hf4WPrKTU1vgfT1kNxgpXFu9j3SGlLg4EZLCYs5x2rGvEV7sxVTolYTJMNF+iuxiaatJidPCfFin8n+Laf4L6Diz1cf6jf4L58f4LvO1y+g4s9XH+o3+CxwPteSTtn/w/wB3o7oiKyc+EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREFe1p82rv/AET7TEtN+L1Lcusml2m7uAMkNpneoVERWm+I5H/PYqnGcLkS6bsjGuCuR/V6Q38+WCCNr5ZY4mYHfSvawcvG4gKGb5p9rtrrtbQ7xd10+c/1lo+SWaZ2+aSSR+MZlc57gOWBuXX/AD2LPrs9yLRsbHt3v/I/y37DU0lSM088Mw7TDIyQf8BKiXKz2i6xGOtpY5MDDJANsrD+hI3vh9a0cx8kbw+NzmPbxa5hLXA+YjirHa9Z3+3mNk0praccDFVO/C4/Qn4u+vI8yyjF0VcK4Rb2yuJw/wC0wtzWY8pd9QaPuFp3VFJ1lXROdjLGl1REXHAa9jAcjxED1Dtyth0K6UR1d73NYcOZQxuLXEcx3Q8cf90H0nsFvs1/tV8iLqV5bPGMzU8uBNHnhnAOCPER+7kMfftYWyzukpqdoq69vAxsdiKE8vwz254+YD6uay6GxH7TXgjzmubXo6hTTO/HOeU6frtWCmo6OjiZBSU8MELBgMhY1jfqaus9xtdMSKmuo4S3mJqiJhHqc4FaduWpNQXMuFRWyNhOcQU+YYQD2FrTx9ZKw6xnG0xwohLsbIXbkb2Ju6T8OPzb1jvNilOIrpbnnOMMqoCfq3LF6yc12mbs5pDmnuM5acg/6XDyIWnV6tmnbE+ESyiF5BfGHu6txByCWA4Kwqxm9TMTCZa2Tixeou0XfwzE8u6de95O8FxH5JX0HFjq4sctjf4L59IJ4DmeAHjJOF9BxghkYPMNaD6cLLA+15NG2fOz/d6OyIisnPhERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBcLlEEaspoqykq6SYEx1MMsEmOe17S0kefjwWjrhQVVtrKiiqm4khcRuwQ2Vh8GRn6J5rfPiWJvNhtd7iDKuPErMiGeLvZos9gdjl4weCjYix0saxzfRZFnH2bdmLka0Vc/q0iiu1V0eXhjz3HW0kzCTjr2yQPx59geFG+T/VH5ds/t5/cqs6vdj2XRKc/y+qNYuwqS54K2fJ/qj/WWz+3n9ynyf6n/Ltn9vP7le9Xue6y+3cv/mwq8M89O9stPNLFK0OAfC9zHtBGDhzT29q8zkkk8SSST4z61bPk/wBT/l2z+3n9ynyf6o/Ltn9vP7lOgu+6xjOstid6Lkaqkitvyf6o/wBZbP7ef3KfJ/qj/WWz+3n9ynV7nusvt3L/AObCpLlWz4gao/Ltvqnn9yshQdHdSXtdc65gYD30VEHF7h4utkxj+p606vcnho13NoMvt073S6sHpKzyXW608jmHuKgkZUVL8d6ZGEPjhB8ZOCfMD4+O4xyCiUNBRW2njpaOFsUMecNbwOTzc48yTzKmBWliz0VOna5pnGaTmWI6XTSmOER+u0REW9TCIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIvCeroqUtFTUwQl4cW9dIxhIHPG4oPdFC+FrN5Rov7eL70+FrN5RovaIvvQTUUL4Ws3lGi9oi+9PhazeUaL2iL70E1FC+FrN5RovaIvvT4Ws3lGi9oi+9BNRRYrhbJ5GxQVlNLK4EtZHKxziGjJwGlcV0ksdMXQv2SGalia/a0lolnZGSA8EciexBLRVo19zDZpjPU9zt4NIiZv72Qsc4u7kMeOX0v/TJXGeoiFHTRmoa6p3sfUwxtklaI27iI2YxvcM4JbgcTg4wQyaLBx3CsldA0uaPw9C0uaxzTI189TC/cx3EE7BkcfSRxMqulubJI4YjStiqi+njmeZOsjkMReCQOHHDserxoMkixtDPcZnzNmNI6GmkNO+SLrN0krGNLy3dwwCS0+cFRZ6y4sllc5j4o2SiRrX9cQ2KJzmO3uipns2vAB8LIznzIM4ixluqqqaGeWYbmkGoglY53VSMfuIYwPjY4bcY4tPj7VzTMrailpJm18zOujE+DHTvIEp6xrC4s+iDtBwM4QZJFjWVdQy1VNW9zZJoG1p3OAa13UySMG4MwMYHHioc1xmgZWVAu1plLIC9sAaQN0TXuwzE5OXcPHyQZ5F1aSWtJ4ZAJ+pRTdLO0ua64UYc0lrgZ4sgg4IPFBMRQvhazeUaL2iL70+FrN5RovaIvvQTUUL4Ws3lGi9oi+9PhazeUaL2iL70E1FC+FrN5RovaIvvT4Ws3lGi9oi+9BNRecM9PUMEkEscsZJaHxODm5HA4I4L0QEREBERAREQEREBERAREQEREBERAREQEREBERAREQE4IvGeqpKbaamoggDyQzr5WR7iBk7S8hB7cE4Kqaq1hR6et0FdStpLjJJWRUphjrI2FjHxyv6zLA88NoHLt+vtpjV9FqC2Or6vuS3yComgEElZE47GBpD8vDTxzjl2edBaeCcFHlrKGFkUk1VTRxyjMTpZo2NkGM5Y5xAK8/hSz+UaD2mH/ABIJnBOCjw1tBUPLKerppnhu4thmje4N8ZDDnCkBAUSthnnZEyIxhraiCaXrNwDmwu60MBAPNzWg8OAJ58lLVD1lr6XStypre21sqxPQx1nWOqXQ4L5ZYtgaI3ctuefagzws0znSdaKMOERMcrYg8y1Dpe6HOkiLA0MB73AJJb9IYU+spqmobROHVGSB7nSNMssLXB8To3bJIgXjicjgutLebVPTUk766hjfNBFK9ndUJ2OewOLc57F6/Cln8o0HtMP+JBCjt1Wx1GOrpWMZNG+R0ckmWQwPlfFBGwxgO8LvnFw4k81JrKetqy6HrYoqI7C57A51U9wO7vCcNbggEO74+jGVPaQ4AgggjII4gg8iCuUECjpq2jMdP1kElFGxwjd1bmVIdnPflpLDntOAe3mvCttzp+qijDzFJNFJUumrq0gNbK2QtZBlzDuwR4Qxz7F11LeXafslxu7acVDqTufEJk6oP62eODww04xuzy7Fi9Gatl1ZT3Kd9Cyk7jmiiDWzum3h7C7JyxqCxtpYomzCIyl0rC38NPPMORAwJXO4cV1giqaehpIWNikngpoItpe6ONzmNa09+GuOOf0SpaFBjO4al1uZRudEHyzF9SWF+wRyVBnkbHkZ5HaOXj8yyWARggYI4gjhg9hUZ9xtcT3xyV1GyRhLXsfURNc0+IgnK6m6WfyjQ+1Qev6SCYOAGMY7E4LXVb0lCl1J8BR26nlg+EKSj7uFcAzZOYwZMNYW97uP0+zs7Lz8KWfyjQe1Q/4kEzgnBRWXC2SvbHFXUckj+DGR1ETnuP6IDsrFap1JT6Wt0FwnpZalktZHRtjhe1hDnxyShxLhjHe49aDP8E4LWkPStHOzfBpq6ysyQHwuD2kjztZhd/lQf/spev3+7QbI4JwWuPlQf/spevqPu15TdK0VO0Pn01dYWOdtDpnhjS7xAuYBn1oNmIsLpq/w6ktcV0hp5Kdj5p4eqkc1zgYnYzlvBZpAREQEREBERAREQEREBERAREQEREBERAREQEREBERAVa1NpTT+o30Ml1mqInUzZY4DDOyEESFriCHtOeQVlVI19adIVUFvuOpK240kFLI+kgdQ7XbpKgdYQ5hhkPJh44HJBR9c6N0vp6z09ba6iplqJLjBTOE1RFM1sToZnnDY2A82t4/eu+idFaWv9ldX3SoqoqkVtRDiKphiaY42sI717HHtPHKxeodP6LptNwX3TtbdKpr7uy2uNeYw0fgJZXYaIGOzwbxysponQNh1LZTcq6oucU4rZ6cNpZadkZZG1hBxJC454ntQX+76L0tdaKwUdbPVR09ppRSUDo6mJhfFsjblxewgkhreSr9X0a6EgpKyZlZWufDTVErA6tpyC5kbnAECMLC9KtFBbqbQtvgLzDRUVbSQmU7nlkIpY2l54DPDxKbp3oy0xd7JZ7lU1d3ZPWUrJ5WwTUrYw52eDA+nc7HrKDB9EfznrP5mqvtFMtr3rV2mNP1MVJdax0FRLA2pY1tPUS5iLnRg5iaQOLSoWndCWHTFdLX0FRcpJpKZ9K4VksD4xG97JCQIoWHPejt/9NddL/zhtfj+BYftVT2oL/8AKZ0f+U5PYq33a1Z0i3yz6gvVFWWqd09PFa4aZ73RSREStnnkIAlAPJw7FuC06Z0nJarPJLYLO6WSgo3yOkoKUvc90LSS4lhOfHxU34raO/2esn/h9J/gQagp6LoTNPTGou15bUGGMztbHPtbLtG4DFMeGc9q9e4ugzBPwxe/R1c/Hh+yrbXxW0d/s9ZP/D6T/AtN9KNBbrdqChgoKOlo4HWenldFSQxwxueaipaXFsYAycAcuxBtfUN1ksWkqi52sRPNJTW8UfdLXOY6KSaGAF4y0+C7zKjWXWPSvqFlVJabfaJ2Ur42TFzWw4c8Egfhqhqsusv+7ir/AJvsv2ilWD6G/wCR6m/aaL/kkQQdV1XStNYLqy+22109qIpO6pKd8JlbipiLAwNqHnwtueCxGg6jpAhpLqNL0NDUwmohNU6rdE1zZNh2hvWTM4Y8y2Z0kfMvUP8A+O+306rXQ5/INR/tlL/duQLnqDpjtFDU3G4WyzQ0dP1XWyAxSEdZI2JuGx1JPMjsWc6P9UXfU9Nd5rk2la6kngii7mjfGCHsJduDnu8SkdJPzLv/AKbd9up1W+hz+Q6j/a6T+7eg51voKyQ2zUuoKQ1rriZXXCRj5mOhzLUNfOQ3ZnABcfC7FWOj/SundURXhlxfWsqqKSnczuaZkbXQyteM7XMdkgtOePat51MEFVT1NLOzfBUwS08zDyfHI0sc0+kFaGtc9V0eayfDW7+49zqWoeG56+gmO6OoYAOOCGuOPyS3nlBf/km0X/rbr7TF7la/6QdNae0zPaKS2Pq3T1ENRUVQqZWSbYtzWRFoaxvMh/1LfElXRRUj66SoibRMpzVOnD2mHqA3f1gcOBGOOfvWiGtqukTWrnBsot5kaX5JBp7XTHAGeOHP/wCaTxcgvGjNBWSnpdM3+V9aLmaeGv29awQB0zC5oLNm7k4fSXbpe+bVu/nym+y1S2IxrWNaxrQ1rQGta0YAA4AALXfS982rd/PdN9lqkFRteo9Raa0ZZKu1tpTT1F0udLVmqifJtmwySLaWuHAgP/q+fhaLbry732t0ZbbW2kFVWQPn1A98T3tpxC8te2MBwxkMcRkn8Y314uwW+C5dFl6hlc1nUTXCtikfwDJaUMnbx8+C3/eUHohnoY7zeIJIx3ZPQNNLKTyjikBmiH62WO/3EGRt/SPfKS/1Ns1K2hjo6R1wp6l9LC9j2zU7HuZsO8+EW7W/rD0rH6ou99v2hKC6XSOmiFVqVvcEdMxzGimjpaqPLtznEkuDgPR5+EPpWt1PSajiqons3XOiiqJ4wRuZJGTBv2j6Lg0esOWb1zUUNT0d6NmoWhlKau3MjjB3dWY6KpjdGT42kEHzhBZOi35pU37bXf3gV5VG6LPmlS/ttb/eBXlAREQEREBERAREQEREBERAREQEREBERAREQEREBERAWvelv5sUv88Uv9xULYSoGuNOao1TcbRbqaSKnsUEQqqmokLSBVue+MgRB29zmt8HgB3x77jwDWBuNA/QLbWJmCuh1MysfASA8wSUkrBI0HmMjBxyyPyuOf0VouS/2d9c2+3ChAraiDqKYHZ3jYzv8McTnj6lb7p0Xaaq6KkgoHSUNXSwMgbVBol7p28S+qj70Fx45Ldp445ANGJtum+lrTUJobPXWeai62SYMcGeG/ALj10Qf2Dk8oPHpH0/eZKTRdHbqS5XIW2iqaWaaGnlnkJa2nY18vVg4LtpKW7Uut7dY6ays0Pd39z0LqNtS2OtY4lzS0SBopzx458JZQDp0x4Vm9fc3/QJjp1/Ksv/AJf7kGI6NqHVtNf6qW70l6ipja6hjH3COrZF1pmgcADMMZwCs9rbTOmbzc6SqumpKW1Tx0EcEcE8tIxz42SyyCQCeRruJJHi71ZPTg6Su75PjKbcbf3NJ1Ypeq6zujfHt/FjOMblXukHRmpNRXiirLbFTOhitkVK8zTiN3WNnnkOGkcsOCDrJ0dUdJSipm1rXQUQYwtnkkZFThj8BuHumDMHhjiuKPo/orgx8lDriuq4439U99HNHMxj8A7C6KYgHiCrFqSwXW56NgslIyE1zILXE5r5NsYNOY9+HkeY44Ly6PdO3fTltuNNc2QtlqK7r4+plEoLBExmSQMdhQV2DRFlqZxSU3SBNPUkvAp4KunkmOwHcOrZOXZHHPBeNx6O9NU0rG3bWoiqHRBzRcJKWOUxZI3NE8wdtyD9S7aU0Hqm0aqobtWRUjaOGWve8xVAc7E1PNE3a0DPNwUvpB0XqTUV5pK62x0zoI7ZBSuMs7Y3dY2aeQ8COWHDtQWLWNBU1GiLhb7fHNWy9zWyKnbTsMks7YqmnO9rYxx4AuOFr7SFbrTSUVxiZo271ndssMpLqerg2dW1zcDELvGtz0MMlPRUEEm3fBS08L9py3cyMNODjlwUhBpzVerNV3TT91oa7R9wt1LN3L1tZOKkRw7KmKRuesgaOJAb4XasRoPUN+stLdY7Zpusu7J6iGSWSlE+IXBhAY7qoXjjz5rbWsrXX3rTl2tlC2N1VU9x9WJX7GYiqopnZcfM0rC9Hemr1pukvEN0ZCx9VUwSQ9TKJctYwtOcBBW9R6i1tqCz19ofoe7U4qu5/wAM2KslLOpnjn4M7nGc7cc+1Zboptl2ttFfm3Ghq6N0tVTOiFZBJA57WxuyWiQDgFshcH1ckHKpXSFatL3C19bdq+nt1XTB5oKuTvpHHgTD1Tfwj2ntABI59hDsTJbOm+v3slvVsoonEZ6gsY4D9B8NO6T/AIwu9F0WUclR3ZqO7112qHEOe3c+Jj8DG2SV73TEehzUGpzf75NaaawSXGQWplQJBG/O1oyMNc5oLyxpy4N4jPHmO93poa1aattob8CVcNf3RsfXVrMb5pg3wXR+E0N+iwjIzxySSctJpzTMlubaX2miNvbnZAIQ0McRgyNc3Dw/xuDs+dUqq6LmU1Q6s01fK62T98Wsc57gM8mMmhc2QN9O5BsscgtddL3zat389032WqXFJbumqjqKSOS72uspGyx9cZOrc7qtwDtzn07ZeWe0rLdINhu+orNR0VsZE6eK5w1butlEY6tkE8fAkYzlwQUK0UuornoGgs1npXyC53upjr5w5gip6eN0Tvwu4h3EkHhngwj6WD2Zo/U2nNY0tbZrbVVFqpK6CSKZr4XPdSSsDZmHc8HIDnt4gclsHQlluVgsLbfcWxtqBV1M2IpBI3Y8gDiOHYrUg09e9I6k1LPrS91dFUw1UclNDp+ke+IOmp4X7XZaHEDvOI4+E4+JYC60eorXoeO2XignphT6lpp6J8roywxz0lXvjbscT3rgXf763pdPhT4Pr/gsQ/CPUP7j6/8AFdd9Hdlatvlg6XtRUkVFc22t8EVQyqYIpIIz1jWPjBJaM8nFBZei35pU37bW/wB4FeVV9DWa5WGwQW64tjbUtqaqVwieJG7ZH5HEcFaOKAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAsJd76LXURQdymYyQiXd1uwNy4sxja7xLNqlas/7Qpf2Jv97IglfHAeTj7SPdp8cB5OPtI92qp6PR+7xKxW9lC6G33GohgMTIW2maPq2AGofUsjZJtHbsOcoJPxwHk4+0j3a5+ODfJ59pHu1hLlCyibQW/DOupYDJVyNaNzp5z1pDnDntG0BSbe2mfRsq5YYnCyy1s1UxzW5mikhMkQd4+/GB6EGR+OA8nH2ke7T44DyefaR7tY2708FDGKdjYy+rrKu4bw0b2UpJjhja/sbjJx5l0tMENayalkbEDT1VJcHPLWhxpmO2VDC4jOMbTjzoMr8cB5OPtI92ufjePJx9pHu1jrg2lZRzV0UUTfho0TqVga3MEEULJZth7MuOD6Fh4oZ53OZDG+R7Y3yPDATiNnNx8yC0fHAeTj7SPdp8cG+Tz7SPdquUUUM9bb4ZsGGWqgZKM8HNc4d4SCOB4ArLzddJQahdU0EMBpp6WCleykZCWs68h0bHhuS0DHb9JBkIdUy1D5GRWwuMcMtQ//AEpjdsUQBe7vmDxjgvP43t8nn2ke7WDtbI3zV/WMa8C03J7dzQ7a4Nb3w3dq62qKCouduiqA10T5HlzHnhI5sbnMa4nsJwgsTdVSOglqW23MMcrIHu7qbwkc0vAx1eeSR6olmbUOjtmW00XXTE1TWhrNwbnvo1iqiWsms9U+ppWU7hdYGt20vc+5rYncOQzt8EHHZ5lDoGMfDfi5jXGO3BzNwBLXdc3i3cgz3xwaOdvI9NSPdrgaxaeIt5I8YqR7tYG1Qmor4GCOB+xsszhUsfLHtY0nPVMIc4jsCn3SIOttFVObIZnVcsRmmoW0Mj4THvAMLR4PDhu/9wn/ABwb228+0j3aDWAPEW8+0j3axFuIiob7U9TBJNALcYXVELJRG6SV7NwDxjK63YML7ZO2NjH1lro6qURtDGulfvBcGt4IM18bx5OPtI92uPjg0c7efaR7tVjqZjF3R1b+o6zqRLjvDJgnZnxqda2NLbtO2Fk9VS0rJaSN0fXYc6UNklEZBy5owfBPNBmvjePJx9pHu1x8cGjGbfxP/wAyPdrAV4qS6mkqKOKlkmp2v2xs6sy8SBK+HPAk/oj96n0wkhprH3HRQ1Hdssgr3vpxUF7hOG9U55B2ho48xyygyHxwHk8+0j3afHBvk/8A8yPdqt3KOGGpuMcHGGOadseDkBjSRgeYclYZnQtrLtTCjoTDR2ltdGzuaPJqWtjeJHuxk8+XLgg7jWAPEW8+0j3a5+N48nH2ke7WDuJD2WioLI2y1NvZLN1UYja+QPezdsbwHAKAg2NargLnSNqxCYsySx7C7f8Ai3Fud2B/BT1gtK/9ks/aar+8KzqAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAsDebFPdKmGojqo4hHC2ItfE5+cPL85Dh41nkQU74oVf5/B7O/wB4u3xTrw3YLlHs3CTYIZNu8cA7Ak5+dW9EFQdpKueS59xic4+E58EhcfSTIuBpOuaHtFyiDXgB7RBIGuA4jcBJxVwRBUHaTr3kGS5RvIaGAvhkdtaPojMiN0nXNJ23KNu5rmu2QSNJa7htOJOSt6IKgdJVzmsa65RFrBhjeokLWA8TtBkwjNKXBmSy5xtJBaSyGVuW+IkSclb0QU74oVfZcIfZ3D/+iliw3c01ZTS3KOZtSKZpfPHO90TYHl4EYdJjtVmRBUG6Tr2btlyjBc1zHFsMjdzT9E7ZOS4GkawHIuEIwQRineCMHPA9YrgiCpyaZu82RNd+saS04lZO8ZHIkOkXm3SVc3cG3KMBwDX7YZBubzwcSK4Igp7dJ3BjmPZcomvadzXMhka5p8YIfn967v0tdJd/W3YSb3BzutjmfucBgF26VW1EFQ+KdcGuYLlFseW72iCQNdjxtEmCjtJ179u+5RO2tDG7oZXbWjkBmRW9EFQ+Klft6v4Sj6sO3tZ1Mm3ce3b1mMrlmk6+J7ZIrnGyRvFj44JGuafHlsoKtyIKjJpS4SvdJLc2SSO8J8kMrnOxw4l0pP712j0vdYRI2G7CJkgw8RRzNDx+kGygK2Igp/xQqxyuEHm/0d/156xdjpa5EvcbowuezY8mKUlzQMBriZM4VuRBUDpKucGNdcoi1rdrQYJCGjntaDIuPijV+UIBx/N3+8VwRBj7Rb32yibSvmbK4SzPL2tLR37i7ABJ/isgiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICi1LZHPi2AnG7OM/f/nKlIgglkmIwGyAbs4ABzxcQTtPrPoauXNkLYyGykNaHO3cHcc9h4+P/JU1EEfY91MwOBD9jSRnB3DB4rpJHIXvc1hAPh+Cd3ftdwycE4B5qWiCOWO6sNcw8HHAwHYGTtJaTg/9F0EcuDuaS4t2k5aTs2BpDXHtypaIIwjJEbXRja17nDIYHYHEAhvDiUkjkMjyATkANI28G7SDx4HPH/PZJRBD6uXiQ3hhxY0NAw/DcF2XenPH6u30iZI2SQuBwd/ix4eRy4n/ACFIRB4VDXvawNzzOdpOfBODwXg1k+x2WyEhznYdxLjt4Hh58qciCF1crogAC3q5DnfuJIxzbz/5V7Qh7WRtOR4fBzTnmvdEEeZzw9oBf33VgBmO1+HZz5l0EdRiIbn5bGOOR4ZYQR6MqWiCK5jnOcercNpGeX4QbmuOTnzcvvXUxS7hgEce85d6NziOOcj1eJTEQeMLC3dkbQQwY4eEBxPBeRY4OwGuEznucJeYLcnAPq4fv9MtEERgIcA1j2bYwJMY74kjBBPP6WSu7oz+H73dvMe3cc4zwLgD4lIRBGERD/AG0HveWOr6vaGHPnXR0Ug6ra3GA1xAA4OLw4jmMcuf/sZiIInVkbx1biMh3fNYXbsu49gPr9K4bHK3Jewu73BAwct2gAA5znPNTEQecILWcQQS5xIIAxkk4AC9ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERB//9k=",
    "sourceName": "起点中文网榜单",
    "sourceUrl": "https://m.qidian.com/rank/"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "💰 正版",
    "sourceIcon": "https://static.xiaoshuo.qq.com/common/static/chuangshi/apple-touch-icon-precomposed.png",
    "sourceName": "创世中文\n（小说）",
    "sourceUrl": "https://m.chuangshi.qq.com/?source=pc_jump"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "💰 正版",
    "sourceIcon": "https://m-static.jjwxc.net/images/wap/logo2.png",
    "sourceName": "晋江排名榜",
    "sourceUrl": "https://m.jjwxc.net/rank"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceIcon": "https://shuyuan.yiove.com/favicon.ico",
    "sourceName": "Yiove 书源仓库",
    "sourceUrl": "https://shuyuan.yiove.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceIcon": "https://www.yckceo.com/static/img/yuedu.png",
    "sourceName": "源仓库",
    "sourceUrl": "https://www.yckceo.com/?ref=www.tboxn.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceIcon": "",
    "sourceName": "腾讯视频1234",
    "sourceUrl": "https://m.v.qq.com/x/m/channel/figure/index?ptag=v_qq_com#v.index.adaptor#3&mreferrer=https://cn.bing.com/&"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceIcon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAsJCQcJCQcJCQkJCwkJCQkJCQsJCwsMCwsLDA0QDBEODQ4MEhkSJRodJR0ZHxwpKRYlNzU2GioyPi0pMBk7IRP/2wBDAQcICAsJCxULCxUsHRkdLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCz/wAARCACQAHMDASIAAhEBAxEB/8QAGwAAAgMBAQEAAAAAAAAAAAAAAAcEBQYDAQL/xABHEAACAQMBAwYJCAcHBQAAAAABAgMABBEFEiExBhMWQZPTFCI1UVJTYXSRIzI2cYGxsrM0QkZ1haG0FTNicnOC8YOS0uHw/8QAGgEAAgMBAQAAAAAAAAAAAAAAAAQCAwYBBf/EADARAAEDAQYFAgYCAwAAAAAAAAEAAgMRBBIVMVFhITNBcYEFEyIjMpHB8BThQkOh/9oADAMBAAIRAxEAPwDbnlpoALAC7YAkBhCoDAdY2nB/lXnTTQfQveyj7ylzRWcxKXQLP4jLoExummg+he9lH3lHTTQfQveyj7ylzxIUZLcQoGWI9gG+vWBU4ZWUngHBU/A13EZtB9kYhNoExemmg+he9lH3lHTTQfQveyj7ylzRXMRl0CMRl0CY3TTQfQveyj7yjppoPoXvZR95S5ooxGXQIxCXQJjdNNB9C97KPvKOmmg+he9lH3lLmijEZdAjEZdAmN000H0L3so+8o6aaD6F72UfeUucgYGRk8KKMRl0CMQm0CY3TTQfQveyj7yjppoPo3nZJ/50uaKMSl0CMRl2TK6X8nyAednGQDgwSZGRnBxu/nRS1x7T/wB1FGIy6LuIS6IqTY2c+oXdrZQ7nuHK7fHm0VSzOR5h/wDcajVfcknjTXLfbIzJbXMUZPU52XGPsBpKFoe9rTkkYWhz2tOS32naVp2lwrFawKp2RtyEZlkPWXc7663dlZ30RhuYY5EPU6gkHzqT11K6qK1oY0Nu04LVXG3btOCU2t6W2k38lsGYwsoltnbiY2OAGPWQd1Vta/lzJGbvTIgRtpbTO/nCyOoX8LVSaJpEus3ghyyW0Oy13IMgqp4RofSPV5hv69+Zmg+eY41m54fnGNi66FoVzrMhYl4bGM7MswAzIQd8cOevzt1cN/AfXKe1trLUY7W2jWOGGyt1VR1/OJZjxJPWaZcEEFrDDbwRrHDCixxoowFVRWTvtJg1jlPcw3Mkiw29jZyskRAaXaZhja4gbt/nr0ZLEGRXW5kjinpbGGRXW5k5rF21teXsvMWdvLPLuysYOymet24AVq9P5ESuEk1O52AQCYLTiOvDTMPuX7a2NrZ2dlEkFpBHDEvzUjUKPrPtqRVkPpzG8ZOJ/wCK+H09jOMnErPX+kaVpui6x4Haxxt4HMGkxtStu65Hyf50tqbOu+RtX90l+6lNSfqLQxzQEn6i0Ne0DRFFFFeUvLCKKKKguIr6jkkhljlicpLGyyRuvzkZd+QPZXzXhZRjLAZOBkjJPmxUwSDUKYJBqEwNN5ZadJEiagHt51XDuqNJC5HWNgFh8K7XvLLRLeNjbM91KdyAK0Uef8TyAfyFYmx0fWNRZRa2kpQ8ZpgYoAM8Qz7z9gNbrReTNjpyM1ysd3dyLiR5EBjQcdmJWzgec9de7Z5rTK26OA1ovZgmtMooBw1osDNLfaxfh885d3sqog4IMjAAB/VUfdTP0nTbfSbOG1iGW3yTSH50szY2nP19VQYbCwh5RtJFbxxsdKMviKFw5n5ssMdeABV/TFks3tEvcakpiy2b23F7jUle1nrf6V6x+6rH8x60NZ63+lurfumz/MNNS5N7hMS5t7q/oooq5Xqt18gaLrBIzizl3Z9nnNYFeS3KR1R1toSrqGXM8YyCMit5yi8h617lN91T7T9FtP8AQh/AKQnszJ5AH9AkZrOyeSjug/KUl/p97psqQXiIkrxLKFV1cbJZgN4+qotablr5Wg9yi/MkrM14NoY2OVzB0K8KdgZIWjoiiiilKpaqK1XJW70K0iujfvapcNc7ULTRlnEewgGG2TjfnrrK0UzDL7TrwFUxDL7TrwCcNtf6debXgt1BNs725mRWIHtA31LpacjiRrWAcA2dxkDrw0Zpl1pbLOZ2XqLR2aYzMvFVX7Qfwcf1Jq066q/2g/g4/qTVp1/Grmde6tZ17r2s7b/S3Vf3RbfmVoqzkH0u1P8Ac9v+ZUJf8e4UJc291oaKKKvV6q+UXkLWvcpfuqfafotn7vD+AVA5ReQta9yl+6p9p+i2f+hD+AVSOb4/Kp/2ePysBy18rwe5Q/mSVma03LXyvB7lD+ZJWZrNWvnuWctPOd3RRRRSSURRRRU1NaLkb5bX3K5/FHTJ6/jS25G+W19yufxR0yev41o/TeV5Wh9O5Xkqr/aD+Dj+pNWnnqr/AGg/g4/qTU26urezgmubiQJDCpeRj1AdQp1hpeJ1TbDQOJ1XzeXdrYQSXN1KscMY3seJJ4Ko6yeqs3oVxd6trOo6x4K8Nk9mlrA7ZHObDgj6zxyRw4V821ldcpp01PVEePSkJOm2LEqZU6pZhxwd2Os/5fnaxERFREVVRVCqqABVAGAABuxVIDpnB2TRluqQHSuDsmjLdfVegV7XhIAJJAA3nPD402m1V8ofImte5T/hqdafotn7vD+AVUcor7ThpOrwG8tBM9nMEj5+LbY7PUuc1cWpzbWpAx8jFu83iiqQQZfH5VAIMp7Jf8tfK8HuUP5klZmtNy18rwe5Q/mSVmazVr57lnbTznd0UUUUklUUUUVNSWi5G+W19yufxR0yev40tuRvltfcrn8UdMnr+NaP03leVofTuV5Kqz9IP4OP6k1V3i/2/rP9m8dL0gpNfgHxbi7O9IWHmHX9o66kanerp2oX16wB5jQiUX0pTckRp/uOBXzpmzo9jDatHJdardBr27ih2dszSgMzzO5CKo3LkkcN2eFWON4lhyrU/u6maOJYcq1K0AAAAGAqjcMAAAVUXHKHT45WtbJJ9RvBuaHT05wIeHysuebX2+N9lV9zLYzknXdZtRAD5OsZ2EPHhM6fLP8ABR/h83aPlJyQso1htXCRruWO2tJVXdu3eIBU3TjKob9qqbph1IH2X0V5a3+/bstJhYnAUeF3WyfOxHNj7K8HJa1mwdR1HVL9uDCe4ZIj9SR4++vnplye892f+h/7rrHyt5NvjNxLHn1lvNu+1AarvwO+pwPc/oUL8B+pwPc/oXaHkzyZh+Zptsx88wMp+MpNXCqqqqqoCqAFA3AAcABVdBreg3GOZ1G1JO4K7iNifqkwasVZWUMpBUjIKnII9hFNR+3T4KeExHcp8FPCXfLXyvB7lD+ZJWZrTctfK8HuUP5klZmszbOe5Zu0853dFFFFJJVFFFFTUlpORaFtZkbH93ZSkn/PJGKYw+6sfyIsWjgvdRdceFOsMGeJiiJyw9hOfhWnv722061nu5zhIlyAD40j/qovtPD/AIrS2JvtwVd14rR2NvtwVd14rI8onnutfgtLadI3htIXO2jyBpY2edV2Y1LHAOcezNVE2nX8qMZtYtnSSGG/kBF4xkSeTm0kdFjyzMTgVws7qS81iKWeKCSfULyICSYSnwdmfIeIRup3cBluqtQjz+EKwtZVmkWGzM5toA4iWTaAz4cTuOSd2aRaG2hznnXdItpOS7U7rHNYpFf+AzXcEXjbDTSLKsaSFdoI4cBhvwP+K6ro2ps7RhbUuu3tqLy1LqE+cxUvwA359tdHnaHVJobewtZduaTTntljdku8y7JLCRmcMcA5z1eyuljDHb6tqMCyxOsVjqq7URJjBFuxKhn8Y7PDNKCNhdSnWiWEbC6lOtFBbTtQDBVi59iu23gTC7CKTjxjb7WPOPPU2TQLlI5JBNLIyIWESaZqCl2xuQMY9mqqC5mtXjmhkMbo0cgwxVWZDtgPjqyAK0zJd2zTcoVN0LWSF5bK2cTF0u7hXTEqEYEaeMQevI82/sTI31NP6RE1jqmn9KjttNuJ7o2k4ltnFvLcnnbd5JSiY3LCdljmrVtL1TSmtGs9TuiJ5jHKbK3n+QQY+UeNJGBHmzioelXV4DcSRPaMzPAJJby6ijlMce38nC8+0cHPjbv1a0KXUngz3EjW6MzvDbpHqdmys6gMdqaSNU3ZG7DH6qugjju1418q2BkdK8a+VmNXuL2e9mjvJhPLaF7PnVjCbYjcjJAJ8/nqvqbqUk8twjT+CmZbaFJHs3R45CoOXPN7to8TUKkZfrNTVJSfWUUUUUul0VoNE5MXeqGK4ugYNPOy+T/fXK8QEHUp8/X92fq3seUOsafbPawSKUY5ieQbTQA8RHtbsH2g+ymoDGHVlFU3ZzGHVl4pi3V7pei2kfPOkMMcYjgiXG2wQABY04ml3qmq32vXDnASC2jnnht9seLHGpdmOfnPjP1Y+NZPcXN1K09zNJLK25nlJZj7AG4V7bzvbXEE6KjtE4cI+dhsDBVwOo7wfYaanthlNwcGpma1mU3BwapcNnqdjOLswxl7AwXRRpQdrI21C7O846wOHXU4trEEssp03R9q2uYAQtpa7TSMY3AiKjaIG0mTnrqGms3aPZSc3E3g011Phg4EpuCTiXfwXPi18x6vdIbNtiJjaxXEQLgnnOdPz5BneV3Y82yKrZJG36SVW2RjciV9TS6jp11f3rxwxzzSX8AZW2mikYK8kluSdxAbCN7akwz61DLcQwwaaslrEqSlbSzBKPGzbIYpk7Sg53/fUCS/5/wRbm2imW2thbbJaRecXDKzkq29iCPgK6nVpDI0q2tusr3EE0rgyMHWBi6IyscY/VJ44FcEjWng40XBI1p+FxopQbXlkhkjisIZUigaFo7azQk3Ks8YUbHzjssMcR9tcY15QJctdC8aG6ZlhaSe7Cu8hVZBAdrIJXdtAjAzg765Nq1w/NF4oGMNzcXcedshZpMlDsk7xGTlM53142pCXJuLS3m+W8KIZpVBuNgI7uEYZD4BZeBI9tBezMOKC9uYcV5JFqWpkXrRQsHuYrElFiiTnio2dtEGACDvbHsrvdpfTx2UMg0m2jLCWKCBkgG3cIrbcoVcZYBRXG21Sa05gRQQ7Ecskzo+06SmRURgwJ4AoGXHAj2V5Pqcs8dtG0ZHg/g2wOfnaP5ABVIidtjPnIrl9l3M16rl5lMzXqotxBJazPBI0TSRkq5hcSIGBwVJHWK5V0nlaee4nYBWmlklYLnZBdixAzvxXOljSvBKmleCKKKKqUUUUxOhGievv+1i7ujoRonr7/tYu7r1cNm2XpYfNsl3RTE6EaJ6+/7WLu6OhGievv8AtYu7ow2bZGHzbJd0UxOhGievv+1i7ujoRonr7/tYu7ow2bZGHzbJd0UxOhGievv+1i7ujoRonr7/ALWLu6MNm2Rh82yXdFMToRonr7/tYu7o6EaJ6+/7WLu6MNm2Rh82yXdFMToRonr7/tYu7o6EaJ6+/wC1i7ujDZtkYfNsl3RTE6EaJ6+/7WLu6OhGievv+1i7ujDZtkYfNsl5n2H40UwxyK0QDG3eHjvMq5/klFGHyo/gTL//2Q==",
    "sourceName": "晋江文学\n(手机版)",
    "sourceUrl": "https://m.jjwxc.net/"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceIcon": "",
    "sourceName": "电影即将上映",
    "sourceUrl": "https://movie.douban.com/coming"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceIcon": "https://ts4.cn.mm.bing.net/th?id=ODLS.3433eb36-f45d-4fc9-aceb-af3ab9f79b22&w=32&h=32&qlt=90&pcl=fffffa&o=6&pid=1.2",
    "sourceName": "LightNovelHeaven",
    "sourceUrl": "https://lightnovelheaven.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceIcon": "https://m.jjwxc.com/images/wap/logo2.png",
    "sourceName": "晋江文学\n(电脑版）",
    "sourceUrl": "https://www.jjwxc.net/"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "\nsetInterval(() => {\n  $(\"iframe\").remove();\n  $(\"ins.adsbygoogle\").remove();\n}, 500);\n$(\"div.site-addswarp\").remove();\n$(\"#ri_home_division_widget-2\").remove();\n$(\"#ri_home_slider_widget-2\").remove();\n$(\"#ri_home_cmspost_widget-2\").remove();\n$(\"#ri_home_catpost_widget-5\").remove();\n$(\"#ri_home_catpost_widget-4\").remove();\n$(\"#ri_home_catpost_widget-6\").remove();\n$(\"#ri_home_background_widget-2\").remove();\n$(\"div.entry-copyright\").remove();\n$(\"div.related-posts\").remove();\n$(\"div#comments\").remove();\n$(\"div.sidebar-wrapper.col-md-12.col-lg-3.h-100\").remove();\n$(\"footer div.container\").remove();\n$(\"footer.site-footer\").css(\"background\",\"#ededed\");\n",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceIcon": "https://www.ahhhhfs.com/wp-content/uploads/2021/07/1625221481-04bb5153c0db541-192x192.webp",
    "sourceName": "A姐分享",
    "sourceUrl": "https://www.ahhhhfs.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "阅读",
    "sourceIcon": "https://img0.baidu.com/it/u=2628473074,2098079028&fm=253&fmt=auto&app=138&f=JPEG?w=246&h=246",
    "sourceName": "纵横男生",
    "sourceUrl": "https://m.zongheng.com/h5/rank?type=4"
  },
  {
    "articleStyle": 0,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "动漫漫画",
    "sourceIcon": "",
    "sourceName": "韩漫书源",
    "sourceUrl": "legado://import/bookSource?src=https://jt12.de/SYV2_4/2024/03/04/20/48/54/170955653465e5c33680046.json"
  },
  {
    "articleStyle": 0,
    "customOrder": 2,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "legado",
    "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"
  },
  {
    "articleStyle": 0,
    "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/",
    "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')",
    "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",
    "variableComment": "请填写搜索关键词或UID\n若列表没有刷新请手动 右上三个点【刷新分类】\n"
  },
  {
    "articleStyle": 0,
    "customOrder": 4,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "legado",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/mgz0227/meowcloud/icon.png",
    "sourceName": "Meow云",
    "sourceUrl": "https://pan.miaogongzi.net"
  },
  {
    "articleStyle": 0,
    "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}",
    "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"
  },
  {
    "articleStyle": 0,
    "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}",
    "shouldOverrideUrlLoading": "if (!/^http|^legado/.test(url)) {\n    java.openUrl(url);\n    true;\n}",
    "singleUrl": true,
    "sourceGroup": "书源",
    "sourceIcon": "https://qyyuapi.com/logo.jpg",
    "sourceName": "XH发布页",
    "sourceUrl": "https://qyyuapi.com",
    "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": 0,
    "customOrder": 4,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sortUrl": "",
    "sourceGroup": "",
    "sourceIcon": "https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/tb/mt.png?ref=master",
    "sourceName": "蚂蚁影视\n（视频）",
    "sourceUrl": "https://www.mayiyingshi.org/"
  },
  {
    "articleStyle": 0,
    "customOrder": 5,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "legado",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 6,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "动漫漫画",
    "sourceIcon": "https://m.acgnfl.com/24/07/content_33/525867/005.webp",
    "sourceName": "樱之空动漫",
    "sourceUrl": "https://www.skrcc.cc/"
  },
  {
    "articleStyle": 0,
    "customOrder": 20,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n  \"User-Agent\": \"Mobile\"\n}",
    "injectJs": "// 去广告，代码来自ChatGPT\n// 查找并移除 div.wrap 元素和具有 ad-wrap 类名的元素\nvar wrapElements = document.querySelectorAll('div.wrap');\nvar adWrapElements = document.getElementsByClassName('ad-wrap');\n\nfor (var i = 0; i < wrapElements.length; i++) {\n  var wrapElement = wrapElements[i];\n  wrapElement.parentNode.removeChild(wrapElement);\n}\n\nwhile (adWrapElements.length > 0) {\n  var adWrapElement = adWrapElements[0];\n  adWrapElement.parentNode.removeChild(adWrapElement);\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "ruleArticles": "$.data.cards&&$.data.cards[*].card_group[*]",
    "ruleContent": "@js:\nlet id = baseUrl.match(/(\\d+)/)[1];\nlet api = `https://m.weibo.cn/statuses/extend?id=${id}`;\njava.setContent(String(java.ajax(api)));\nlet b = baseUrl;\nvar html = result;\nretweeted_status = String(java.getString(\"$.data.retweeted_status\")) ? \"<hr class='divider'>\" + java.getString(\"$.data.retweeted_status.longTextContent\") : \"\";\nresult = java.getString(\"$.data.longTextContent\")+ retweeted_status;\nallImages = [];\nif(html.indexOf('\"media_info\"') > -1) {\n    urls = JSON.parse(html.match(/\"urls\": ({[\\s\\S]+?})/)[1]);\n    media_info = JSON.parse(html.match(/\"media_info\": ({[\\s\\S]+?})/)[1]);\n\n    if(urls.mp4_720p_mp4) { a = urls.mp4_720p_mp4; }\n    else if(urls.mp4_hd_mp4) { a = urls.mp4_hd_mp4; }\n    else if(media_info.stream_url_hd) { a = media_info.stream_url_hd; }\n    else { a = media_info.stream_url; }\n\n    result = result.replace(/data-url=\"([^\"]+)\"\\s*href=\"([^\"]+)\"/, `data-url=\"$1\" href=\"${a}\"`);\n    dimg = html.match(/\"page_pic\":[\\s\\S]+?\"url\":\\s*\"([^\"]+)\"/)[1];\n\n    result += `<div class=\"media-container\"><video src=\"${a}\" controls poster=\"${dimg}\"></video></div>`;\n} else if(html.match(/\"size\":\\s*\"large\",\\s*\"url\":\\s*\"[^\"]+\"/g)) {\n    a = 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    allImages = cimg.slice();\n    \n    var galleryItems = cimg.map((img, i) => `\n        <div class=\"gallery-item\" onclick=\"showFullImage('${img.replace(/'/g, \"\\\\'\")}', ${i})\">\n            <img src=\"${img}?thumbnail=1\" loading=\"lazy\">\n            <div class=\"zoom-icon\">🔍</div>\n        </div>`).join('');\n    \n    result += `<div class=\"image-gallery\">${galleryItems}</div>`;\n}\n\n// 处理评论\nif(JSON.parse(java.ajax(`https://m.weibo.cn/comments/hotflow?id=${id}&mid=${id}&max_id_type=0`)).ok == 1) {\n    list = JSON.parse(java.ajax(`https://m.weibo.cn/comments/hotflow?id=${id}&mid=${id}&max_id_type=0`)).data.data;\n    result = `<a href=\"${b}\" class=\"original-link\">原文地址</a><div class=\"main-content\">${result}</div>`;\n    \n    var comments = list.map(item => {\n        var details = \"\";\n        if(item.pic != undefined) {\n            pic = item.pic.large.url;\n            allImages.push(pic);\n            const imgIndex = allImages.length - 1;\n            // 处理评论中的图片部分\ndetails = `\n<details class=\"comment-media\">\n    <summary>\n        <span class=\"media-preview\">📷 查看图片</span>\n    </summary>\n    <div onclick=\"showFullImage('${pic.replace(/'/g, \"\\\\'\")}', ${imgIndex})\">\n        <img src=\"${pic}?thumbnail=1\" alt=\"评论图片\">\n    </div>\n</details>`;\n\n        }\n        \n        return `\n        <div class=\"comment-item\">\n            <div class=\"comment-user\">\n                <img class=\"user-avatar\" src=\"${item.user.profile_image_url}\">\n                <span class=\"user-name\">${item.user.screen_name}</span>\n            </div>\n            <div class=\"comment-text\">${item.text}</div>\n            ${details}\n            <div class=\"comment-time\">${item.created_at.replace(/\\+0800/, \"·\")}</div>\n        </div>`;\n    }).join('');\n    \n    result += `<div class=\"comments-section\"><h3 class=\"comments-title\">评  论</h3>${comments}</div>`;\n} else {\n    result = `<a href=\"${b}\" class=\"original-link\">原文地址</a><div class=\"main-content\">${result}</div>`;\n}\n\nresult = `<!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>微博详情</title>\n    <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.css\">\n    <style>\n        \n       * { margin: 0; padding: 0; box-sizing: border-box; }\n        body { \n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; \n            line-height: 1.6; color: #333; background-color: #f5f5f5; \n            padding: 15px; max-width: 750px; margin: 0 auto; \n        }\n        .original-link { \n            display: block; padding: 12px; background: #fff; border-radius: 8px; \n            margin-bottom: 10px; text-decoration: none; color: #1E88E5; \n            font-weight: 500; box-shadow: 0 1px 3px rgba(0,0,0,0.05); \n        }\n        .main-content { \n            background: #fff; padding: 15px; border-radius: 8px; \n            margin-bottom: 15px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); \n        }\n        .divider { border: none; height: 1px; background-color: #eee; margin: 15px 0; }\n        .media-container { margin: 15px 0; border-radius: 8px; overflow: hidden; }\n        .media-container video { width: 100%; border-radius: 8px; }\n        .image-gallery { \n            display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; margin: 15px 0; \n            max-width:100%\n        }\n        .gallery-item { \n            aspect-ratio: 1; overflow: hidden; border-radius: 8px; \n            position: relative; cursor: pointer; \n        }\n        .gallery-item img { \n            width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s; \n        }\n        .gallery-item:hover img { transform: scale(1.05); }\n        .zoom-icon { \n            position: absolute; top: 5px; right: 5px; background: rgba(0,0,0,0.5); \n            color: white; width: 20px; height: 20px; border-radius: 50%; \n            display: flex; align-items: center; justify-content: center; \n            font-size: 12px; opacity: 0; transition: opacity 0.3s; \n        }\n \n\n        .gallery-item:hover .zoom-icon { opacity: 1; }\n        .comments-section { \n            background: #fff; padding: 15px; border-radius: 8px; \n            box-shadow: 0 1px 3px rgba(0,0,0,0.05); \n        }\n        .comments-title { \n            font-size: 18px; margin-bottom: 15px; color: #333; \n            padding-bottom: 10px; border-bottom: 1px solid #eee; \n        }\n        .comment-item { padding: 12px 0; border-bottom: 1px solid #f0f0f0; }\n        .comment-item:last-child { border-bottom: none; }\n        .comment-user { display: flex; align-items: center; margin-bottom: 8px; }\n        .user-avatar { \n            width: 32px; height: 32px; border-radius: 50%; \n            margin-right: 10px; object-fit: cover; \n        }\n        .user-name { font-weight: 500; font-size: 15px; }\n        .comment-text { \n            margin-bottom: 8px; font-size: 15px; line-height: 1.5; word-break: break-word; \n        }\n        .comment-time { font-size: 12px; color: #999; margin-top: 5px; }\n        .comment-media { \n            margin: 8px 0; position: relative; cursor: pointer; \n            border-radius: 6px; overflow: hidden;\n            max-width:100%\n        }\n        .comment-media details {\n            margin: 8px 0;\n            border-radius: 6px;\n            overflow: hidden;\n        }\n        .comment-media summary {\n            padding: 6px 12px;\n            background: #f5f5f5;\n            border-radius: 4px;\n            cursor: pointer;\n            list-style: none;\n            font-size: 14px;\n            color: #1E88E5;\n            transition: background 0.2s;\n        }\n        .comment-media summary:hover {\n            background: #e8f0fe;\n        }\n        .comment-media summary::-webkit-details-marker {\n            display: none;\n        }\n        .comment-media div {\n            margin-top: 8px;\n            position: relative;\n            cursor: pointer;\n        }\n        .comment-media img {\n            max-width: 100%;\n            border-radius: 4px;\n            display: block;\n        }\n       \n\n        .media-preview::before {\n            content: \"⬇️ \";\n        }\n        .comment-media[open] summary .media-preview::before {\n            content: \"⬆️ \";\n        }\n        .url-icon img { vertical-align: middle; margin: 0 1px; }\n        .surl-text { color: #1E88E5; margin-right: 5px; }\n        @media (max-width: 500px) {\n            .image-gallery { grid-template-columns: repeat(2, 1fr); }\n            body { padding: 10px; }\n            .main-content, .comments-section { padding: 12px; }\n        }     \n         \n        .viewer-open {\n            overflow: hidden;\n            position: fixed;\n            width: 100%;\n        }\n    </style>\n</head>\n<body>\n    ${result}\n    <script src=\"https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.js\"></script>\n    <script>\n        function initImageViewer() {\n        \tvar option = {\n        \t          \tmaxZoomRatio: 0.9,\n                    inline: false,\n                    movable: true,\n                    zoomable: true,\n                    toolbar: {\n                        zoomIn: 1,\n                        zoomOut: 1,\n                        oneToOne: 0,\n                        reset: 1,\n                        prev: 1,\n                        next: 1,\n                        rotateLeft: 0,\n                        rotateRight: 0,\n                        flipHorizontal: 0,\n                        flipVertical: 0\n                    }\n             \n        \n                     \n                };                          \n            try {                       \n               b = new Viewer(document.querySelector('.image-gallery'),option);           document.querySelectorAll('.comment-media').forEach(x=>{new Viewer(x,option)})                         \n            } catch (e) {                       \n             //   alert(e)\n                }\n            \n        }\n        \n        // 页面加载初始化\n        if (document.readyState === 'complete') {\n            initImageViewer();\n        } else {\n            document.addEventListener('DOMContentLoaded', initImageViewer);\n        }\n    </script>\n</body>\n</html>`;\n\nresult;\n",
    "ruleImage": "{{$.mblog.page_info.page_pic.url||$.mblog.thumbnail_pic||$.mblog.user.profile_image_url||$.user.profile_image_url}},{\"headers\":{\"referer\":\"https://m.weibo.cn\"}}",
    "ruleLink": "$.mblog.id@js:\"https://m.weibo.cn/detail/\"+result",
    "ruleNextPage": "page",
    "rulePubDate": "$.mblog.created_at\n<js>date=new Date(result);\ntime=date.getTime();\nfunction formatDate2(inputTime) {\n    var date = new Date(inputTime);\n    var y = date.getFullYear();\n    var m = date.getMonth() + 1;\n    m = m < 10 ? ('0' + m) : m;\n    var d = date.getDate();\n    d = d < 10 ? ('0' + d) : d;\n    return y +'-' + m + '-' + d;\n};\n\nfunction formatDate(now) {\n    var time = formatDate2(now)\n    var date1 = new Date(now)\n    var date2 = new Date()\n    var date3 = date2.getTime() - date1.getTime()\n    var days = Math.floor(date3 / (24 * 3600 * 1000))\n    var leave1 = date3 % (24 * 3600 * 1000) \n    var hours = Math.floor(leave1 / (3600 * 1000))\n    var leave2 = leave1 % (3600 * 1000)\n    var minutes = Math.floor(leave2 / (60 * 1000))\n    var leave3 = leave2 % (60 * 1000)\n    if (days < 1 && hours < 1) { return minutes + \"分前\" } else if (days < 1) { return hours + \"小时 \" + minutes + \"分前\" } else {\n        if (days < 7) {\n            return days + \"天 \" + hours + \"小时前 \"\n        } else { return time }\n    }\n}\n\n'📅 '+formatDate(time)</js>",
    "ruleTitle": "$.mblog.text##<.*?>",
    "singleUrl": false,
    "sortUrl": "百合小说::https://m.weibo.cn/api/container/getIndex?containerid=231522type%3D1%26t%3D10%26q%3D%23百合小说%23&isnewpage=1&luicode=10000011&lfid=100103type%3D1%26q%3D百合小说&page_type=searchall&page={{page}}\n\n百合动漫::https://m.weibo.cn/api/container/getIndex?containerid=231522type%3D1%26t%3D10%26q%3D%23百合动漫%23&isnewpage=1&luicode=10000011&lfid=100103type%3D1%26q%3D百合动漫&page_type=searchall&page={{page}}\n\n百合推文::https://m.weibo.cn/api/container/getIndex?containerid=231522type%3D1%26t%3D10%26q%3D%23百合推文%23&isnewpage=1&luicode=10000011&lfid=100103type%3D1%26q%3D百合推文&page_type=searchall&page={{page}}\n\ngl推文::https://m.weibo.cn/api/container/getIndex?containerid=231522type%3D1%26t%3D10%26q%3D%23gl推文%23&isnewpage=1&luicode=10000011&lfid=100103type%3D1%26q%3Dgl推文&page_type=searchall&page={{page}}\n\ngl小说::https://m.weibo.cn/api/container/getIndex?containerid=231522type%3D1%26t%3D10%26q%3D%23gl小说%23&isnewpage=1&luicode=10000011&lfid=100103type%3D1%26q%3Dgl小说&page_type=searchall&page={{page}}\n搜索话题::https://m.weibo.cn/api/container/getIndex?containerid=231522type%3D1%26t%3D10%26q%3D%23{{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()};}}%23&isnewpage=1&luicode=10000011&lfid=100103type%3D1%26q%3D{{source.getVariable()}}&page_type=searchall&page={{page}}\n",
    "sourceComment": "在【搜索话题】点击右上角三点刷新分类或下拉刷新，会弹出输入框\n\n\n按以下格式在【分类URL】添加可加入分类\n\n话题名称::https://m.weibo.cn/api/container/getIndex?containerid=231522type%3D1%26t%3D10%26q%3D%23话题名称%23&isnewpage=1&luicode=10000011&lfid=100103type%3D1%26q%3D话题名称&page_type=searchall&page={{page}}",
    "sourceGroup": "阅读",
    "sourceIcon": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/52/6a/04/526a04f7-ccfd-612e-64cb-ece08b01b4e6/WeiboAppIcon-0-0-1x_U007epad-0-1-0-0-85-220.png/492x0w.webp",
    "sourceName": " 📖\n微博话题",
    "sourceUrl": "微博话题"
  },
  {
    "articleStyle": 1,
    "customOrder": 21,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n  \"User-Agent\": \"Mobile\"\n}",
    "injectJs": "// 去广告，代码来自ChatGPT\n// 查找并移除 div.wrap 元素和具有 ad-wrap 类名的元素\nvar wrapElements = document.querySelectorAll('div.wrap');\nvar adWrapElements = document.getElementsByClassName('ad-wrap');\n\nfor (var i = 0; i < wrapElements.length; i++) {\n  var wrapElement = wrapElements[i];\n  wrapElement.parentNode.removeChild(wrapElement);\n}\n\nwhile (adWrapElements.length > 0) {\n  var adWrapElement = adWrapElements[0];\n  adWrapElement.parentNode.removeChild(adWrapElement);\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "ruleArticles": "$.data.cards[*].card_group[*]||$.data.cards",
    "ruleContent": "@js:\nlet id = baseUrl.match(/(\\d+)/)[1];\nlet api = `https://m.weibo.cn/statuses/extend?id=${id}`;\njava.setContent(String(java.ajax(api)));\nlet b = baseUrl;\nvar html = result;\nretweeted_status = String(java.getString(\"$.data.retweeted_status\")) ? \"<hr class='divider'>\" + java.getString(\"$.data.retweeted_status.longTextContent\") : \"\";\nresult = java.getString(\"$.data.longTextContent\")+ retweeted_status;\nallImages = [];\nif(html.indexOf('\"media_info\"') > -1) {\n    urls = JSON.parse(html.match(/\"urls\": ({[\\s\\S]+?})/)[1]);\n    media_info = JSON.parse(html.match(/\"media_info\": ({[\\s\\S]+?})/)[1]);\n\n    if(urls.mp4_720p_mp4) { a = urls.mp4_720p_mp4; }\n    else if(urls.mp4_hd_mp4) { a = urls.mp4_hd_mp4; }\n    else if(media_info.stream_url_hd) { a = media_info.stream_url_hd; }\n    else { a = media_info.stream_url; }\n\n    result = result.replace(/data-url=\"([^\"]+)\"\\s*href=\"([^\"]+)\"/, `data-url=\"$1\" href=\"${a}\"`);\n    dimg = html.match(/\"page_pic\":[\\s\\S]+?\"url\":\\s*\"([^\"]+)\"/)[1];\n\n    result += `<div class=\"media-container\"><video src=\"${a}\" controls poster=\"${dimg}\"></video></div>`;\n} else if(html.match(/\"size\":\\s*\"large\",\\s*\"url\":\\s*\"[^\"]+\"/g)) {\n    a = 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    allImages = cimg.slice();\n    \n    var galleryItems = cimg.map((img, i) => `\n        <div class=\"gallery-item\" onclick=\"showFullImage('${img.replace(/'/g, \"\\\\'\")}', ${i})\">\n            <img src=\"${img}?thumbnail=1\" loading=\"lazy\">\n            <div class=\"zoom-icon\">🔍</div>\n        </div>`).join('');\n    \n    result += `<div class=\"image-gallery\">${galleryItems}</div>`;\n}\n\n// 处理评论\nif(JSON.parse(java.ajax(`https://m.weibo.cn/comments/hotflow?id=${id}&mid=${id}&max_id_type=0`)).ok == 1) {\n    list = JSON.parse(java.ajax(`https://m.weibo.cn/comments/hotflow?id=${id}&mid=${id}&max_id_type=0`)).data.data;\n    result = `<a href=\"${b}\" class=\"original-link\">原文地址</a><div class=\"main-content\">${result}</div>`;\n    \n    var comments = list.map(item => {\n        var details = \"\";\n        if(item.pic != undefined) {\n            pic = item.pic.large.url;\n            allImages.push(pic);\n            const imgIndex = allImages.length - 1;\n            // 处理评论中的图片部分\ndetails = `\n<details class=\"comment-media\">\n    <summary>\n        <span class=\"media-preview\">📷 查看图片</span>\n    </summary>\n    <div onclick=\"showFullImage('${pic.replace(/'/g, \"\\\\'\")}', ${imgIndex})\">\n        <img src=\"${pic}?thumbnail=1\" alt=\"评论图片\">\n    </div>\n</details>`;\n\n        }\n        \n        return `\n        <div class=\"comment-item\">\n            <div class=\"comment-user\">\n                <img class=\"user-avatar\" src=\"${item.user.profile_image_url}\">\n                <span class=\"user-name\">${item.user.screen_name}</span>\n            </div>\n            <div class=\"comment-text\">${item.text}</div>\n            ${details}\n            <div class=\"comment-time\">${item.created_at.replace(/\\+0800/, \"·\")}</div>\n        </div>`;\n    }).join('');\n    \n    result += `<div class=\"comments-section\"><h3 class=\"comments-title\">评  论</h3>${comments}</div>`;\n} else {\n    result = `<a href=\"${b}\" class=\"original-link\">原文地址</a><div class=\"main-content\">${result}</div>`;\n}\n\nresult = `<!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>微博详情</title>\n    <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.css\">\n    <style>\n        \n       * { margin: 0; padding: 0; box-sizing: border-box; }\n        body { \n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; \n            line-height: 1.6; color: #333; background-color: #f5f5f5; \n            padding: 15px; max-width: 750px; margin: 0 auto; \n        }\n        .original-link { \n            display: block; padding: 12px; background: #fff; border-radius: 8px; \n            margin-bottom: 10px; text-decoration: none; color: #1E88E5; \n            font-weight: 500; box-shadow: 0 1px 3px rgba(0,0,0,0.05); \n        }\n        .main-content { \n            background: #fff; padding: 15px; border-radius: 8px; \n            margin-bottom: 15px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); \n        }\n        .divider { border: none; height: 1px; background-color: #eee; margin: 15px 0; }\n        .media-container { margin: 15px 0; border-radius: 8px; overflow: hidden; }\n        .media-container video { width: 100%; border-radius: 8px; }\n        .image-gallery { \n            display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; margin: 15px 0; \n            max-width:100%\n        }\n        .gallery-item { \n            aspect-ratio: 1; overflow: hidden; border-radius: 8px; \n            position: relative; cursor: pointer; \n        }\n        .gallery-item img { \n            width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s; \n        }\n        .gallery-item:hover img { transform: scale(1.05); }\n        .zoom-icon { \n            position: absolute; top: 5px; right: 5px; background: rgba(0,0,0,0.5); \n            color: white; width: 20px; height: 20px; border-radius: 50%; \n            display: flex; align-items: center; justify-content: center; \n            font-size: 12px; opacity: 0; transition: opacity 0.3s; \n        }\n \n\n        .gallery-item:hover .zoom-icon { opacity: 1; }\n        .comments-section { \n            background: #fff; padding: 15px; border-radius: 8px; \n            box-shadow: 0 1px 3px rgba(0,0,0,0.05); \n        }\n        .comments-title { \n            font-size: 18px; margin-bottom: 15px; color: #333; \n            padding-bottom: 10px; border-bottom: 1px solid #eee; \n        }\n        .comment-item { padding: 12px 0; border-bottom: 1px solid #f0f0f0; }\n        .comment-item:last-child { border-bottom: none; }\n        .comment-user { display: flex; align-items: center; margin-bottom: 8px; }\n        .user-avatar { \n            width: 32px; height: 32px; border-radius: 50%; \n            margin-right: 10px; object-fit: cover; \n        }\n        .user-name { font-weight: 500; font-size: 15px; }\n        .comment-text { \n            margin-bottom: 8px; font-size: 15px; line-height: 1.5; word-break: break-word; \n        }\n        .comment-time { font-size: 12px; color: #999; margin-top: 5px; }\n        .comment-media { \n            margin: 8px 0; position: relative; cursor: pointer; \n            border-radius: 6px; overflow: hidden;\n            max-width:100%\n        }\n        .comment-media details {\n            margin: 8px 0;\n            border-radius: 6px;\n            overflow: hidden;\n        }\n        .comment-media summary {\n            padding: 6px 12px;\n            background: #f5f5f5;\n            border-radius: 4px;\n            cursor: pointer;\n            list-style: none;\n            font-size: 14px;\n            color: #1E88E5;\n            transition: background 0.2s;\n        }\n        .comment-media summary:hover {\n            background: #e8f0fe;\n        }\n        .comment-media summary::-webkit-details-marker {\n            display: none;\n        }\n        .comment-media div {\n            margin-top: 8px;\n            position: relative;\n            cursor: pointer;\n        }\n        .comment-media img {\n            max-width: 100%;\n            border-radius: 4px;\n            display: block;\n        }\n       \n\n        .media-preview::before {\n            content: \"⬇️ \";\n        }\n        .comment-media[open] summary .media-preview::before {\n            content: \"⬆️ \";\n        }\n        .url-icon img { vertical-align: middle; margin: 0 1px; }\n        .surl-text { color: #1E88E5; margin-right: 5px; }\n        @media (max-width: 500px) {\n            .image-gallery { grid-template-columns: repeat(2, 1fr); }\n            body { padding: 10px; }\n            .main-content, .comments-section { padding: 12px; }\n        }     \n         \n        .viewer-open {\n            overflow: hidden;\n            position: fixed;\n            width: 100%;\n        }\n    </style>\n</head>\n<body>\n    ${result}\n    <script src=\"https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.js\"></script>\n    <script>\n        function initImageViewer() {\n        \tvar option = {\n        \t          \tmaxZoomRatio: 0.9,\n                    inline: false,\n                    movable: true,\n                    zoomable: true,\n                    toolbar: {\n                        zoomIn: 1,\n                        zoomOut: 1,\n                        oneToOne: 0,\n                        reset: 1,\n                        prev: 1,\n                        next: 1,\n                        rotateLeft: 0,\n                        rotateRight: 0,\n                        flipHorizontal: 0,\n                        flipVertical: 0\n                    }\n             \n        \n                     \n                };                          \n            try {                       \n               b = new Viewer(document.querySelector('.image-gallery'),option);           document.querySelectorAll('.comment-media').forEach(x=>{new Viewer(x,option)})                         \n            } catch (e) {                       \n             //   alert(e)\n                }\n            \n        }\n        \n        // 页面加载初始化\n        if (document.readyState === 'complete') {\n            initImageViewer();\n        } else {\n            document.addEventListener('DOMContentLoaded', initImageViewer);\n        }\n    </script>\n</body>\n</html>`;\n\nresult;\n",
    "ruleDescription": "$.user.id\n@js:\nif (result) {\n  var userInfo = `\n    <div class=\"user-card\">\n      <img src=\"{{$.user.profile_image_url}}\" class=\"user-avatar\">\n      <div class=\"user-info\">\n        <h3 class=\"username\">{{$.user.screen_name}}</h3>\n        <p class=\"user-desc\">${java.getString(\"$.desc1&&$.desc2\")}</p>\n      </div>\n    </div>\n  `;\n  \n  var textContent = `\n    <div class=\"copy-section\">\n \n      <div class=\"copy-content\" id=\"copyContent\">{{$.user.screen_name}}::https://m.weibo.cn/api/container/getIndex?containerid=107603${result}_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=107603${result}_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={\\{page}}\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      <div class=\"copy-feedback\" id=\"copyFeedback\"></div>\n    </div>\n  `;\n  \n  var copyScript = `\n    <script>\n      function handleCopy() {\n        const content = document.getElementById('copyContent');\n        const feedback = document.getElementById('copyFeedback');\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  \n  var styles = `\n    <style>\n      .user-card {\n        display: flex;\n        align-items: center;\n        padding: 15px;\n        background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);\n        border-radius: 10px;\n        margin-bottom: 20px;\n        box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n      }\n      \n      .user-avatar {\n        width: 60px;\n        height: 60px;\n        border-radius: 50%;\n        object-fit: cover;\n        border: 3px solid white;\n        box-shadow: 0 2px 5px rgba(0,0,0,0.1);\n      }\n      \n      .user-info {\n        margin-left: 15px;\n      }\n      \n      .username {\n        margin: 0;\n        color: #333;\n        font-size: 18px;\n        font-weight: 600;\n      }\n      \n      .user-desc {\n        margin: 5px 0 0;\n        color: #666;\n        font-size: 14px;\n      }\n      \n      .copy-section {\n        padding: 20px;\n        background: white;\n        border-radius: 10px;\n        box-shadow: 0 2px 10px rgba(0,0,0,0.05);\n        margin-bottom: 20px;\n      }\n      \n      .section-title {\n        margin: 0 0 15px;\n        color: #555;\n        font-size: 15px;\n      }\n      \n      .copy-content {\n        padding: 15px;\n        background: #f8f9fa;\n        border-radius: 8px;\n        border: 1px solid #eee;\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      }\n      \n      .copy-btn {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        padding: 10px 20px;\n        background: linear-gradient(135deg, #4b6cb7 0%, #182848 100%);\n        color: white;\n        border: none;\n        border-radius: 6px;\n        font-size: 15px;\n        cursor: pointer;\n        transition: all 0.3s;\n        width: 100%;\n      }\n      \n      .copy-btn:hover {\n        transform: translateY(-2px);\n        box-shadow: 0 4px 8px rgba(0,0,0,0.1);\n      }\n      \n      .copy-icon {\n        font-size: 18px;\n        margin-right: 8px;\n      }\n      \n      .copy-feedback {\n        height: 20px;\n        margin-top: 10px;\n        text-align: center;\n        font-size: 14px;\n        transition: all 0.3s;\n      }\n      \n      @media (max-width: 600px) {\n        .user-card {\n          flex-direction: column;\n          text-align: center;\n        }\n        \n        .user-info {\n          margin-left: 0;\n          margin-top: 10px;\n        }\n        \n        .copy-content {\n          font-size: 13px;\n          padding: 12px;\n        }\n      }\n    </style>\n  `;\n  \n  result = styles + userInfo + textContent + copyScript;\n}\n",
    "ruleImage": "{{$.mblog.page_info.page_pic.url||$.mblog.thumbnail_pic||$.mblog.user.profile_image_url||$.user.profile_image_url}},{\"headers\":{\"referer\":\"https://m.weibo.cn\"}}",
    "ruleLink": "$.mblog.id||$.user.id@js:\"https://m.weibo.cn/detail/\"+result",
    "ruleNextPage": "page",
    "rulePubDate": "$.mblog.created_at||$.desc1\n@js:\nif(/\\+0800/.test(result)){\ndate=new Date(result);\ntime=date.getTime();\nfunction formatDate2(inputTime) {\n    var date = new Date(inputTime);\n    var y = date.getFullYear();\n    var m = date.getMonth() + 1;\n    m = m < 10 ? ('0' + m) : m;\n    var d = date.getDate();\n    d = d < 10 ? ('0' + d) : d;\n    return y +'-' + m + '-' + d;\n};\n\nfunction formatDate(now) {\n    var time = formatDate2(now)\n    var date1 = new Date(now)\n    var date2 = new Date()\n    var date3 = date2.getTime() - date1.getTime()\n    var days = Math.floor(date3 / (24 * 3600 * 1000))\n    var leave1 = date3 % (24 * 3600 * 1000) \n    var hours = Math.floor(leave1 / (3600 * 1000))\n    var leave2 = leave1 % (3600 * 1000)\n    var minutes = Math.floor(leave2 / (60 * 1000))\n    var leave3 = leave2 % (60 * 1000)\n    if (days < 1 && hours < 1) { return minutes + \"分前\" } else if (days < 1) { return hours + \"小时 \" + minutes + \"分前\" } else {\n        if (days < 7) {\n            return days + \"天 \" + hours + \"小时前 \"\n        } else { return time }\n    }\n}\n\n'📅 '+formatDate(time)}else{result=result}",
    "ruleTitle": "$.mblog.text||$.user.screen_name##<.*?>",
    "singleUrl": false,
    "sortUrl": "乎肥棠瘦::https://m.weibo.cn/api/container/getIndex?containerid=1076036992385346_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076036992385346_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n西凌萝卜::https://m.weibo.cn/api/container/getIndex?containerid=1076032141864060_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076035239650586_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n\n七小皇叔On-The-Way::https://m.weibo.cn/api/container/getIndex?containerid=1076037729250971_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076037729250971_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n\n\nIcaRus LeBlanc::https://m.weibo.cn/api/container/getIndex?containerid=1076035034515815_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076035034515815_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n\n佑淮::https://m.weibo.cn/api/container/getIndex?containerid=1076036269361340_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076036269361340_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n砂上雪::https://m.weibo.cn/api/container/getIndex?containerid=1076035239650586_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076035239650586_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}&&Whisky老鹿::https://m.weibo.cn/api/container/getIndex?containerid=1076036537563116_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076036537563116_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}&&郭斯特::https://m.weibo.cn/api/container/getIndex?containerid=1076031907542963_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076031907542963_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}&&你好好好菌::https://m.weibo.cn/api/container/getIndex?containerid=1076032673967277_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076032673967277_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}&&薛之谦::https://m.weibo.cn/api/container/getIndex?containerid=1076031239246050_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076031239246050_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}&&TED to China::https://m.weibo.cn/api/container/getIndex?containerid=1076031666109895_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076031666109895_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n\n一条废狗狗狗狗::https://m.weibo.cn/api/container/getIndex?containerid=1076036055804589_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=1076036055804589_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page={{page}}\n搜索用户::https://m.weibo.cn/api/container/getIndex?containerid=100103type%3D3%26q={{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()};}}%26t%3D&page_type=searchall&page={{page}}\n",
    "sourceComment": "在【搜索用户】点击右上角三点刷新分类或下拉刷新，会弹出输入框",
    "sourceGroup": "阅读",
    "sourceIcon": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/52/6a/04/526a04f7-ccfd-612e-64cb-ece08b01b4e6/WeiboAppIcon-0-0-1x_U007epad-0-1-0-0-85-220.png/492x0w.webp",
    "sourceName": " 📖\n微博博主",
    "sourceUrl": "微博博主4"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "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": ""
  },
  {
    "articleStyle": 2,
    "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",
    "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##</*.*?>",
    "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}",
    "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    }"
  },
  {
    "articleStyle": 0,
    "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(){}",
    "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}",
    "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",
    "variableComment": "\n想利用源变量更新标签请在最前面加上符号🔼\n如\n🔼新名字@xxxxx#我的标签@xxxxx#我的标签@xxxxx#"
  },
  {
    "articleStyle": 0,
    "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#",
    "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##【】",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 25,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236315593,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://s11.ax1x.com/2024/02/13/pF8aDmQ.png",
    "sourceName": "电子木鱼",
    "sourceUrl": "https://muyv.saop.cc/"
  },
  {
    "articleStyle": 0,
    "customOrder": 25,
    "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;\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    let 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            console.log(totalPages);\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    \n    // 保存当前滚动位置\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    if (isLoading) return;\n    \n    isLoading = true;\n    document.getElementById('loading').style.display = 'block';\n    \n    const newOffset = currentOffset + 20;\n    console.log(newOffset);\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\n        bookDiv.innerHTML = `\n            <div class=\"bookdes\">\n                <div class=\"pic\"><img src=\"${item.cover}\" referrerpolicy=\"no-referrer\"></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\">——${item.authorname}</span>\n                    </p>\n                    <p class=\"tag\">⭐️ ${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    return `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 || ''}`;\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    \n            // 设置总页数\n        totalPages = jsonData.total_page; \n        totalPagesEl.textContent = totalPages;\n        pageInput.max = totalPages;\n        \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        // 点击页面其他区域收起按钮组\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', \"\");\n            window.location.reload();\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 = () => updateUrlParam('sortType', sortTypeSelect.value);\n    isFinishSelect.onchange = () => updateUrlParam('isfinish', isFinishSelect.value);\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                \n                loadPreviousPage();\n            }\n        }\n    };\n    \n\n    checkScrollable();\n}\n\nwindow.addEventListener('beforeunload', () => {\n    window.removeEventListener('scroll', handleScroll);\n    window.removeEventListener('resize', checkScrollable);\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 = '10px 20px';\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            alert('已保存标签：'+tag);\n            document.body.removeChild(dialog.overlay);\n        });\n        dialog.dialog.appendChild(copyButton);          \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 = '10px 20px';\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            button.addEventListener('click', () => fetchAndRender(decode(url)));\n        }else if(type===0){\n        button.addEventListener('click', () => {\n        try{\n        document.querySelectorAll(\"input\").forEach(input => {\n\n  input.checked = false;\n\n  // 2. 找到相邻的兄弟 span 并变红\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        eurl = eurl.toLowerCase().replace(/http.*?\\?|offset=\\d+&|limit=\\d+&|isfinish=\\d+&/g,'').split('&'); \n        for(let i=0;i<eurl.length;i++){\n            let params = eurl[i].split(\"=\");\n            let names = params[0];                 \n            let values = params[1].split(\",\");                   \n            for(let j=0;j<values.length;j++){\n                let name,input;\n      if(names===\"bq\"||names===\"removetags\"){\n      if(values[j]){\n              addBq(params[1],values[j],names)\n             }\n              }else if(/\\d+/.test(values[j])){\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                \n              }else{\n              input = document.querySelector(`input[name=\"${names}\"][value=\"${values[j]}\"]`);\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: 10px 20px;\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    editBtn.textContent = '编辑';\n    editBtn.style.cssText = `\n        padding: 10px 20px;\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    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}\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 = '10px 20px';\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            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            alert(\"已更新标签\");\n            document.body.removeChild(dialog.overlay);\n        });        \n        dialog.dialog.appendChild(copyButton);          \n}\n\nif(/#$/.test(window.location.href)){\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    \n    homeTagButton.addEventListener('click', () => {               \n        toggleTag()\n    });\n    eTagButton.addEventListener('click', () => {               \n        toggleTagEdit()\n    });\n    cTagButton.addEventListener('click', () => {              \n        createTag()        \n    });\n    \n    \n    \n        \n    \n    const forms = document.getElementsByTagName('form')[1];\n    restoreBookPosition();\n    forms.addEventListener('submit', function(event) {\n        event.preventDefault();\n        const formData = new FormData(forms);\n        currentUrl = generateFinalUrl(formData);\n        previousUrl = currentUrl;\n        currentOffset = 0;\n        fetchAndRender(currentUrl);\n    });\n}\n\n// 书籍详情页按钮\nif (/m\\.jjwxc\\.net\\/book2\\/\\d+/.test(window.location.href)) {\n    document.getElementById(\"app\").remove();\n    const bookid = window.location.href.split('/').pop();\n    const booksrc = `legado://import/addToBookshelf?src=${encodeURIComponent(`http://app-cdn.jjwxc.net/androidapi/novelbasicinfo?novelId=${bookid}`)}`;\n    const title = document.querySelector(\".big.o\").innerText.replace(/首页>/, '');\n    const author = document.querySelector(\".authorname-content a\").innerText;\n\n    createButton(title, \"addBookshelf\", 14, booksrc);\n    createButton(title, \"bookName\", 18);\n    createButton(author, \"bookAuthor\", 22);\n}\n\nfunction createButton(name, type, top, url) {\n    const typeButton = type === \"bookName\" ? \"搜索书名\" : \n                      type === \"bookAuthor\" ? \"搜索作者\" : \"加入书架\";\n    const query = `${type}=${name}`;\n    const href = url ? `${url}#${query}` : `${window.location.pathname}?${query}`;\n    const button = document.createElement('a');\n    button.href = href.replace(/#addBookshelf.*/, '');\n    button.innerHTML = `\n        <button style=\"\n            outline: none; \n            position: fixed; \n            top: ${top}%; \n            right: 7%; \n            z-index: 999; \n            border-radius: 15px; \n            color: #166188;\n            border: 0px solid #000;\n            background: #E6F3F5;\n            padding: 4px 6px;\n            box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);\n        \">\n            <b>${typeButton}</b>\n        </button>\n    `;\n    document.body.appendChild(button);\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        /* 悬浮按钮容器 */\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        /* 分割线 */\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        /* 控制面板中的页码颜色区分 */\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        /* 按钮悬停效果 */\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        /* 按钮点击效果 */\n        .main-btn:active, .func-btn:active {\n            transform: translateY(0);\n        }\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: 20px; color: #000; }\n        .author {\n            font-size: 15px;\n            display: inline-block;\n            position: absolute;\n            right: 8px;\n        }\n        .tag { font-size: 12px; 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}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "[\n    {\n        \"name\": \"🖨打印标签\",\n        \"type\": \"button\",\n        \"action\": \"getTag()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,        \n            \"layout_flexBasisPercent\": 0.25   \n        }\n    },\n    {\n        \"name\": \"❌删除标签，使用源变量的标签信息\",\n        \"type\": \"button\",\n        \"action\": \"clearTag()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,              \n            \"layout_flexBasisPercent\": 0.6\n        }\n    },\n    {\n        \"name\": \"☕️支持源作者\",\n        \"type\": \"button\",\n        \"action\": \"toThank()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,     \n            \"layout_flexBasisPercent\": 1\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    \tjava.log(msg);\n   \tjava.longToast(\"请查看日志查看标签，可复制用来备份\");\n\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}",
    "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\t result = true\n\t}",
    "singleUrl": true,
    "sourceComment": "❗️保存标签，在网页里生成标签后保存标签。\n❗️删除标签，在网页里编辑标签，把文字删了，点保存。\n◎网页保存的标签信息消失情况：清除webView或清除应用缓存。\n◎源变量消失情况：对源URL进行了更改。\n◎当网页保存的标签信息和源变量两者都消失时，你的标签信息就会消失。\n◎每次点进网页会同步二者。\n\n❗️【编辑订阅源->右上角三点->设置源变量】里有保存的标签，可以复制下来，给其他设备使用。\n\n❗️利用源变量更新标签：\n方法一：前面加上🔼符号将复制的所有标签保存到源变量，\n如：🔼标签1@xxxxx#标签2@xxxxx#标签2@xxxxx#\n\n方法二：将复制的所有标签保存到源变量后【右上角三点->登录->删除标签】",
    "sourceGroup": "阅读",
    "sourceIcon": "https://m-static.jjwxc.net/images/wap/logo.png",
    "sourceName": "📖\n精确搜索",
    "sourceUrl": "https://m.jjwxc.net/assort#@js:\ntry{\n\t   java.longToast(\"加载中...请稍候...\");\n    let wo= String(source.getVariable());     \n    let script=`<script>\n    let wo= \\`${wo}\\`;\n    let iswo = /^🔼.*?@.*?#/.test(wo);\n    let temp = localStorage.getItem('setTag');    \n    let istemp =  /.*?@.*?#/.test(temp);\n    let saveTag = wo.replace(/^🔼/,'');\n    if(istemp)saveTag=temp;\n    if(iswo)saveTag=wo.replace(/^🔼/,'');\n  \t localStorage.setItem('setTag',saveTag);\n  \t saveTag = localStorage.getItem('setTag'); \n  \t </script>`;\n  \t let saveTag =java.webView(script,\"https://m.jjwxc.net/assort#\",\"saveTag\");\t \n   source.setVariable(saveTag);\n}catch(e){\n   \tjava.log(\"我是错误：\"+e)\n};\nresult",
    "variableComment": "\n想利用源变量更新标签请在最前面加上符号🔼或者点击【登录】里的删除标签\n\n如\n🔼新名字@xxxxx#我的标签@xxxxx#我的标签@xxxxx#\n\n"
  },
  {
    "articleStyle": 0,
    "customOrder": 25,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "灵感",
    "sourceIcon": "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2493829930,2242002218&fm=26&gp=0.jpg",
    "sourceName": "花瓣",
    "sourceUrl": "https://huaban.com"
  },
  {
    "articleStyle": 0,
    "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,
    "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;}"
  },
  {
    "articleStyle": 0,
    "customOrder": 29,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUrl": "",
    "singleUrl": true,
    "sourceComment": "by.不似苏",
    "sourceGroup": "阅读",
    "sourceIcon": "https://pic.616pic.com/ys_bnew_img/00/40/60/lpnkWglWkG.jpg",
    "sourceName": "渔（源仓库）",
    "sourceUrl": "https://flowus.cn/youtiaoyu/share/07424af4-5afe-41b2-b95d-d8604cd2cda9"
  },
  {
    "articleStyle": 0,
    "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",
    "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)",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 31,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773226094413,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 32,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773226148479,
    "loadWithBaseUrl": true,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "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": "",
    "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",
    "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": ""
  },
  {
    "articleStyle": 0,
    "customOrder": 53,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773227419379,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://cg.163.com/favicon.ico",
    "sourceName": "let's go 领取云手机+云电脑一台~需注册登陆(每天免费玩2h+签到15min)",
    "sourceUrl": "https://cg.163.com/#/game/other"
  },
  {
    "articleStyle": 0,
    "customOrder": 58,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765536809182,
    "loadWithBaseUrl": true,
    "ruleArticles": "$.comics.*||$.data.*",
    "ruleImage": "$.ComicCover",
    "ruleLink": "@json:/b/{$.FolderName}",
    "ruleNextPage": "page",
    "rulePubDate": "$.LastChapterTitle",
    "ruleTitle": "$.ComicName",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 59,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 60,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767884278740,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "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,
    "ruleArticles": "id.content@h3",
    "ruleLink": "a@href",
    "ruleTitle": "a@textNodes",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 63,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767885133732,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 64,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765537611717,
    "loadWithBaseUrl": true,
    "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",
    "singleUrl": false,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://i01piccdn.sogoucdn.com/87471fed709dfb95",
    "sourceName": "有趣网址之家",
    "sourceUrl": "https://youquhome.com"
  },
  {
    "articleStyle": 2,
    "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,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 83,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765537635129,
    "loadWithBaseUrl": true,
    "ruleArticles": "ul li",
    "ruleLink": "a@href",
    "ruleTitle": "a@text",
    "singleUrl": false,
    "sourceGroup": "工具",
    "sourceIcon": "https://7nsts.w3cschool.cn/images/w3c/app-logo.png",
    "sourceName": "正则表达式",
    "sourceUrl": "https://m.w3cschool.cn/zhengzebiaodashi/regexp-tutorial.html"
  },
  {
    "articleStyle": 0,
    "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\"] ];",
    "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$",
    "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}",
    "variableComment": "【确定后】要【刷新分类】才能重新搜索"
  },
  {
    "articleStyle": 0,
    "customOrder": 97,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775592128177,
    "loadWithBaseUrl": true,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 129,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "ruleArticles": ".wc3 li",
    "ruleDescription": "",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@@span.1@text}} 👁️{{@@span.0@text}}",
    "ruleTitle": "a@text##\\《|\\》|txt.*",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 129,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1774100247514,
    "loadWithBaseUrl": true,
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 132,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "ruleArticles": "",
    "ruleDescription": "",
    "ruleImage": "",
    "ruleLink": "",
    "rulePubDate": "",
    "ruleTitle": "",
    "singleUrl": true,
    "sortUrl": "",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://p0.ssl.qhimgs1.com/t013d5fde8baf3bf886.webp",
    "sourceName": "中华珍宝",
    "sourceUrl": "http://g2.ltfc.net/category"
  },
  {
    "articleStyle": 0,
    "customOrder": 135,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "http://www.gamelook.com.cn/wp-content/uploads/2019/05/g003.png",
    "sourceName": "GameLook",
    "sourceUrl": "http://www.gamelook.com.cn"
  },
  {
    "articleStyle": 1,
    "customOrder": 137,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208139773,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://cdn.aixifan.com/dotnet/20130418/umeditor/dialogs/emotion/images/ac/47.gif",
    "sourceName": "AC正义",
    "sourceUrl": "https://m.acfun.cn"
  },
  {
    "articleStyle": 0,
    "customOrder": 138,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765538624120,
    "loadWithBaseUrl": true,
    "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##<.*?>",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 138,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "https://mp-video.myzaker.com/image/201906/5cfe1b187c274f4d194bb922.jpg",
    "sourceName": "手游那点事",
    "sourceUrl": "http://www.nadianshi.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 145,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "ruleArticles": "",
    "ruleContent": "",
    "ruleImage": "",
    "ruleLink": "",
    "rulePubDate": "",
    "ruleTitle": "",
    "singleUrl": true,
    "sortUrl": "",
    "sourceGroup": "📻 媒体",
    "sourceIcon": "https://p5.ssl.qhimgs1.com/t02f332ef4492db09db.jpg",
    "sourceName": "洛奇Town",
    "sourceUrl": "https://ifish.fun",
    "style": ""
  },
  {
    "articleStyle": 0,
    "customOrder": 149,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775592207445,
    "loadWithBaseUrl": true,
    "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",
    "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": "推书合集"
  },
  {
    "articleStyle": 0,
    "customOrder": 150,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773206922774,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://p0.ssl.qhimgs1.com/dmt/80_80_/t01d23da61e324510da.jpg",
    "sourceName": "鬼大爷",
    "sourceUrl": "https://www.guidaye.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 152,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "ruleArticles": ".dd-list@.dd-item",
    "ruleLink": ".dd-content@tag.a@href",
    "ruleTitle": ".dd-content@tag.a@text",
    "singleUrl": false,
    "sourceGroup": "工具",
    "sourceIcon": "https://7nsts.w3cschool.cn/images/w3c/app-logo.png",
    "sourceName": "正则表达式",
    "sourceUrl": "https://www.w3cschool.cn/regex_rmjc/regex_rmjc-n5a328cn.html"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 156,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 158,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236415300,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://s.faloo.com/novel/favicon.ico",
    "sourceName": "飞卢小说",
    "sourceUrl": "http://wap.faloo.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 160,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773224819499,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://www.lxapk.com/favicon.ico",
    "sourceName": "乐享网",
    "sourceUrl": "https://www.lxapk.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 160,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236431020,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://imgcn.ihuaben.com/common/logo.jpg",
    "sourceName": "话本小说",
    "sourceUrl": "https://www.ihuaben.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 161,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUrl": "",
    "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",
    "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}"
  },
  {
    "articleStyle": 1,
    "customOrder": 162,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773225066826,
    "loadWithBaseUrl": true,
    "ruleArticles": "article",
    "ruleImage": "img.1@src",
    "ruleLink": "h2 a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@@.thecategory@text}} {{@@.thetime@text}} 💬{{@@.thecomment@text}}",
    "ruleTitle": "h2@text",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 163,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236442248,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://oss.xrzww.com/mini/youdu/urllogo.png",
    "sourceName": "有毒小说",
    "sourceUrl": "https://m.youdubook.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 165,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236473467,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 167,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236451369,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_7731_1621508397/256",
    "sourceName": "书旗小说",
    "sourceUrl": "https://t.shuqi.com"
  },
  {
    "articleStyle": 0,
    "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": "",
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 172,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236463197,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://p2.ssl.qhimgs1.com/t018ed3a3c0da49b9bc.png",
    "sourceName": "SF轻小说",
    "sourceUrl": "https://m.sfacg.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 173,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208195665,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "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": "资源合集"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "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": "影视合集"
  },
  {
    "articleStyle": 0,
    "customOrder": 183,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773225472978,
    "loadWithBaseUrl": false,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://www.acy.moe/sy/logo.jpg",
    "sourceName": "兽音译者(喵呜版)\n",
    "sourceUrl": "https://www.acy.moe/sy/"
  },
  {
    "articleStyle": 0,
    "customOrder": 184,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236550311,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 1,
    "customOrder": 187,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "ruleArticles": "class.td_module_4",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.1@href",
    "ruleNextPage": "class.page-nav@tag.a.-1@href",
    "rulePubDate": "tag.time@text",
    "ruleTitle": "tag.a.1@text",
    "singleUrl": false,
    "sortUrl": "//搜索项在“=”后面输入要找的内容\n最新::https://www.yxssp.com/\n🔎搜索::http://www.yxssp.com/?s=\n安卓::http://www.yxssp.com/os/android\n电脑::http://www.yxssp.com/os/windows\n苹果::http://www.yxssp.com/os/apple\nLinux::http://www.yxssp.com/os/linux",
    "sourceGroup": "🗂️ 软件",
    "sourceIcon": "https://www.yxssp.com/wp-content/uploads/2020/03/yxd2.png",
    "sourceName": "异星软件",
    "sourceUrl": "http://www.yxssp.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 188,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "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": 0,
    "loadWithBaseUrl": true,
    "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",
    "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",
    "sourceComment": "搜索栏“三国”改自己想搜的",
    "sourceGroup": "游戏",
    "sourceIcon": "http://srvcn.xbext.com/touch_icons/96x96/mobile.h5_games.png",
    "sourceName": "在线游戏（小霸王）",
    "sourceUrl": "https://www.yikm.net/nes?tag=9"
  },
  {
    "articleStyle": 2,
    "customOrder": 191,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773950195897,
    "loadWithBaseUrl": true,
    "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}}",
    "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}",
    "variableComment": "搜索关键字"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "singleUrl": false,
    "sourceGroup": "游戏",
    "sourceIcon": "http://srvcn.xbext.com/touch_icons/96x96/mobile.h5_games.png",
    "sourceName": "在线游戏",
    "sourceUrl": "https://www.yikm.net"
  },
  {
    "articleStyle": 0,
    "customOrder": 225,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207339489,
    "loadWithBaseUrl": false,
    "ruleArticles": "class.table.0@tbody@tr",
    "ruleLink": "tag.a@href",
    "rulePubDate": "tag.td.-2@text",
    "ruleTitle": "tag.td!-1:-2@text##\\n",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 230,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236512497,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 231,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767883699606,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 237,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236524481,
    "loadWithBaseUrl": true,
    "ruleArticles": "@js:\nvar x = baseUrl.substr(35);\njava.getElements(\"@@class.menu.\"+x+\"@a\");",
    "ruleLink": "href",
    "ruleTitle": "text",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 264,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\"User-Agent\": \"okhttp/3.8.1\"}",
    "lastUpdateTime": 1773207392311,
    "loadWithBaseUrl": true,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 266,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 280,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767885276802,
    "loadWithBaseUrl": true,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 296,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://m.saowen.net/favicon.ico",
    "sourceName": "扫文小院",
    "sourceUrl": "http://saowen.net"
  },
  {
    "articleStyle": 0,
    "customOrder": 306,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 343,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767885412513,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 373,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773224753953,
    "loadWithBaseUrl": true,
    "ruleArticles": ".wc3 li",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "人气：{{@@tag.span.0@text}} · 大小：{{@@tag.span.1@text}}",
    "ruleTitle": "a@text",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 383,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "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}}",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 392,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217390132,
    "loadWithBaseUrl": true,
    "ruleArticles": ".game_list@a",
    "ruleImage": "img@src",
    "ruleLink": "href",
    "ruleNextPage": "page",
    "rulePubDate": "img@alt",
    "ruleTitle": "p@text",
    "singleUrl": false,
    "sourceGroup": "游戏",
    "sourceIcon": "http://tools.liumingye.cn/favicon.ico",
    "sourceName": "7k女神推荐游戏",
    "sourceUrl": "http://m.7k7k.com/tag/506/index_{{page}}.htm"
  },
  {
    "articleStyle": 0,
    "customOrder": 393,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773224506491,
    "loadWithBaseUrl": true,
    "ruleArticles": "data",
    "ruleImage": "pic",
    "ruleLink": "playlink",
    "ruleNextPage": "page",
    "rulePubDate": "{{$.category}}😊{{$.html5introduce}}",
    "ruleTitle": "title",
    "singleUrl": false,
    "sourceGroup": "游戏",
    "sourceIcon": "https://www.aoaostar.com/favicon.ico",
    "sourceName": "4399变态版在线玩",
    "sourceUrl": "http://h.4399.com/data/android_s148_{{page}}.js?t=1650965242"
  },
  {
    "articleStyle": 0,
    "customOrder": 394,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213889758,
    "loadWithBaseUrl": true,
    "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}}",
    "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}}"
  },
  {
    "articleStyle": 0,
    "customOrder": 396,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236537131,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://static.17k.com/pic/app_logo.png",
    "sourceName": "17K小说",
    "sourceUrl": "https://h5.17k.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 407,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213791273,
    "loadWithBaseUrl": true,
    "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}}",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 431,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775586218163,
    "loadWithBaseUrl": true,
    "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",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 446,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208207598,
    "loadWithBaseUrl": true,
    "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",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 469,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765537953665,
    "loadWithBaseUrl": true,
    "loginUrl": "https://www.qtfm.cn",
    "ruleArticles": "$.data.channels",
    "ruleImage": "$.cover",
    "ruleLink": "https://m.qtfm.cn/vchannels/{$.id}",
    "ruleNextPage": "page",
    "rulePubDate": "$.update_time",
    "ruleTitle": "$.title",
    "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"
  },
  {
    "articleStyle": 2,
    "customOrder": 473,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775644760047,
    "loadWithBaseUrl": true,
    "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",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 477,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207204270,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 504,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208232906,
    "loadWithBaseUrl": true,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 505,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765538242550,
    "loadWithBaseUrl": true,
    "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",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 591,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773206563509,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 605,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1767884471715,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "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/】《📺Ⅰ字幕库》『界面简洁清爽，下载字幕台词』",
    "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",
    "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}"
  },
  {
    "articleStyle": 2,
    "customOrder": 843,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775587350326,
    "loadWithBaseUrl": true,
    "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()",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1085,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765540615667,
    "loadWithBaseUrl": true,
    "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?#《阅读》"
  },
  {
    "articleStyle": 0,
    "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,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://simgbb.com/images/favicon.png",
    "sourceName": "imgbb（图片上传）",
    "sourceUrl": "https://imgbb.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 1096,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773223757339,
    "loadWithBaseUrl": true,
    "ruleArticles": "ul.list-unstyled@li",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "ruleTitle": "h3@text",
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "https://i.postimg.cc/7ZBmz6L3/1667311271566.png",
    "sourceName": "全球🍺欣赏",
    "sourceUrl": "https://www.jiuhuar.com/craftbeer?rule=newest&filter=all&page={{page}}"
  },
  {
    "articleStyle": 0,
    "customOrder": 1099,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775591993875,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sortUrl": "https://onehu.xyz/categories/",
    "sourceGroup": "文学网站",
    "sourceIcon": "https://z3.ax1x.com/2021/02/07/ytBcZj.gif",
    "sourceName": "我不是盐神",
    "sourceUrl": "https://onehu.xyz/"
  },
  {
    "articleStyle": 0,
    "customOrder": 1102,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765538656091,
    "loadWithBaseUrl": 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",
    "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": "新闻",
    "sourceUrl": "https://www.anyknew.com"
  },
  {
    "articleStyle": 1,
    "customOrder": 1110,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773208507884,
    "loadWithBaseUrl": true,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 1112,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208523949,
    "loadWithBaseUrl": true,
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 1126,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208579364,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1137,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775592067105,
    "loadWithBaseUrl": true,
    "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",
    "singleUrl": false,
    "sourceGroup": "推书点评",
    "sourceIcon": "http://img.100weidu.com/weixin/head/MzI5NTA4NjgwNw==",
    "sourceName": "赤戟的书荒救济所",
    "sourceUrl": "http://www.jintiankansha.me/column/qOcZgyKfdi"
  },
  {
    "articleStyle": 0,
    "customOrder": 1166,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773225480134,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "游戏",
    "sourceIcon": "https://www.furryfusion.net/images/LOGO.png",
    "sourceName": "兽聚汇总",
    "sourceUrl": "https://www.furryfusion.net/"
  },
  {
    "articleStyle": 0,
    "customOrder": 1177,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773949985857,
    "loadWithBaseUrl": 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",
    "singleUrl": false,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://www.lifves.com/favicon.ico",
    "sourceName": "花瓣-热门",
    "sourceUrl": "https://api.huaban.com/popular?limit=100"
  },
  {
    "articleStyle": 0,
    "customOrder": 1178,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773222091698,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://qinggongju.com/wp-content/uploads/2020/12/hdImg_fbfcbb35309ba72a78da9be4a6b45f9415985150181.png",
    "sourceName": "轻工具",
    "sourceUrl": "https://qinggongju.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 1181,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775591503531,
    "loadWithBaseUrl": 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",
    "singleUrl": false,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://api.huaban.com/favicon.ico",
    "sourceName": "花瓣-漫画",
    "sourceUrl": "https://api.huaban.com/favorite/illustration?limit=100"
  },
  {
    "articleStyle": 0,
    "customOrder": 1187,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775591510167,
    "loadWithBaseUrl": 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",
    "singleUrl": false,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://api.huaban.com/favicon.ico",
    "sourceName": "花瓣-旅行",
    "sourceUrl": "https://api.huaban.com/favorite/travel_places?limit=100"
  },
  {
    "articleStyle": 0,
    "customOrder": 1191,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": 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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1196,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1767885059536,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1200,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773206812994,
    "loadWithBaseUrl": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "http://www.17k.cc/favicon.ico",
    "sourceName": "少数派",
    "sourceUrl": "https://sspai.com/feed"
  },
  {
    "articleStyle": 0,
    "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,
    "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;}"
  },
  {
    "articleStyle": 0,
    "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,
    "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",
    "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": "出版书籍和精校小说下载网站"
  },
  {
    "articleStyle": 0,
    "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,
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 1219,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773221974181,
    "loadWithBaseUrl": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://mmbiz.qpic.cn/mmbiz_png/hpfMV8hEuL2eS6vnCxvTzoOiaCAibV6exBzJWq9xMic9xDg3YXAick87tsfafic0icRwkQ5ibV0bJ84JtSuxhPuEDVquA/0?wx_fmt=png",
    "sourceName": "十八小说",
    "sourceUrl": "https://m.po18uu.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1238,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775589506003,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/acgboxlink/acgbox/logo/86742914_p0.png",
    "sourceName": "ACG盒子",
    "sourceUrl": "https://www.acgbox.link"
  },
  {
    "articleStyle": 2,
    "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,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 1259,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773208783581,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://m.ndlib.cn/03/images/Defaulted_logo.png",
    "sourceName": "移动阅读",
    "sourceUrl": "http://m.ndlib.cn"
  },
  {
    "articleStyle": 0,
    "customOrder": 1293,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207152365,
    "loadWithBaseUrl": false,
    "singleUrl": false,
    "sourceGroup": "新闻",
    "sourceIcon": "https://p1.ssl.qhimg.com/t01679c85020154b0ff.png",
    "sourceName": "异次元软件世界",
    "sourceUrl": "http://feed.iplaysoft.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1296,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1299,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773221705657,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://p.ssl.qhimg.com/dmsmflm/318_210_/ss/40_130/t01fd769330483feaa4.png",
    "sourceName": "优设",
    "sourceUrl": "https://www.uisdc.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1302,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236923897,
    "loadWithBaseUrl": true,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 1303,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213986908,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "http://www.sixyin.com/wp-content/uploads/member/avatars/238a0b923820dcc5.1608735888.jpg",
    "sourceName": "TOPYS",
    "sourceUrl": "https://m.topys.cn"
  },
  {
    "articleStyle": 2,
    "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,
    "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##</*.*?>",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 1307,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773221669882,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1310,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773219026936,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://c-ssl.duitang.com/uploads/people/201908/23/20190823164218_8ZA3v.png",
    "sourceName": "堆糖",
    "sourceUrl": "https://m.duitang.com"
  },
  {
    "articleStyle": 0,
    "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\"] ];",
    "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$",
    "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}",
    "variableComment": "【确定后】要【刷新分类】才能重新搜索"
  },
  {
    "articleStyle": 0,
    "customOrder": 1320,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773219004807,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "http://cdn.jandan.net/static/img/icon.png",
    "sourceName": "煎蛋",
    "sourceUrl": "http://jandan.net/pic"
  },
  {
    "articleStyle": 2,
    "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,
    "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}",
    "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": "长佩书单"
  },
  {
    "articleStyle": 0,
    "customOrder": 1359,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218778980,
    "loadWithBaseUrl": 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}}",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1360,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765541286889,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "新闻",
    "sourceIcon": "https://p3.ssl.qhimgs1.com/t01b3884c2667659e59.gif",
    "sourceName": "百度风云",
    "sourceUrl": "http://top.baidu.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1365,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1773236946484,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://oss-xpc0.xpccdn.com/Upload/edu/2019/09/095d75c392a6a3f.png",
    "sourceName": "新片场",
    "sourceUrl": "https://www.xinpianchang.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1367,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218762938,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://dgss3.bdstatic.com/-bA2ezTa2gU2pMbgoY3K/img/0/512_512/ce8d065cbedf24ecf82449b4033450f2.png",
    "sourceName": "哔哩哔哩",
    "sourceUrl": "https://m.bilibili.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1371,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218751213,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://p5.ssl.qhimgs1.com/t02de0a0e3fdc546afb.jpg",
    "sourceName": "速影TV",
    "sourceUrl": "https://suyingtv.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1375,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773218639346,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://www.mvcat.com/img/logo_appicon.png",
    "sourceName": "影猫",
    "sourceUrl": "https://www.mvcat.com"
  },
  {
    "articleStyle": 3,
    "customOrder": 1379,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773236982164,
    "loadWithBaseUrl": true,
    "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}}",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1388,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773221878177,
    "loadWithBaseUrl": true,
    "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",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 1416,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1775591487860,
    "loadWithBaseUrl": false,
    "singleUrl": false,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://imgsa.baidu.com/forum/pic/item/d0c8a786c9177f3e8ebb0cca7ecf3bc79e3d566e.jpg",
    "sourceName": "吾爱破解",
    "sourceUrl": "https://www.52pojie.cn/forum.php?mod=rss"
  },
  {
    "articleStyle": 0,
    "customOrder": 1430,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217842916,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://www.bl210.com/templets/default/images/img/favicon.ico",
    "sourceName": "爱妖灵",
    "sourceUrl": "https://www.bl210.com"
  },
  {
    "articleStyle": 2,
    "customOrder": 1431,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\t\"User-Agent\": \"picasso,315,tencent\"\n}",
    "lastUpdateTime": 1773206596612,
    "loadWithBaseUrl": true,
    "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)",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 1436,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217737488,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "http://m.haoqu99.com/favicon.ico",
    "sourceName": "好趣网（电视频道）",
    "sourceUrl": "http://m.haoqu99.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1447,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217439611,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://www.kan.cc/statics/logo/favicon.ico",
    "sourceName": "看韩剧",
    "sourceUrl": "https://www.kan.cc"
  },
  {
    "articleStyle": 0,
    "customOrder": 1460,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217097585,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://www.iqiyipic.com/common/fix/h5-read//logo2.png",
    "sourceName": "爱奇艺文学",
    "sourceUrl": "https://wenxue.m.iqiyi.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1461,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217053941,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://yuedu-cms.bj.bcebos.com/v1/wap/logo_300x300-1493192637282.png",
    "sourceName": "百度阅读",
    "sourceUrl": "https://yd.baidu.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1464,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773217610419,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1466,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216987951,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://wap.hanwujinian.com/public/static/wap/wap1/image/icon/img_1.png",
    "sourceName": "寒武纪年",
    "sourceUrl": "http://wap.hanwujinian.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1470,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216943714,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m.gongzicp.com/favicon.ico",
    "sourceName": "长佩文学",
    "sourceUrl": "https://m.gongzicp.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1473,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216934121,
    "loadWithBaseUrl": false,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m.ruochu.com/favicon.ico",
    "sourceName": "若初文学",
    "sourceUrl": "https://m.ruochu.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1479,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216922671,
    "loadWithBaseUrl": true,
    "ruleArticles": ".excerpt",
    "ruleImage": "img@data-src",
    "ruleLink": "tag.a.1@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "time@text",
    "ruleTitle": "h2@text",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1480,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773216894789,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "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,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m-static.jjwxc.net/images/wap/logo2.png",
    "sourceName": "晋江文学\n高级搜索",
    "sourceUrl": "https://m.jjwxc.net/assort"
  },
  {
    "articleStyle": 0,
    "customOrder": 1530,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773215679992,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://cdn.wyteam.net/webapps/maccms/template/blueghost/img/favicon.ico",
    "sourceName": "APP影院",
    "sourceUrl": "https://app.movie"
  },
  {
    "articleStyle": 0,
    "customOrder": 1549,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773215426987,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://777tv.net/upload/site/20200423-1/20482c8759cc264267864b0143e5c853.png",
    "sourceName": "小鸭影音",
    "sourceUrl": "https://777tv.net"
  },
  {
    "articleStyle": 2,
    "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,
    "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*)?",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 1553,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1872452602,484889130&fm=11&gp=0.jpg",
    "sourceName": "泡饭影视",
    "sourceUrl": "https://paofans.tv"
  },
  {
    "articleStyle": 0,
    "customOrder": 1554,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773215340196,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1555,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773215283519,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "影视",
    "sourceIcon": "https://pic.imgdb.cn/item/600c29733ffa7d37b3d57e0b.png",
    "sourceName": "迅播影院",
    "sourceUrl": "http://www.xunbody.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1575,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773207533530,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "绘画",
    "sourceIcon": "https://p3-search.byteimg.com/obj/labis/0a5502af6b95a6b49d3acd488aae8398",
    "sourceName": "绝美壁纸[参考]",
    "sourceUrl": "https://www.wanmeikk.me"
  },
  {
    "articleStyle": 1,
    "customOrder": 1595,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214684166,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 1,
    "customOrder": 1597,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214609918,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1603,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214447360,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "工具",
    "sourceIcon": "https://qn13.tool.lu/201710/15/103319bpfNNx3ST9v8UKtO_56x56.png",
    "sourceName": "在线工具",
    "sourceUrl": "https://tool.lu"
  },
  {
    "articleStyle": 0,
    "customOrder": 1607,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214408104,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_10555_1607931189/256",
    "sourceName": "QQ阅读",
    "sourceUrl": "https://ubook.reader.qq.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1608,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214399110,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://qidian.gtimg.com/qdm/img/favicon.fb0b7.ico",
    "sourceName": "起点中文",
    "sourceUrl": "https://m.qidian.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1609,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214390730,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://m.jjwxc.com/images/wap/logo2.png",
    "sourceName": "晋江文学",
    "sourceUrl": "https://m.jjwxc.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1610,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775592043181,
    "loadWithBaseUrl": true,
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 1611,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214378410,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_1129886_1605601942/256",
    "sourceName": "纵横中文",
    "sourceUrl": "https://m.zongheng.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1613,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214357989,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1628,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213905683,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1632,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213763820,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "做饭",
    "sourceIcon": "http://pub.szzhangchu.com/web/v4.2/images/logo.png",
    "sourceName": "掌厨",
    "sourceUrl": "http://h5.izhangchu.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1633,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213750372,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "做饭",
    "sourceIcon": "https://p0.qhimg.com/t01922e79121dace8ba.png",
    "sourceName": "香哈",
    "sourceUrl": "https://m.xiangha.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1635,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213725312,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "资源绘",
    "sourceIcon": "https://b.bdstatic.com/searchbox/mappconsole/image/20181207/1544154193-98547.png",
    "sourceName": "下厨房",
    "sourceUrl": "https://www.xiachufang.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1639,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773213689655,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "做饭",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_9907_1611223786/256",
    "sourceName": "美食天下",
    "sourceUrl": "https://m.meishichina.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 1686,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773214368832,
    "loadWithBaseUrl": true,
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 1689,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773224898009,
    "loadWithBaseUrl": true,
    "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",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 4858,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "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": 1765920211679,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img2.baidu.com/it/u=374998620,3451894204&fm=253&fmt=auto&app=138&f=PNG?w=256&h=256",
    "sourceName": "QQ阅读",
    "sourceUrl": "https://ubook.reader.qq.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4860,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765924967552,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://mms0.baidu.com/it/u=1908925117,2797981277&fm=253&app=138&f=JPEG&fmt=auto&q=75?w=500&h=500",
    "sourceName": "微信男生",
    "sourceUrl": "https://weread.qq.com/web/category/novel_male_rising"
  },
  {
    "articleStyle": 0,
    "customOrder": 4861,
    "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 (!/^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": 1765920402093,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img0.baidu.com/it/u=1334021856,2267126252&fm=253&fmt=auto&app=138&f=JPEG?w=256&h=256",
    "sourceName": "SF轻小说",
    "sourceUrl": "https://m.sfacg.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4865,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765919393666,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://android-artworks.25pp.com/fs08/2019/06/10/1/110_78cec5736548eab292590c024e3a414e_con.png",
    "sourceName": "书旗小说",
    "sourceUrl": "https://t.shuqi.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4866,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925593379,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img2.baidu.com/it/u=787415418,2045364823&fm=253&app=138&f=JPEG?w=500&h=500",
    "sourceName": "书旗男生",
    "sourceUrl": "https://render-web.shuqireader.com/render/sq-bookstore/page/kaqd7vp1/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4868,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765923224666,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img1.baidu.com/it/u=68953218,2787589627&fm=253&fmt=auto&app=138&f=PNG?w=500&h=500",
    "sourceName": "掌阅小说",
    "sourceUrl": "https://wap.yc.ireader.com.cn/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4870,
    "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": "\nlet previousUrl = \"\";\nlet currentUrl = '';\nlet bqUrl = \"\";\nlet currentOffset = 0;\nlet totalPages = 1;\nlet isLoading = false;\nlet hasMore = true;\nlet hasPrevious = false;\nlet scrollDebounceTimer = null;\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    let 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        console.error('加载失败，无法滚动:', 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            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    // 使用被动事件监听器提高滚动性能\n    window.addEventListener('scroll', handleScroll, { passive: true });\n}\n\nfunction handleScroll() {\n    // 防抖处理\n    clearTimeout(scrollDebounceTimer);\n    scrollDebounceTimer = setTimeout(() => {\n        if (!isLoading) {\n            updateCurrentPage();\n        }\n        \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    // 检查是否到达底部\n    if (scrollPosition + windowHeight >= documentHeight - 100 && hasMore) {\n        loadNextPage();\n    }\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    \n    // 保存当前滚动位置\n    const scrollPositionBefore = window.scrollY;\n    \n    fetch(url.toString())\n        .then(response => response.json())\n        .then(jsonData => {\n            // 使用requestAnimationFrame确保平滑加载\n            requestAnimationFrame(() => {\n                // 加载新内容\n                prependBookElements(jsonData, newOffset);\n                \n                // 更新状态\n                currentOffset = newOffset;\n                updateCurrentPage();\n                hasMore = (Math.floor(newOffset / 20) + 1) < jsonData.total_page;\n                hasPrevious = newOffset > 0;\n                \n                // 计算并保持滚动位置\n                const newBooks = document.querySelectorAll('.book');\n                if (newBooks.length > 0) {\n                    // 滚动到新加载内容的最后一本（即之前那页的第一本）\n                    const targetBook = newBooks[jsonData.items.length - 1];\n                    if (targetBook) {\n                        const targetPosition = targetBook.offsetTop +100; // 留出一些顶部空间\n                        \n                        // 使用平滑滚动\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    if (isLoading) return;\n    \n    isLoading = true;\n    document.getElementById('loading').style.display = 'block';\n    \n    const newOffset = currentOffset + 20;\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\n        bookDiv.innerHTML = `\n            <div class=\"bookdes\">\n                <div class=\"pic\"><img src=\"${item.cover}\" referrerpolicy=\"no-referrer\"></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\">——${item.authorname}</span>\n                    </p>\n                    <p class=\"tag\">⭐️ ${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\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    // 使用IntersectionObserver检测可见书籍\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                // 只有当页码确实改变时才更新DOM\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 // 当书籍50%可见时触发\n    });\n    \n    // 观察所有书籍\n    books.forEach(book => {\n        observer.observe(book);\n    });\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    return `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 || ''}`;\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\">\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 10px;\"> | </span>\n                只显示 <select name=\"isfinish\" id=\"isfinish\">\n                    <option value=\"0\">无限制</option>\n                    <option value=\"1\">连载</option>\n                    <option value=\"2\">完结</option>\n                </select>\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            // 获取DOM元素\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    \n            // 设置总页数\n        totalPages = jsonData.total_page; // 示例使用六位数页码\n        totalPagesEl.textContent = totalPages;\n        pageInput.max = totalPages;\n        \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        // 点击页面其他区域收起按钮组\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        \n\n        // 功能按钮事件\n        homeBtn.addEventListener('click', function() {\n            sessionStorage.setItem('previousUrl', \"\");\n            window.location.reload();\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\n    sortTypeSelect.onchange = () => updateUrlParam('sortType', sortTypeSelect.value);\n    isFinishSelect.onchange = () => updateUrlParam('isfinish', isFinishSelect.value);\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                // 或者尝试加载上一页（如果有）\n                loadPreviousPage();\n            }\n        }\n    };\n    \n    // 初始检查\n    checkScrollable();\n}\nwindow.addEventListener('beforeunload', () => {\n    window.removeEventListener('scroll', handleScroll);\n    window.removeEventListener('resize', checkScrollable);\n});\n        \n        \n// 标签管理\nif(/#$/.test(window.location.href)){\n    bqUrl = window.location.href;\n    const urls = bqUrl.split('#');\n    const buttonData = urls.slice(1).filter(part => part.trim() !== '');\n\n    const buttonContainer = document.createElement('div');\n    buttonContainer.style.position = 'fixed';\n    buttonContainer.style.bottom = '50px';\n    buttonContainer.style.right = '20px';\n    buttonContainer.style.zIndex = '1000';\n    buttonContainer.style.display = 'flex';\n    buttonContainer.style.flexDirection = 'column';\n    buttonContainer.style.gap = '10px';\n    document.body.appendChild(buttonContainer);\n\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.padding = '5px 10px';\n        button.style.backgroundColor = '#007BFF';\n        button.style.color = 'white';\n        button.style.border = 'none';\n        button.style.borderRadius = '5px';\n        button.style.cursor = 'pointer';\n        button.addEventListener('click', () => fetchAndRender(decode(url)));\n        buttonContainer.appendChild(button);\n    });\n\n    const button = document.createElement('button');\n    button.textContent = '生成标签';\n    button.style.position = 'fixed';\n    button.style.bottom = '20px';\n    button.style.right = '20px';\n    button.style.zIndex = '1000';\n    button.style.padding = '5px 10px';\n    button.style.backgroundColor = '#007BFF';\n    button.style.color = 'white';\n    button.style.border = 'none';\n    button.style.borderRadius = '5px';\n    button.style.cursor = 'pointer';\n    document.body.appendChild(button);\n\n    button.addEventListener('click', () => {\n        const form = document.getElementsByTagName('form')[1];\n        const formData = new FormData(form);\n        const finalUrl = generateFinalUrl(formData);\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        const dialog = document.createElement('div');\n        dialog.style.backgroundColor = 'white';\n        dialog.style.padding = '20px';\n        dialog.style.borderRadius = '10px';\n        dialog.style.width = '80%';\n        dialog.style.boxShadow = '0 0 10px rgba(0, 0, 0, 0.3)';\n        dialog.style.textAlign = 'center';\n\n        const promptText = document.createElement('p');\n        promptText.textContent = '复制标签网址到【源URL】保存标签';\n        promptText.style.margin = '10px 0';\n        promptText.style.fontSize = '14px';\n        promptText.style.color = '#333';\n        dialog.appendChild(promptText);\n\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 = 'none';\n        urlTextarea.style.resize = 'none';\n        urlTextarea.readOnly = true;\n        dialog.appendChild(urlTextarea);\n\n        const copyButton = document.createElement('button');\n        copyButton.textContent = '一键复制';\n        copyButton.style.margin = '10px';\n        copyButton.style.padding = '10px 20px';\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            urlTextarea.select();\n            document.execCommand('copy');\n            alert('已复制到剪贴板！');\n            document.body.removeChild(overlay);\n        });\n        dialog.appendChild(copyButton);\n\n        const closeButton = document.createElement('button');\n        closeButton.textContent = '关闭';\n        closeButton.style.margin = '10px';\n        closeButton.style.padding = '10px 20px';\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        });\n        dialog.appendChild(closeButton);\n\n        overlay.appendChild(dialog);\n        document.body.appendChild(overlay);\n    });\n\n    const forms = document.getElementsByTagName('form')[1];\n    restoreBookPosition();\n    forms.addEventListener('submit', function(event) {\n        event.preventDefault();\n        const formData = new FormData(forms);\n        currentUrl = generateFinalUrl(formData);\n        previousUrl = currentUrl;\n        currentOffset = 0;\n        fetchAndRender(currentUrl);\n    });\n}\n\n// 书籍详情页按钮\nif (/m\\.jjwxc\\.net\\/book2\\/\\d+/.test(window.location.href)) {\n    document.getElementById(\"app\").remove();\n    const bookid = window.location.href.split('/').pop();\n    const booksrc = `legado://import/addToBookshelf?src=${encodeURIComponent(`http://app-cdn.jjwxc.net/androidapi/novelbasicinfo?novelId=${bookid}`)}`;\n    const title = document.querySelector(\".big.o\").innerText.replace(/首页>/, '');\n    const author = document.querySelector(\".authorname-content a\").innerText;\n\n    createButton(title, \"addBookshelf\", 14, booksrc);\n    createButton(title, \"bookName\", 18);\n    createButton(author, \"bookAuthor\", 22);\n}\n\nfunction createButton(name, type, top, url) {\n    const typeButton = type === \"bookName\" ? \"搜索书名\" : \n                      type === \"bookAuthor\" ? \"搜索作者\" : \"加入书架\";\n    const query = `${type}=${name}`;\n    const href = url ? `${url}#${query}` : `${window.location.pathname}?${query}`;\n    const button = document.createElement('a');\n    button.href = href.replace(/#addBookshelf.*/, '');\n    button.innerHTML = `\n        <button style=\"\n            outline: none; \n            position: fixed; \n            top: ${top}%; \n            right: 7%; \n            z-index: 999; \n            border-radius: 15px; \n            color: #166188;\n            border: 0px solid #000;\n            background: #E6F3F5;\n            padding: 4px 6px;\n            box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);\n        \">\n            <b>${typeButton}</b>\n        </button>\n    `;\n    document.body.appendChild(button);\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            gap: 8px;\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        /* 分割线 */\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            gap: 8px;\n        }\n        \n        /* 展开时显示 */\n        .expanded .button-group {\n            display: flex;\n            \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            \n       \n            \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            \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        /* 控制面板中的页码颜色区分 */\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        /* 按钮悬停效果 */\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        /* 按钮点击效果 */\n        .main-btn:active, .func-btn:active {\n            transform: translateY(0);\n        }\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: 20px; color: #000; }\n        .author {\n            font-size: 15px;\n            display: inline-block;\n            position: absolute;\n            right: 8px;\n        }\n        .tag { font-size: 12px; margin-top: -10px; }\n        #loading {\n            background: rgba(0,0,0,0.1);\n            \n            margin: 10px 0;\n        }\n    `;\n    document.head.appendChild(style);\n}\n\n",
    "lastUpdateTime": 1765926016616,
    "loadWithBaseUrl": true,
    "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\t result = true\n\t}",
    "singleUrl": true,
    "sourceComment": "❗️保存标签，请按照以下格式放在【源URL】：\n\nhttps://m.jjwxc.net/assort#标签1@生成的标签#标签2@生成的标签#标签3@生成的标签#\n\n\n❗️注意开头的https://m.jjwxc.net/assort#不要删除，还有末尾的#也不要删除，每个标签分隔是用#。\n\n\n下面是完整【源URL】案例\n\nhttps://m.jjwxc.net/assort#百合强强并重生@MTksNzUmcmVtb3ZldGFncz0mbm90bGlrZWNvbGxlY3Rpb25UeXBlcz1vcnMmZnc9MCZ5Yz0wJnh4PTMmc2Q9MCZseD0wJm1haW52aWV3PTAmZmJzaj0wJm5vdmVsYmVmYXZvcml0ZWRjb3VudD0wJmlzZmluaXNoPSZjb2xsZWN0aW9uVHlwZXM9YW5kcyZzZWFyY2hrZXlXb3Jkcz0=#百合甜爽穿@MTI0LDEzNywxMzQmcmVtb3ZldGFncz0mbm90bGlrZWNvbGxlY3Rpb25UeXBlcz1vcnMmZnc9MCZ5Yz0wJnh4PTMmc2Q9MCZseD0wJm1haW52aWV3PTAmZmJzaj0wJm5vdmVsYmVmYXZvcml0ZWRjb3VudD0wJmlzZmluaXNoPSZjb2xsZWN0aW9uVHlwZXM9b3JzJnNlYXJjaGtleVdvcmRzPQ==#",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://m-static.jjwxc.net/images/wap/logo.png",
    "sourceName": "晋江搜索",
    "sourceUrl": "https://m.jjwxc.net/assort#"
  },
  {
    "articleStyle": 0,
    "customOrder": 4872,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765924978537,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img0.baidu.com/it/u=2628473074,2098079028&fm=253&fmt=auto&app=138&f=JPEG?w=246&h=246",
    "sourceName": "纵横男生",
    "sourceUrl": "https://m.zongheng.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4873,
    "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": 1765919347860,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img1.baidu.com/it/u=608769196,3495950995&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",
    "sourceName": "塔读文学",
    "sourceUrl": "https://m.tadu.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4874,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765919367213,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img.cingov.com.cn/uploadimg/ico/2020/0821/1597980183384150.png",
    "sourceName": "黑岩小说",
    "sourceUrl": "https://w2.heiyan.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4875,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765919382215,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://newyx-img.hellonitrack.com/android/201512/18/8befde2d23.png",
    "sourceName": "百度阅读",
    "sourceUrl": "https://yd.baidu.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4877,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765926344328,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://mms1.baidu.com/it/u=600426812,3321216161&fm=253&app=138&f=PNG&fmt=auto&q=75?w=500&h=500",
    "sourceName": "百度男生",
    "sourceUrl": "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=11664560672918715049&referlid=11664560672918715049&ms=1&frsrcid=5143&frorder=6"
  },
  {
    "articleStyle": 0,
    "customOrder": 4878,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765919576823,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img.anfensi.com/upload/2018-8/2018821120202396.png",
    "sourceName": "磨铁阅读",
    "sourceUrl": "https://m.motie.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4880,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765920129049,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img1.baidu.com/it/u=2222008925,887695910&fm=253&fmt=auto&app=138&f=JPG?w=256&h=256",
    "sourceName": "传奇读书",
    "sourceUrl": "http://www.cqzww.com/m/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4882,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "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": 1765920171818,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img0.baidu.com/it/u=3746697210,1888408886&fm=253&fmt=auto&app=138&f=JPEG?w=300&h=300",
    "sourceName": "天下书盟",
    "sourceUrl": "http://m.fbook.net/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4883,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "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": 1765920197801,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img0.baidu.com/it/u=1112907032,4017314298&fm=253&fmt=auto&app=138&f=PNG?w=500&h=500",
    "sourceName": "搜狗小说",
    "sourceUrl": "http://m.sosogougou.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4884,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "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": 1765920104296,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img0.baidu.com/it/u=1847525774,2417635531&fm=253&fmt=auto&app=138&f=PNG?w=500&h=500",
    "sourceName": "红袖添香",
    "sourceUrl": "https://m.hongxiu.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4887,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765920353396,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img0.baidu.com/it/u=3315332530,1066732512&fm=253&fmt=auto&app=138&f=JPEG?w=180&h=180",
    "sourceName": "潇湘书院",
    "sourceUrl": "https://m.xxsy.net/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4889,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925670329,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://mms2.baidu.com/it/u=3924333519,646699251&fm=253&app=138&f=JPEG&fmt=auto&q=75?w=500&h=500",
    "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&uc_param_str=dnntnwvepffrgibijbprsvpidicheiutdsmeodosgp&dn=42088364386-90fd3c2f&nt=7&nw=0&ve=5.6.2.207&pf=3300&fr=android&gi=bTkwBHv%252Bj4MtCY%252FSW7Jsw3OljTKw&bi=35899&pr=ucpro&sv=release&ch=kk%40store&ut=AAN%2FhimoTMP1zQqKX3lT%2BnqelFbnry3P%2By42bnT93B393w%3D%3D&ds=bTkwAGRXH%2Bxyu%2BgRalUZorjjhjFWnL%2FT%2BkAbwlrH5h%2BOIA%3D%3D&od=AAQGxTOoDJIm%252FCcJsXVPvPsyo5KtxQTECJ3I1E%252Bk3oam2Q%253D%253D&os=12&from=kkframenew"
  },
  {
    "articleStyle": 0,
    "customOrder": 4890,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765926414509,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://mms1.baidu.com/it/u=2460590414,350103885&fm=253&app=138&f=PNG&fmt=auto&q=75?w=256&h=256",
    "sourceName": "书海小说",
    "sourceUrl": "http://m.shuhai.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4892,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1767885096249,
    "loadWithBaseUrl": true,
    "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",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 4897,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765921161985,
    "loadWithBaseUrl": true,
    "ruleArticles": "@js:\n//-网站网址&网站名称\n\nhtml='https://www.jiumodiary.com/&鸠摩搜书-https://www.shiyisoushu.com/&时宜搜书-https://ebook.huzerui.com/&熊猫搜书-https://blah.me/&BLAH书库-https://bks.thefuture.top&thefuture-https://obook.cc/&偶书-https://www.kgbook.com/&苦瓜书盘-http://haodoo.net/&好读-https://bookfere.com/ebook&书伴-http://www.zxcs.me/&知轩藏书-https://new.shuge.org/&书格';\n\nlist=html.split('-');\njson=[];\nfor(i in list){\ntext=list[i].match(/.*?&(.*)/)[1];\nhref=list[i].match(/(.*?)&.*/)[1];\njson.push({text:text,href:href})\n}\njson",
    "ruleLink": "href",
    "ruleTitle": "text",
    "singleUrl": false,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://sm.bdimg.com/static/wiseindex/img/favicon64.ico",
    "sourceName": "书籍搜索",
    "sourceUrl": "https://www.baidu.com?wd=书籍下载"
  },
  {
    "articleStyle": 0,
    "customOrder": 4899,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765919117222,
    "loadWithBaseUrl": true,
    "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];\njson.push({text:text,href:href})\n}\n}else{\nlist=baseUrl.replace(/http.*?wd=/,'');\nhref=list.match(/【(.*?)】/)[1];\ntext=list.match(/《(.*?)》/)[1];\njson.push({text:text,href:href})\n}\njson",
    "ruleLink": "href",
    "rulePubDate": "href",
    "ruleTitle": "text",
    "singleUrl": false,
    "sortUrl": "分类名称::http://www.baidu.com?wd=【https://m.qidian.com/】《起点中文网》•【https://m.zongheng.com/】《纵横中文网》•【https://h5.17k.com/】《17k小说网》•【http://wap.yc.ireader.com.cn/】《掌阅小说网》•【http://m.yuedu.163.com/】《网易云阅读》•【https://m.readnovel.com/】《小说阅读网》•【https://m.zhulang.com/】《逐浪小说网》•【https://m.hongxiu.com/】《红袖添香小说网》•【https://wap.faloo.com/】《飞卢小说网》•【https://www.ciweimao.com/】《欢乐书客》•【http://www.tadu.com/】《塔读文学》",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://uutool.cn/s/66bf24",
    "sourceName": "小说网站",
    "sourceUrl": "格式  在分类url填写  网站直接的分隔符为•\n\n分类名称::http://www.baidu.com?wd=【网址1】《网站名称1》•【网址2】《网站名称2》\n\n分类名称::http://www.baidu.com?wd=【网址1】《网站名称1》\n"
  },
  {
    "articleStyle": 0,
    "customOrder": 4900,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "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": 1765923239243,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://image.52pk.com/bgame/202008/23095416vjje.png",
    "sourceName": "小说阅读",
    "sourceUrl": "https://m.readnovel.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4901,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765921169648,
    "loadWithBaseUrl": true,
    "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];\njson.push({text:text,href:href})\n}\n}else{\nlist=baseUrl.replace(/http.*?wd=/,'');\nhref=list.match(/【(.*?)】/)[1];\ntext=list.match(/《(.*?)》/)[1];\njson.push({text:text,href:href})\n}\njson",
    "ruleLink": "href",
    "rulePubDate": "href",
    "ruleTitle": "text",
    "singleUrl": false,
    "sortUrl": "分类名称::http://www.baidu.com?wd=【https://m.qidian.com/】《起点中文网》•【https://m.zongheng.com/】《纵横中文网》•【https://h5.17k.com/】《17k小说网》•【http://wap.yc.ireader.com.cn/】《掌阅小说网》•【http://m.yuedu.163.com/】《网易云阅读》•【https://m.readnovel.com/】《小说阅读网》•【https://m.zhulang.com/】《逐浪小说网》•【https://m.hongxiu.com/】《红袖添香小说网》•【https://wap.faloo.com/】《飞卢小说网》•【https://www.ciweimao.com/】《欢乐书客》•【http://www.tadu.com/】《塔读文学》",
    "sourceComment": "格式  在分类url填写  网站直接的分隔符为•\n\n分类名称::http://www.baidu.com?wd=【网址1】《网站名称1》•【网址2】《网站名称2》\n\n分类名称::http://www.baidu.com?wd=【网址1】《网站名称1》\n",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://sm.bdimg.com/static/wiseindex/img/favicon64.ico",
    "sourceName": "小说网站",
    "sourceUrl": "？？"
  },
  {
    "articleStyle": 1,
    "customOrder": 4902,
    "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": 1765923324372,
    "loadWithBaseUrl": true,
    "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",
    "singleUrl": false,
    "sortUrl": "📥 小说::https://noveless.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《书荒部落》◎精校全本下载◎ http://www.12z.cn/index.html【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《免费小说网》◎校对小说下载◎ http://zxcs.me/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《知轩藏书》◎网络小说下载，资源分享◎ https://www.zei8.vip/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《贼书吧》◎精品全本电子书，多种格式下载◎ http://www.txtnovel.top/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《书香门第》◎交流论坛，男女频小说下载◎ https://www.qqszz.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《千秋书在》◎小说，漫画，出版，资源杂，登陆◎ https://www.hts886.com【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《黑图电子书》◎网络小说全本下载◎ https://www.youasj.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《右岸书居》◎TXT小说下载，冷门资源◎ https://m.qubook.cc/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《趣书网》◎免费TXT小说下载◎ http://m.84sk.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《巴士书库》◎言情小说下载◎ https://www.15huang.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《书荒网》◎完结小说推荐和TXT小说下载◎ https://tieba.baidu.com/f?kw=%BE%AB%D0%A3%D0%A1%CB%B5&fr=ala0&loc=rec【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《精校小说吧》◎百度贴吧（暗笑）◎ http://www.woyaoso.cn/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《云搜小说》◎小说搜索◎ https://www.jingjiaoba.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《精校吧》◎校对全本TXT小说下载◎ https://www.boyunso.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《拨云搜索》◎主角姓名查找小说◎ https://www.horou.com/touch/?mobile=2【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《河洛网》◎需要登陆◎ http://m.s5l.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《小说社区》◎精校全本电子书网站◎ http://m.aqtxt.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《爱奇电子书》◎资源比较杂，啥都有◎ https://15huang.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/yd.png】《书荒网》◎小说下载，还不错◎\n\n\n🏳️‍🌈 壁纸::https://m.3gbizhi.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《3g壁纸》◎中文端，手机电脑壁纸◎ https://bz.zzzmh.cn/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《极简壁纸》◎国内壁纸网站◎ https://bz.qinggongju.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《轻壁纸》◎超清4k壁纸◎ https://bing.ioliu.cn/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《必应壁纸》◎必应官方的壁纸站点◎ https://zhutix.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《致美化》◎国内最大的桌面美化资源分享平台◎ https://wallroom.io/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《wallroom》◎4k/5k/8k壁纸◎ http://qianye88.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《青叶壁纸》◎桌面壁纸◎ https://www.bizhi88.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《壁纸网》◎发现好壁纸◎ http://m.mm4000.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《MM4000》◎帅哥美女壁纸◎ https://wallpapercave.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《wellpaper》◎分类壁纸，种类繁多◎ http://www.zlwallpaper.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《咸柠檬壁纸》◎横屏◎\n\n🔧 工具::https://pearocr.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《pearOCR》◎ocr识别网站，免费，无广告，准确◎ https://convertio.co/zh/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《文档转换器》◎支持多种格式之间转换◎ https://cli.im/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《草料二维码》◎简约，输入网址生成ニ维码◎ http://24mail.chacuo.net/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《临时邮箱》◎可以创造一个暂时的邮箱，24小时◎ https://docsmall.com【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《图片处理》◎完全免费，图片压缩，切割◎ https://gualemang.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《网站挂了吗》◎实时跟进，检测网站是否可用◎ https://www.99cankao.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《99参考计算网》◎高配版计算机◎ https://p.haoii123.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《中国排版》◎国内首款无广告，免费在线排版◎ https://m.qiuziti.com【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《求字体网》◎识别字体，支持下载◎ https://www.toolfk.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《最强工具箱》◎网页版一个木函，完全免费，功能更多专业◎ https://123apps.com/cn/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《123APPs》◎提供各类免费网络应用，PDF编辑、音乐、视频剪辑和转格式◎ https://cp.anyknew.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《拷贝兔》◎不同设备间文件或文本的临时性快速分享◎\n\n\n📺 动漫::https://omofun.tv/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《OMOfun动漫》◎动漫视频网◎ http://m.silisili.in/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《嘶哩嘶哩》◎S站，更新快◎ https://www.bimiacg4.net/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《咪咪动漫》◎M站◎ http://www.yxdm.fun/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《怡萱动漫》◎在线观看，高清◎ http://www.nicotv.me/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《妮可动漫》◎追番，补番，腐女◎ https://www.mandao.tv/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《动漫岛》◎动漫大全◎ http://ci.moefz.cc/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《萌语动漫》◎动漫大全，更新及时◎ https://agefans.one/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《AGE漫》◎不错◎ https://www.ammmi.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《Ammmmi动漫》◎日本动漫合集◎ https://m.hkdm688.net/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《好看动漫网》◎最新追番◎ http://m.yinghuacd.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《樱花动漫》◎大名鼎鼎，有广告，但是快◎ http://www.995dm.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《久久动漫》◎快，有广告◎ http://www.qimiqimi.net/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《奇米奇米》◎动漫花园◎ https://www.12wo.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《12wo动漫》◎还行◎ https://halihali7.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《哈里哈里》◎H站，速度快◎ https://www.senfun.net/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《森之屋》◎108p◎ https://bgmlist.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《番组放送》◎聚合放送◎ https://www.dmxq.me/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《动漫星球》◎盗版动漫◎ http://www.xxmanmi.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《小小漫迷》◎速度质量不错◎ http://www.zzzfun.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《zzfan》◎Z站◎ https://www.bgm.fan/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《弥生寺》◎番组原创，日本◎ https://anime1.me/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《ANIME》◎中国台湾网址，免费◎ https://www.sbdm.net/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《异世界动漫》◎gun勇◎ http://www.dudulu.moe/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《嘟噜动漫》◎D站◎\n\n\n🎮 游戏::https://www.yikm.net/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《小霸王游戏机》◎在线游玩小游戏，童年回忆◎ https://dos.zczc.cz/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《在线dos游戏》◎浏览器游玩◎ https://www.crazygames.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《疯狂游戏》◎国外网站◎ http://b23.games/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《b23game游戏站》◎收集了一些可以在网站在线玩，也可以下载离线玩的小游戏◎ http://2018.emu618.net:6180/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《精品游戏》◎怀旧◎ https://www.mhhf.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《灵动游戏》◎分享在线好游戏◎ https://html5games.com/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《h5游戏》◎国外◎ https://h.4399.com/wap/?301【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《4399》◎无人不知◎ https://cardgames.io/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《纸牌游戏》◎字面意思，全是棋牌游戏◎ https://www.linuxgame.cn/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《linue》◎分享下载站点◎ https://byrut.org/【https://e-c.coding.net/p/yicheng/d/YD/git/raw/master/dy/logo/zy.png】《Byrut》◎俄罗斯免费游戏网站◎\n",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://img.blog.163.com/photo/DzD8mPgZV3dV5TrwucTZdg==/422212465068130561.jpg",
    "sourceName": "风吹订阅",
    "sourceUrl": "［网站合集］"
  },
  {
    "articleStyle": 0,
    "customOrder": 4905,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925638205,
    "loadWithBaseUrl": true,
    "ruleArticles": ".col-xs-6",
    "ruleImage": "img@data-original",
    "ruleLink": "h2 a@href",
    "ruleNextPage": ".next@href",
    "rulePubDate": "{{@@tag.a.1@text}} · {{@@time@text}}",
    "ruleTitle": "h2@text",
    "singleUrl": false,
    "sortUrl": "🔎搜索::https://www.jingjiaoba.com/?s=\n都市::https://www.jingjiaoba.com/jing-xiao-du-shi\n娱乐::https://www.jingjiaoba.com/jing-xiao-yu-le\n奇幻::https://www.jingjiaoba.com/jing-xiao-qi-huan\n玄幻::https://www.jingjiaoba.com/jing-xiao-xuan-huan\n武侠::https://www.jingjiaoba.com/jing-xiao-wu-xia\n仙侠::https://www.jingjiaoba.com/jing-xiao-xian-xia\n竞技::https://www.jingjiaoba.com/jing-xiao-jing-ji\n游戏::https://www.jingjiaoba.com/jing-xiao-you-xi\n科幻::https://www.jingjiaoba.com/jing-xiao-ke-huan\n灵异::https://www.jingjiaoba.com/jing-xiao-ling-yi\n历史::https://www.jingjiaoba.com/jing-xiao-li-shi\n军事::https://www.jingjiaoba.com/jing-xiao-jun-shi\n实体::https://www.jingjiaoba.com/nv-sheng-shi-ti\n次元::https://www.jingjiaoba.com/jing-xiao-er-ci-yuan\n百合::https://www.jingjiaoba.com/bai-he-dan-mei/bai-he-xiao-shuo\n耽美::https://www.jingjiaoba.com/bai-he-dan-mei/dan-mei-xiao-shuo\n言情::https://www.jingjiaoba.com/nv-sheng-shi-ti/nv-sheng-yan-qing",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://www.jingjiaoba.com/wp-content/themes/Cute/assets/img/favicon.ico",
    "sourceName": "精校书吧",
    "sourceUrl": "https://www.jingjiaoba.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 4929,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765918406561,
    "loadWithBaseUrl": true,
    "ruleArticles": "$.data.list",
    "ruleDescription": "<p style=\"text-align:center\"><strong>{{$.title}}</strong></p><iframe src=\"https://player.bilibili.com/player.html?aid={{$.aid}}\" width=\"350px\" height=\"250px\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\"></iframe>",
    "ruleImage": "$.pic",
    "ruleLink": "https://player.bilibili.com/player.html?aid={{$.aid}}",
    "ruleTitle": "$.title",
    "singleUrl": false,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://dgss3.bdstatic.com/-bA2ezTa2gU2pMbgoY3K/img/0/512_512/ce8d065cbedf24ecf82449b4033450f2.png",
    "sourceName": "哔哩哔哩",
    "sourceUrl": "https://api.bilibili.com/x/web-interface/ranking"
  },
  {
    "articleStyle": 0,
    "customOrder": 4930,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765928788635,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "http://m.anitama.cn/style/image/res/icon/android-chrome-192x192.png",
    "sourceName": "哔哩哔哩",
    "sourceUrl": "http://m.anitama.cn"
  },
  {
    "articleStyle": 0,
    "customOrder": 4931,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928716967,
    "loadWithBaseUrl": true,
    "ruleArticles": "$.data.list||$.data",
    "ruleDescription": "<p style=\"text-align:center\">\n<strong>{{$.title}}</strong>\n</p>\n<iframe src=\"https://player.bilibili.com/player.html?aid={{$.aid}}\" width=\"350px\" height=\"250px\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\">\n</iframe>",
    "ruleImage": "$.pic",
    "ruleLink": "https://player.bilibili.com/player.html?aid={{$.aid}}",
    "rulePubDate": "$.duration",
    "ruleTitle": "$.title",
    "singleUrl": false,
    "sortUrl": "首页::https://api.bilibili.com/x/web-interface/ranking?rid=160&day=3&json=json\n国创::https://api.bilibili.com/x/web-interface/ranking?rid=168&day=3&json=json\r\n动画::https://api.bilibili.com/x/web-interface/ranking?rid=1&day=3&json=json\r\n音乐::https://api.bilibili.com/x/web-interface/ranking?rid=3&day=3&json=json\r\n舞蹈::https://api.bilibili.com/x/web-interface/ranking?rid=129&day=3&json=json\r\n科技::https://api.bilibili.com/x/web-interface/ranking?rid=36&day=3&json=json\r\n数码::https://api.bilibili.com/x/web-interface/ranking?rid=188&day=3&json=json\r\n游戏::https://api.bilibili.com/x/web-interface/ranking?rid=4&day=3&json=json\r\n娱乐::https://api.bilibili.com/x/web-interface/ranking?rid=5&day=3&json=json\r\n鬼畜::https://api.bilibili.com/x/web-interface/ranking?rid=119&day=3&json=json\r\n电影::https://api.bilibili.com/x/web-interface/ranking?rid=23&day=3&json=json\r\n影视::https://api.bilibili.com/x/web-interface/ranking?rid=181&day=3&json=json\r\n时尚::https://api.bilibili.com/x/web-interface/ranking?rid=155&day=3&json=json\r\n生活::https://api.bilibili.com/x/web-interface/ranking?rid=160&day=3&json=json\n番剧::https://api.bilibili.com/x/web-interface/ranking/region?rid=13&day=7&json=json",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://dgss3.bdstatic.com/-bA2ezTa2gU2pMbgoY3K/img/0/512_512/ce8d065cbedf24ecf82449b4033450f2.png",
    "sourceName": "哔哩分区",
    "sourceUrl": "https://api.bilibili.com/x/web-interface/ranking?rid=168&day=3&json=json"
  },
  {
    "articleStyle": 0,
    "customOrder": 4933,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928848222,
    "loadWithBaseUrl": true,
    "loginUrl": "https://www.douyin.com",
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://lf1-cdn-tos.bytegoofy.com/goofy/ies/douyin_web/public/favicon.ico",
    "sourceName": "抖音网页",
    "sourceUrl": "https://www.douyin.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 4934,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928852098,
    "loadWithBaseUrl": true,
    "loginUrl": "https://www.kuaishou.com/new-reco",
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://static.yximgs.com/udata/pkg/WEB-LIVE/kwai_icon.8f6787d8.ico",
    "sourceName": "快手网页",
    "sourceUrl": "https://www.kuaishou.com/new-reco"
  },
  {
    "articleStyle": 0,
    "customOrder": 4935,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765918398679,
    "loadWithBaseUrl": true,
    "ruleArticles": "$.data.datas",
    "ruleDescription": "<iframe   width=\"350px\" height=\"250px\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" src=\"http://liveshare.huya.com/iframe/{{$.profileRoom}}\"></iframe>\n",
    "ruleImage": "$.screenshot",
    "ruleLink": "$.profileRoom",
    "ruleNextPage": "<js>\nvar id=baseUrl.match(/page=\\d/)[0].replace(/page=/,'')\nid=Number(id)\nid=id+1\nvar id2=baseUrl.replace(/page=\\d/,'page='+id)\nreuslt=id2\n</js>",
    "rulePubDate": "$.introduction",
    "ruleTitle": "$.roomName",
    "singleUrl": false,
    "sortUrl": "英雄联盟::https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1&tagAll=0&page=1\nlol云顶之弈::https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=5485&tagAll=0&page=1\r\n穿越火线::https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=4&tagAll=0&page=1\nDNF::https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2&tagAll=0&page=1\n魔兽世界::https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=8&tagAll=0&page=1\n炉石传说::https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=393&tagAll=0&page=1\n魔兽世界3::https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=4615&tagAll=0&page=1\n绝地求生::https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2793&tagAll=0&page=1\n我的世界::https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1732&tagAll=0&page=1\n二次元::https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2633&tagAll=0&page=1",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://www.huya.com/favicon.ico",
    "sourceName": "虎牙直播",
    "sourceUrl": "https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1&tagAll=0&page=1"
  },
  {
    "articleStyle": 2,
    "concurrentRate": "500",
    "customOrder": 4939,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "<js>\nheaders={\n    \"User-Agent\": java.getWebViewUA(),\n    \"Origin\": Get('url'),\n    \"Referer\": Get('url'),\n    \"Cookie\": cache.get(Get('url') + 'ck') || ''\n}\ncache.put(java.md5Encode16(Get('url') + \"headers\"),JSON.stringify(headers));\nJSON.stringify(headers);\n</js>",
    "jsLib": "{\"肉视频\":\"https://qyyuapi.com/dy/js/西瓜卡通/jsLib.js\"}",
    "lastUpdateTime": 1765913472693,
    "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: \"test(1)\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n  { name: \"查看当前\", type: \"button\", action: \"look(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"查看历史\", type: \"button\", action: \"look(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"恢复默认\", type: \"button\", action: \"test(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"搜索：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  点击切换地区  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"o(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"国漫\", type: \"button\", action: \"o(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"日本\", type: \"button\", action: \"o(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"韩国\", type: \"button\", action: \"o(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  { name: \"༺ˇ»`ʚ  点击切换进度  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"p(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"连载\", type: \"button\", action: \"p(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"完结\", type: \"button\", action: \"p(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  点击切换筛选  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"全部\", type: \"button\", action: \"q(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"ABCD\", type: \"button\", action: \"q(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"EFGH\", type: \"button\", action: \"q(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"IJKL\", type: \"button\", action: \"q(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"MNOP\", type: \"button\", action: \"q(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"QRST\", type: \"button\", action: \"q(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"UVW\", type: \"button\", action: \"q(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"XYZ\", type: \"button\", action: \"q(7)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n  { name: \"0-9\", type: \"button\", action: \"q(8)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n  { name: \"༺ˇ»`ʚ  填写收藏词条  ɞ´«ˇ༻\", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号“,”隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"收藏：\", type: \"text\" },\n\n  { name: \"长按倍速：\", type: \"text\" },\n  { name: \"跳过片头：\", type: \"text\" },\n  { name: \"跳过片尾：\", type: \"text\" },\n\n  { name: \"༺ˇ»`ʚ  主题模式切换  ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n  { name: \"日间模式\", type: \"button\", action: \"a(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n  { name: \"夜间模式\", type: \"button\", action: \"a(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n  {\n    name: \"清除网站Cookie缓存\",\n    type: \"button\",\n    action: \"deleteCookie()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  },\n\n  { name: \"清除远程代码标识\", type: \"button\", action: \"DeleteJskey()\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n\n  {\n    name: \"💡　　 源　　 站　　 打　　 印　　 💡\",\n    type: \"button\",\n    action: \"test()\",\n    style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n  }\n]",
    "loginUrl": "eval(String(Reload('https://qyyuapi.com/dy/js/西瓜卡通/loginUrl.js')));",
    "ruleArticles": "<js>\neval(String(source.loginUrl));\neval(String(Reload('https://qyyuapi.com/dy/file/history.js')));\nvar data = [];\nif (/\\/search\\?/.test(baseUrl)) {\n    var list = java.getElements('.topic-list-box');\n    for (i in list) {\n        data.push({\n            'name': list[i].select('.h3').text(),\n            'time': String(String(list[i].select('.topic-list-item--author').text()).replace(/\\s*(.*?)\\s*\\[(.*?)\\]\\s*/,'$1/$2') + '/' + String(list[i].select('.tag').text()).replace(/\\s+/g,',')).replace(/\\/undefined/,''),\n            'cover': String(list[i].select('.topic-list-item__cover amp-img').attr('src')).replace(/\\?.*$/g,''),\n            'url': Get('url') + list[i].select('.topic-list-item').attr('href')\n        });\n    }\n} else {\n    var list = JSON.parse(result).items;\n    for (i in list) {\n        data.push({\n            'name': list[i].name,\n            'time': String(String(list[i].author + '/' + list[i].region_name + '/' + list[i].type_names)).replace(/\\/undefined/,''),\n            'cover': 'https://static-a.xgcartoon.com/cover/' + list[i].topic_img,\n            'url': Get('url') + '/detail/' + list[i].cartoon_id\n        });\n    }\n}\ndata;\n</js>",
    "ruleContent": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/西瓜卡通/ruleContent.js')));\n</js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title>{{@@.h1@text}}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https://qyyuapi.com/css/plyr.css\">\n<style>\n{{String(Reload('https://qyyuapi.com/dy/file/player' + Get('a') + '.css'))}}\n</style>\n</head>\n<body>\n<p></p>\n<div class=\"video-container\">\n  <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https://qyyuapi.com/img/noposter.png\">\n  </video>\n</div>\n<details>\n  <summary>\n    <h3>{{@@.h1@text}}</h3>\n  </summary>\n  <img>\n</details>\n<div class=\"all-info\">\n<div>\n    <p>🕵 作者：{{@@.detail-right__title div@text##\\[.*}}</p>\n    <p>📆 更新：{{@css:.detail-sider div:contains(更新时间)@text##更新时间}}</p>\n    <p>💻 连载：{{@css:.detail-sider div:contains(更新状态)@text##更新状态}}</p>\n    <p>🗺 地区：{{@@.detail-right__title div@text##.*\\[(.*)\\].*##$1}}</p>\n    <p>🔖 标签：{{@@.detail-right__tags@text}}</p>\n    <p>📋 简介：{{@@.detail-right__desc p@text}}</p>\n</div>\n{{JSON.parse(result).jishu}}\n</div>\n\n<script src=\"https://gcore.jsdelivr.net/npm/hls.js@canary\"></script>\n<script src=\"https://qyyuapi.com/js/plyr.js\"></script>\n\n<script>\n{{String(Reload('https://qyyuapi.com/dy/file/player.js'))}}\n\nconst JKkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\/\\/[^\\/]+\\//, ''))}}\";\nconst JDkey = \"{{java.md5Encode16(baseUrl.replace(/.*\\/\\/[^\\/]+\\//, '') + 'time')}}\";\nconst PTtime = {{/^\\d+$/.test(Map('跳过片头：')) ? Map('跳过片头：') : 0}};\nconst PWtime = {{/^\\d+$/.test(Map('跳过片尾：')) ? Map('跳过片尾：') : 0}};\nconst BSspeed = {{Map('长按倍速：') || 2}};\n\n// 获取视频URL并更新视频源\nasync function geturl() {\n    try {\n        let src = String($(\".jishu button.active\")[0].dataset.src).replace(/.*cartoon_id=/, '/video/').replace(/\\&chapter_id=/, '/') + '.html';\n        let result = await fetchRequest(src, {{String(cache.get(java.md5Encode16(Get('url') + \"headers\")))}});\n\n        if (result) {\n            let vid = result.match(/\\?vid=([^\\&]+)\\&/)[1];\n            let src1 = String('https://xgct-video.vzcdn.net/' + vid + '/playlist.m3u8');\n            let result1 = await fetchRequest(src1, {{String(cache.get(java.md5Encode16(Get('url') + \"headers\")))}});\n\n            // 获取页面信息\n            let bfbt = '📺 正在播放：' + $(\".jishu button.active\")[0].innerText;\n            let fm = \"{{@@.detail-sider amp-img.0@src}}\";\n\n            // 获取视频源\n            let zyurl = [];\n            sizes = result1.match(/RESOLUTION=\\d+x\\d+/g).map(e => e.split('x')[1]);\n            srcs = result1.match(/(.*\\/video\\.m3u8)/g);\n            url1= src1.replace(/playlist.m3u8/, '');\n            for (j in srcs) {\n                zyurl.push({src:url1+srcs[j],size:sizes[j]});\n            }\n\n            zyurl.sort((a, b) => parseInt(b.size) - parseInt(a.size));\n\n            // 更新详情封面\n            $(\"img\")[0].src = fm;\n\n            // 更新视频封面\n            $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center / cover`;\n\n            // 返回视频源\n            let sources = zyurl;\n            return { sources: sources };\n        } else {\n            throw new Error(\"请求失败\");\n        }\n    } catch (error) {\n        weblog(error, '错误:', true);\n        console.error(\"错误:\", error);\n        throw error;\n    }\n}\n\n// 点击集数按钮时调用的函数\nasync function jishu(item) {\n    var video = $('video')[0];\n    var wasPlaying = video && !video.paused;\n    omit($('.jishu button.active'));\n    item.className = \"active\";\n    const { sources } = await geturl();\n    setTimeout(updatePadding, 100);\n    var index2 = Array.from(item.parentNode.children).indexOf(item);\n    var Progress = {\n        index2: index2\n    };\n    localStorage.setItem(JKkey, JSON.stringify(Progress));\n    localStorage.removeItem(JDkey);\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed, 1);\n    if (wasPlaying && video) {\n        const tryAutoPlay = () => {\n            if (video.readyState >= 3) {\n                video.play().catch(e => {\n                    console.log(\"自动播放被阻止:\", e);\n                    $('.plyr__control--overlaid').show();\n                });\n                video.removeEventListener('canplay', tryAutoPlay);\n            }\n        };\n        if (video.readyState >= 3) {\n            video.play().catch(e => console.log(\"立即播放失败:\", e));\n        } else {\n            video.addEventListener('canplay', tryAutoPlay);\n        }\n    }\n}\n\n// 页面加载时初始化播放器\n(async () => {\n    var n = $(\".jishu\")[0].dataset.n;\n    var Progress = localStorage.getItem(JKkey);\n    if (Progress) {\n        var history = JSON.parse(Progress);\n        n = history.index2;\n    }\n    active($('.jishu button'), n);\n    const { sources } = await geturl();\n    setTimeout(updatePadding, 100);\n    localStorage.setItem('HistoryTAG', 1);\n    initializePlayer(sources, JDkey, PTtime, PWtime, BSspeed, 1);\n})();\n</script>\n</body>\n</html>\n<js>\nresult\n.replace(/：\\s*/g,'：')\n.replace(/<p>(.+)：<\\/p>/gm, '<p style=\"display:none;\">$1：</p>');\n</js>",
    "ruleImage": "cover",
    "ruleLink": "url",
    "ruleNextPage": "page",
    "rulePubDate": "time",
    "ruleTitle": "name",
    "shouldOverrideUrlLoading": "if (url.startsWith('legadovideo://')) {\n    java.openUrl(\n        decodeURIComponent(url.replace('legadovideo://', '')),\n        'video/*'\n    );\n    true;\n}",
    "singleUrl": false,
    "sortUrl": "<js>\neval(String(Reload('https://qyyuapi.com/dy/js/西瓜卡通/sortUrl.js')));\n</js>",
    "sourceComment": "新增：1、新增西瓜卡通；by：xiaohan231-2025/06/01",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://qyyuapi.com/img/西瓜卡通.png",
    "sourceName": "西瓜卡通",
    "sourceUrl": "西瓜卡通@js:`{{Get('url')}}/search?q=`",
    "variableComment": "JspHXCgzmq549cSvxZRk3cM5EE7N5V32mKk5ZsGlzH7mB4iKPcwRvTVF+nSsYaYkyHFh6tU0uM6gAcU2LO/ZQnF45pl+sO+D+/WIYPhUQyHGEp6lyVJ7JKp9yWihRr9Al3sqXhKPltzub2PZi96Ke4YxqVZPjPSmL3O6xY025Sa7Vm1r1ZLIrgpD4Ksa99Q488bytyVS2P8fSjkQvADOECPkrKGclkhYWKWj0hAAvyDNKDxrCyqqqUjrKooVXTcQ3DDxjpsx5Wd29wdbu4YgaMwdlq7eM7Wgq20PNHRYMQv6mzqElmMn9R4S7YEaJiDpXXStroRJTJtLEB2i6pMCY4F02mndjqQW0PbM+tfwlL8BPYfaSJDdVkvSCRNfUL1rVOJY3HHHX1kAyOG/METDaU0ord6qUbQQMGQVmCgqResqjExJ6AI33IXMtAF1485MjO1nSz2Mi9jw/NoCjXBhnxv0A/3lmQZoYsdfz3LCCOOZKjZQKAZj20BFKz9CBUrmh0JDEZ3nAYVB1gyCKiKX1ggVppLVomlrWGW5+I5UX/5ZkqCucNxVckbJruLtKfOj2gIfGm3kal4YeJqQuSK1wUrU5uLgTDpgox9qPir7etK+0JIlYrlg4TVWln3zuf+4irCZSmjNTNonXb/scyboqwwxxs0m4gpBR6WJPKyNQf/H/pMEkzkQ1+TMO80uRyUj62GS1yS2zmWQnhmw5zC/e6gGMG+n3UoJVX7M5ebG+6eczZXttRv5daHp6UYhK9hETv6nUs0KndVbrB4xZa5JNH3SloTv48koLVJu+0NT+AIrxc1v9RB/6ClGNxWDl2ia0zkKvQsmkHDe1Ln0RzsdTWp1twd+OLzPxmZZ8DK2gkSC2+kLnG4NoSwl66hT8XUUQz8kNeIwpM8uyV1ZkArLpTSv+gN8CItVu9ISTyP3wTbe45+086Ag7tvHwawqCUUlwLzdKh+UHhqCa5EE3qGQbLOaASWmwrOsg/qhf65xBeW34nF5E4ouWsZ5OctjUyfPh3bGNWBta+OVuv5ZMVQH6xad8QNM7gNurML05I9yR8jQ2RsuvqGZA4kpbwGAvkGyUE6FWafVPrlyzjhAvM62NX+Lv5Sctymh+CCt60oO3UrLNFIlzm/Aplkg9n8xnB/YFp3xA0zuA26swvTkj3JHyEj82FLCEpw6uq915M1jjSRQToVZp9U+uXLOOEC8zrY1PSb4cQGqMbjseWdLi1WBhSJPwB2CdB+3VcE4kGmc8CDo1v5txSiD7GKjZ1ExpA/n0TI7uW6ZR3nvNOg/wEoPV9imzoa/Cp1IPhpfn0jvG5wtnG7OsTI+/eCIi6Vv9xsJW1q1FmzjfVoFyHH1/8YCBJgZInJ9HDsguXQZrO1IHWDR2kBHiloP7PEIRR8PW2268gdab40Qku+wn4SGAPnAFLTiKvacQjHpvm6MHg5qNnDPaWzjWU2yqLXqwvjvuvVQHhfax5xG7RPn8qjnnpf7fNeg8Hie5UfiqGUDHivnkrraLULZP20oLpCNmkZspQMww4JZB6KdU8ZFbQ1Dtcf0WDFdALiHBvry+3Tr7P6rnAO4W30SN5zTZOL143gt9ToGQUtPVjY4H9/hfsBA2I8iwlUmzYFYH3lDUyUeFZxmxuyWJgiCOKccgjCrFLw3ecOD47YqJyx5VzuColnzoHTAzvL0eaqgFdhbcdzLBrMF9eChijLK0ZNUgZvxmD+S5PWUhg5yzpFajFkKf+ktawtf7001RMvWRvkpQHzTC2WuR2zxSBmH1TFSNF/My97FY2wlhBDnpfrrpu6Sqp1Q2dB+cc6QN7iCqeItsVuE7RK2sugaHsq/PslfDqNvVOxKwzWi2SBTJcfgURWvAR1rLfzGGsSzqjWszFEQ/Y/pqJNefccfClfxJ/oYoyjySYoJUphtufvpgVVfbIlnA1X/C4vdwSZ87ZFR0tGbAvtA+4E+Z1WPCFwCrW/n1w47tMwyFPkCW14lE/ErB9Er3OB0GR9us/gIE/NXn073ACFcsRQfM/lHs3bJZn83cnqJJgTc3ffD6zHcJKu5QLIm8TxVatj2C6nj6WUERPKunOLvCMkRMqyKMXYeJV2BAXeg7Fv8wBttmGV7vNaFGXXi0A7JTwwmiPV6QWnF7fJbg8NHX57YKHRtW9oKv7/GO4rVegJCRZp+vaiSpMg4sb0jG4QLv6HlGtyj2vEPqGEerjWxXf9x3md3wIuACT1kXQvCCj6O/jPNPbAQbSvXliA+oH/7/Q7kcpv5mqmLi4cTslGYlaoJI5T7mum5KBhU2Sy0lfomJNz0V+svoBeDeGqDNt79gyMR2Z6dLGf1frXTuKocDbMwjPNABkMJ13q74WAaWVB16GhjaA5q9SgPfGvnfePNBH1eQkOe9vAe0mfKC2SsNj9q5YUjItkLCwTMGxGl36uHjctQmgo6wy86SBGvogm95+4LUkYH6iTVf+ouZaelqGI2qm1jdUl/xmyHwctSAPijV+bMQvs37ZJHOHL6Hnp3LlnctEulNDI3SbsgxzlxrSHDD/H5VaKaXgq/7+iCLFbAUHQ5m6Hp6Flx5psBsgHt1hzsUIaKdpHZAIDOJLf4PHwL2QhUsrF0iy2Y8qGg2ybYRj1Nm/maqYuLhxOyUZiVqgkjlCRRNw5ukCAT9V8Op1veBNqzWzdnU5nAhDcpCoHllJglmkq2Swxq9sd/AaFw8JUpMdWUf/hqVFb3YP2/+RujDlovgd7Ye4KqDmc9vqdqpMdg2ILKuOA+eHoKov0HC2VA7+SV/Lv4bVWBHgVCIZwTsc9IWNucdXdYLE8CYpHbXcp3Rucr4N5RMa+wiKIip3p031vSB1pv3++oQp8pZVGdP0hRzSoQBK54t3Y+v/vK5s6lHnKb1SH+3aBYTPDNkKZQwd6cK0xoHXmijkdJTA3I3JMxqmPzDZ8VVgf89E8oRVlVtV2DahMurt31oJUiveBBGRnKzykQ4JM6a2A1Hqz/be73tofkDucmcy1Vu4joEsqH4FGQ595Q8noc/xHfqdyjMVmb6IshfgIB1mCcKfWN9FLDeML77m9XU2H4pMImJd2f4XujhbkStX9SGvuifIQUa3LJej2GvcINlPdYzX5ABz5oPFphAadWuzrP2kvFi/fkjLMn6OOJd8jTIzANraQRNMgHu27PE7vtVszZN74q4PNQM3n07LiunU81SdH75otsKfOPusZEgzDKBUhPLuamsbXHh7R6JgV77f62CwuVWMd9jhQsZm0i/g6m+ApKeuWGVsoRG9h/g97+uvNQ6vR11F3rN7BazqbGZqWaFlJ0bWTgsHDgD/1kv7E3Ebjsnp+/pyI9Lfy6d3Z1Gvttk+GlItlG40CAQdd8MsBamCArw0mGu2nyAcCdNCMxDDBWyH4qWmfHSeIyIR0+aE1kqxxdiS+hNroCfUNnuyW/ZoX0A+UIb0iptDcOfaVemEv1DQ9fRKh0FIijFWBvDLO1C5j22WacK9Rwl3oGS8LUVWvijpkcR44UOftDjP/SWe18Y/1iCkxfblgllWWEs7Vo4RPbG4FqkFkwLicC6HJqVm/k+1yzxTcHM32xAZJ1owUTG9bmdndHcijOdGDaQVsN07LL/B20gUFBu1yNTiu9kdZLBsvcM7NXS2mb5EnllFOINkhYLyXBaO5GWhgRhvNwCvhy6ofR3Xetx43mNVTqGUgvA6cv8B8qhpGBHmJ62Ew/+cLqu3MA5VFyu+zXvIWuEsf16/e8flClUSSseEEOAezpv1MxU4SfEHTqusVegDWR8gLfKqqTHowaglcUrPeUkYosxVJp8yn55xj4gKbgq0amZfYTYNfzzj4AOFtqeMh90l1C0xPfiZPPLF1ofoUKGfVy3IOEQgab6GTyhKqDmcBbb4kPPxrUwMvCcj9JP08HFiZYwn+Bxc+BvQpW3lnSu+2FY5dig91m14QQVMK4kVmwIvDmfZ7hAtavOmEo36/hoTPIhUmdqetrh5ohxsAVl1EUjl1ZHoV8dL8D3H12J0G9zsPKDL7kqPuFwpiQfjDe11glLenpMmozatccHwHYUI4nDqRzoO5dp627JvRVq/xHaXq5dWo+2i4MFxR1ugHMd0L2gN9NiXLA+AwPAGKx6GKlZVhKPo0fdOKMbI8LapnXlEmFZDe2PF6V5gbiJmSyS4ofyATtehkFXltpsYqkwrkJ0wjDCnapvetl5NlozEOQ+FOVd9rRWB1xK2UnD62r7RsSz3vJreRchmF/B56QBNOZiYA2wZoX9WM3a58QamZ4J061B1nIzhqwiTK0E8DalIAC4N7HUUQ488rQNWqzX6Sig4aF8JBIudjgX70Glq3K53swOrEs9BdTcS5MHFatRJar9uLSGZdCxRQWLYS5imcGdOekeGTJGeoyjSqcJo2Cr0vlgUP/vvpw+JffhEDVWBAOddDGHUH6AEJAZDavQVCm8nVhn27m0FlnYC8UqRT2x0BABkMJ13q74WAaWVB16GhjHMPDg0g+tWi89y3O61G+8as5QvYyN4FX93z1Wyn0dEdrzKxBZjxxubyR0nsXBW81GkM0epSZYrLw0WaDx58EmP9xTKoB2vXJJfs8WhXiCgeyfplTjNtKwjEYjjzxv9cZ7Xix1dJjo15PWoF5xoB4612tF03xX/tdhEXZjKGJv0jVlH/4alRW92D9v/kbow5axILAMf0m95vfnECyiKYVvuT9PXdaeloW86MJtl3UoYi0vmGwnEX6wxxdHCVXxW+YAe7xeAUXxIz5j5EDAOshdxxhH+7vLoozRvnNSv4j3yrtOYqKvTdr2vpMDcEaFbQ1UhUJLZ/wPoBL4I16axsdtDlve3Q33MxQwd1fMqwCWtJYmjojEWFLUvBMHtmsWSmsyoj9P1ypwN8V/o5N9KioXPf0PcoisdyDOgU1rPNtwAbbNWeheyrxBxGNptIj2QwmJ3KyJQHOP/PzjQfo6C8uKVx3XdeYK6+9KFuOuFTJQ6iPvCfdOZ+kKaeRZ34K4psSjQpu/M9SV37V9qkfzuA4AXhaWQF3Ph4lqj1XGBEo4bs="
  },
  {
    "articleStyle": 2,
    "customOrder": 4941,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\"User-Agent\":\"Mozilla/5.0 (Android 14; Mobile; rv:120.0) Gecko/120.0 Firefox/120.0\"\n}",
    "injectJs": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "ruleArticles": ".v_list@li",
    "ruleContent": "<js>\nvar tab_name,url_list,all_list;\n//获取线路❗️\ntab=java.getElements('.tab_control@li')\nfor(i=0;i<tab.length;i++){\n\turl_list=\"\";\n\t//拼接线路\n\ti==0?tab_name+=`<li class=\"current\">${tab[i].text()}</li>\\n`:tab_name+=`<li>${tab[i].text()}</li>\\n`\n\t//获取播放列表❗️\n\tlist=java.getElements('.play_list')[i]\n\tlist=list.select('li')\n\tfor(j in list){\n\t\t//获取播放链接和标题\n\t\ttext=list[j].text()\n\t\turl=list[j].select('a').attr('href')\n\t\t//拼接播放列表\n\t\tj==0?url_list+=`<li class=\"current\"><a link=\"${url}\">${text}</a></li>\\n`:url_list+=`<li><a link=\"${url}\">${text}</a></li>\\n`\n\t}\n\ti==0?url_list=`<ul class=\"play_list current\">${url_list}</ul>`:url_list=`<ul class=\"play_list\">${url_list}</ul>`\n\tall_list+=url_list;\n}\ntab_name=String(tab_name).replace(/undefined/g,'')\nall_list=String(all_list).replace(/undefined/g,'')\n//获取简介\ndesc=java.getElements('.v_desc');\ndesc=String(desc).replace(/<p class=\"v_desc\">|<\\/p>/g,'').replace(/ href=\".*.html\"/g,'')\nintro=java.getElements('#intro p.-1');\n\n//最后结果，拼接完整网页\nresult=`\n<html>\n<title>${java.get('title')}</title>\n<!--引入jquery-->\n<script src=\"https://code.jquery.com/jquery-3.0.0.min.js\"></script>\n\n<!--播放器-->\n<div id=\"Player\">\n  <iframe src=\"\" border=\"0\" marginwidth=\"0\" framespacing=\"0\" marginheight=\"0\" frameborder=\"0\" scrolling=\"no\" vspale=\"0\" allowfullscreen=\"ture\" noresize=\"\"></iframe>\n</div>\n<div style=\"width:100%;height:28%\"></div>\n\n<!--简介卡片 -->\n<div class=\"card v_info mb20\">\n    <!--标题 -->\n    <h2 class=\"v_title\">${java.get('title')}</h2>\n    <!--状态、日期、分类 -->\n    <p class=\"v_desc\">\n       ${desc}\n       <!--简介按钮 -->\n       <span class=\"open_content\" id=\"open_content\">简介</span>\n    </p>\n    <div class=\"v_content\" id=\"v_content\" style=\"display:none;\">\n      <!--封面图片 -->\n      <div class=\"cover\" style=\"\">\n         <img src=\"${java.get('pic')}\"></img>\n      </div>\n      <!--剧情信息 -->\n      <div class=\"content\" id=\"intro_content\">\n        <div id=\"intro\">\n       <p style=\"text-indent:2em;\">${intro}</p>\n       <!--简介展开 -->\n      <div class=\"show_more\" id=\"show_more\" style=\"display: block;\"></div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"card mb20\">\n    <!--线路切换-->\n    <ul class=\"tab_control play_from\">\n        ${tab_name}\n    </ul>\n    <!--所有播放列表与排序-->\n    <div class=\"tab_content\" id=\"play_list\">\n        <div class=\"play_list_sort\" id=\"play_list_sort\">\n⇅ 正序/倒序</div>\n        ${all_list}\n    </div>\n</div>\n</html>\n\n<script>\n\t//tab按钮线路切换\n var $li = $('.tab_control li');\n var $ul = $('.tab_content ul');\n $li.click(function(){\n    var $this = $(this);\n    var $t = $this.index();\n    $li.removeClass('current');\n    $this.addClass('current');\n    $ul.removeClass('current');\n    $ul.eq($t).addClass('current');\n });\n //选择集数\n var $play_li= $('.play_list li');\n var play= $('#Player');\n var iframe= $('#Player iframe');\n $play_li.click(function(){\n    var $this = $(this);\n    var $t=$this.index();\n    //获取之前的播放链接\n    var bf=$('.play_list li.current');\n    bf=bf.children('a').attr('link');\n    //改变li标签的CSS样式\n    $play_li.removeClass('current');\n    $this.addClass('current');\n    //获取播放链接和标题\n    url=$this.children('a').attr('link');\n    text=$this.children('a').text();\n    //判断链接是否相同，不同就发送请求\n    if(url!=bf){\n    \t//发送请求\n     var xhr = new XMLHttpRequest();\n   \t xhr.open('get',url);\n   \t xhr.send();\n   \t //接收返回数据\n   \t xhr.onload=function(){\n       data=xhr.responseText;\n       //获取播放链接，给iframe的src赋值\n      v=data.match(/iframe src=\"(.*)\" width/)[1];\n      iframe.attr('src',v);\n     };\n    }\n });\n //播放列表排序 \n function set_sort(){ \n \t var box = $('#play_list ul.current');\n \t var el = box.find('li');\n \t var newEl = Array.prototype.reverse.call(el);\n \t for(var i = 0 ;i<newEl.length;i++){\n \t  \t box.append(newEl[i]) \n \t }; \n \t}\n $('#play_list_sort').bind('click',function(){ \n \t  set_sort(); \n \t});\n \t\n \t//-------------详情页相关-------------- \n \tvar open_content = $('#open_content');\n \tvar intro_content = $('#intro_content'); \n \tvar show_more = $('#show_more'); \n \tvar cover = $('#v_content .cover'); \n \t//展开简历块 \n \topen_content.click(function(){ \n \t\t$('#v_content').toggle(); \n \t\tvar intro_height = $('#intro').get(0).offsetHeight; \n \t\tif(intro_height > 114){ \n \t\t\tshow_more.show(); \n \t\t}; \n \t}); \n \t//内容超出显示更多按钮 \n \tif($(\"#intro\").length>0){\n \t\t var intro_height = $('#intro').get(0).offsetHeight; \n \t\t if(intro_height > 114){\n \t\t \t show_more.show(); \n \t\t \t}; \n \t} \n \t//展开更多内容 \n \tintro_content.click(function(){\n \t\t intro_content.toggleClass('auto'); \n \t\t show_more.toggle(); \n \t\t cover.toggle(); \n \t});\n \t\n \t//初始化\n   (()=>{\n   \t t=$('.play_list li').eq(0).text();\n   \t if(t!=1){set_sort()};\n   \t $('.play_list li').removeClass('current');\n\t    $('.play_list li').eq(0).addClass('current');\n\t    url=$('.play_list li.current a').attr('link');\n\t    var xhr = new XMLHttpRequest();\n   \t xhr.open('get',url);\n   \t xhr.send();\n   \t //接收返回数据\n   \t xhr.onload=function(){\n       data=xhr.responseText;\n       //获取播放链接，给iframe的src赋值\n      v=data.match(/iframe src=\"(.*)\" width/)[1];\n       iframe.attr('src',v);\n     };\n\t  })();\n</script>\n`\n</js>",
    "ruleImage": "a@data-bg\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".desc@text",
    "ruleTitle": ".title@text\n<js>\njava.put('title',result)\n</js>",
    "singleUrl": false,
    "sortUrl": "首页::https://dm84.tv/\n❗️搜索❗️::/s-{{source.getVariable()}}---------{{page}}.html\n分(中)::/show-1--score----{{page}}.html\n热(中)::/show-1--hits----{{page}}.html\n时(中)::/show-1--time----{{page}}.html\n分(日)::/show-2--score----{{page}}.html\n热(日)::/show-2--hits----{{page}}.html\n时(日)::/show-2--time----{{page}}.html\n分(影)::/show-4--score----{{page}}.html\n热(影)::/show-4--hits----{{page}}.html\n时(影)::/show-4--time----{{page}}.html",
    "sourceComment": "",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://img2.baidu.com/it/u=952507181,417821820&fm=253&fmt=auto?w=800&h=800",
    "sourceName": "动漫巴士",
    "sourceUrl": "https://dm84.tv",
    "style": "*{\n\tmargin:0;padding:0;\n}\nhtml{\n\tbackground-color:#222;\n}\na{\n\ttext-decoration:none;\n\tcolor:#222;\n}\nul{\n\tlist-style:none;\n}\niframe{\n\twidth: 100%;height:100%;\n  border: 1px solid black;\n}\nh1,h2,h3,h4,h5,h6{\n\tfont-size:100%;font-weight:normal;\n}\nimg,video{\n\theight:auto;max-width:100%;\n}\n#Player{\n\tposition:fixed;\n\ttop:0;left:0;\n\twidth:100%;height:28%;\n\tz-index:99999;\n\tbackground-color:black;\n}\n\n/*块通用*/ \n.card{padding:15px 15px 0 15px;}\n.card .c_header{display: flex;flex-direction: row;justify-content: space-between;padding-bottom:20px;} \n.card .c_title{font-size:18px;color:#fff;font-weight:700;} \n.card .c_title a{color:#fff;} \n.card .c_right a{color:#666;} \n.card .clear_history{color:#FDD835;display:none;}\n\n\n/*详情页资料卡*/ \n.v_info .v_title,.v_info .v_title{font-size:22px;color:#eee;line-height:26px;} .v_info .v_desc{position:relative;font-size:12px;color:#999;padding-top:4px;} .v_info .v_desc a{color:#999;} .v_info .v_desc .desc{color:#FF3D00;font-weight:700;} .v_info .hr{color:#666;padding:0 4px;} .v_info .open_content{position:absolute;bottom:0;right:20px;color:#FAD642;text-decoration: underline;padding-left:10px;} .v_info .v_content{display:flex;padding-top:20px;} .v_info .cover,.v_info img{width:80px;height:113px;background:#333;} .v_info .cover{margin-right:10px;} .v_info .content{height:114px;overflow:hidden;font-size:12px;flex:1;color:#999;line-height:19px;position: relative;} .v_info .show_more{position: absolute;bottom:0;right:0;width:100%;padding:38px 0 19px 0;height:19px;background: linear-gradient(to bottom, rgba(34,34,34,0) 0%,rgba(34,34,34,1) 100%);color:#eee;text-align:center;display:none;} .v_info .auto{height:auto;}\n\n/*tab */ \n.tab_control{display: flex;flex-direction: row;} \n.tab_control li{flex:1;position:relative;height:30px;line-height:34px;top:4px;text-align:center;color:#666;cursor:pointer;overflow: hidden;} \n.tab_control li.current{height:34px;font-weight:700;color:#eee;background-image:linear-gradient(180deg, #BF360C 0%, #444 100%);border-radius: 4px 4px 0 0;} \n.tab_content{padding:12px;background: #444;box-shadow: 0 2px 8px 0 rgba(0,0,0,0.50);border-radius: 5px;} \n.tab_content ul.current{display:block;} \n\n\n/*播放来源、地址、排序*/ \n#play_list ul.current{display:flex;} .play_from li{flex:none;padding:0 10px;} .play_list{display:none;flex-flow: wrap;margin-right:-10px;} .play_list li{width:20%;margin-bottom:10px;} .play_list li a{overflow:hidden;height:40px;line-height:40px;border-radius: 5px;display:block;background:#222;color:#999;text-align:center;margin-right:10px;} .play_list li a:visited{color:#444;} .play_list li.current a{border: 1px solid #BF360C;color:#BF360C;} \n/*处理电影的集数宽度*/ \n.large li{width:25%;} .play_list_sort{padding-bottom:20px;color:#999;} \n\n/*遮罩*/ \n.mask{width:100%;height:100%;background:rgba(0, 0, 0, 0.5);position: fixed;left:0;top:0;display: none;} \n"
  },
  {
    "articleStyle": 0,
    "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": 4947,
    "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": 1765909764691,
    "loadWithBaseUrl": 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\nversion=String(java.ajax(gitlatest + \"/Hiram-Wong/ZyPlayer/releases/latest\")).match(/(\\d+\\.\\d+\\.\\d+)\\<\\/h1/)[1] ;\n\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].replace(/💜🖤/g,version),\n            time: $$.match(/◎.*?◎/) ? $$.match(/.*?◎(.*?)◎/)[1].replace(/■/,'▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁') : \"\",\n            uri1: $$.match(/【.*?】/) ? $$.match(/.*?【(.*?)】/)[1] : \"004.png\",\n            url:$$.match(/^([^【《◎]*),?/)[1].replace(/💜🖤/g,version).replace(/💙💚/,down).replace(/💛💚/,gitdate)\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}}` ;\nsrc =\n\turi1 ? uri1 :\n\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",
    "singleUrl": false,
    "sortUrl": "🌎主::http://www.baidu.com?wd=https://md-yd.github.io/yd/71.html【md.png】《💔未修好💔🔥本地包说明。懒人请用在线线路http://gg.gg/00200》◎💔未修好💔◎♞♞https://0【jk.png】《💔未修好💔1.本地接口本地包gg.gg/00400 下载解压到根目录/0/》◎💔未修好💔本地接口clan://localhost/0/1◎♞♞💙💚/gaotianliuyun/gao/archive/refs/heads/master.zip【bd.png】《4.高天流云本地包gg.gg/00500 解压到根目录/00/gao-master/》◎固定链接，持续维护更新◎♞♞💛💚/gaotianliuyun/gao/commits/master/【rq.png】《🧡高天流云更新日期 Ⓖ》◎■◎♞♞💙💚/zhanghong1983/tvboxzy/archive/refs/heads/main.zip【bd.png】《6.张弘本地包gg.gg/00600 解压到根目录/00/tvboxzy-main/》◎固定链接，不怎么更新了◎♞♞💛💚/zhanghong1983/tvboxzy/commits/main/【rq.png】《🧡张弘更新日期 Ⓖ》◎■◎♞♞💙💚/PizazzGY/TVBox/archive/refs/heads/main.zip【bd.png】《7.潇洒GY本地包gg.gg/mmxmm 解压到根目录/00/TVBox-main/》◎固定链接，持续维护更新◎♞♞💛💚/PizazzGY/TVBox/commits/main/【rq.png】《🧡PizazzGY更新日期 Ⓖ》◎■◎♞♞http://饭太硬.top/tv【jk.png】《饭太硬接口http://gg.gg/448443》◎http://饭太硬.top/tv◎♞♞http://tv.nxog.top/index.html【jk.png】《欧歌 TVBox接口收集》◎■◎♞♞https://md-yd.github.io/yd/fm521.html【md.png】《🔥部分单&lrm;仓线路。》◎■◎\n\n\n2.md::https://mmxmm.lanzoue.com/b0d5kid8d##iori\n3.云星::https://wwc.lanzoub.com/b0erx68gf##4e93\n\n▶️云星::https://wwc.lanzoub.com/b0es81t8j##54jb\n▶️奇奇::https://qiqi2020.lanzouv.com/b09svqv1c\n▶️终南::https://wws.lanzouv.com/b03j4ulyh##999\n\n\n▶️FongMi::https://yoyodadada.lanzouw.com/b01emj0zc##4qnu【dc1.png】\n▶️FongMi.TV::https://yoyodadada.lanzouw.com/b01emj11e##g3r1【dc1.png】\n\n\n🎬PC-ZY新版::http://www.baidu.com?wd=https://md-yd.github.io/yd/zy.html【md.png】《🔥〔电脑版〕ZY-Player说明&源（与box系的源不通用）》◎请选择适配你系统的版本下载安装◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v💜🖤/ZYPlayer-win-💜🖤-arm64.exe【ys.png】《win-💜🖤-arm64.exe》◎◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v💜🖤/ZYPlayer-win-💜🖤-ia32.exe【ys.png】《win-💜🖤-ia32.exe》◎◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v💜🖤/ZYPlayer-win-💜🖤-x64.exe【ys.png】《win-💜🖤-x64.exe》◎◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v💜🖤/ZYPlayer-win-💜🖤.exe【ys.png】《win-💜🖤.exe》◎■◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v3.2.3/ZYPlayer-win-3.2.3-win7-arm64.exe【ys.png】《旧 win7-3.2.3-arm64.exe》◎win7版官方不再打包了。◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v3.2.3/ZYPlayer-win-3.2.3-win7-ia32.exe【ys.png】《旧 win7-3.2.3-ia32.exe》◎win7版官方不再打包了。◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v3.2.3/ZYPlayer-win-3.2.3-win7-x64.exe【ys.png】《旧 win7-3.2.3-x64.exe》◎win7版官方不再打包了。◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v3.2.3/ZYPlayer-win-3.2.3-win7.exe【ys.png】《旧 win7-3.2.3.exe》◎■◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v💜🖤/ZYPlayer-linux-💜🖤-amd64.deb【ys.png】《linux-💜🖤-amd64.deb》◎◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v💜🖤/ZYPlayer-linux-💜🖤-arm64.AppImage【ys.png】《linux-💜🖤-arm64.AppImage》◎◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v💜🖤/ZYPlayer-linux-💜🖤-arm64.deb【ys.png】《linux-💜🖤-arm64.deb》◎◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v💜🖤/ZYPlayer-linux-💜🖤-x86_64.AppImage【ys.png】《linux-💜🖤-x86_64.AppImage》◎■◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v💜🖤/ZYPlayer-mac-💜🖤-arm64.dmg【ys.png】《mac-💜🖤-arm64.dmg》◎◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v💜🖤/ZYPlayer-mac-💜🖤-universal.dmg【ys.png】《mac-💜🖤-universal.dmg》◎◎♞♞💙💚/Hiram-Wong/ZyPlayer/releases/download/v💜🖤/ZYPlayer-mac-💜🖤-x64.dmg【ys.png】《mac-💜🖤-x64.dmg》◎■◎\n\n\n\n🎬PC-ZY旧版::https://www.lanzoux.com/b04s6a3re##95px【ys.png】\n\n\n📺海阔视界::https://haikuo.lanzoui.com/u/GoldRiver\n\n\n//‼️423软件‼️\n❹影视软件::https://423down.lanzouv.com/b0f2x4syh\n❹TV盒子::https://423down.lanzouv.com/b0f1944aj\n\n大师兄影视::https://yoyodadada.lanzouw.com/b01caip6d##e7mc\n\n影视追剧TV::https://mrxuan.lanzoue.com/b0rbh57c##idk6\n\n",
    "sourceComment": "pic=1\n/*▔▔▔▔▔▔▔▔\n⬆︎设置图片样式\n0  红+\n1  粉++\n2  蓝++\n3  绿+  10\n4  绿齿轮  11  12\n5  绿字印章+\n6  红字印章+\n7  红字 黑白背景\n8  蓝字黑底（夜间）-\n9  卡其色 记事板-\nmd.24.5.1.\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\ndown=0\ngitdate=2\ngitlatest=5\n/*▔▔▔▔▔▔▔▔\n⬆︎down（0～20） 设置高天流云、张弘、潇洒GY本地包下载链接。\n⬆︎gitdate（1～4） 设置本地包查看日期的镜像链接(高天流云、张弘、潇洒GY) 。\n⬆︎gitlatest（1～10） 设置🎬PC-ZY新版(ZY-Player) 获取最新版本号。\n——— Ⓖ github ——\t—\n0  随机 ⬅︎ 仅down可设。若随机到失效链接，请刷新分类（再次随机）。\n1  521github.com\n2  dgithub.xyz\n3  kkgithub.com\n4  cors.isteed.cc\n5  gh.con.sh\n6  cf.ghproxy.cc\n7  mirror.ghproxy.com\n8  github.moeyy.xyz\n9  ghproxy.cc\n10 gh.jiasu.in\n11 slink.ltd\t\t\n12 gh.ddlc.top\t\t\n13 gh.h233.eu.org\n14 dl.ghpig.top\n15 hub.gitmirror.com\n16 sciproxy.com\n17 download.nuaa.cf\n18 download.scholar.rr.nu\n19 download.yzuu.cf\n20 ghproxy.net\t\n▁▁▁▁▁▁▁▁*/\n\n\n/*▔▔▔▔▔▔▔▔\n订阅源图标可自己复制链接替换\n（拉到顶部第三项，“图标”）\n★★ github 图标★★\nhttps://521github.com/md-yd/pic/raw/main/00rose/a003b.png\nhttps://raw.gitmirror.com/md-yd/pic/main/00rose/003.png\n★★gitee图标★★\nhttps://gitee.com/visita/yd/raw/master/00rose/a003b.png\nhttps://gitee.com/visita/yd/raw/master/00rose/003.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`;\n\n\ndown=\ndown==0? \nparseInt(Math.random()*20+1) : down;\n\ndown=\ndown==1 ? \n`https://521github.com`:\ndown==2 ? \n`https://dgithub.xyz`:\ndown==3 ? \n`https://kkgithub.com`:\ndown==4 ? \n`https://cors.isteed.cc/github.com`:\ndown==5 ? \n`https://gh.con.sh/https://github.com`:\ndown==6 ? \n`https://cf.ghproxy.cc/https://github.com`:\ndown==7 ? \n`https://mirror.ghproxy.com/https://github.com`:\ndown==8 ? \n`https://github.moeyy.xyz/https://github.com`:\ndown==9 ?\n`https://ghproxy.cc/https://github.com`:\ndown==10 ?\n`https://gh.jiasu.in/https://github.com`:\ndown==11 ? \n`https://slink.ltd/https://github.com`:\ndown==12 ? \n`https://gh.ddlc.top/https://github.com`:\ndown==13 ? \n`https://gh.h233.eu.org/https://github.com`:\ndown==14 ? \n`https://dl.ghpig.top/https://github.com`:\ndown==15 ? \n`https://hub.gitmirror.com/https://github.com`:\ndown==16 ?\n`https://sciproxy.com/github.com`:\ndown==17 ?\n`https://download.nuaa.cf`:\ndown==18 ?\n`https://download.scholar.rr.nu`:\ndown==19 ? \n`https://download.yzuu.cf`:\n//down==20 ? \n`https://ghproxy.net/https://github.com`;\n\n\ngitdate=\ngitdate==1 ? \n`https://521github.com`:\ngitdate==2 ? \n`https://dgithub.xyz`:\ngitdate==3 ? \n`https://kkgithub.com`:\n//gitdate==4 ? \n`https://cors.isteed.cc/github.com`;\n\n\ngitlatest=\ngitlatest==1 ? \n`https://521github.com`:\ngitlatest==2 ? \n`https://dgithub.xyz`:\ngitlatest==3 ? \n`https://kkgithub.com`:\ngitlatest==4 ? \n`https://cors.isteed.cc/github.com`:\ngitlatest==5 ? \n`https://gh.con.sh/https://github.com`:\ngitlatest==6 ? \n`https://cf.ghproxy.cc/https://github.com`:\ngitlatest==7 ? \n`https://mirror.ghproxy.com/https://github.com`:\ngitlatest==8 ? \n`https://github.moeyy.xyz/https://github.com`:\ngitlatest==9 ?\n`https://ghproxy.cc/https://github.com`:\n//gitlatest==10 ?\n`https://gh.jiasu.in/https://github.com`;",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://gitee.com/visita/yd/raw/master/00rose/a003b.png##",
    "sourceName": "影视难受",
    "sourceUrl": "https://www.lanzoux.com/#2024md3",
    "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"
  },
  {
    "articleStyle": 0,
    "customOrder": 4948,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928723813,
    "loadWithBaseUrl": true,
    "ruleArticles": ".videoContent>li",
    "ruleContent": "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<title>多功能订阅源模板</title>\n<!-- v2025.08.20 -->\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; width: 120px; }\n    #url-select, #video-source-select { flex: 1 1 100%; margin-left: 0; margin-right: 0; text-align: center; width: 120px; }\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\">{{@@h1.0@text||h2.0@text||.title.0@text||title@text}}</h3>\n    <p id=\"description\">{{@@.right@html||.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        <button id=\"prev-video-btn\">上一集</button>\n        <select id=\"video-source-select\" onchange=\"updateVideoSource()\"></select>\n        <button id=\"next-video-btn\">下一集</button>\n    </div>\n    <div id=\"images\"></div>\n    <div id=\"text\"></div>\n\n    <script>\n// 配置对象，包含各种选择器、延迟时间等配置项\nconst config = {   \n    videoSelector: 'body', // 视频选择器\n    imgSelector: '.gridlane-box-inside img,.photos figure img', // 图片选择器\n    textSelector: '#content2, .content2', // 图文选择器\n    debugSelector: '#content, .page, .pager, .content, script', // 调试信息选择器\n    swapImageAttributes: false, // 是否交换图片属性\n    delayTime: 3000, // 延迟提取时间\n    retryDelayTime: 3000, // 重试加载延迟时间\n    maxLoadAttempts: 3, // 最大加载次数\n    autoLoading: false, // true自动模式，false单页模式\n    debugOnce: 0, // 只在特定索引输出一次调试信息\n    totalPagesText: '{{@@.pager@a.-2@textNodes##\\n.*}}', // 提取总页码\n    urlSuffixToRemove: /\\.html$/, // 移除url后缀\n    pageUrlText: '{urlPrefix}/{i}.html',  // 拼接URL模板  \n    reverseOrder: false, // 多网址及多视频地址显示顺序，true倒序，false正序        \n    ListMode: true,   // true网址列表模式，false网址拼接模式   \n    initialUrls: `{{@@.chapters@a@href}}`, // 目录网址\n    initialUrlsName: `{{@@.chapters@a@text}}`, // 目录名称\n    sourceurl: '', // URL前缀\n\n};\n\nlet videoSources = []; \nlet videoNames = [];\nlet loadAttempts = {}; \nlet urls = []; \nlet imageBox;\nlet textBox;\nlet currentPageIndex = 0; \nlet canLoadNextPage = true; \nlet autoLoadInProgress = false; \n\n// 构建URL列表\nfunction buildUrls(totalPages, baseUrl) {\n    //目录模式\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        // 先处理地址和名称的展示\n        const urlNamePairs = urls.map((url, index) => {\n            const name = initialUrlsNameArray[index] || `第 ${index + 1} 页`;\n            return { url, name };\n        });\n\n        // 统一倒序处理\n        if (config.reverseOrder) {\n            urlNamePairs.reverse();\n        }\n\n        // 重新渲染倒序后的结果\n        urlNamePairs.forEach(({ url, name }, index) => {\n            $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n            $('#urls').append(`<div>${name}: ${url}</div>`);\n        });\n    } else {\n        // 网页拼接逻辑（非列表模式）\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        // 生成名称数组（非列表模式下名称固定为\"第X页\"）\n        const nameArray = urls.map((_, index) => `第 ${index + 1} 页`);\n\n        // 统一倒序处理\n        if (config.reverseOrder) {\n            urls.reverse();\n            nameArray.reverse();\n        }\n\n        // 渲染倒序后的结果\n        urls.forEach((url, index) => {\n            const name = nameArray[index];\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// 加载网页内容\nfunction 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            // 输出调试信息\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\n\n\n// 方法1：提取视频\nlet videoSources1 = [];\nlet videoNames1 = [];\n\nconst videoContents = $(doc).find(config.videoSelector);\nconst videoElements = $(videoContents).find('video, source, .playlist.wbox.ffm3u8 li a[title]');\n\n// 提取视频源地址\nvideoElements.each(function() {\n    // 修复拼接错误，统一用 || 连接\n    let src = $(this).attr('src') \n        || $(this).attr('data-src') \n        || $(this).attr('data-original') \n        || $(this).attr('value') \n        || $(this).attr('href') \n        || '';\n    if (src.trim()) {\n        videoSources1.push(src.trim());\n    }\n});\n\n// 提取视频名称\nconst titleElements = $(videoContents).find('video, source, .playlist.wbox.ffm3u8 li a[title] font');\ntitleElements.each(function(index) {\n    let title = $(this).text().trim().replace(/\\$.*$/gi, '');\n    if (!title) {\n        const defaultNum = Math.max(1, index < videoSources1.length ? index + 1 : videoSources1.length + 1);\n        title = `视频源 ${defaultNum}`;\n    }\n    videoNames1.push(title);\n});\n\n// 规范化URL并过滤无效地址\nvideoSources1 = videoSources1.map(normalizeUrl).filter(Boolean);\nvideoNames1 = videoNames1.slice(0, videoSources1.length);\n\n// 处理地址与名称数量不一致的情况\nif (videoSources1.length !== videoNames1.length) {\n    $('#messages').append(`<span class=\"warn\">\\t🔔 方法1中视频地址和名称数量不一致，已按默认形式命名。</span><br>`);\n    videoNames1 = videoSources1.map((_, idx) => `视频 ${idx + 1}`);\n}\n\n// 输出结果反馈\nif (videoSources1.length > 0) {\n    $('#messages').append(`<span>\\t✅ 方法1，找到 ${videoSources1.length} 个视频。</span><br>`);\n    videoSources1.forEach((src, idx) => {\n        const name = videoNames1[idx] || `视频 ${idx + 1}`;\n        $('#messages').append(`<div>视频地址:<span class=\"warn\"> ${src}</span>, 名称: <span class=\"warn\">${name}</span><br></div>`);\n    }); \n} \n\n\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            let videoSources2 = [];\n            let videoNames2 = [];\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                    videoNames2.push(`视频源 ${videoSources1.length + videoSources2.length}`);\n                });\n                \n                // 将原始匹配结果添加到调试信息中\n                if (uniqueMatches && uniqueMatches.length > 0) {\n                    $('#messages').append(`<span class=\"warn\">方法2匹配到的原始视频地址:</span><br>`);\n                    uniqueMatches.forEach(match => {\n                        $('#messages').append(`<div>${match}</div>`);\n                    });\n                }\n            }\n            videoSources2 = Array.from(new Set(videoSources2)).filter(Boolean); // 去重并去除无效值\n            videoNames2 = Array.from(new Set(videoNames2)).filter(Boolean);\n            //反馈\n            if (videoSources2.length > 0) {\n                $('#messages').append(`<span>\\t✅ 方法2，找到 ${videoSources2.length} 个视频。</span><br>`);\n            }\n     \n            \n            // 方法3：正则拼接视频地址\n            const domainMatch = updatedHtmlContent.match(/var\\s+domain\\s*=\\s*[\"']([^\"']+)[\"'];/i); \n            const scriptContentMatches = [...updatedHtmlContent.matchAll(/var\\s+videos\\s*=\\s*([^;]+);/gi)];\n            let videoSources3 = []; \n            let videoNames3 = [];\n\n            if (domainMatch && scriptContentMatches.length > 0) {\n              const domain = domainMatch[1].replace(/\\/+$/, '');\n              const urlParser = new URL(domain); \n              const tempVideoUrls = [];\n\n              for (const match of scriptContentMatches) {\n                try {\n                  const rawJson = match[1].trim();\n                  const cleanedJson = rawJson\n                    .replace(/\\'/g, '\"') \n                    .replace(/(\\w+):(\\w+)/g, '\"$1\":\"$2\"') \n                    .replace(/\\\\u([0-9a-fA-F]{4})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));\n\n                  const parsedVideos = JSON.parse(cleanedJson);\n                  if (!Array.isArray(parsedVideos)) throw new Error('数据非数组格式');\n\n                  const validUrls = parsedVideos.flatMap(video => {\n                    if (typeof video.url !== 'string') return [];\n                    urlParser.pathname = video.url.replace(/^\\/+/, ''); \n                    return normalizeUrl(urlParser.href);\n                  });\n\n                  tempVideoUrls.push(...validUrls);\n                } catch (error) {\n                  $('#messages').append(`<span class=\"error-message\">\\t❌ 解析videos失败：${error.message}<br>原始数据片段：${match[0].slice(0, 50)}...</span><br>`);\n                }\n              }\n\n              videoSources3 = Array.from(new Set(tempVideoUrls)).filter(Boolean); // 去重并去除无效值\n              videoNames3 = Array.from({ length: videoSources3.length }, (_, idx) => `视频源 ${videoSources1.length + videoSources2.length + idx + 1}`);\n            }\n            //反馈\n            if (videoSources3.length > 0) {\n              $('#messages').append(`<span class=\"success-message\">\\t✅ 方法3，找到 ${videoSources3.length} 个视频。</span><br>\n              `);\n            }\n\n            // 合并3种方法的结果\n            videoSources = [...videoSources1, ...videoSources2,...videoSources3];\n            videoNames = [...videoNames1, ...videoNames2, ...videoNames3];\n\n            // 去重并去除无效值\n            videoSources = Array.from(new Set(videoSources)).filter(Boolean);\n            videoNames = Array.from(new Set(videoNames)).filter(Boolean);\n            //正序倒序转换\n            if (config.reverseOrder) {\n                videoSources = videoSources.reverse();\n                videoNames = videoNames.reverse();\n            }\n\n            // 显示最终结果\n            if (videoSources.length > 0) {\n                $('#messages').append(`<span>\\t✅ 共成功提取到 ${videoSources.length} 个视频。</span><br>`);\n                videoSources.forEach((src, idx) => {\n                    const name = videoNames[idx] || `视频 ${idx + 1}`;\n                    $('#messages').append(`<div>视频地址:<span class=\"warn\"> ${src}</span>, 名称: <span class=\"warn\">${name}</span><br></div>`);\n                    $('#video-source-select').append(`<option value=\"${idx}\">${name}</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\">\\t❎ 未找到视频源。</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>\\t✅ 成功提取图片，共 ${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\">\\t❎ 未提取到图片。</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                const $imgsInText = $currentContents.find('img');\n                if (config.swapImageAttributes && $imgsInText.length > 0) {\n                    updateImageSrc($imgsInText, true);\n                }\n                $currentContents.html($currentContents.html().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>\\t✅ 成功提取图文。</span><br>`);\n            } else {\n                $('#messages').append(`<span class=\"warn\">\\t❎ 未提取到图文。</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\">\\t❌ 解析页面内容时发生错误: ${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// 处理加载失败的情况\nfunction 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 = `\\t📢 第${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 = `\\t📢 第${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// 更新视频源\nfunction updateVideoSource() {\n    const selectedIndex = parseInt(document.getElementById('video-source-select').value);\n    if (isNaN(selectedIndex) || !videoSources[selectedIndex]) {\n        $('#messages').append(`<span class=\"warn\">\\t❎ 未找到有效的视频源。</span><br>`);\n        return;\n    }\n\n    const selectedSource = videoSources[selectedIndex];\n    document.getElementById('video-url').textContent = `当前视频地址📺： ${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}\n\n// 切换总页数显示状态\nfunction toggleTotalPagesDisplay() {\n    if (urls.length > 1) {\n        $('#page').show();\n    } else {\n        $('#page').hide();\n    }\n}\n\n// 规范化URL并去重\nfunction 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(/\\\\\\//g, '/');\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\n    url = processUrl(url);\n\n    // 删除包含指定关键词的链接\n    const filterKeywords = ['/ad/', '.online/','6888.site/'];\n    if (filterKeywords.some(keyword => url.includes(keyword))) {\n        return '';\n    }\n\n    // 去除图片扩展名\n    const imageExtensions = /\\.(jpg|jpeg|png|gif|bmp|svg)$/i;\n    if (imageExtensions.test(url)) {\n        return '';\n    }\n\n    return url;\n}\n\n// 清空容器内容\nfunction clearContainers() {\n    $('#messages').empty();\n    $('#images').empty();\n    $('#text').empty();\n}\n\n// 更新图像源（交换图片属性）\nfunction 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// 切换导航按钮显示状态\nfunction 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// 显示加载状态\nfunction showLoadingStatus(pageNumber) {\n    const selectedOption = $('#url-select option:selected').text();\n    $('#loading-status').text(`正在加载：${selectedOption}`).show();\n}\n\n// 隐藏加载状态\nfunction hideLoadingStatus() {\n    $('#loading-status').hide();\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    $('#prev-video-btn').click(function () {\n        const currentVideoIndex = parseInt($('#video-source-select').val());\n        if (!isNaN(currentVideoIndex) && currentVideoIndex > 0) {\n            $('#video-source-select').val(currentVideoIndex - 1);\n            updateVideoSource();\n        }\n    });\n\n    $('#next-video-btn').click(function () {\n        const currentVideoIndex = parseInt($('#video-source-select').val());\n        if (!isNaN(currentVideoIndex) && currentVideoIndex < videoSources.length - 1) {\n            $('#video-source-select').val(currentVideoIndex + 1);\n            updateVideoSource();\n        }\n    });\n});\n    </script>\n</body>\n</html>",
    "ruleImage": "img@data-original||img@data-src||img@src",
    "ruleLink": ".videoName@href||a@href",
    "ruleNextPage": "[title=\"下一页\"]@href",
    "rulePubDate": ".region@text&&.category.type@text&&.time1@text##\\n##★",
    "ruleTitle": ".videoName@textNodes&&i@text##\\n##☞",
    "singleUrl": false,
    "sortUrl": "首页::/\n国产动漫::/index.php/vod/type/id/29.html\n国产剧::/index.php/vod/type/id/13.html\n电影片::/index.php/vod/type/id/1.html\n动作片::/index.php/vod/type/id/6.html\n喜剧片::/index.php/vod/type/id/7.html\n科幻片::/index.php/vod/type/id/9.html\n恐怖片::/index.php/vod/type/id/10.html\n爱情片::/index.php/vod/type/id/8.html\n剧情片::/index.php/vod/type/id/11.html\n战争片::/index.php/vod/type/id/12.html\n记录片::/index.php/vod/type/id/20.html\n伦理片::/index.php/vod/type/id/34.html\n连续剧::/index.php/vod/type/id/2.html\n欧美剧::/index.php/vod/type/id/16.html\n香港剧::/index.php/vod/type/id/14.html\n韩国剧::/index.php/vod/type/id/15.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/type/id/36.html\n动漫片::/index.php/vod/type/id/4.html\n\n日韩动漫::/index.php/vod/type/id/30.html\n欧美动漫::/index.php/vod/type/id/31.html\n港台动漫::/index.php/vod/type/id/32.html\n海外动漫::/index.php/vod/type/id/33.html\n综艺片::/index.php/vod/type/id/3.html\n大陆综艺::/index.php/vod/type/id/25.html\n港台综艺::/index.php/vod/type/id/26.html\n日韩综艺::/index.php/vod/type/id/27.html\n欧美综艺::/index.php/vod/type/id/28.html",
    "sourceComment": "ffzy1.tv \nffzy2.tv \nffzy3.tv \nffzy4.tv \nffzy5.tv",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "",
    "sourceName": "非凡资源",
    "sourceUrl": "http://cj.ffzyapi.com/"
  },
  {
    "articleStyle": 2,
    "customOrder": 4951,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928813496,
    "loadWithBaseUrl": true,
    "ruleArticles": "class.stui-vodlist clearfix@ul@li",
    "ruleContent": "<js>\r\nvar doc1=org.jsoup.Jsoup.parse(result);\r\nvar url='https://app.movie'+doc1.getElementsByClass(\"btn btn-primary\").attr(\"href\");\r\nvar doc2=org.jsoup.Jsoup.connect(url).get();\r\nvar element=doc2.getElementsByClass(\"stui-player__video\");\r\nvar text = String(element).replace(/\\\\/g,\"\");\r\nvar videoSrc=text.match(/\"https.*dex.m3u8\"/);\r\nvar video='<video controls=\"controls\" src='+videoSrc+'>';\r\nresult=video\n</js>",
    "ruleImage": "class.stui-vodlist__thumb lazyload@data-original",
    "ruleLink": "class.stui-vodlist__thumb lazyload@href@js:\"https://app.movie\"+result",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.pic-text text-right@text",
    "ruleTitle": "class.stui-vodlist__thumb lazyload@title",
    "singleUrl": false,
    "sortUrl": "首页::https://www.appmovie.cc/\n连续剧::https://www.appmovie.cc/index.php/vod/show/by/hits/id/2.html\n电影::https://www.appmovie.cc/index.php/vod/show/by/hits/id/1.html\n综艺::https://www.appmovie.cc/index.php/vod/show/by/hits/id/3.html\n动漫::https://www.appmovie.cc/index.php/vod/show/by/hits/id/4.html",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://cdn.wyteam.net/webapps/maccms/template/blueghost/img/favicon.ico",
    "sourceName": "软件影院",
    "sourceUrl": "https://www.appmovie.cc/"
  },
  {
    "articleStyle": 2,
    "customOrder": 4952,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928822137,
    "loadWithBaseUrl": true,
    "ruleArticles": "class.stui-vodlist clearfix@ul@li",
    "ruleContent": "<js>\r\nvar doc1=org.jsoup.Jsoup.parse(result);\r\nvar url='https://app.movie'+doc1.getElementsByClass(\"btn btn-primary\").attr(\"href\");\r\nvar doc2=org.jsoup.Jsoup.connect(url).get();\r\nvar element=doc2.getElementsByClass(\"stui-player__video\");\r\nvar text = String(element).replace(/\\\\/g,\"\");\r\nvar videoSrc=text.match(/\"https.*dex.m3u8\"/);\r\nvar video='<video controls=\"controls\" src='+videoSrc+'>';\r\nresult=video\n</js>",
    "ruleImage": "class.stui-vodlist__thumb lazyload@data-original",
    "ruleLink": "class.stui-vodlist__thumb lazyload@href@js:\"https://app.movie\"+result",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.pic-text text-right@text",
    "ruleTitle": "class.stui-vodlist__thumb lazyload@title",
    "singleUrl": false,
    "sortUrl": "全部::https://app.movie/index.php/vod/type/id/1.html\n动作::https://app.movie/index.php/vod/show/id/6.html\n喜剧::https://app.movie/index.php/vod/show/id/7.html\n爱情::https://app.movie/index.php/vod/show/id/8.html\n科幻::https://app.movie/index.php/vod/show/id/9.html\n恐怖::https://app.movie/index.php/vod/show/id/10.html\n剧情::https://app.movie/index.php/vod/show/id/11.html\n战争::https://app.movie/index.php/vod/show/id/12.html\n记录::https://app.movie/index.php/vod/show/id/20.html",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://cdn.wyteam.net/webapps/maccms/template/blueghost/img/favicon.ico",
    "sourceName": "软件电影",
    "sourceUrl": "https://app.movie/index.php/vod/type/id/1.html"
  },
  {
    "articleStyle": 0,
    "customOrder": 4957,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765917251985,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "http://g.hiphotos.baidu.com/normandy/pic/item/c8177f3e6709c93d36585710933df8dcd00054aa.jpg",
    "sourceName": "好看视频",
    "sourceUrl": "https://haokan.baidu.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 4960,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\t\"User-Agent\": \"Mozilla/5.0 (Linux; Android 9) Mobile Safari/537.36\",\"referer\": \"{{baseUrl}}\"\n\t}",
    "injectJs": "//选择需要删除的标签，以,分隔\nitems = document.querySelectorAll(`\n\tfooter,\n\t.col-md-6,\n\t.list-group,\n\t.card-title,\n\theader\n`)\n\n//把选择的html值改成空\nArray.from(items,(item)=>{\n\titem.innerHTML = ``\n\titem.style.display = `none`\n})",
    "lastUpdateTime": 1765924729233,
    "loadWithBaseUrl": true,
    "ruleArticles": ".row!0||tbody tr",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".text-success@text||small@text",
    "ruleTitle": "a.0@text",
    "singleUrl": false,
    "sortUrl": "搜索::https://www.fangpi.net/s/{{(source.getVariable()==''||source.getVariable()==null)?source.setVariable('情人'):\"\"}}{{source.getVariable()}}\n昨日搜索::https://www.fangpi.net/top/yesterday?page={{page}}\n本周搜索::https://www.fangpi.net/top/week?page={{page}}\n本月搜索::https://www.fangpi.net/top/month?page={{page}}\n上月搜索::https://www.fangpi.net/top/last_month?page={{page}}",
    "sourceComment": "下载歌曲推荐使用  x浏览器  嗅探获取",
    "sourceGroup": "音频",
    "sourceIcon": "",
    "sourceName": "音乐",
    "sourceUrl": "https://www.fangpi.net/s/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4962,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1773237020114,
    "loadWithBaseUrl": true,
    "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##图片}}",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4965,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765912688319,
    "loadWithBaseUrl": true,
    "ruleArticles": "$.data.cards[*].content[*]",
    "ruleImage": "$.img",
    "ruleLink": "https://baidu.com/s?wd={{$.word}}",
    "rulePubDate": "$.desc",
    "ruleTitle": "$.word",
    "shouldOverrideUrlLoading": "if (/s?wd=/.test(url)) {\n  java.searchBook(java.toURL(url).searchParams.get('wd').split(' ')[0]);\n  1;\n}",
    "singleUrl": false,
    "sortUrl": "全部::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E5%85%A8%E9%83%A8%E7%B1%BB%E5%9E%8B%22%7D\n都市::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E9%83%BD%E5%B8%82%22%7D\n玄幻::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E7%8E%84%E5%B9%BB%22%7D\n奇幻::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E5%A5%87%E5%B9%BB%22%7D\n历史::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E5%8E%86%E5%8F%B2%22%7D\n科幻::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E7%A7%91%E5%B9%BB%22%7D\n军事::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E5%86%9B%E4%BA%8B%22%7D\n游戏::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E6%B8%B8%E6%88%8F%22%7D\n武侠::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E6%AD%A6%E4%BE%A0%22%7D\n现代言情::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E7%8E%B0%E4%BB%A3%E8%A8%80%E6%83%85%22%7D\n古代言情::\nhttps://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E5%8F%A4%E4%BB%A3%E8%A8%80%E6%83%85%22%7D\n幻想言情::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E5%B9%BB%E6%83%B3%E8%A8%80%E6%83%85%22%7D\n青春::https://top.baidu.com/api/board?platform=wise&tab=novel&tag=%7B%22category%22:%22%E9%9D%92%E6%98%A5%22%7D",
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/09/fd/af/09fdaf33-4f6f-32ee-5ee4-93b80aa3efe1/AppIcon-0-0-1x_U007emarketing-0-8-0-0-sRGB-85-220.png/512x512bb.jpg",
    "sourceName": "百度榜单",
    "sourceUrl": "https://top.baidu.com"
  },
  {
    "articleStyle": 0,
    "customOrder": 4966,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765913545574,
    "loadWithBaseUrl": true,
    "ruleArticles": "[*]",
    "ruleImage": "$.cover_url",
    "ruleLink": "http://quark.sm.cn/s?q={{$.name}}",
    "rulePubDate": "$.author&&$.description",
    "ruleTitle": "$.name",
    "shouldOverrideUrlLoading": "if (/s?q=/.test(url)) {\n  java.searchBook(java.toURL(url).searchParams.get('q').split(' ')[0]);\n  1;\n}",
    "singleUrl": false,
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://app-center.cdn.bcebos.com/appcenter/sts/pcfile/419081656/2bcaa0612058674968662981bd02152b.png",
    "sourceName": "迅雷榜单",
    "sourceUrl": "https://common-xbrowser-x.xunlei.com/hotlist/publish/novel"
  },
  {
    "articleStyle": 0,
    "customOrder": 4967,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765930737447,
    "loadWithBaseUrl": true,
    "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",
    "singleUrl": false,
    "sortUrl": "🐰 艾儿::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】《每周新书》◎每周新书汇总◎",
    "sourceComment": "by：Lingsanya\n2024年10月更新\n基于一程订阅源更改",
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://tc.dhmip.cn/imgs/2024/10/29/d57bea47b0d91b85.png",
    "sourceName": "艾儿天空",
    "sourceUrl": "艾儿的天空"
  },
  {
    "articleStyle": 0,
    "customOrder": 4968,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765913642404,
    "loadWithBaseUrl": true,
    "shouldOverrideUrlLoading": "if (url.startsWith(\"https://m.sm.cn/s\")) {\n    var xxx = java.toURL(url)\n    var searchKey = xxx.searchParams.get(\"q\")\n    java.searchBook(String(searchKey).split(\" \")[0])\n    true\n} else false",
    "singleUrl": true,
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://sm01.alicdn.com/L1/272/1990/favicon/favi.ico",
    "sourceName": "星云寻书",
    "sourceUrl": "https://vt.sm.cn/api/novelStarReco/index?uc_param_str=dnntnwvepffrgibijbprsvdsdicheiniut#"
  },
  {
    "articleStyle": 0,
    "customOrder": 4969,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765913654800,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://b.bdstatic.com/searchbox/mappconsole/image/20190428/5f80011e-c126-4fd5-8d80-8f2cd3637544.png",
    "sourceName": "百度榜单",
    "sourceUrl": "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"
  },
  {
    "articleStyle": 0,
    "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,
    "singleUrl": true,
    "sourceGroup": "文学网站",
    "sourceIcon": "https://s1.hdslb.com/bfs/maoer/assets/images/index/favicon.ico",
    "sourceName": "猫耳有声",
    "sourceUrl": "https://m.missevan.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4974,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775592028794,
    "loadWithBaseUrl": true,
    "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}",
    "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/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4976,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765930779774,
    "loadWithBaseUrl": true,
    "ruleArticles": "$.data.data[*]",
    "ruleContent": "<js>\nvar json=JSON.parse(result).data.data;\n\njson.map(($,i)=>\"<center><h4>No.\"+(i+1)+\"</h4><img src='\"+$.book.cover+\"' width='130px' height='180px' ></center>\"+\"<p>🎗书名：<a href='https://baidu.com/s?wd=\"+$.book.title+\"'>\"+$.book.title+\"</a></p><p>👤作者：\"+$.book.author_nickname+\"</p><p>🔮章节数：共\"+$.book.chapter_number+\"章</p><p>🍁状态：\"+$.book.process_name+\"</p><p>🏷标签：\"+$.book.tag+\"</p><p>🖌字数：\"+$.book.word_number_name+\"</p><p>🏅评分：\"+$.book.score+\"分</p><p>🔗来源：\"+$.book.source_name+\"</p><p>📝推荐语：\"+$.remark+\"</p><p>*********************************</p>\").join(\"\\n\")\n</js>",
    "ruleImage": "$.image[0]",
    "ruleLink": "https://pre-api.tuishujun.com/api/listBookInBooklist?booklist_id={{$.booklist_id}}&page=1&pageSize={{$.book_number}}",
    "ruleNextPage": "page",
    "rulePubDate": "$.create_time",
    "ruleTitle": "$.title",
    "singleUrl": false,
    "sortUrl": "最新::https://pre-api.tuishujun.com/api/listBooklist?type=most_new&page={{page}}&pageSize=10\n最热::https://pre-api.tuishujun.com/api/listBooklist?type=hot&page={{page}}&pageSize=10",
    "sourceComment": "//仅供学习研究使用，请在24h内删除",
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://img.xiazaiba.com/d/icon/2022/0119/1642554301896538.png",
    "sourceName": "推书君单",
    "sourceUrl": "http://www.tuishujun.com/##@遇知",
    "style": "body{padding:10px;line-height:2em;letter-spacing: 2px;background:floralwhite;font-family:sans-serif-Helvetica;word-wrap: break-word}"
  },
  {
    "articleStyle": 0,
    "customOrder": 4978,
    "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": 1765921182501,
    "loadWithBaseUrl": true,
    "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}else{\nlist=baseUrl.replace(/http.*?wd=/,'');\nhref=list.match(/【(.*?)】/)[1];\ntext=list.match(/《(.*?)》/)[1];\nintro=list.match(/◎(.*?)◎/)[1];\nindex=list.match(/^(\\d+、\\d+、)/)?list.match(/^(\\d+、\\d+、)/):list.match(/^(.*?)【/)[1]\njson.push({text:text,src:href,intro:intro,index:index})\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleDescription": "❗️0、1、开始❗️\n\n\n<html>\n\n<head>\n<title>书单搜索</title>\n<meta charset=utf-8>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />   \n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />  \n<meta name=\"format-detection\" content=\"telephone=no\" />  \n<base target=”_blank”>\n</head>\n\n<body bgcolor='#f2ecde' >\n\n<style type=\"text/css\">\nbody{width:380px; }\ndetails summary::-webkit-details-marker { display:none; } \nsummary{outline:none;}\nbutton{height:30px;background-color: #f2ecde;border-radius: 10px;color:#622a1d;}\n.tag{height:30px;width:95%;background-color: #f2ecde;border-radius: 15px;color:#622a1d;}\n.web{height:30px;width:95%;background-color: #ede4cd;border-radius: 10px;color:#622a1d;}\n.div1{background-color:#f2ecde;border-radius: 15px;border: 1px solid #622a1d;}\ninput{background-color: #f2ecde;border-radius: 15px;height:30px;color:#622a1d;text-align:center;}\na{text-decoration:none}\na:link{color:#a73836;}\na:visited{color:#a73836;}\n\n</style>\n\n<img src='https://api.ixiaowai.cn/mcapi/mcapi.php'  onclick=\"faces();del1();del2();\" border-radius:=\"10px\" style=\"width:100%;border-radius: 15px;\" id=\"img\">\n<script>\nfunction $()\n{\nvar elements = new Array();\nfor (var i = 0; i < arguments.length; i++)\n{\nvar element = arguments[i];\nif (typeof element == 'string')\nelement = document.getElementById(element);\nif (arguments.length == 1)\nreturn element;\nelements.push(element);\n}\nreturn elements;\n}\n</script>\n<script>\nfunction del1(){\n$(\"a1\").innerHTML=\"\";\n$(\"a2\").innerHTML=\"\";\n$(\"a3\").innerHTML=\"\";\n$(\"a4\").innerHTML=\"\";\n$(\"a5\").innerHTML=\"\";\n$(\"a6\").innerHTML=\"\";\n\n\n}\n</script>\n<script>\nfunction del2(){\n\nif($(\"txt\").value!==\"\"){\n\n\n$(\"txt\").value=\"\";\n$(\"gsc-i-id1\").value=\"\";\t}else{\n\n$(\"url\").value=\"\";}\n\n}\n</script>\n\n\n\n\n<script async src=\"https://cse.google.com/cse.js?cx=f32acb3002a7d182a\"></script>\n<div class=\"gcse-search\" ></div>\n\n\n\n<details ontoggle=\"more1()\">\n<summary><br>\n<div align=\"middle\" class=\"div1\" style=\"margin:5px 5px;\">\n<table><tr ><td  style=\"width:95%\">\n<a id=\"aa\"></a> <br>\n<a href=\"\" id=\"a1\"></a> &nbsp \n<a href=\"\" id=\"a2\"></a> &nbsp\n<a href=\"\" id=\"a3\"></a><br>\n<a href=\"\" id=\"a4\"></a> &nbsp\n<a href=\"\" id=\"a5\"></a> &nbsp\n<a href=\"\" id=\"a6\"></a><br>\n\n</td></tr></table></div>\n</summary><br>\n\n<table>\n<tr><form action=\"https://quark.sm.cn/s\" target=\"_blank\">  <button type=\"submit\" class=\"btn\"  style=\"width:20%;color:#a73836;\" >夸克搜索</button>&nbsp &nbsp <input   id=\"txt\"   type=\"text\" value=\"书单\" name=\"q\" style=\"width:30%\" /> </form>&nbsp<button onclick=\"sdurl()\" style=\"width:15%\">书单</button> &nbsp<button onclick=\"myurl()\" style=\"width:15%\">常用</button>&nbsp <button onclick=\"more()\" id=\"morein\">🔻</button></tr> </table>\n\n\n<script>\nfunction sdurl(){\nvar txt= $(\"txt\").value;\nvar url1=\"https://www.yousuu.com/search/?search_type=booklist&search_value=\";\nvar url2=\"http://www.tuishujun.com/search?book_list=\";\nvar url3=\"https://www.basequan.com/?s=\";\nvar url4=\"https://data.newrank.cn/m/s.html?s=Py8yOTE5KDE4&k=\";\nvar url5=\"https://www.lkong.com/search/thread/\";\nvar url6=\"http://saowen.net/novellists?search=\";\n\n$(\"aa\").innerHTML=txt+\":\";\n$(\"a1\").innerHTML=\"优书单\";\n$(\"a1\").href=url1+txt;\n$(\"a2\").innerHTML=\"推书单\";\n$(\"a2\").href=url2+txt;\n$(\"a3\").innerHTML=\"芭莳圈\";\n$(\"a3\").href=url3+txt;\n$(\"a4\").innerHTML=\"说书人\";\n$(\"a4\").href=url4+txt;\n$(\"a5\").innerHTML=\"龙空\";\n$(\"a5\").href=url5+txt;\n$(\"a6\").innerHTML=\"扫文单\";\n$(\"a6\").href=url6+txt;\n}\n\n</script>\n <script>\nfunction myurl(){\nvar txt= $(\"txt\").value;\nvar url1=\"https://quark.sm.cn/api/rest?method=quark_fanyi.dlpage&schema=v2&format=html&entry=fanyi_common#zh/en/\";\nvar url2=\"https://weixin.sogou.com/weixin?type=2&query=\";\nvar url3=\"https://www.zhihu.com/search?from=toolnb&q=\";\nvar url4=\"https://m.weibo.cn/search?containerid=100103type=1&q=\";\nvar url5=\"https://m.bilibili.com/search?keyword=\";\nvar url6a=\"https://www.xiaobaipan.com/list-\";\nvar url6b=\".html?from=1\";\n\n$(\"aa\").innerHTML=txt+\":\";\n$(\"a1\").innerHTML=\"翻译\";\n$(\"a1\").href=url1+txt;\n$(\"a2\").innerHTML=\"微信\";\n$(\"a2\").href=url2+txt;\n$(\"a3\").href=url3+txt;\n$(\"a3\").innerHTML=\"知乎\";\n$(\"a4\").innerHTML=\"微博\";\n$(\"a4\").href=url4+txt;\n$(\"a5\").innerHTML=\"B站\";\n$(\"a5\").href=url5+txt;\n$(\"a6\").innerHTML=\"小白盘\";\n$(\"a6\").href=url6a+txt+url6b;\n\n}\n</script>\n\n\n<br><table><tr> <form target=\"_blank\"; action=\" http://zhannei.baidu.com/cse/site\"> <input  name=\"cc\" type=\"hidden\" value=\"\" id=\"bdznurl\"/ ><input id=\"bdzntxt\" type=\"hidden\" name=\"q\" /> <button onclick=\"bdzb()\"  class=\"btn\" style=\"width:20%;color:#a73836;\">百度站内</button> </form> &nbsp  <input id=\"url\" type=\"text\" value=\"qidiantu.com\" style=\"width:54%\"> &nbsp \n<button onclick=\"sougou()\">高级搜索</button></tr></table></div><br>\n\n <script>\nfunction bdzb(){\t$(\"bdznurl\").value=$(\"url\").value; $(\"bdzntxt\").value=$(\"txt\").value;\n}\n</script>\n\n<script>\nfunction sougou(){\nvar txt= $(\"txt\").value;\nvar url=$(\"url\").value;\n\nvar sogou=\"https://m.sogou.com/web/searchList.jsp?s_from=pcsearch&keyword=\";\nvar baidu=\"https://m.baidu.com/s?from=1024325b&word=site:\"\nvar top=\"https://top.chinaz.com/search/\"\n\n$(\"aa\").innerHTML=url+\"-\"+txt+\":\";\n$(\"a1\").href=baidu+\"chinaz.com \"+url;\n$(\"a1\").innerHTML=\"网站信息\";\n$(\"a2\").href=\"http://\"+url;\n$(\"a2\").innerHTML=\"主站\";\n$(\"a4\").href=sogou+txt+\" site:\"+url;\n$(\"a4\").innerHTML=\"搜狗高级\";\n$(\"a5\").href=baidu+url+\" \"+txt;\n$(\"a5\").innerHTML=\"百度高级\";\n\n$(\"a3\").innerHTML=\"\";\n$(\"a6\").innerHTML=\"\";\n}\n</script>\n\n\n<table   style=\"width:100%;\" >\n<tr>\n<td  style=\"width:24%\" ><button onclick=\"myFunction(this.value)\" value=\"saowen.net\" class=\"web\">扫文小院</button> </td>\n<td   style=\"width:19%\"><button onclick=\"myFunction(this.value)\" value=\"yousuu.com\" class=\"web\">优书网</button> </td>\n<td  style=\"width:19%\" ><button onclick=\"myFunction(this.value)\" value=\"basequan.com\" class=\"web\" >芭莳圈</button>  </td>\n<td style=\"width:19%\" ><button onclick=\"myFunction(this.value)\" value=\"tuishujun.com\"   class=\"web\" >推书君</button></td>\n<td ><button onclick=\"myFunction(this.value)\" value=\"qidiantu.com\"  class=\"web\">起点图</button></td>\n</tr>\n\n<tr>\n<td  style=\"width:24%\" ><button onclick=\"myFunction(this.value)\" value=\"txtnovel.top\" class=\"web\">书香门第</button> </td>\n<td   style=\"width:19%\"><button onclick=\"myFunction(this.value)\" value=\"twiwen.com\" class=\"web\" >闲也</button> </td>\n<td  style=\"width:19%\" ><button onclick=\"myFunction(this.value)\" value=\"douban.com\"  class=\"web\">豆瓣</button>  </td>\n<td style=\"width:19%\" ><button onclick=\"myFunction(this.value)\" value=\"tieba.baidu.com\"  class=\"web\" >贴吧</button>  </td>\n<td ><button onclick=\"myFunction(this.value)\" value=\"lkong.net\" class=\"web\">龙空</button>  </td>\n</tr>\n\n\n<tr>\n<td ><button onclick=\"myFunction(this.value)\" value=\"torrent.org.cn\" class=\"web\" >磁力点点</button>  </td>\n<td ><button onclick=\"myFunction(this.value)\" value=\"58wangpan.com\" class=\"web\" >58网盘</button>  </td>\n<td  ><button onclick=\"myFunction(this.value)\" value=\"acfun.cn\" class=\"web\">A站</button>  </td>\n<td ><button onclick=\"myFunction(this.value)\" value=\"bilibili.com\" class=\"web\">B站</button>  </td>\n<td   ><button onclick=\"myFunction(this.value)\" value=\"tianya.cn\" class=\"web\">天涯</button>  </td>\n</tr>\n\n\n\n<tr>\n<td ><button onclick=\"myFunction(this.value)\" value=\"qiaomi.cn\" class=\"web\">巧眯网盘</button> </td>\n<td ><button onclick=\"myFunction(this.value)\" value=\"lanzoui.com\" class=\"web\" >蓝奏云</button> </td>\n<td ><button onclick=\"myFunction(this.value)\" value=\"zhihu.com\" class=\"web\">知乎</button>   </td>\n<td ><button onclick=\"myFunction(this.value)\" value=\"weibo.cn\"  class=\"web\">微博</button> </td>\n<td ><button onclick=\"myFunction(this.value)\" value=\"xiaobaipan.com\"   class=\"web\">小白盘</button>  </td></tr>\n<tr>\n<td ><button onclick=\"myFunction(this.value)\" value=\"runoob.com\" class=\"web\">菜鸟教程</button> </td>\n<td  ><button onclick=\"myFunction(this.value)\" value=\"baijiahao.baidu.com\"  class=\"web\">百家号</button> </td>\n<td ><button onclick=\"myFunction(this.value)\" value=\"90pan.com\" class=\"web\">90网盘</button> </td>\n<td  ><button onclick=\"myFunction(this.value)\" value=\"xiaoso.net\"  class=\"web\">小不点</button>  </td>\n<td ><button onclick=\"myFunction(this.value)\" value=\"xiaohongshu.com\" class=\"web\" >小红书</button></td></tr>\n<tr>\n\n\n\n<!⬆️⬆️在此处上方增加网站⬆️⬆️>\n</tr>\n</table>\n\n<script>\nfunction myFunction(url){\nvar txt= $(\"txt\").value;\n\nvar sogou=\"https://m.sogou.com/web/searchList.jsp?s_from=pcsearch&keyword=\";\nvar baidu=\"https://m.baidu.com/s?from=1024325b&word=site:\"\n\n$(\"aa\").innerHTML=url+\"/\"+txt+\":\";\n$(\"a1\").href=\"http://\"+url;\n$(\"a1\").innerHTML=\"主站\";\n$(\"a2\").href=baidu+url+\" \"+txt;\n$(\"a2\").innerHTML=\"百度高级\";\n$(\"a3\").href=sogou+txt+\" site:\"+url;\n$(\"a3\").innerHTML=\"搜狗高级\";\n$(\"a4\").innerHTML=\"\";\n$(\"a5\").innerHTML=\"\";\n$(\"a6\").innerHTML=\"\";\n$(\"url\").value=url;\n}\n</script>\n</details>\n<br>\n<table   style=\"width:100%;\" >\n<tr>\n<td  style=\"width:20%\" ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\" >书荒</button> </td>\n<td   style=\"width:16%\"><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\" >小说</button>  </td>\n<td  style=\"width:16%\" ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">类似</button>  </td>\n<td style=\"width:16%\" ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">推文</button>  </td>\n<td  style=\"width:16%\" ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">推荐</button> </td>\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">盘点</button>  </td>\n</tr>\n\n<tr >\n<td><button onclick=\"setHTML(this.innerHTML)\"   class=\"tag\">文化</button>    </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">玄幻</button>   </td>\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">奇幻</button> </td>\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">武侠</button>  </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">仙侠</button> </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">无限</button> </td>\n</tr>\n\n<tr >\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">都市</button>    </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">现实</button>   </td>\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">军事</button>  </td>\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">历史</button>   </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">悬疑</button>  </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\" >位面</button>  </td>\n</tr>\n\n<tr >\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">游戏</button>   </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\" >竞技</button>   </td>\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">科幻</button>  </td>\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">灵异</button>  </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">时代</button>  </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">变革</button>  </td>\n</tr>\n\n<tr >\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">二次元</button>    </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">穿越</button> </td>\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">架空</button> </td>\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">言情</button>  </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">同人</button> </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">群穿</button> </td>\n</tr>\n\n<tr >\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">轻小说</button>  </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">种田</button>  </td>\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">空间</button>  </td>\n<td><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">文抄</button> </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">文明</button>   </td>\n<td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">幕后</button>  </td>\n</tr>\n<tr>\n\n\n\n<!⬆️⬆️在此处上方增加关键字⬆️⬆️>\n</tr>\n</table>\n\n\n\n\n<br>\n<table   style=\"width:100%\" >\n<tr ><td  style=\"width:50%\" ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">位面小蝴蝶</button>  &nbsp </td><td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">纸上人</button>  &nbsp \n</td></tr>\n\n\n<tr >\n<td  ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">最佳特摄时代</button>  &nbsp </td><td ><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">东汉末年枭雄志</button>  &nbsp </td></tr>\n\n<tr ><td  colspan=\"2\"><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">我在魔法世界开创互联网时代</button>  &nbsp \n</td></tr >\n<tr>\n\n\n\n<!⬆️⬆️在此处上方增加书名⬆️⬆️>\n</tr>\n</table>\n<script>\n\nfunction setHTML(txt){    \nvar url1=\"https://www.yousuu.com/search/?search_type=booklist&search_value=\";\nvar url2=\"http://www.tuishujun.com/search?book_list=\";\nvar url3=\"https://www.basequan.com/?s=\";\nvar url4=\"https://data.newrank.cn/m/s.html?s=Py8yOTE5KDE4&k=\";\nvar url5=\"https://www.lkong.com/search/thread/\";\nvar url=$(\"url\").value;\nvar baidu=\"https://m.baidu.com/s?from=1024325b&word=site:\"\n\n$(\"aa\").innerHTML=txt+\":\";\n$(\"a1\").innerHTML=\"优书单\";\n$(\"a1\").href=url1+txt;\n$(\"a2\").innerHTML=\"推书单\";\n$(\"a2\").href=url2+txt;\n$(\"a3\").innerHTML=\"芭莳圈\";\n$(\"a3\").href=url3+txt;\n$(\"a4\").innerHTML=\"说书人\";\n$(\"a4\").href=url4+txt;\n$(\"a5\").innerHTML=\"龙空\";\n$(\"a5\").href=url5+txt;\n$(\"a6\").href=baidu+url+\" \"+txt;\n$(\"a6\").innerHTML=url;\n$(\"txt\").value=txt;\n$(\"gsc-i-id1\").value=txt;\t\n}\n</script>\n</div>\n\n<br><br>\n<details id=\"more\" align=\"right\"  style=\"z-index: 9999; position: relative ; bottom: 630px; right: 1px; \"  ><summary>\n</summary><div style=\"padding:3px 3px;weight:50px;background-color:#f2ecde;border-radius: 15px;border: 1px solid #622a1d;float:right;\"><table>\n<tr><td><button onclick=\"fresh();del1()\" style=\"width:30px;height:50px;\"  target=\"_blank\">刷新</button></td><td colspan=\"2\"><button onclick=\"music()\" style=\"width:60px;height:50px;\">音乐<br>搜索</button></td></tr>\n<tr><td><button onclick=\"yiyan();del1()\" style=\"width:30px;height:50px;\">一言</button></td><td colspan=\"2\"><button onclick=\"shici();del1()\" style=\"width:60px;height:50px;\">今日<br>诗词</button></td></tr>\n<tr><td colspan=\"3\"><button onclick=\"sjtx()\" style=\"width:100%;\">随机头像</button></td></tr>\n<tr><td><button onclick=\"dice();del1()\" style=\"width:30px;height:50px;\">骰子</button></td><td colspan=\"2\"><button onclick=\"del1();sjmusic()\" style=\"width:60px;height:50px;\">随机<br>音乐</button></td></tr>\n<tr><td><button onclick=\"note()\" style=\"width:30px;height:50px;\">说明</button></td><td colspan=\"2\"><button onclick=\"miku()\" style=\"width:60px;height:50px;\">初音<br>miku</button></td></tr>\n</table></div></details>\n\n\n<script>\nfunction more(){\nvar x=$(\"more\").open;\nif(x==true){$(\"more\").open=false;$(\"morein\").innerHTML=\"🔻\";}\nelse{$(\"more\").open=true;$(\"morein\").innerHTML=\"🔺\";}}\n\n</script>\n<script>\nfunction more1(){\n$(\"more\").open=false;\n\n$(\"morein\").innerHTML=\"🔻\";\n}\n</script>\n\n<script>\nfunction music(){\nvar txt= $(\"txt\").value;\nvar musicwl=\"https://music.xf1433.com/?name=\";\nvar musictz=\"http://lite.tonzhon.com/search?keyword=\";\nvar musicxm=\"&type=ximalaya\";\nvar musickw=\"&type=kuwo\";\nvar musickg=\"&type=kugou\";\nvar musicwy=\"&type=netease\";\n\n$(\"aa\").innerHTML=txt+\":\";\n$(\"a1\").innerHTML=\"铜钟聚合\";\n$(\"a1\").href=musictz+txt;\n$(\"a2\").innerHTML=\"喜马拉雅\";\n$(\"a2\").href=musicwl+txt+musicxm;\n$(\"a3\").innerHTML=\"酷我\";\n$(\"a3\").href=musicwl+txt+musickw;\n$(\"a4\").innerHTML=\"酷狗\";\n$(\"a4\").href=musicwl+txt+musickg;\n$(\"a5\").innerHTML=\"网易云\";\n$(\"a5\").href=musicwl+txt+musicwy;\n$(\"a6\").innerHTML=\"\";\n}   \n\n</script>\n<script>\nfunction dice(){\nvar dice=['<big><big>⚀</big></big>','<big><big>⚁</big></big>','<big><big>⚂</big></big>','<big><big>⚃</big></big>','<big><big>⚄</big></big>','<big><big>⚅</big></big>'];\nvar x1=Math.floor(Math.random()*(5+1-0)+0);\nvar x2=Math.floor(Math.random()*(5+1-0)+0);\nvar x3=Math.floor(Math.random()*(5+1-0)+0);\n$(\"aa\").innerHTML=dice[x1]+dice[x2]+dice[x3];\n}\n</script>\n<script>\nfunction faces(){\nvar faces=['ヽ(◍╭╮◎)ﾉ','ʕ•ᴥ•ʔ','ᕕ(⁡■◞ ⁡■)ᕗ','(◔∀◔)','⤜( ͡⎚ᴥ ͡⎚)⤏','╮(◕ࡇ◕)╭','ᕙ(•▾•)ᕗ','( ͡ಥ‿ ͡ಥ)','ʕʘ ε ʘʔ','⎝ ͡°ᴥ ͡°⎠','─=≡Σᕕ(⏓◞ ⏓)ᕗ','୨ಠ︵ಠ୧','(∩⁡òロó⁡)⊃━☆ﾟ.*','...(｡﹀╭╮﹀｡) ...','...(｡ᗒ﹏ᗕ｡) ...','(^◞ ^)━☆ﾟ.*･｡ﾟ','(づ・▾・)づ','(๑•̀ㅂ•́)ﾉ➹♡','ﾚ(ﾟ∀ﾟ;)ﾍ=З=З=З','⸜₍๑•⌔•๑ ₎⸝','(( ◞•̀д•́)◞⚔◟(•̀д•́◟ ))','ο(=·ω＜=)☆kira','(//̀Д/́/)','o(＊＾▽＾＊)o♪','ɿ(｡･ɜ･)ɾⓌⓗⓐⓣ？','(♡´з(´ω`*)♡','~%?…;# *’☆&℃$︿★? 乱码','▄█▀█●','＞(￣▽￣ = ￣︿￣)＜','∑(°口°๑)❢❢','( ๑ŏ ﹏ ŏ๑ )'];\nvar x1=Math.floor(Math.random()*(30+1-0)+0);\nvar x2=Math.floor(Math.random()*(30+1-0)+0);\n$(\"aa\").innerHTML=faces[x1]+faces[x2];\n}\nwindow.onload=faces();\n</script>\n\n<script>\nfunction shici(){\n$(\"aa\").innerHTML='<img  src=\"https://v2.jinrishici.com/one.svg\" id=\"shici\">';\n}\n</script>\n\n<a id=\"hitokoto\" style=\"display: none\"></a>\n<script src=\"https://cdn.bootcss.com/bluebird/3.5.1/bluebird.core.min.js\"></script>\n<script src=\"https://cdn.bootcss.com/fetch/2.0.3/fetch.min.js\"></script>\n<!--End-->\n<script>\n  fetch('https://v1.hitokoto.cn')\n    .then(function (res){\n      return res.json();\n    })\n    .then(function (data) {\n      var hitokoto = document.getElementById('hitokoto');\n      hitokoto.innerText = data.hitokoto; \ndocument.getElementById('hitokoto1').innerText=data.hitokoto;\n    })\n    .catch(function (err) {\n      console.error(err);\n    })\n</script>\n<script>\nfunction yiyan(){\n$(\"aa\").innerHTML=$(\"hitokoto\").innerHTML;\n}\n</script>\n<script>\nfunction sjtx(){\n\n$(\"img\").src=\"https://api.btstu.cn/sjtx/api.php\";\n\n}\n</script>\n<script>\nfunction miku(){\n$(\"img\").src=\"https://api.lyiqk.cn/miku\";\n\n}\n</script>\n<script>\nfunction fresh(){\n$(\"img\").src=\"https://api.vvhan.com/api/acgimg\";\n}\n</script>\n<script>\nfunction note(){\nvar x=$(\"note\").open;\nif(x==true){$(\"note\").open=false;}\nelse{$(\"note\").open=true;}}\n</script>\n<script>\nfunction sjmusic(){\n$(\"aa\").innerHTML=\"\";\n$(\"a1\").innerHTML=\"不死鸟随机音乐\";\n$(\"a1\").href=\"https://iao.su/3419/\";\nvar x=$(\"sjmusic\").open;\nif(x==true){$(\"sjmusic\").open=false;}\nelse{$(\"sjmusic\").open=true;}}\n\n</script>\n\n<details id=\"note\"><summary align=\"right\">\n\n\n</summary><div align=\"left\" style=\"margin:15px 5px;border: 0 none;\">\n\n\n\n<br>\n说明:<br>\n书单搜索主要用了URL搜索，即直接替换链接中的关键字，达到使用网站中搜索框的效果。百度站内搜索，百度、搜狗的高级搜索作为备用，也可以开启VPN，本页面就可以打开谷歌的聚合站内搜索。<br>\n标签或网站都可自行增加，但若是在页面中点了右上角收藏，代码修改将不生效，取消收藏即可。\n<br>我是小白，所有代码都是百度抄的，不定期会修改，欢迎各位大佬指正，<a href=\"https://www.coolapk.com/feed/27029209?shareKey=ODRiZmU0NTViNGNlNjBhNjc3Nzg~&shareUid=985395&shareFrom=com.coolapk.market_11.2\">大家有啥建议可以来这交流😏</a>\n<br><br>网站收藏:\n<br>以小红书为例，在❗️0、1、❗️中＜tr＞和＜/tr＞(tr表示行，td 表示列)之间的＜!⬆️⬆️……⬆️⬆️＞处增加或修改以下的代码，一行不要超过5个。注意前面不要有www.，后面不要有/或&等符号，百度站内搜索不能识别。<br>\n<textarea style=\"width:100%;height:80px;background-color: #f2ecde;border-radius: 15px;\" ><td><button onclick=\"myFunction(this.value)\" value=\"xiaohongshu.com\" class=\"web\">小红书</button></td></textarea>\n\n<br><br>关键字或书名收藏:<br> 在❗️0、1、❗️中＜tr＞和＜/tr＞(colspan=\"2\"表示2列合并为一列)之间的＜!⬆️⬆️……⬆️⬆️＞处增加或修改以下的代码，关键字一行不要超过6个，书名一行不要超过两个。\n<textarea style=\"width:100%;height:80px;background-color: #f2ecde;border-radius: 15px;\" ><td  colspan=\"2\"><button onclick=\"setHTML(this.innerHTML)\"  class=\"tag\">我在魔法世界开创互联网时代</button></td></textarea>\n\n\n\n\n<br><br><br><br><br><br><br></div></details>\n<details id=\"sjmusic\"><summary>\n\n</summary>\n\n<div style=\"z-index:9999;position:fixed!important;  bottom:3px;left:3px;width:385px;background-color:#f0f0f4;border-radius: 12px;border: 1px solid #622a1d;margin-bottom: 0px;\" class=\"div1\">\n<table   style=\"width:100%; >\n<tr  align=\"middle\" >\n<td  style=\"width:20%\" >\n<button value=\"https://6url.cn/zazEPh\" onclick=\"bsnmusic(this.value)\" id='mus1' style=\"width:99%;background-color: #f0f0f4\">中文歌曲</button></td>\n<td  style=\"width:20%\" >\n<button value=\"https://6url.cn/cW8uFL\" onclick=\"bsnmusic(this.value)\" id='mus2' style=\"width:99%;background-color: #f0f0f4\" >英文歌曲</button></td>\n<td  style=\"width:20%\" >\n<button value=\"https://6url.cn/M34fN9\" onclick=\"bsnmusic(this.value)\" id='mus3' style=\"width:99%;background-color: #f0f0f4\" >小语种</button></td>\n<td  style=\"width:20%\" >\n<button value=\"https://6url.cn/wApnVs\" onclick=\"bsnmusic(this.value)\" id='mus4' style=\"width:99%;background-color: #f0f0f4\">纯音乐</button></td>\n<td>\n<button  onclick=\"musicfloor()\" style=\"width:99%;background-color: #f0f0f4\">随机</button></td>\n</tr>\n<tr><td colspan=\"4\">\n\n<audio controls=\"controls\" autoplay preload=\"auto\" playsinline=\"\" webkit-playsinline=\"\" id=\"bsnmusic\">\n<source src=\"\" type=\"audio/mpeg\"></source>\n</audio></td><td><button  onclick=\"musicnext()\" style=\"width:99%;background-color: #f0f0f4\">下一首</button></td></tr></table></div></details>\n\n<script>\nfunction bsnmusic(bsnmusic){\n$(\"bsnmusic\").src=bsnmusic;\n$(\"bsnmusic\").play();\n}\n</script>\n<script>\nfunction musicnext(){\n$(\"bsnmusic\").src=\n$(\"bsnmusic\").src;$(\"bsnmusic\").play();\n}\n</script>\n<script>\nfunction musicfloor(){\nvar clas=['mus1','mus2','mus3','mus4'];\nvar x=Math.floor(Math.random()*(4+1-0)+0);\n$(\"bsnmusic\").src=\n$(clas[x]).value;\n$(\"bsnmusic\").play();\n}\n</script>\n\n<script>\n    var automusic = $(\"bsnmusic\"); \n    automusic.loop = false;\n    automusic.addEventListener('ended', function () {   $(\"bsnmusic\").src=\n$(\"bsnmusic\").src\n    }, false);\n</script> \n\n</body></html>\n\n\n❗️0、1、结束❗️\n\n❗️0、2、开始❗️\n\n<html>\n\n<head>\n<title>星云推书</title>\n<meta charset=utf-8>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />   \n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />  \n<meta name=\"format-detection\" content=\"telephone=no\" />  \n<base target=”_blank”>\n</head>\n\n<body bgcolor='#f2ecde'>\n<script>\nfunction $()\n{\nvar elements = new Array();\nfor (var i = 0; i < arguments.length; i++)\n{\nvar element = arguments[i];\nif (typeof element == 'string')\nelement = document.getElementById(element);\nif (arguments.length == 1)\nreturn element;\nelements.push(element);\n}\nreturn elements;\n}\n</script>\n\n\n<style type=\"text/css\">\nbody{width:380px; }\ndetails summary::-webkit-details-marker { display:none; } \nsummary{outline:none;}\nbutton{height:30px;background-color: #f2ecde;border-radius: 10px;color:#622a1d;}\n.tag{height:30px;width:99%;background-color: #f2ecde;border-radius: 15px;color:#622a1d;}\ndiv{background-color:#f2ecde;border-radius: 15px;}\ninput{background-color: #f2ecde;border-radius: 15px;height:30px;color:#622a1d;text-align:center;}\na{text-decoration:none}\na:link{color:#a73836;}\na:visited{color:#a73836;}\nimg{width:100%; }\n</style>\n\n<script language=\"javascript\">\nwindow.onload=function(){\n    var div1 = $('div1');\n     var div2 = $('div2');\n   \n    div2.style.height = div1.offsetHeight+'px';\n\n}\n\n</script>\n\n<script >\nfunction det(){\n    var div1 = $('div1');\n     var div2 = $('div2');\n   \n    div2.style.height = div1.offsetHeight+'px';\n\n}\n\n</script>\n\n<body>\n<div id=\"div2\"><div style=\"position:fixed!important;  top:3px;left:3px;width:385px;background-color:#f2ecde;border-radius: 12px;border: 1px solid #622a1d;pedding:15px 0px;\" align=\"center\" id=\"div1\">\n<img src='https://api.vvhan.com/api/acgimg'  id=\"aa\" onclick=\"delFunction()\" style=\"width:100%;border-radius: 15px;\">\n\n<br><div style=\"display:none\"><br>\n<input size=\"4\" type=\"text\"  value=\"\" id=\"a1\" style=\"width:23%\"> &nbsp<input size=\"4\" type=\"text\"  value=\"\" id=\"a2\" style=\"width:23%\"> &nbsp<input size=\"4\" type=\"text\"  value=\"\" id=\"a3\" style=\"width:23%\"> &nbsp<input size=\"4\" type=\"text\"  value=\"\" id=\"a4\" style=\"width:23%\">\n\n</div><br>\n\n<table width=\"95%\" bgcolor=\"#f2ecde\"><tr ><td align=\"center\"> <details ontoggle=\"det()\"><summary>\n<a id=\"txt\" style=\"color:#622a1d;\">标签要和网站的一致才有效哦！🤔</a></summary><textarea id=\"txt1\" style=\"width:114%;height:130px;background-color: #f2ecde;border-radius: 15px;\">\n  说明:将生成后的代码直接全选复制到源编辑中❗️0、2、❗️中的＜!⬆️⬆️……⬆️⬆️＞处，即可收藏为标签组。也可自己编辑，最多10个标签一组，以|隔开标签。 按图片可清除文字。\n  注意:右上角收藏本页会使得源代码修改不生效，取消收藏即可。\n</textarea></details></td> \n<td width=\"13%\" style=\"align:center;vertical-align:top\">\n<a id=\"demo\" href\n=\"https://vt.sm.cn/api/novelStarReco/index?lo=AAPyNsUSTjo3MMzmwgEnwyrOwfmCSMis+E/cHXC7eineE9Sc0KL5hixnKLwcmOoqoINmAjU/rDBB51pjN2cCEBXquXW/82zGvPte5GUvv0W5/YZw3mG3A9r2jEFxKHhp+44=&nt=1&pf=44#/\" >星云</a></td></tr></table>\n\n\n<script>\nfunction delFunction(){\n$(\"a1\").value=\"\";\n$(\"a2\").value=\"\";\n$(\"a3\").value=\"\";\n$(\"a4\").value=\"\";\n$(\"txt\").innerHTML=\"标签要和网站的一致才有效哦！🤔\";\n\n$(\"txt1\").innerHTML=\"请生成代码拷贝到源编辑中\";\n$(\"demo\").innerHTML=\"星云\";\n$(\"demo\").href=\"https://vt.sm.cn/api/novelStarReco/index?lo=AAPyNsUSTjo3MMzmwgEnwyrOwfmCSMis+E/cHXC7eineE9Sc0KL5hixnKLwcmOoqoINmAjU/rDBB51pjN2cCEBXquXW/82zGvPte5GUvv0W5/YZw3mG3A9r2jEFxKHhp+44=&nt=1&pf=44#/\";\n}\n    \n</script>\n\n\n<script>\nfunction myFunction(){\n\tvar url=\"https://vt.sm.cn/api/novelStarReco/index?uc_param_str=dnntnwvepffrgibijbprsvdsdicheiniut#/books/\";\nvar y=\"|\";\nvar a='<tr>⋄<button  onclick=\"setValue(this.innerHTML);myFunction()\">';\nvar b='</button></tr>';\n\nvar a1=$(\"a1\").value;\nvar a2=$(\"a2\").value;\nvar a3=$(\"a3\").value;\nvar a4=$(\"a4\").value;\nif (a1==\"\"){\n    \t\t a2=a2; \t}else\n{\n    a2=y+a2;\n}\nif (a1==\"\"&&a2==\"\"){\n    \t\t a3=a3; \t}else\n{\n    a3=y+a3;\n}\nif (a1==\"\"&&a2==\"\"&&a3==\"\"){\n    \t\t a4=a4; \t}else\n{\n    a4=y+a4;\n}\n\nvar x;\n\tvar txt=\"\";\n\tvar person={a1,a2,a3,a4}; \n\tfor (x in person){\nif (person[x]==y){\n    \t\tperson[x]=\"\";\n    \t}\n\t\ttxt=txt +person[x];\n\t}\n\n\t$(\"demo\").innerHTML=\"跳转\";\n\t$(\"demo\").href=url+txt;\n$(\"txt\").innerHTML=txt;\n$(\"txt1\").innerHTML=a+txt+b;\n}\n</script>\n<script>\nfunction setValue(val){\nvar a1=$(\"a1\").value;\nvar a2=$(\"a2\").value;\nvar a3=$(\"a3\").value;\nvar a4=$(\"a4\").value;\n\nif (a1==\"\"){$(\"a1\").value=val;}\nelse{\nif (a1==val){$(\"a1\").value=\"\";}\nelse{\n    if (a2==\"\"){$(\"a2\").value=val;}\n      else{\n    if (a2==val){$(\"a2\").value=\"\";}\n               else{\n    if (a3==\"\"){$(\"a3\").value=val;\t}\n                         else{\n    if (a3==val){$(\"a3\").value=\"\";}\n                                  else{\n    if (a4==\"\")\n{ $(\"a4\").value=val;}\n                                           else{\n    if (a4==val){$(\"a4\").value=\"\";}     \n                                                   }\n                                         }\n                                 }\n                         }\n                }\n        }\n        }}\n \n</script>\n\n</body>\n\n</div>\n</div><br><div id=\"div3\"></div>\n<div >\n<table  style=\"width:100%\">\n<tr><button  onclick=\"setValue(this.innerHTML);myFunction()\">同人|动漫|二次元</button></tr>\n<tr>⋄<button  onclick=\"setValue(this.innerHTML);myFunction()\" >娱乐|明星|影视</button></tr>\n<tr>⋄<button  onclick=\"setValue(this.innerHTML);myFunction()\" >重生|穿越|奇遇</button></tr>\n<tr>⋄<button  onclick=\"setValue(this.innerHTML);myFunction()\" >历史|架空</button></tr>\n<tr>⋄<button  onclick=\"setValue(this.innerHTML);myFunction()\" >无限|轮回|位面|时空穿梭</button></tr>\n<tr>⋄<button  onclick=\"setValue(this.innerHTML);myFunction()\">时代|变革|群穿</button> </tr>\n<tr>⋄<button  onclick=\"setValue(this.innerHTML);myFunction()\">经营|职场|谋略</button></tr>\n\n\n  \n\n\n\n\n<!⬆️⬆️在此处上方增加分组⬆️⬆️>\n\n</table>\n<br>\n<table  style=\"width:100%;\" ><tr><td style=\"width:20%\"><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">侦探推理</button></td>\n<td style=\"width:20%\"><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">游戏异界</button></td>\n<td style=\"width:20%\"><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">游戏系统</button></td>\n<td style=\"width:20%\"><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">灵异悬疑</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">玄幻</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">王朝争霸</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">门派</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">阳光</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">阴阳师</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">阵法</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">随身空间</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">青春校园</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">青梅竹马</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">高干</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">鬼吹灯</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">鬼怪</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">魔界</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">黑帮</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">黑暗幻想</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">龙</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">龙珠</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">ABO</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">EXO</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">主受</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">主攻</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">互攻</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">上古先秦</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">修真文明</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">军事</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">剑与魔法</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">动漫同人</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">历史</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">三国</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">丧尸</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">丹药</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">乡村</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">二战</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">五代十国</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">亡灵</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">仙界</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">修仙</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">修士</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">傲娇</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">僵尸</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">克苏鲁</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">全职猎人</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">兽族</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">军事战争</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">军婚</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">军旅生涯</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">凡人</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">剑客</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">东方玄幻</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">历史传记</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">历史神话</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">原生幻想</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">变身入替</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">古典仙侠</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">励志</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">医生</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">卡片</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">变身</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">古代</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">召唤</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">哈利波特</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">唐朝</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">商战职场</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">嚣张</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">团宠</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">大秦</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">奇遇</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">奥特曼</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">女尊</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">女强人</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">女配</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">奶爸</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">姐弟恋</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">娱乐圈</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">两晋隋唐</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">古武机甲</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">另类幻想</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">史诗奇幻</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">同人</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">国术无双</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">孤儿</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">学霸</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">宋朝</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">宠文</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">宠物</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">家族</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">师生恋</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">帝王</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">废柴</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">异界</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">异能</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">快穿</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">总裁</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">恐怖灵异</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">惊悚</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">战争</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">战争幻想</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">战神</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">技术</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">抗战烽火</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">仙侠</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">外国历史</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">奇幻</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">娱乐明星</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">婚恋情缘</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">幻想修仙</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">推理</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">搞笑</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">斗罗大陆</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">无CP</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">无限</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">明朝</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">星际</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">未来</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">末世</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">机智</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">机甲</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">权术</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">柯南</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">欢喜冤家</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">死神</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">民国</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">汉朝</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">江湖</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">法师</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">洪荒</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">传统武侠</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">异世大陆</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">影视同人</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">探险生存</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">搞笑吐槽</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">时空穿梭</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">海贼王</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">清朝</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">漫威</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">灌篮高手</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">火影忍者</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">灵气复苏</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">热血</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">爱情公寓</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">特种兵</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">犬夜叉</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">王爷</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">现代</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">现代修真</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">现代魔法</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">电子竞技</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">电竞</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">盗墓</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">盗墓笔记</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">神奇宝贝</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">神话修真</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">体育</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">星际文明</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">未来世界</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">末世危机</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">架空历史</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">武侠</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">种田</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">科幻</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">秦时明月</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">秦汉三国</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">穿越</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">篮球运动</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">系统</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">红楼</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">练功</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">经营</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">综漫</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">网游情缘</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">网球</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">网球王子</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">聊天群</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">职场</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">虚拟网游</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">蛮荒</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">血族</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">血腥</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">体育赛事</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">武侠同人</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">武侠幻想</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">游戏</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">游戏主播</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">游戏同人</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">衍生同人</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">西游记</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">诡秘悬疑</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">谋略</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">谍战特工</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">豪门</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">豪门世家</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">赘婿</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">赚钱</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">超神学院</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">足球运动</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">轻小说</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">进化变异</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">道士</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">都市</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">都市异能</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">都市生活</button></td></tr>\n<tr><td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">重生</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">鉴宝</button></td>\n<td><button class=\"tag\" onclick=\"setValue(this.innerHTML);myFunction()\">铁血</button></td></tr>\n\n</table></div>\n\n<br><br>\n\n</html>\n\n\n❗️0、2、结束❗️\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",
    "singleUrl": false,
    "sortUrl": "推书工具::http://www.baidu.com?wd=0、1、【https://api.ixiaowai.cn/mcapi/mcapi.php】《书单搜索》◎通过书名或标签找书单◎ 0、2、【https://xiangjianan.gitee.io/lks/img/lks.png】《星云推书》◎书荒神器◎ https://cse.google.com/cse?cx=f32acb3002a7d182a#gsc.tab=0【https://gitee.com/alanskycn/yuedu/raw/master/JS/youshuwang.png】《聚合搜索》◎由google优化，需梯子◎ yuedu://rsssource/importonline?src=http://yck.mumuceo.com/yuedu/rssyuan/jsons?id=819【https://cdn.jsdelivr.net/gh/acgboxlink/acgbox/logo/86742914_p0.png】《更新》◎源仓库导入◎ https://wwa.lanzoui.com/b03hsmkbc【https://api.btstu.cn/sjtx/api.php】《html文件》◎密码:tsjh◎\n\n推书网站::http://www.baidu.com?wd=https://www.lkong.com/forum/60【】《推书试读》◎lkong.com龙空推书，纯网页需登录◎ https://www.tuishujun.com/【】《推书君》◎tuishujun.com推书君，纯网页需登录◎ http://www.twiwen.com/【】《闲也推文》◎twiwen.com闲也推文◎ https://www.yousuu.com/booklists【】《优书网》◎yousuu.com优书网，纯网页需登录◎ https://xiaoshuo.sm.cn/sc/2/comment/index/?format=html&entry=banner&uc_biz_str=|OPT:BACK_BTN_STYLE@0|OPT:TOOLBAR_STYLE@0|OPT:SAREA@1|qk_enable_gesture:false|OPT:S_BAR_BG_COLOR@ffffff&uc_param_str=dnntnwvepffrgibijbprsvdsdichei&from=smor&safe=1&title=神医凰后&author=苏小暖&novelid=苏小暖/神医凰后&domain=&token=ee8b318a3c1f3325454028d33ba149d9&novelversion=1#/comment/bookshortage?genderType=1【】《书荒互助》◎xiaoshuo.sm.cn神马小说◎ https://www.douban.com/group/658662/discussion?start=0【】《小说打分器》◎douban.com豆瓣小组，纯网页需登录◎ https://book.qidian.com/booklist/latest【】《起点书单》◎book.qidian.com起点书单，纯网页需登录◎ https://www.qidiantu.com/【】《起点图》◎qidiantu.com起点图，纯网页需登录◎ https://www.basequan.com/【】《芭莳圈》◎basequan.com芭莳圈，纯网页需登录◎ https://quark.sm.cn/api/rest?method=Novelnew.home&format=html&schema=v2&gender=male&cate=全部&rank=rank_hot【】《夸克榜单》◎quark.sm.cn排行榜◎\n公众号::http://www.baidu.com?wd=https://data.newrank.cn/m/s.html?s=Py8yOTE5KDE4【】《搜索》◎小说拾遗公众号◎ https://t.hk.uy/aevb【】《书单分享》◎小说拾遗公众号◎ https://t.hk.uy/aevd【】《潜力新书》◎小说拾遗公众号◎ https://t.hk.uy/aeve【】《完结小说》◎小说拾遗公众号◎ https://t.hk.uy/aevf【】《女频小说》◎小说拾遗公众号◎ https://t.hk.uy/aevg【】《网文推书》◎赤戟的书荒救济所公众号◎ https://t.hk.uy/aevh【】《澎湃精选》◎赤戟的书荒救济所公众号◎ https://t.hk.uy/aevj【】《年度盘点》◎赤戟的书荒救济所公众号◎ https://t.hk.uy/aevk【】《网文杂谈》◎赤戟的书荒救济所公众号◎ https://t.hk.uy/afMp【】《精华书单》◎偶得一本好书公众号◎ https://t.hk.uy/afMw【】《完结书单》◎偶得一本好书公众号◎ https://t.hk.uy/afMy【】《仙草书单》◎偶得一本好书公众号◎ https://t.hk.uy/afTj【】《荒仔推书》◎书荒不求人公众号◎",
    "sourceComment": "说明:\n1.书单搜索主要用了URL搜索，即直接替换链接中的关键字，达到使用网站中搜索框的效果。百度站内搜索，搜狗高级搜索作为备用，也可以开启VPN，本页面就可以打开谷歌的聚合站内搜索。标签或网站都可自行增加。\n\n2.在星云推书页面，将生成后的代码直接全选复制到源编辑中❗️0、2、❗️中的＜!⬆️⬆️……⬆️⬆️＞处，即可收藏为标签组。也可自己编辑，最多10个标签一组，以|隔开标签。 \n\n  注意:右上角收藏本页会使得源代码修改不生效，取消收藏即可。按图片可清除文字。",
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://sm.bdimg.com/static/wiseindex/img/favicon64.ico",
    "sourceName": "推书聚合",
    "sourceUrl": "星云推书"
  },
  {
    "articleStyle": 0,
    "customOrder": 4979,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930794267,
    "loadWithBaseUrl": true,
    "ruleArticles": "class.list-content",
    "ruleContent": "class.post-content@all",
    "ruleLink": "class.list-body@a@href",
    "ruleNextPage": "page",
    "ruleTitle": "class.list-body@text",
    "singleUrl": false,
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://www.basequan.com/wp-content/uploads/2017/09/logo2.png",
    "sourceName": "书荒推荐",
    "sourceUrl": "https://www.basequan.com/yqxs/page/{{page}}"
  },
  {
    "articleStyle": 0,
    "customOrder": 4981,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765921259828,
    "loadWithBaseUrl": true,
    "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",
    "singleUrl": false,
    "sortUrl": "📖 书单::https://vt.sm.cn/api/novelStarReco/index【https://i.postimg.cc/g2TPh70y/1642215764921.png】《星云推书》◎书荒搜书神器◎ https://www.tuishujun.com/【https://i.postimg.cc/tC4swqJ9/1642213151511.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/66HghqJR/1643185108117.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/sXwvkRPB/1643192297572.png】《百度榜单》◎百度浏览器小说榜单◎ https://www.yousuu.com【https://i.postimg.cc/KznpRhtq/d6460ce69df5934d47ec2e184264d447.png】《优书榜单》◎优书网书单◎ https://m.qidian.com/rank/【https://i.postimg.cc/0rgJRSHj/1643185593580.png】《起点榜单》◎起点中文网榜单◎ https://www.basequan.com/【https://i.postimg.cc/1XbW9Dmq/1643191115505.png】《芭莳推荐》◎好看的言情小说推荐◎\n\n\n📖 拾遗::https://data.newrank.cn/m/s.html?s=Py8yOTE5KDE4【https://i.postimg.cc/wjTQWk5T/1643174520048.png】《小说拾遗》◎小说拾遗公众号-号内搜索◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319671603470581762&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/BZ25MP9V/1643199923213.png】《精选书单》◎主推优质完结和连载100万字以上小说◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319666229510193155&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/pXSW40fG/1642212340030.png】《潜力新书》◎主推大神新书和20～100万字的优质新书◎ http://mp.weixin.qq.com/mp/homepage?__biz=MzI2MDg2NjAwMg==&hid=11&sn=c55d27329c109430838bc5b5f5b615b7&scene=18#wechat_redirect【https://i.postimg.cc/DzvJx4f7/3325d11f7a3a72746a7e66398139e541.png】《高分必看》◎高分完本合集◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319668267623170050&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/MK8FPMZr/1643194013372.png】《近期完结》◎主推近一段时间内优质的完结小说◎ https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319675692849872897&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://i.postimg.cc/1RTMxgPS/1643177963800.png】《后宫精选》◎后宫精选合集◎ https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI2MDg2NjAwMg==&action=getalbum&album_id=1651826809002328065#wechat_redirect【https://i.postimg.cc/LXP36VNn/1642422864619.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://i.postimg.cc/DZFpNMLD/1643195069116.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/d3f8BcSF/742eb1426cc1a2a86b3e530bacd26315.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://i.postimg.cc/dQSrS8Vq/1643193165812.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/fLJjJkgj/1643190678797.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://i.postimg.cc/RF8y5DgL/1643188789173.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://i.postimg.cc/52j0nddP/9d820c1766d8acf7104c4e062a7e076f.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://i.postimg.cc/WpY2vhGp/1643178613736.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://i.postimg.cc/LXGK9LgF/1643187510371.png】《网文趣事》◎各类和网文相关的趣事-每月一期◎",
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://gitee.com/alanskycn/yuedu/raw/master/JS/youshuwang.png",
    "sourceName": "推书书单",
    "sourceUrl": "阅读合集1.03"
  },
  {
    "articleStyle": 0,
    "customOrder": 4991,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765909919033,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceComment": "（自用）精品网站合集",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "",
    "sourceName": "在线工具",
    "sourceUrl": "https://tinywow.com/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4992,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1775591474569,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceComment": "（自用）精品网站合集",
    "sourceGroup": "资源绘",
    "sourceIcon": "https://imgsa.baidu.com/forum/pic/item/d0c8a786c9177f3e8ebb0cca7ecf3bc79e3d566e.jpg",
    "sourceName": "好用网站",
    "sourceUrl": "https://lkssite.vip/"
  },
  {
    "articleStyle": 0,
    "customOrder": 4993,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"\"}",
    "lastUpdateTime": 1765930025083,
    "loadWithBaseUrl": true,
    "ruleArticles": "<js>\nsort = [];\nL = String(baseUrl).replace(/^h.*?\\=/,'').split('★');\nfor (i = 0; i < L.length; i ++) {\n  sort.push ({\n    title: L[i].match(/【(.*?)】/)[1],\n    date: L[i].match(/】(.*?)＃/)[1],\n    img: L[i].match(/＃(.*)/)[1],\n    link: L[i].match(/(.*?)【/)[1]\n  });\n};\nJSON.stringify(sort);\n</js>\n$.[*]",
    "ruleDescription": "🔴0<!doctype html><html><head lang=\"zh\"><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"><style>*{line-height:1em;margin:0;padding:0;text-underline-offset:.2em;word-break:break-all}body{background-color:#f4f5f7;display:flex;flex-wrap:wrap;place-content:center;place-items:start;padding:15px;color:#001944}.card{border-top:.5px solid rgba(255,255,255,.7);border-radius:24px;background-color:rgba(255,255,255,.6);box-shadow:0 10px 20px rgba(0,0,0,.05);padding:30px;margin:12.5px;width:250px;height:auto}.card > details + div{overflow:hidden;max-height:0;opacity:0;transition:.6s}.card > [open] + div{max-height:888px;opacity:1}.card > details > summary::-webkit-details-marker{display:none}.card > details > summary::-moz-list-bullet{display:none}.card > details > summary{font-size:24px;font-weight:700;user-select:none;outline:0;opacity:.4;transition:.6s;display:block}.card > [open] > summary{opacity:1;margin-bottom:6px;font-size:20.5px}.flex{display:flex;flex-wrap:wrap}.text{line-height:1.4em;display:inline-block;margin-top:9px}a:not([href]){margin-top:9px;margin-right:9px;display:inline-block}a:not([href]) span{margin-left:9px}a[href]{color:#4360b7;text-decoration:none;margin:.2em}a[href]:hover{text-decoration:underline}span{background-color:rgba(0,0,0,.04);padding:.15em .3em;border-radius:.5em;margin-left:.2em;font-family:monospace;opacity:.75}button{font-size:13.5px;font-weight:700;color:#4360b7;background-color:#e7eeff;padding:.65em .9em;margin-top:9px;margin-right:10px;border-radius:2em;border:none;transition:.3s}button:active{background-color:#d6ddee}textarea{margin-top:9px;padding:9px;width:100%;box-sizing:border-box;line-height:1.2em;font-size:13px;min-height:37.6px;max-height:115.6px;resize:vertical;border-radius:9px;color:#333;border:2px solid rgba(0,0,0,.1);background-color:rgba(0,0,0,.006)}input{vertical-align:middle;appearance:none;margin:-2px 2.25px 0 0;width:15px;height:15px;box-sizing:border-box;background-color:rgba(0,0,0,.006);border:2px solid rgba(0,0,0,.1);border-radius:9px;transition:.15s}input:checked{border-color:#4360b7}label{display:inline-block;margin-top:9px;margin-right:9px;font-size:15px}</style><title>写源助手</title></head><body><div class=\"card\"><details><summary>发现格式工具</summary></details><div><textarea id=\"text\" rows=\"3\" placeholder=\"请输入要处理的内容\"></textarea><a>格式转换</a><div class=\"flex\"><button onclick=\"Format()\">html转旧发现</button><button onclick=\"Switch()\">新旧发现互转</button></div><a>每行列数<span>仅新发现</span></a><div class=\"flex\"><button onclick=\"Add(1)\">1</button><button onclick=\"Add(.4)\">2</button><button onclick=\"Add(.25)\">3</button><button onclick=\"Add(.2)\">4</button><button onclick=\"Add(.15)\">5</button></div><a>快捷功能</a><div class=\"flex\"><button onclick=\"Copy('#text')\">复制全文</button><button onclick=\"Cut('#text')\">剪切全文</button><button onclick=\"Empty('#text')\">清空</button></div></div></div><div class=\"card\"><details><summary>正则匹配替换</summary></details><div><textarea id=\"text1\" rows=\"3\" placeholder=\"请输入要处理的内容\"></textarea><a>正则匹配</a><textarea id=\"matchText\" rows=\"1\" placeholder=\"正则表达式\"></textarea><label><input id=\"global\" type=\"checkbox\" checked>全局搜索</label><label><input id=\"ignoreCase\" type=\"checkbox\">忽略大小写</label><div class=\"flex\"><button onclick=\"Match()\">进行匹配</button><button onclick=\"Copy('#matchResult')\">复制结果</button><button onclick=\"Reset()\">清空</button></div><div id=\"tip\"></div><textarea id=\"matchResult\" rows=\"3\" placeholder=\"匹配结果\"></textarea><a>正则替换</a><textarea id=\"replaceText\" rows=\"1\" placeholder=\"想要替换成什么\"></textarea><div class=\"flex\"><button onclick=\"Add1('{\\{page}}')\">&#123;&#123;page&#125;&#125;</button><button onclick=\"Add1('\\\\')\">\\</button><button onclick=\"Add1('<')\">&lt;</button><button onclick=\"Add1('>')\">&gt;</button></div><div class=\"flex\"><button onclick=\"Replace()\">进行替换</button><button onclick=\"Copy('#replaceResult')\">复制结果</button></div><textarea id=\"replaceResult\" rows=\"3\" placeholder=\"替换结果\"></textarea></div></div><div class=\"card\"><details><summary>编码格式转换</summary></details><div><textarea id=\"text2\" rows=\"3\" placeholder=\"请输入要处理的内容\"></textarea><a>url编码</a><label><input id=\"ignoreComponent\" type=\"checkbox\">编码<span>@#$&amp;=:/,;?+</span></label><div class=\"flex\"><button onclick=\"Encode()\">进行编码</button><button onclick=\"Decode()\">进行解码</button></div><a>html转义</a><label><input id=\"super\" type=\"checkbox\">转义全部字符</label><div id=\"temp\" hidden></div><div class=\"flex\"><button onclick=\"EncodeHtml()\">进行转义</button><button onclick=\"DecodeHtml()\">进行反转义</button></div><a>快捷功能</a><div class=\"flex\"><button onclick=\"Copy('#text2')\">复制全文</button><button onclick=\"Cut('#text2')\">剪切全文</button><button onclick=\"Empty('#text2')\">清空</button></div></div></div><div class=\"card\"><details><summary>外部在线工具</summary></details><div><div class=\"flex\"><button onclick=\"window.open('https://tool.lu/zhconvert')\">简繁转换</button><button onclick=\"window.open('https://www.yuque.com/legado/yuan')\">写源教程</button></div></div></div><script>$=(t=>document.querySelector(t)),$$=(t=>document.execCommand(t)),Copy=(t=>{$(t).select(),$$(\"copy\")}),Empty=(t=>{x=$(t),x.value=\"\",x.focus()}),Cut=(t=>{$(t).select(),$$(\"cut\")}),Format=(()=>{if(t=$(\"#text\"),list=t.value.match(/<[^<]*?(href|open)[=\\(]['\"]([\\s\\S]*?)['\"][\\s\\S]*?>([\\s\\S]*?)</g),list){for(html=\"\",i=0;i<list.length;++i)a=list[i].match(/<[^<]*?(href|open)[=\\(]['\"]([\\s\\S]*?)['\"][\\s\\S]*?>([\\s\\S]*?)</),html+=a[3].trim().replace(/\\n/g,\" \")+\"::\"+a[2]+\"\\r\\n\";t.value=html.replace(/\\r\\n$/,\"\")}}),Switch=(()=>{t=$(\"#text\");try{for(html=\"\",json=JSON.parse(t.value),i=0;i<json.length;++i)html+=json[i].title+\"::\"+json[i].url+\"\\r\\n\";t.value=html.replace(/\\r\\n$/,\"\")}catch(e){if(t.value.match(/\\&\\&|::/g)){for(text=t.value.replace(/\\&\\&/g,\"\\r\\n\"),list=text.match(/.*?::.*/g),html=[],i=0;i<list.length;++i)a=list[i].match(/(.*?)::(.*)/),html.push({title:a[1],url:a[2],style:{layout_flexGrow:1,layout_flexBasisPercent:null}});t.value=JSON.stringify(html)}}}),Add=(t=>{x=$(\"#text\");try{for(json=JSON.parse(x.value),i=0;i<json.length;++i)json[i].style={layout_flexGrow:1,layout_flexBasisPercent:t};x.value=JSON.stringify(json)}catch(t){}}),BuildRegex=(()=>(text=$(\"#text1\"),text.value?(match=$(\"#matchText\"),match.value?(op=$(\"#global\").checked?\"g\":\"\",op=$(\"#ignoreCase\").checked?op+\"i\":op,new RegExp(match.value,op)):(match.focus(),!1)):(text.focus(),!1))),Match=(()=>{if(regex=BuildRegex(),t=$(\"#tip\"),x=$(\"#matchResult\"),tip=text=t.textContent=t.style=x.value=\"\",match=$(\"#text1\").value.match(regex),$(\"#global\").checked){for(i=0;i<match.length;++i)text+=match[i]+\"\\r\\n\";tip=\"共找到 \"+match.length+\" 处匹配：\\r\\n\",text=text.replace(/\\r\\n$/,\"\")}else tip=\"匹配位置：\"+regex.lastIndex,text=match[0];return t.textContent=tip,t.style.marginTop=\"9px\",x.value=text,!0}),Reset=(()=>{$(\"#text1\").value=$(\"#matchText\").value=$(\"#tip\").textContent=t.style=$(\"#matchResult\").value=$(\"#replaceText\").value=$(\"#replaceResult\").value=\"\",$(\"#text1\").focus()}),Add1=(t=>{x=$(\"#replaceText\"),start=x.selectionStart,length=x.selectionEnd-start,json=x.value.split(\"\"),json.splice(start,length,t),x.value=json.join(\"\"),x.focus(),x.selectionStart=t.length+start,x.selectionEnd=t.length+start}),Replace=(()=>{regex=BuildRegex(),$(\"#replaceResult\").value=$(\"#text1\").value.replace(regex,$(\"#replaceText\").value)}),Encode=(()=>{t=$(\"#text2\"),text=t.value,t.value=$(\"#ignoreComponent\").checked?encodeURIComponent(text):encodeURI(text)}),Decode=(()=>{t=$(\"#text2\"),text=t.value,t.value=decodeURIComponent(text)}),EncodeHtml=(()=>{if(t=$(\"#text2\"),text=t.value,$(\"#super\").checked)for(u=\"\",i=0;i<text.length;++i)u+=\"&#\"+text.charCodeAt(i)+\";\";else x=$(\"#temp\"),x.textContent=text,u=x.innerHTML;t.value=u}),DecodeHtml=(()=>{t=$(\"#text2\"),text=t.value,x=$(\"#temp\"),x.innerHTML=text.replace(/<br>/g,\"\\r\\n\").replace(/</g,\"&#60;\").replace(/>/g,\"&#62;\"),t.value=x.textContent});</script></body></html>\n🔵0\n🔴1<!doctype html><html><head lang=\"zh\"><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"><title>快捷导入</title><style>*{line-height:1em;margin:0;padding:0;text-underline-offset:.2em;word-break:break-all}body{background-color:#f4f5f7;display:flex;flex-wrap:wrap;place-content:center;place-items:start;padding:15px;color:#001944}.card{border-top:.5px solid rgba(255,255,255,.7);border-radius:24px;background-color:rgba(255,255,255,.6);box-shadow:0 10px 20px rgba(0,0,0,.05);padding:30px;margin:12.5px;width:250px;height:auto}.card>details+div{overflow:hidden;max-height:0;opacity:0;transition:.6s}.card>[open]+div{max-height:888px;opacity:1}.card>details>summary::-webkit-details-marker{display:none}.card>details>summary::-moz-list-bullet{display:none}.card>details>summary{font-size:24px;font-weight:700;user-select:none;outline:0;opacity:.4;transition:.6s;display:block}.card>[open]>summary{opacity:1;margin-bottom:6px;font-size:20.5px}.card>b{margin-bottom:6px;font-size:20.5px;display:block}.flex{display:flex;flex-wrap:wrap}.text{line-height:1.4em;display:inline-block;margin-top:9px}a:not([href]){margin-top:9px;margin-right:9px;display:inline-block}a[href]{color:#4360b7;text-decoration:none;margin:.2em}a[href]:hover{text-decoration:underline}legend{background-color:rgba(0,0,0,.04);padding:.15em .3em;border-radius:.5em;margin-left:.2em;font-family:monospace;opacity:.75}button{font-size:13.5px;font-weight:700;color:#4360b7;background-color:#e7eeff;padding:.65em .9em;margin-top:9px;margin-right:10px;border-radius:2em;border:none;transition:.3s}button:active{background-color:#d6ddee}textarea{margin-top:9px;padding:9px;width:100%;box-sizing:border-box;line-height:1.2em;font-size:13px;min-height:37.6px;max-height:115.6px;resize:vertical;border-radius:9px;color:#333;border:2px solid rgba(0,0,0,.1);background-color:rgba(0,0,0,.006)}input{vertical-align:middle;appearance:none;margin:-2px 2.25px 0 0;width:15px;height:15px;box-sizing:border-box;background-color:rgba(0,0,0,.006);border:2px solid rgba(0,0,0,.1);border-radius:9px;transition:.15s}input:checked{border-color:#4360b7}label{display:inline-block;margin-top:9px;margin-right:9px;font-size:15px}fieldset{border:2px solid rgba(0,0,0,.1);background-color:rgba(0,0,0,.006);border-radius:9px;margin-top:9px;padding:5px 18px 18px 18px}</style></head><body><div class=\"card\"><b>快捷导入</b><textarea id=\"url\" rows=\"4\" placeholder=\"请输入资源链接\"></textarea><fieldset><legend>导入格式</legend><label><input type=\"radio\" name=\"path\" value=\"auto\" checked>自动识别</label><label><input type=\"radio\" name=\"path\" value=\"bookSource\">书源</label><label><input type=\"radio\" name=\"path\" value=\"rssSource\">订阅源</label><label><input type=\"radio\" name=\"path\" value=\"replaceRule\">替换规则</label><label><input type=\"radio\" name=\"path\" value=\"textTocRule\">TXT目录规则</label><label><input type=\"radio\" name=\"path\" value=\"httpTTS\">TTS</label><label><input type=\"radio\" name=\"path\" value=\"theme\">主题</label><label><input type=\"radio\" name=\"path\" value=\"readConfig\">排版</label><label><input type=\"radio\" name=\"path\" value=\"dictRule\">字典规则</label></fieldset><div class=\"flex\"><button onclick=\"Import()\">点击导入</button><button onclick=\"Copy()\">复制</button><button onclick=\"Empty()\">清空</button></div></div><div class=\"card\"><details><summary>长期链接</summary></details><div><fieldset><legend>书源</legend><button onclick=\"SetUrl('https://ghproxy.org/https://raw.githubusercontent.com/shidahuilang/shuyuan/shuyuan/good.json★1')\">大灰狼</button><button onclick=\"SetUrl('https://ghproxy.org/https://raw.githubusercontent.com/zmn001125/booksources/master/sources/guaner.txt★1')\">关耳</button><button onclick=\"SetUrl('https://ghproxy.org/https://raw.githubusercontent.com/cyao2q/yuedu/master/shuyuan★1')\">漠星曜</button><button onclick=\"SetUrl('https://ghproxy.org/https://raw.githubusercontent.com/PB-pobing/pobing/pb/sy.json★1')\">破冰</button><button onclick=\"SetUrl('https://ghproxy.org/https://raw.githubusercontent.com/XIU2/Yuedu/master/shuyuan★1')\">XIU2</button><button onclick=\"SetUrl('https://www.gitlink.org.cn/api/yi-c/yd/raw/sy.json?ref=master★1')\">一程</button></fieldset><fieldset><legend>订阅源</legend><button onclick=\"SetUrl('https://www.gitlink.org.cn/api/yi-c/yd/raw/dy.json?ref=master★2')\">一程</button></fieldset><fieldset><legend>替换规则</legend><button onclick=\"SetUrl('https://ghproxy.org/https://raw.githubusercontent.com/shidahuilang/shuyuan/shuyuan/jinghua.json★3')\">大灰狼</button></fieldset><fieldset><legend>TTS</legend><button onclick=\"SetUrl('https://ghproxy.org/https://raw.githubusercontent.com/shidahuilang/shuyuan/shuyuan/tts.json★5')\">大灰狼</button></fieldset></div></div><script>$=(e=>document.querySelector(e)),Copy=(()=>{$(\"#url\").select(),document.execCommand(\"copy\")}),Empty=(()=>{x=$(\"#url\"),x.value=\"\",x.focus(),$('[value=\"auto\"]').checked=!0}),Import=(()=>{if(t=$(\"#url\"),!t.value)return t.focus(),!1;path=$('[name=\"path\"]:checked').value,location=`yuedu://import/${path}?src=`+encodeURIComponent(t.value)}),SetUrl=(e=>{x=$(\"#url\"),x.value=e.split(\"★\")[0],document.querySelectorAll('[name=\"path\"]')[e.split(\"★\")[1]].checked=!0,x.focus(),Import()});</script></body></html>\n🔵1\n{{}}\n@js:\nu = \"{{$.link}}\";\nif (/^\\d+$/.test(u)) {\ntry {\n  result.match(`🔴${u}([\\\\s\\\\S]*?)🔵${u}`)[1];\n} catch (err) { \"\"; }\n} else { \"\"; }",
    "ruleImage": "$.img\n@js:\nr = result;\nr == 0 ? source.sourceIcon: r;",
    "ruleLink": "$.link",
    "rulePubDate": "$.date",
    "ruleTitle": "$.title",
    "shouldOverrideUrlLoading": "if (/s?q=/.test(url)) {\n  q = java.toURL(url).searchParams.get('q');\n  java.searchBook(q.split(' ')[0]);\n  true;\n}",
    "singleUrl": false,
    "sortUrl": "寻书::https://bing.com/search?q=https://quark.sm.cn/api/rest?method=Novelnew.home&format=html&schema=v2&cate=全部&rank=rank_hot&gender=male【夸克热搜】大家都在搜的热点＃★https://vt.sm.cn/api/novelStarReco/index【星云推书】点亮你的兴趣星球＃\n\n找源::https://bing.com/search?q=https://link3.cc/yckceo【源仓库】最新地址发布页＃★https://rensr.site/shuyuan【任尚仁书源云】@任尚仁 rsren＃★https://shuyuan.yiove.com【YiOVE书源仓库】阅读爱好者＃★https://legado.aoaostar.com【阅读APP源】@AOAOSTAR＃★http://yuedu.miaogongzi.net/gx.html【阅读书源】@喵公子＃★https://qyyuapi.com【xiaohan231书源发布页】@xiaohan231＃\n\n工具::https://bing.com/search?q=0【写源助手】会有用喔(大概)＃★1【快捷导入】各种格式！＃",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGZpbGw9IiM0NDQiIGQ9Ik04LjQyMiAyMC42MThDMTAuMTc4IDIxLjU0IDExLjA1NiAyMiAxMiAyMlYxMkwyLjYzOCA3LjA3M2EzLjE5NiAzLjE5NiAwIDAgMC0uMDQuMDY3QzIgOC4xNTQgMiA5LjQxNyAyIDExLjk0MnYuMTE3YzAgMi41MjQgMCAzLjc4Ny41OTcgNC44MDFjLjU5OCAxLjAxNSAxLjY3NCAxLjU4IDMuODI1IDIuNzA5eiIvPjxwYXRoIGZpbGw9IiM0NDQiIGQ9Im0xNy41NzcgNC40MzJsLTItMS4wNUMxMy44MjIgMi40NjEgMTIuOTQ0IDIgMTIgMmMtLjk0NSAwLTEuODIyLjQ2LTMuNTc4IDEuMzgybC0yIDEuMDVDNC4zMTggNS41MzYgMy4yNDIgNi4xIDIuNjM4IDcuMDcyTDEyIDEybDkuMzYyLTQuOTI3Yy0uNjA2LS45NzMtMS42OC0xLjUzNy0zLjc4NS0yLjY0MSIgb3BhY2l0eT0iLjciLz48cGF0aCBmaWxsPSIjNDQ0IiBkPSJNMjEuNDAzIDcuMTRhMy4xNTMgMy4xNTMgMCAwIDAtLjA0MS0uMDY3TDEyIDEydjEwYy45NDQgMCAxLjgyMi0uNDYgMy41NzgtMS4zODJsMi0xLjA1YzIuMTUxLTEuMTI5IDMuMjI3LTEuNjkzIDMuODI1LTIuNzA4Yy41OTctMS4wMTQuNTk3LTIuMjc3LjU5Ny00Ljh2LS4xMTdjMC0yLjUyNSAwLTMuNzg4LS41OTctNC44MDIiIG9wYWNpdHk9Ii41Ii8+PC9zdmc+",
    "sourceName": "方寸合集",
    "sourceUrl": "人间"
  },
  {
    "articleStyle": 0,
    "customOrder": 4994,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"\"}",
    "lastUpdateTime": 1765912231783,
    "loadWithBaseUrl": true,
    "ruleArticles": "<js>\nsort = [];\nL = String(baseUrl).replace(/^h.*?\\=/,'').split('★');\nfor (i = 0; i < L.length; i ++) {\n  sort.push ({\n    title: L[i].match(/【(.*?)】/)[1],\n    date: L[i].match(/】(.*?)＃/)[1],\n    img: L[i].match(/＃(.*)/)[1],\n    link: L[i].match(/(.*?)【/)[1],\n  });\n};\nJSON.stringify(sort);\n</js>\n$.[*]",
    "ruleDescription": "🟩0\n<!doctype html>\n<html>\n<head lang=\"zh\">\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 http-equiv=\"x-ua-compatible\" content=\"ie=edge\">\n<link rel=\"icon\" href=\"yuedu.svg\">\n<title>写源助手</title>\n<style>\nbody {\n  background-color: #f4f5f7;\n  display: flex;\n  flex-wrap: wrap;\n  place-content: center;\n  place-items: start;\n}\n.card {\n  border-top: .5px solid rgba(255,255,255,.7);\n  color: #001944;\n  border-radius: 24px;\n  background-color: rgba(255,255,255,.5);\n  box-shadow: 0px 10px 20px rgba(0,0,0,.05);\n  padding: 30px;\n  margin: 12.5px;\n  width: 250px;\n}\n.flex {\n  display: flex;\n  flex-wrap: wrap;\n}\ndetails + div {\n  overflow: hidden;\n  max-height: 0;\n  opacity: 0;\n  transition: .5s;\n}\n[open] + div {\n  max-height: 888px;\n  opacity: 1;\n}\nsummary {\n  font-size: 23px;\n  font-weight: 700;\n  user-select: none;\n  outline: 0;\n  opacity: .45;\n  transition: .5s;\n  display: block;\n}\n[open] summary {\n  opacity: 1;\n  margin-bottom: 7px;\n  font-size: 20px;\n}\na {\n  margin-top: 7px;\n  display: inline-block;\n  span { margin-left: 7px; }\n}\nspan {\n  background-color: rgba(0,0,0,.04);\n  font-family: monospace;\n  font-size: 13px;\n  padding: .125em .25em;\n  border-radius: .5em;\n  opacity: .8;\n}\nbutton {\n  font-size: 13px;\n  font-weight: 700;\n  color: #4360b7;\n  background-color: #e7eeff;\n  padding: 6.5px 13px;\n  margin-top: 7px;\n  margin-right: 7px;\n  border-radius: 28px;\n  border:none;\n  transition: .3s;\n}\nbutton:active { background-color: #d6ddee; }\ntextarea {\n  margin-top: 7px;\n  padding: 7px;\n  width: 232px;\n  min-height: 72px;\n  max-height: 143px;\n  display: block;\n  resize: vertical;\n  font-size: 13px;\n  border-radius: 8px;\n  color: #333;\n  border: 2px solid rgba(0,0,0,.1);\n  background-color: rgba(0,0,0,.01);\n}\n#matchText,\n#replaceText {\n  resize: none;\n  min-height: 17px;\n  max-height: 17px;\n}\ninput {\n  appearance: none;\n  vertical-align: middle;\n  margin-right: 3px;\n  margin-bottom: 6px;\n  width: 15px;\n  height: 15px;\n  background-color: rgba(0,0,0,.01);\n  border: 2px solid rgba(0,0,0,.1);\n  border-radius: 8px;\n  transition: .3s;\n}\ninput:checked { border-color: #4360b7; }\nlabel {\n  display: inline-block;\n  margin-top: 10px;\n  font-size: 15px;\n}\n#tip { margin-top: 7px; }\n#temp { display: none; }\n</style>\n</head>\n<body>\n<div class=\"card\">\n  <details>\n    <summary>发现格式工具</summary>\n  </details>\n  <div>\n    <textarea id=\"text\" placeholder=\"请输入要处理的内容\"></textarea>\n    <a>格式转换</a>\n    <div class=\"flex\">\n      <button onclick=\"Format()\">html转旧发现</button>\n      <button onclick=\"Switch()\">新旧发现互转</button>\n    </div>\n    <a>每行列数<span>仅新发现</span></a>\n    <div class=\"flex\">\n      <button onclick=\"Add(1)\">1</button>\n      <button onclick=\"Add(0.4)\">2</button>\n      <button onclick=\"Add(0.25)\">3</button>\n      <button onclick=\"Add(0.2)\">4</button>\n      <button onclick=\"Add(0.15)\">5</button>\n    </div>\n    <a>快捷功能</a>\n    <div class=\"flex\">\n      <button onclick=\"Copy('#text')\">复制全文</button>\n      <button onclick=\"Cut('#text')\">剪切全文</button>\n      <button onclick=\"Empty('#text')\">清空</button>\n    </div>\n  </div>\n</div>\n<div class=\"card\">\n  <details>\n    <summary>正则匹配替换</summary>\n  </details>\n  <div>\n    <textarea id=\"text1\" placeholder=\"请输入要处理的内容\"></textarea>\n    <a>正则匹配</a>\n    <textarea id=\"matchText\" placeholder=\"正则表达式\"></textarea>\n    <label>\n      <input id=\"global\" type=\"checkbox\" checked>\n      全局搜索\n    </label>\n    <label>\n      <input id=\"ignoreCase\" type=\"checkbox\">\n      忽略大小写\n    </label>\n    <div class=\"flex\">\n      <button onclick=\"Match()\">进行匹配</button>\n      <button onclick=\"Copy('#matchResult')\">复制结果</button>\n      <button onclick=\"Reset()\">清空</button>\n    </div>\n    <div id=\"tip\"></div>\n    <textarea id=\"matchResult\" placeholder=\"匹配结果\"></textarea>\n    <a>正则替换</a>\n    <textarea id=\"replaceText\" placeholder=\"想要替换成什么\"></textarea>\n    <div class=\"flex\">\n      <button onclick=\"Add1('{\\{page}}')\">{&#123;page}}</button>\n      <button onclick=\"Add1('\\\\')\">&#92;</button>\n      <button onclick=\"Add1('&#60;')\">&#60;</button>\n      <button onclick=\"Add1('&#62;')\">&#62;</button>\n    </div>\n    <div class=\"flex\">\n      <button onclick=\"Replace()\">进行替换</button>\n      <button onclick=\"Copy('#replaceResult')\">复制结果</button>\n    </div>\n    <textarea id=\"replaceResult\" placeholder=\"替换结果\"></textarea>\n  </div>\n</div>\n<div class=\"card\">\n  <details>\n    <summary>编码格式转换</summary>\n  </details>\n  <div>\n    <textarea id=\"text2\" placeholder=\"请输入要处理的内容\"></textarea>\n    <a>url编码</a>\n    <label>\n      <input id=\"ignoreComponent\" type=\"checkbox\">\n      编码<span>@#$&=:/,;?+</span>\n    </label>\n    <div class=\"flex\">\n      <button onclick=\"Encode()\">进行编码</button>\n      <button onclick=\"Decode()\">进行解码</button>\n    </div>\n    <a>html转义</a>\n    <label>\n      <input id=\"super\" type=\"checkbox\">\n      转义全部字符\n    </label>\n    <div id=\"temp\"></div>\n    <div class=\"flex\">\n      <button onclick=\"EncodeHtml()\">进行转义</button>\n      <button onclick=\"DecodeHtml()\">进行反转义</button>\n    </div>\n    <a>快捷功能</a>\n    <div class=\"flex\">\n      <button onclick=\"Copy('#text2')\">复制全文</button>\n      <button onclick=\"Cut('#text2')\">剪切全文</button>\n      <button onclick=\"Empty('#text2')\">清空</button>\n    </div>\n  </div>\n</div>\n<div class=\"card\">\n  <details>\n    <summary>外部在线工具</summary>\n  </details>\n  <div>\n    <div class=\"flex\">\n      <button onclick=\"window.location.href='https://www.iamwawa.cn/jianfanti.html'\">简繁转换</button>\n      <button onclick=\"window.location.href='https://www.yuque.com/legado/yuan'\">写源教程</button>\n    </div>\n  </div>\n</div>\n<script>\nfunction $(t) {\n  return document.querySelector(t);\n}\nfunction $$(t) {\n  document.execCommand(t);\n}\nfunction Format() {\n  t = $('#text');\n  list = t.value.match(/<[^<]+?href=['\"](.*?)['\"][^<]*?>(.*?)</g);\n  if (list) {\n    html = \"\";\n    for (i = 0; i < list.length; i++) {\n      a = list[i].match(/<[^<]+?href=['\"](.*?)['\"][^<]*?>(.*?)</g);\n      html += a[2] + \"::\" + a[1] + \"\\r\\n\"\n    };\n    t.value = html.replace(/\\r\\n$/, \"\");\n  }\n}\nfunction Switch() {\n  t = $('#text');\n  try {\n    html = \"\";\n    json = JSON.parse(t.value);\n    for (i = 0; i < json.length; i++) {\n      html += json[i].title + \"::\" + json[i].url + \"\\r\\n\"\n    };\n    t.value = html.replace(/\\r\\n$/, '');\n  } catch(err) {\n    if (t.value.match(/\\&\\&|::/g)) {\n      text = t.value.replace(/\\&\\&/g, '\\r\\n');\n      list = text.match(/.*?::.*/g);\n      html = [];\n      for (i = 0; i < list.length; i++) {\n        a = list[i].match(/(.*?)::(.*)/);\n        html.push({\n          title: a[1],\n          url: a[2],\n        });\n      };\n      t.value = JSON.stringify(html);\n    }\n  }\n}\nfunction Add(t) {\n  x = $('#text');\n  try {\n    json = JSON.parse(x.value);\n    for (i = 0; i < json.length; i++) {\n      json[i].style = {\n        layout_flexGrow: 1,\n        layout_flexBasisPercent: t,\n      }\n    };\n    x.value = JSON.stringify(json);\n  } catch(err) {\n    \"\";\n  }\n}\nfunction Copy(t) {\n  $(t).select();\n  $$('copy');\n}\nfunction Cut(t) {\n  $(t).select();\n  $$('cut');\n}\nfunction Empty(t) {\n  $(t).value = \"\";\n  $(t).focus();\n}\nfunction Reset() {\n  $('#text1').value = $('#matchText').value = $('#tip').textContent = $('#matchResult').value = $('#replaceText').value = $('#replaceResult').value = \"\";\n  $('#text1').focus();\n}\nfunction BuildRegex() {\n  text = $('#text1');\n  if (!text.value) {\n    text.focus();\n    return false;\n  }\n  match = $('#matchText');\n  if (!match.value) {\n    match.focus();\n    return false;\n  }\n  op = $('#global').checked ? \"g\": \"\";\n  op = $('#ignoreCase').checked ? op + \"i\": op;\n  return new RegExp(match.value, op);\n}\nfunction Match() {\n  regex = BuildRegex();\n  t = $('#tip');\n  x = $('#matchResult');\n  tip = text = t.textContent = x.value = \"\";\n  match = $('#text1').value.match(regex);\n  if ($('#global').checked) {\n    for (i = 0; i < match.length; i++) {\n      text += match[i] + \"\\r\\n\";\n    };\n    tip = \"共找到 \" + match.length + \" 处匹配：\\r\\n\";\n    text = text.replace(/\\r\\n$/, '');\n  } else {\n    tip = \"匹配位置：\" + regex.lastIndex;\n    text = match[0];\n  }\n  t.textContent = tip;\n  x.value = text;\n  return true;\n}\nfunction Add1(t) {\n  x = $('#replaceText');\n  start = x.selectionStart;\n  length = x.selectionEnd - start;\n  json = x.value.split('');\n  json.splice(start, length, t);\n  x.value = json.join('');\n  x.focus();\n  x.selectionStart = t.length + start;\n  x.selectionEnd = t.length + start;\n}\nfunction Replace() {\n  regex = BuildRegex();\n  $('#replaceResult').value = $('#text1').value.replace(regex, $('#replaceText').value);\n}\nfunction Encode() {\n  t = $('#text2');\n  text = t.value;\n  t.value = $('#ignoreComponent').checked ? encodeURIComponent(text): encodeURI(text);\n}\nfunction Decode() {\n  t = $('#text2');\n  text = t.value;\n  t.value = decodeURIComponent(text);\n}\nfunction EncodeHtml() {\n  t = $('#text2');\n  text = t.value;\n  if ($('#super').checked) {\n    u = \"\";\n    for (i = 0; i < text.length; i++){\n      u += \"&#\" + text.charCodeAt(i) + \";\";\n    };\n  } else {\n    x = $('#temp');\n    x.textContent = text;\n    u = x.innerHTML\n    .replace(/\"/g, '&quot;');\n  }\n  t.value = u;\n}\nfunction DecodeHtml() {\n  t = $('#text2');\n  text = t.value;\n  x = $('#temp');\n  x.innerHTML = text\n  .replace(/<br>/g, '\\r\\n')\n  .replace(/</g, '&#60;')\n  .replace(/>/g, '&#62;');\n  t.value = x.textContent;\n}\n</script>\n</body>\n</html>\n🟥0\n{{}}\n@js:\nu = \"{{$.link}}\";\nif (/^\\d+$/.test(u)) {\ntry {\n  result.match(`🟩${u}([\\\\s\\\\S]*?)🟥${u}`)[1];\n} catch (err) { \"\"; }\n} else { \"\"; }",
    "ruleImage": "$.img\n@js:\nresult != \"\" ? result: source.sourceIcon;",
    "ruleLink": "$.link",
    "rulePubDate": "$.date",
    "ruleTitle": "$.title",
    "singleUrl": false,
    "sortUrl": "默认::https://bing.com/search?q=0【写源助手】简单小工具＃",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjUxNHB0IiBoZWlnaHQ9IjUxNHB0IiB2aWV3Qm94PSIwIDAgNTE0IDUxNCI+PHBhdGggZD0iTTIzNy4xNDYgMi4wNTdDMTYyLjc0NCA4LjY4OCA5Ni44NTIgNDQuODU1IDUyLjk3MyAxMDMuMTQ0Yy0yNi4xOSAzNC43OTEtNDIuNDEyIDczLjgxMy00OS4wNTUgMTE4LTMuMDYxIDIwLjM2MS0zLjA2NiA1MS41MS0uMDEyIDcxLjcxMkMxNi43ODggMzc4LjA3IDY3LjA3IDQ0Ny41NDEgMTQzLjUwOSA0ODUuNzM0YzM2LjY5MiAxOC4zMzQgNzEuMzYxIDI2LjM5OCAxMTMuNDkxIDI2LjM5OCA0Mi4xMyAwIDc2Ljc5OS04LjA2NCAxMTMuNDkxLTI2LjM5OCA2Mi4wNi0zMS4wMDkgMTA3LjI3NC04Mi45MDIgMTI4LjkxOC0xNDcuOTY1IDkuMjEzLTI3LjY5NCAxMi45MDctNTEuMTk2IDEyLjg1Mi04MS43NjktLjA0Mi0yMy42MDItMi4xNTUtNDAuNjk3LTcuNzA4LTYyLjM2Mi0yMy44MzMtOTIuOTkyLTk4LjMxLTE2NS4zMDMtMTkxLjU2Mi0xODUuOTkzLTIzLjY4LTUuMjU0LTU0LjI5My03LjUwOS03NS44NDUtNS41ODhNMTk2LjUgMjA4LjQxOWMyLjIuNzY0IDQuMTMyIDIuMDM4IDQuMjk0IDIuODMzLjE2Mi43OTQtMi44NzYgNC45MzQtNi43NSA5LjE5OS02Ljk4NCA3LjY4OS04LjQ5NCAxMS4wNTUtNS40OCAxMi4yMTIgMS43NDIuNjY4IDQuNjU0LS41OTkgOC40ODMtMy42OTJsMi41NDYtMi4wNTggNC43OTcgMi42ODFjNC41MTIgMi41MjIgNC43NTUgMi44NjYgNC4xIDUuNzk0LS4zODMgMS43MTEtLjk4NyA3LjgxMS0xLjM0MyAxMy41NTRsLS42NDcgMTAuNDQzLTYuNzYyLjE1MmMtNy4zMjguMTY2LTguNjI4LjY4Ni02LjkwNCAyLjc2My43MTMuODU5IDEuMjE5IDguMDQ0IDEuMzkzIDE5Ljc3NGwuMjczIDE4LjQyNiAzLjg3NS4zMThjMy4xMzUuMjU3IDQuNDM2LS4yMiA2LjgxOS0yLjVsMi45NDQtMi44MTggMi45MDIgMy41YzEuNTk3IDEuOTI1IDIuNzY3IDMuOTUgMi42MDEgNC41LS4xNjYuNTUtNS4xMjQgMS4zMjQtMTEuMDE3IDEuNzItNy4xMzguNDgtMTEuNjY0IDEuMjgyLTEzLjU1OCAyLjQtMS41NjQuOTI0LTMuNTY4IDEuNDAxLTQuNDU1IDEuMDYxLTEuNzA1LS42NTQtMS43ODYtMi4xMTktMS44MDktMzIuNjgxLS4wMDUtNi44NzUtLjQyOS0xMy4yODctLjk0MS0xNC4yNS0uNjEyLTEuMTUxLTIuMTE4LTEuNzUtNC4zOTYtMS43NS0zLjM0IDAtNC41NCAxLjIxNy0yLjQ2NSAyLjUgMS44NzIgMS4xNTcgMS4wMDcgMy43ODYtMi43NSA4LjM1OC0yLjA2MiAyLjUxLTQuMiA1LjI5NC00Ljc1IDYuMTg3LS41NS44OTMtMi43MDUgNC4wNjEtNC43ODggNy4wMzktNy40MyAxMC42MjQtOC43MjEgMTIuNDg0LTEyLjQyOSAxNy45MTYtNS42NDQgOC4yNjktNS4yODMgMy45NTYuNjYxLTcuODg5IDIuNzgxLTUuNTQxIDUuMDU2LTEwLjU1NCA1LjA1Ni0xMS4xMzkgMC0uNTg1IDEuNjI5LTQuNTMxIDMuNjE5LTguNzY4IDUuNzA1LTEyLjE0MyA0LjU5Ni0xNy42MjEtMi4zOC0xMS43NTItNS45ODkgNS4wNC02LjIzOSA0LjQ2NC02LjIzOS0xNC4zOTMgMC0xNy4xOTcuNTA0LTE5LjU0NSAzLjYzOS0xNi45NDMgMS4wMzEuODU1IDUuNTMxIDEuMzcxIDEzLjM4OCAxLjUzNWwxMS44MzYuMjQ3IDIuMTQyLTMuNjMxYzIuMTQ5LTMuNjQyIDQuMTg4LTkuMTY0IDUuNDUzLTE0Ljc2Ny43NDUtMy4yOTggMy4xNzItNy41MDkgNC4zMTUtNy40ODUuNC4wMDggMi41MjcuNjQgNC43MjcgMS40MDRtMzguNzc0LTEyLjY1MWMzLjYyOSAzLjcxNyAzLjY1OCAzLjgwOSAyLjA4NSA2Ljc1LTEuNzk0IDMuMzU0LTIuMDc3IDEyLjgzOC0yLjMxNSA3Ny40ODJsLS4xMzggMzcuNS01Ljg0NiA2LjM2LTUuODQ1IDYuMzYtOC4xNjYtOC4xMTFjLTQuNDkxLTQuNDYxLTcuODc0LTguNTgyLTcuNTE4LTkuMTU5LjM5OC0uNjQ0IDEuMDk0LS42OTcgMS44MDgtLjEzNy42MzkuNTAxIDMuMzc0IDEuMiA2LjA3OCAxLjU1MyA5LjE4OSAxLjE5OSA4LjU5MyA1LjEzOSA4LjUxMy01Ni4yNzEtLjAzOS0yOS40NzctLjM5OS01NC40My0uODAxLTU1LjQ1MS0uNDAxLTEuMDIxLTIuMTg3LTIuNDctMy45NjktMy4yMTktMS43ODEtLjc0OS0yLjk2NC0uOTE4LTIuNjI5LS4zNzUuMzk2LjY0Mi03LjQ3MS44OTMtMjIuNDYyLjcxOS0xNC41MzUtLjE3LTIzLjA3MS0uNjM5LTIzLjA3MS0xLjI2OSAwLS42MzUgOS42NzQtMS4wOTcgMjYuNDg5LTEuMjY2bDI2LjQ4OC0uMjY3IDEuNjI4LTIuNDgzYzIuMjk5LTMuNTEgNS4zOTEtMy4wOTkgOS42NzEgMS4yODRtNTUuODM2IDMyLjRjMi42OSAxLjc0MyA0Ljg5IDMuMzM0IDQuODkgMy41MzYgMCAuMjAxLS42ODIgMS40MDctMS41MTYgMi42NzktMS4yODIgMS45NTctMS40NzQgNi43NjMtMS4yNSAzMS4yMTUuMzA2IDMzLjI5NC0uMDUzIDMyLjMxMiA5LjUxNiAyNS45ODcgMi44ODgtMS45MDggNS4yNS0zLjEyNyA1LjI1LTIuNzA3IDAgLjQyLTIuNTg3IDMuNDM4LTUuNzUgNi43MDYtMy4xNjIgMy4yNjgtOS4wNDMgOS42NDgtMTMuMDY4IDE0LjE3OS00Ljg0OSA1LjQ1OC04LjAzOCA4LjIzNy05LjQ1MiA4LjIzNy0yLjUzNyAwLTguNzMtNS42OTUtOC43My04LjAyOSAwLS45IDEuOC0zLjA4MyA0LTQuODUxbDQtMy4yMTR2LTMyLjMzMWMwLTI2LjkzNS0uMjQxLTMyLjUzLTEuNDQxLTMzLjUyNi0uNzkzLS42NTgtNC41MDYtMS4yMjgtOC4yNS0xLjI2Ni02LjY1OS0uMDY3LTkuODM3LTEuMTItOC43MzktMi44OTYuMzAxLS40ODggNC4zOTEtLjg4NyA5LjA4OC0uODg3IDguMTk5IDAgOC42NTEtLjEyIDExLjM0Mi0zIDEuNTQxLTEuNjUgMy4zNDctMyA0LjAxMi0zIC42NjUgMCAzLjQwOSAxLjQyNiA2LjA5OCAzLjE2OG0tMTYxLjM2LTIwLjE5NSA0LjI1IDEuOTI5VjMxNy4xMmwtNS4xNDUgNS40NGMtMi44MyAyLjk5Mi01LjUzIDUuNDQtNiA1LjQ0LS45OTUgMC0xLjE4Mi0xMjAuMzM5LS4xODgtMTIxLjMzMyAxLjA0Mi0xLjA0MiAyLjUwMy0uNzczIDcuMDgzIDEuMzA2TTM0My41IDIzNmMuOTk1IDEuMSAyLjg0OSAyIDQuMTIgMiAzLjgyMiAwIDQuNTM3IDMuMDI0IDQuNDQ2IDE4LjgyNS0uMDQ2IDguMDcxLS4xOTIgMTUuOC0uMzI1IDE3LjE3NWwtLjI0MSAyLjUgMTIuNjM5LjI3OSAxMi42NC4yNzkgNC4wMTQtNC41NiA0LjAxNC00LjU2IDQuMzQ3IDIuOTRjNS40MzMgMy42NzYgOS40MjYgNy44NzcgOC40MjggOC44NjgtLjQxNy40MTUtNC44ODEuNzU0LTkuOTIuNzU0LTI4LjM1MiAwLTM1LjYxNS40NTEtMzcuNDEyIDIuMzIyLS45NjIgMS4wMDItNS41NzUgNi4yMTEtMTAuMjUgMTEuNTc0YTgyNjMuMjc4IDgyNjMuMjc4IDAgMCAxLTEzLjUgMTUuNDUzYy0yLjc1IDMuMTM1LTYuNDkgNy40MjQtOC4zMTIgOS41MzEtMS44MjEgMi4xMDYtMy41MzEgMy42MTEtMy43OTkgMy4zNDMtLjU1OS0uNTU5IDIuNTgxLTYuMzcyIDYuNjAxLTEyLjIyMyAxLjUxMS0yLjIgMy42NzYtNS41NzUgNC44MTEtNy41IDEuMTM0LTEuOTI1IDQuMTE4LTYuOTY3IDYuNjMxLTExLjIwMyAyLjUxMi00LjIzNyA0LjU2OC04LjM4OSA0LjU2OC05LjIyNiAwLTEuMjkyLTIuNTM4LTEuNTY0LTE2Ljc1LTEuNzk3LTE0LjEtLjIzMS0xNi43NS0uNTExLTE2Ljc1LTEuNzc0IDAtMS4yNjEgMi42MTUtMS41NDQgMTYuNDI4LTEuNzc2IDEwLjA0Mi0uMTY4IDE2Ljk0My0uNzAyIDE3Ljc1LTEuMzcyIDEuMDE0LS44NDEgMS4zMjItNS42OSAxLjMyMi0yMC44MDggMC0yMi4wOTEuMzYxLTIzLjYxOCA0LjUtMTkuMDQ0bTEuNDcyLTUwLjAxNGMyLjE0MSAxLjA5MiA0LjI2IDIuNTU0IDQuNzEgMy4yNS40NS42OTUuODE4IDQuNDE0LjgxOCA4LjI2NHY3bDguMTc1LjI4OWM3LjkzLjI4MSA4LjI2OS4xOTggMTEuMjg1LTIuNzUgMS43MS0xLjY3MSAzLjQxLTMuMDM5IDMuNzc3LTMuMDM5IDEuMjQgMCA3LjI2MyA2LjM4MiA3LjI2MyA3LjY5NiAwIDEuMDEyLTMuMjQxIDEuMzA0LTE0LjQ2NSAxLjMwNC0xNi44NTggMC0xNi4zMzEtLjM0MS0xNi4wNTUgMTAuMzg4LjIzOSA5LjI5OS43ODIgOS42MzcgMTQuMzc2IDguOTUxIDguMjI2LS40MTUgMTEuMjU5LS45NjggMTMuMzU0LTIuNDM4IDEuNDktMS4wNDUgMy4yNDMtMS45MDEgMy44OTctMS45MDEuOTY2IDAgNi42NzcgNC4xMSAxMS4zMTkgOC4xNDcgMS4wMDYuODc1LTIuMDUzIDQuODUzLTMuNzMxIDQuODUzLS41NDcgMC00LjE0OSAxLjgxOC04LjAwNCA0LjA0MS03Ljk0OCA0LjU4My0xMC4wNTggNC4yMjktNy43OTctMS4zMDUuNzI4LTEuNzggMS4zODYtNC4xMzYgMS40NjQtNS4yMzYuMTM5LTEuOTU2LS42MzEtMi4wMTEtMzQuODU4LTIuNS0yOS4xMy0uNDE2LTM1LS43MzUtMzUtMS45MDMgMC0xLjEzNSAyLjc5NC0xLjQyMSAxNC42NjctMS41IDguMDY3LS4wNTMgMTUuMDQyLS40NzIgMTUuNS0uOTI5LjQ1OC0uNDU4IDEuMDYxLTQuMjMyIDEuMzQxLTguMzg2LjY3NC0xMC4wMy4wNTItMTAuNDYzLTE0LjY3LTEwLjIxLTguNjM0LjE0OC0xMC44MzgtLjA5NS0xMC44MzgtMS4xOTMgMC0xLjA4NSAyLjcxNi0xLjQzOSAxMi43NS0xLjY1OSA3LjAxMy0uMTU0IDEyLjc2Ni0uNjA0IDEyLjc4Ni0xIC4wMi0uMzk2LjE1OS0zLjg3LjMxLTcuNzIuMjUtNi40MjQgMS43OTEtMTIuNSAzLjE2OS0xMi41LjMxMSAwIDIuMzE2Ljg5NCA0LjQ1NyAxLjk4Nm0xMi43NjIgMTA5Ljc1OWMxLjQ2NC45NiA4LjUzNiA0LjY3MiAxNS43MTQgOC4yNSA4LjMxNyA0LjE0NSAxMy4xNjkgNy4xMzkgMTMuMzc1IDguMjUzLjQ1NyAyLjQ3NS01Ljc4NSAxMS43NTItNy45MDcgMTEuNzUyLS45NjIgMC0zLjIyMi0xLjkxMi01LjAyNC00LjI1LTEuODAyLTIuMzM3LTUuNTUyLTYuODI3LTguMzM0LTkuOTc2LTEwLjMwOC0xMS42NjktMTIuNTE4LTE0LjQ4MS0xMS44NzktMTUuMTIuOTExLS45MTEgMS4wNi0uODcxIDQuMDU1IDEuMDkxTTI3NiAxOTIuMDM2YzEuMzc1Ljk0MSA1LjMxMyAzLjEyNCA4Ljc1IDQuODUyIDMuNDM4IDEuNzI3IDYuMjUgMy40OTEgNi4yNSAzLjkxOCAwIC40MjgtMS45OTIgMi43MzItNC40MjYgNS4xMjEtNi4zMTUgNi4xOTktOC4yMzggNC44NzctMTMuNTI1LTkuMjk2LTIuOTc2LTcuOTc2LTIuNjc1LTguNDQ0IDIuOTUxLTQuNTk1bS0xMjguMjIzLTEuMjUyIDguMjc3IDQuMjY1LTMuNjA4IDQuNzI2Yy0xLjk4NSAyLjU5OS00LjEwNCA0LjcyNS00LjcxIDQuNzI1LS42MDYgMC0yLjA4Ny0xLjgtMy4yOTItNC02LjQyMy0xMS43MzEtNy4yMTgtMTMuMzkyLTYuNjY4LTEzLjk0My4zMjktLjMyOS44NTItLjQ3MyAxLjE2Mi0uMzE5LjMwOS4xNTQgNC4yODcgMi4yIDguODM5IDQuNTQ2bTE3Mi4xOTMgNjYuNzMzYzMuNTU5IDEuMjY3IDYuNjIyIDIuNzYgNi44MDggMy4zMTguNjQzIDEuOTI4LTMuNzc1IDkuMTY1LTUuNTk0IDkuMTY1LTEuMDc2IDAtMy43OTgtMi45MTEtNi45MTYtNy4zOTYtNC45NTUtNy4xMjctNS42MDUtOS4zNzgtMi4zMi04LjAyOS44NTMuMzUxIDQuNDY0IDEuNjc1IDguMDIyIDIuOTQybTcuODMzLTE2LjYzNGMyLjM2Ni42NzYgNC41MjkgMS44MTggNC44MDUgMi41MzguNjI0IDEuNjI2LTIuODc5IDguMDc5LTQuMzg1IDguMDc5LTEuNzYzIDAtOS40MDgtMTEuNTc2LTguNzYtMTMuMjYzLjUwOS0xLjMyNy43ODctMS4zMzMgMi4zMDgtLjA0Ni45NTEuODA1IDMuNjY1IDIuMDE3IDYuMDMyIDIuNjkybS0xNjAuNDY2LTIzLjgyOGMzLjExNSAyLjIzIDUuNjYzIDQuMjk4IDUuNjYzIDQuNTk2IDAgMS4zNDUtNC4yNjkgNi4zNDktNS40MTYgNi4zNDktLjcwNCAwLTIuMTEyLTEuOTEyLTMuMTI4LTQuMjUtMS4wMTYtMi4zMzctMi42NDYtNS40MjYtMy42MjItNi44NjMtMS42Mi0yLjM4NS0xLjU1NC0zLjg4Ny4xNy0zLjg4Ny4zNjkgMCAzLjIxOSAxLjgyNSA2LjMzMyA0LjA1NSIgZmlsbD0iI0U3RUVGRkZGIiBzdHJva2U9IiNFN0VFRkZGRiIgb3BhY2l0eT0iLjgiLz48cGF0aCBkPSJNMTg5LjU5MSAyMDkuMjVjLS44MDEgMS4yMzgtMS43NiAzLjYtMi4xMzMgNS4yNS0xLjI2NSA1LjYwMy0zLjMwNCAxMS4xMjUtNS40NTMgMTQuNzY3bC0yLjE0MiAzLjYzMS0xMS44MzYtLjI0N2MtNy44NTctLjE2NC0xMi4zNTctLjY4LTEzLjM4OC0xLjUzNS0zLjEzNS0yLjYwMi0zLjYzOS0uMjU0LTMuNjM5IDE2Ljk0MyAwIDE4Ljg1Ny4yNSAxOS40MzMgNi4yMzkgMTQuMzkzIDYuOTc2LTUuODY5IDguMDg1LS4zOTEgMi4zOCAxMS43NTItMS45OSA0LjIzNy0zLjYxOSA4LjE4My0zLjYxOSA4Ljc2OCAwIC41ODUtMi4yNzUgNS41OTgtNS4wNTYgMTEuMTM5LTUuOTQ0IDExLjg0NS02LjMwNSAxNi4xNTgtLjY2MSA3Ljg4OSAzLjcwOC01LjQzMiA0Ljk5OS03LjI5MiAxMi40MjktMTcuOTE2IDIuMDgzLTIuOTc4IDQuMjM4LTYuMTQ2IDQuNzg4LTcuMDM5LjU1LS44OTMgMi42ODgtMy42NzcgNC43NS02LjE4NyAzLjc1Ny00LjU3MiA0LjYyMi03LjIwMSAyLjc1LTguMzU4LTIuMDc1LTEuMjgzLS44NzUtMi41IDIuNDY1LTIuNSAyLjI3OCAwIDMuNzg0LjU5OSA0LjM5NiAxLjc1LjUxMi45NjMuOTM2IDcuMzc1Ljk0MSAxNC4yNS4wMjMgMzAuNTYyLjEwNCAzMi4wMjcgMS44MDkgMzIuNjgxLjg4Ny4zNCAyLjg5MS0uMTM3IDQuNDU1LTEuMDYxIDEuODk0LTEuMTE4IDYuNDItMS45MiAxMy41NTgtMi40IDUuODkzLS4zOTYgMTAuODUxLTEuMTcgMTEuMDE3LTEuNzIuMTY2LS41NS0xLjAwNC0yLjU3NS0yLjYwMS00LjVsLTIuOTAyLTMuNS0yLjk0NCAyLjgxOGMtMi4zODMgMi4yOC0zLjY4NCAyLjc1Ny02LjgxOSAyLjVsLTMuODc1LS4zMTgtLjI3My0xOC40MjZjLS4xNzQtMTEuNzMtLjY4LTE4LjkxNS0xLjM5My0xOS43NzQtMS43MjQtMi4wNzctLjQyNC0yLjU5NyA2LjkwNC0yLjc2M2w2Ljc2Mi0uMTUyLjY0Ny0xMC40NDNjLjM1Ni01Ljc0My45Ni0xMS44NDMgMS4zNDMtMTMuNTU0LjY1NS0yLjkyOC40MTItMy4yNzItNC4xLTUuNzk0bC00Ljc5Ny0yLjY4MS0yLjU0NiAyLjA1OGMtMy44MjkgMy4wOTMtNi43NDEgNC4zNi04LjQ4MyAzLjY5Mi0zLjAxNC0xLjE1Ny0xLjUwNC00LjUyMyA1LjQ4LTEyLjIxMiAzLjg3NC00LjI2NSA2LjkxMi04LjQwNSA2Ljc1LTkuMTk5LS4yNDYtMS4yMS02LjU4NC00LjE4Ni05LjAyMS00LjIzNy0uNC0uMDA4LTEuMzgyLjk5OC0yLjE4MiAyLjIzNW0yLjIwOSAyNy45NWMxLjg2OSAxLjg2OSAxLjU4OSAxNi4yMzItLjM0OCAxNy44NC0yLjA1OCAxLjcwOC0yNi45NSAxLjYyMi0yOS4wMjUtLjEwMS0xLjAyNC0uODQ5LTEuNDI3LTMuNTA0LTEuNDI3LTkuMzk1IDAtNC41MTYuMy04LjUxMS42NjctOC44NzcgMS4yNDUtMS4yNDYgMjguODQyLS43NTggMzAuMTMzLjUzMyIgZmlsbD0iIzQzNjBCN0ZGIiBzdHJva2U9IiM0MzYwQjdGRiIvPjxwYXRoIGQ9Im0yMjUuNjAzIDE5NC40ODQtMS42MjggMi40ODMtMjYuNDg4LjI2N2MtMTYuODE1LjE2OS0yNi40ODkuNjMxLTI2LjQ4OSAxLjI2NiAwIC42MyA4LjUzNiAxLjA5OSAyMy4wNzEgMS4yNjkgMTQuOTkxLjE3NCAyMi44NTgtLjA3NyAyMi40NjItLjcxOS0uMzM1LS41NDMuODQ4LS4zNzQgMi42MjkuMzc1IDEuNzgyLjc0OSAzLjU2OCAyLjE5OCAzLjk2OSAzLjIxOS40MDIgMS4wMjEuNzYyIDI1Ljk3NC44MDEgNTUuNDUxLjA4IDYxLjQxLjY3NiA1Ny40Ny04LjUxMyA1Ni4yNzEtMi43MDQtLjM1My01LjQzOS0xLjA1Mi02LjA3OC0xLjU1My0uNzE0LS41Ni0xLjQxLS41MDctMS44MDguMTM3LS4zNTYuNTc3IDMuMDI3IDQuNjk4IDcuNTE4IDkuMTU5bDguMTY2IDguMTExIDUuODQ1LTYuMzYgNS44NDYtNi4zNi4xMzgtMzcuNWMuMjM4LTY0LjY0NC41MjEtNzQuMTI4IDIuMzE1LTc3LjQ4MiAxLjU3My0yLjk0MSAxLjU0NC0zLjAzMy0yLjA4NS02Ljc1LTQuMjgtNC4zODMtNy4zNzItNC43OTQtOS42NzEtMS4yODRNMjgxIDIyOGMtMi42OTEgMi44OC0zLjE0MyAzLTExLjM0MiAzLTQuNjk3IDAtOC43ODcuMzk5LTkuMDg4Ljg4Ny0xLjA5OCAxLjc3NiAyLjA4IDIuODI5IDguNzM5IDIuODk2IDMuNzQ0LjAzOCA3LjQ1Ny42MDggOC4yNSAxLjI2NiAxLjIuOTk2IDEuNDQxIDYuNTkxIDEuNDQxIDMzLjUyNnYzMi4zMzFsLTQgMy4yMTRjLTIuMiAxLjc2OC00IDMuOTUxLTQgNC44NTEgMCAyLjMzNCA2LjE5MyA4LjAyOSA4LjczIDguMDI5IDEuNDE0IDAgNC42MDMtMi43NzkgOS40NTItOC4yMzcgNC4wMjUtNC41MzEgOS45MDYtMTAuOTExIDEzLjA2OC0xNC4xNzkgMy4xNjMtMy4yNjggNS43NS02LjI4NiA1Ljc1LTYuNzA2IDAtLjQyLTIuMzYyLjc5OS01LjI1IDIuNzA3LTkuNTY5IDYuMzI1LTkuMjEgNy4zMDctOS41MTYtMjUuOTg3LS4yMjQtMjQuNDUyLS4wMzItMjkuMjU4IDEuMjUtMzEuMjE1LjgzNC0xLjI3MiAxLjUxNi0yLjQ3OCAxLjUxNi0yLjY3OSAwLS43MjMtOS44MDQtNi43MDQtMTAuOTg4LTYuNzA0LS42NjUgMC0yLjQ3MSAxLjM1LTQuMDEyIDNNMTIyLjY2NyAyMDYuNjY3Yy0uOTk0Ljk5NC0uODA3IDEyMS4zMzMuMTg4IDEyMS4zMzMuNDcgMCAzLjE3LTIuNDQ4IDYtNS40NGw1LjE0NS01LjQ0VjIwOS45MDJsLTQuMjUtMS45MjljLTQuNTgtMi4wNzktNi4wNDEtMi4zNDgtNy4wODMtMS4zMDYiIGZpbGw9IiM0MzYwQjdGRiIgc3Ryb2tlPSIjNDM2MEI3RkYiLz48cGF0aCBkPSJNMzM5LjY2NyAyMzQuNjY3Yy0uMzY3LjM2Ni0uNjY3IDkuNTM2LS42NjcgMjAuMzc3IDAgMTUuMTE4LS4zMDggMTkuOTY3LTEuMzIyIDIwLjgwOC0uODA3LjY3LTcuNzA4IDEuMjA0LTE3Ljc1IDEuMzcyLTEzLjgxMy4yMzItMTYuNDI4LjUxNS0xNi40MjggMS43NzYgMCAxLjI2MyAyLjY1IDEuNTQzIDE2Ljc1IDEuNzc0IDE0LjIxMi4yMzMgMTYuNzUuNTA1IDE2Ljc1IDEuNzk3IDAgLjgzNy0yLjA1NiA0Ljk4OS00LjU2OCA5LjIyNkE1NzU2LjA4NSA1NzU2LjA4NSAwIDAgMCAzMjUuODAxIDMwM2MtMS4xMzUgMS45MjUtMy4zIDUuMy00LjgxMSA3LjUtNC4wMiA1Ljg1MS03LjE2IDExLjY2NC02LjYwMSAxMi4yMjMuMjY4LjI2OCAxLjk3OC0xLjIzNyAzLjc5OS0zLjM0MyAxLjgyMi0yLjEwNyA1LjU2Mi02LjM5NiA4LjMxMi05LjUzMSAyLjc1LTMuMTM1IDguODI1LTEwLjA4OSAxMy41LTE1LjQ1MyA0LjY3NS01LjM2MyA5LjI4OC0xMC41NzIgMTAuMjUtMTEuNTc0IDEuNzk3LTEuODcxIDkuMDYtMi4zMjIgMzcuNDEyLTIuMzIyIDUuMDM5IDAgOS41MDMtLjMzOSA5LjkyLS43NTQuOTk4LS45OTEtMi45OTUtNS4xOTItOC40MjgtOC44NjhsLTQuMzQ3LTIuOTQtNC4wMTQgNC41Ni00LjAxNCA0LjU2LTEyLjY0LS4yNzktMTIuNjM5LS4yNzkuMjQxLTIuNWMuMTMzLTEuMzc1LjI3OS05LjEwNC4zMjUtMTcuMTc1LjA5MS0xNS44MDEtLjYyNC0xOC44MjUtNC40NDYtMTguODI1LTEuMjcxIDAtMy4xMjUtLjktNC4xMi0yLTEuOTItMi4xMjEtMi43NTUtMi40MTItMy44MzMtMS4zMzMiIGZpbGw9IiM0MzYwQjdGRiIgc3Ryb2tlPSIjNDM2MEI3RkYiLz48cGF0aCBkPSJNMzM4Ljc4NSAxODYuNzVjLS42NDEgMS41MTMtMS4yODkgNS45LTEuNDM5IDkuNzUtLjE1MSAzLjg1LS4yOSA3LjMyNC0uMzEgNy43Mi0uMDIuMzk2LTUuNzczLjg0Ni0xMi43ODYgMS0xMC4wMzQuMjItMTIuNzUuNTc0LTEyLjc1IDEuNjU5IDAgMS4wOTggMi4yMDQgMS4zNDEgMTAuODM4IDEuMTkzIDE0LjcyMi0uMjUzIDE1LjM0NC4xOCAxNC42NyAxMC4yMS0uMjggNC4xNTQtLjg4MyA3LjkyOC0xLjM0MSA4LjM4Ni0uNDU4LjQ1Ny03LjQzMy44NzYtMTUuNS45MjktMTEuODczLjA3OS0xNC42NjcuMzY1LTE0LjY2NyAxLjUgMCAxLjE2OCA1Ljg3IDEuNDg3IDM1IDEuOTAzIDM0LjIyNy40ODkgMzQuOTk3LjU0NCAzNC44NTggMi41LS4wNzggMS4xLS43MzYgMy40NTYtMS40NjQgNS4yMzYtMi4yNjEgNS41MzQtLjE1MSA1Ljg4OCA3Ljc5NyAxLjMwNSAzLjg1NS0yLjIyMyA3LjQ1Ny00LjA0MSA4LjAwNC00LjA0MSAxLjY3OCAwIDQuNzM3LTMuOTc4IDMuNzMxLTQuODUzLTQuNjQyLTQuMDM3LTEwLjM1My04LjE0Ny0xMS4zMTktOC4xNDctLjY1NCAwLTIuNDA3Ljg1Ni0zLjg5NyAxLjkwMS0yLjA5NSAxLjQ3LTUuMTI4IDIuMDIzLTEzLjM1NCAyLjQzOC0xMy41OTQuNjg2LTE0LjEzNy4zNDgtMTQuMzc2LTguOTUxLS4yNzYtMTAuNzI5LS44MDMtMTAuMzg4IDE2LjA1NS0xMC4zODggMTEuMjI0IDAgMTQuNDY1LS4yOTIgMTQuNDY1LTEuMzA0IDAtMS4zMTQtNi4wMjMtNy42OTYtNy4yNjMtNy42OTYtLjM2NyAwLTIuMDY3IDEuMzY4LTMuNzc3IDMuMDM5LTMuMDE2IDIuOTQ4LTMuMzU1IDMuMDMxLTExLjI4NSAyLjc1bC04LjE3NS0uMjg5di03YzAtMy44NS0uMzY4LTcuNTY5LS44MTgtOC4yNjQtLjc1NS0xLjE2OC03Ljg3OC01LjIzNi05LjE2Ny01LjIzNi0uMzEgMC0xLjA4OSAxLjIzOC0xLjczIDIuNzUiIGZpbGw9IiM0MzYwQjdGRiIgc3Ryb2tlPSIjNDM2MEI3RkYiLz48cGF0aCBkPSJNMTYxLjY2NyAyMzYuNjY3Yy0uMzY3LjM2Ni0uNjY3IDQuMzYxLS42NjcgOC44NzcgMCA1Ljg5MS40MDMgOC41NDYgMS40MjcgOS4zOTUgMi4wNzUgMS43MjMgMjYuOTY3IDEuODA5IDI5LjAyNS4xMDEgMS45MzctMS42MDggMi4yMTctMTUuOTcxLjM0OC0xNy44NC0xLjI5MS0xLjI5MS0yOC44ODgtMS43NzktMzAuMTMzLS41MzMiIGZpbGw9IiNFN0VFRkZGRiIgc3Ryb2tlPSIjRTdFRUZGRkYiIG9wYWNpdHk9Ii44Ii8+PHBhdGggZD0iTTM1My42NzkgMjk0LjY1NGMtLjYzOS42MzkgMS41NzEgMy40NTEgMTEuODc5IDE1LjEyIDIuNzgyIDMuMTQ5IDYuNTMyIDcuNjM5IDguMzM0IDkuOTc2IDEuODAyIDIuMzM4IDQuMDYyIDQuMjUgNS4wMjQgNC4yNSAyLjEyMiAwIDguMzY0LTkuMjc3IDcuOTA3LTExLjc1Mi0uMjA2LTEuMTE0LTUuMDU4LTQuMTA4LTEzLjM3NS04LjI1My03LjE3OC0zLjU3OC0xNC4yNS03LjI5LTE1LjcxNC04LjI1LTIuOTk1LTEuOTYyLTMuMTQ0LTIuMDAyLTQuMDU1LTEuMDkxTTI3My4wNDkgMTk2LjYzMWM1LjI4NyAxNC4xNzMgNy4yMSAxNS40OTUgMTMuNTI1IDkuMjk2IDIuNDM0LTIuMzg5IDQuNDI2LTQuNjkzIDQuNDI2LTUuMTIxIDAtLjQyNy0yLjgxMi0yLjE5MS02LjI1LTMuOTE4LTMuNDM3LTEuNzI4LTcuMzc1LTMuOTExLTguNzUtNC44NTItNS42MjYtMy44NDktNS45MjctMy4zODEtMi45NTEgNC41OTVNMTM3Ljc3NiAxODYuNTU3Yy0uNTUuNTUxLjI0NSAyLjIxMiA2LjY2OCAxMy45NDMgMS4yMDUgMi4yIDIuNjg2IDQgMy4yOTIgNCAuNjA2IDAgMi43MjUtMi4xMjYgNC43MS00LjcyNWwzLjYwOC00LjcyNi04LjI3Ny00LjI2NWMtNC41NTItMi4zNDYtOC41My00LjM5Mi04LjgzOS00LjU0Ni0uMzEtLjE1NC0uODMzLS4wMS0xLjE2Mi4zMTlNMzA5Ljc2MSAyNTQuNTczYy0xLjEwMiAxLjEwMSA5LjUwNyAxNS40MjcgMTEuNDIzIDE1LjQyNyAxLjgxOSAwIDYuMjM3LTcuMjM3IDUuNTk0LTkuMTY1LS4xODYtLjU1OC0zLjI0OS0yLjA1MS02LjgwOC0zLjMxOC0zLjU1OC0xLjI2Ny03LjE2OS0yLjU5MS04LjAyMi0yLjk0Mi0uODU0LS4zNS0xLjgzOC0uMzUyLTIuMTg3LS4wMDJNMzE5LjQ2MyAyMzguMjM3Yy0uNjQ4IDEuNjg3IDYuOTk3IDEzLjI2MyA4Ljc2IDEzLjI2MyAxLjUwNiAwIDUuMDA5LTYuNDUzIDQuMzg1LTguMDc5LS4yNzYtLjcyLTIuNDM5LTEuODYyLTQuODA1LTIuNTM4LTIuMzY3LS42NzUtNS4wODEtMS44ODctNi4wMzItMi42OTItMS41MjEtMS4yODctMS43OTktMS4yODEtMi4zMDguMDQ2TTE1OS42OTYgMjEzLjYzN2MtLjM1LjM1MS4xNjIgMS44MTMgMS4xMzggMy4yNS45NzYgMS40MzcgMi42MDYgNC41MjYgMy42MjIgNi44NjMgMS4wMTYgMi4zMzggMi40MjQgNC4yNSAzLjEyOCA0LjI1IDEuMTQ3IDAgNS40MTYtNS4wMDQgNS40MTYtNi4zNDkgMC0uNjY5LTExLjA3LTguNjUxLTExLjk5Ni04LjY1MS0uMzY5IDAtLjk1Ny4yODctMS4zMDguNjM3IiBmaWxsPSIjNDM2MEI3RkYiIHN0cm9rZT0iIzQzNjBCN0ZGIi8+PC9zdmc+",
    "sourceName": "写源助手",
    "sourceUrl": "简单小工具"
  },
  {
    "articleStyle": 0,
    "customOrder": 4998,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930046964,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceComment": "让你告别浏览器。\n所有数据cookies来保存\n你可以添加，删除，修改任意链接",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "",
    "sourceName": "新浏览器",
    "sourceUrl": "https://dalaoha.github.io/box"
  },
  {
    "articleStyle": 0,
    "customOrder": 4999,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://gimg3.baidu.com/topone/src=https%3A%2F%2Fbkimg.cdn.bcebos.com%2Fsmart%2Feac4b74543a98226cffc403302d5ae014a90f603bdd2-bkimg-process%2Cv_1%2Crw_1%2Crh_1%2Cmaxl_800%2Cpad_1%3Fx-bce-process%3Dimage%2Fresize%2Cm_pad%2Cw_348%2Ch_348%2Ccolor_ffffff&refer=http%3A%2F%2Fwww.baidu.com&app=2011&size=f200,200&n=0&g=0n&er=404&q=75&fmt=auto&maxorilen2heic=2000000?sec=1717693200&t=89f5ce3a01ab4171be8311e17680ded7",
    "sourceName": "豆包全能聊天",
    "sourceUrl": "https://www.doubao.com/chat/"
  },
  {
    "articleStyle": 0,
    "customOrder": 5003,
    "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": 1765930103910,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://metaso.cn/favicon.ico",
    "sourceName": "秘塔搜索",
    "sourceUrl": "https://metaso.cn/"
  },
  {
    "articleStyle": 0,
    "customOrder": 5004,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930124061,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://www.fuzhugou.com/View/images/logo.fuzhugou.com.png",
    "sourceName": "辅助狗子",
    "sourceUrl": "https://www.xibuluo.com/?fzg"
  },
  {
    "articleStyle": 0,
    "customOrder": 5006,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\"User-Agent\": \"Mozilla/5.0 (Linux; U; Android 8.1.0; zh-CN; MI 8 Lite Build/OPM1.171019.019) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 UCBrowser/13.2.0.1100 Mobile Safari/537.36\"\n}",
    "injectJs": "const toYueDuUrl = (url) => {\r\n  fetch(url)\r\n    .then((resp) => resp.text())\r\n    .then((text) => {\r\n      let isNext=false\r\n      const matchArray1 = [\"yuedu://\", \".json\"];\r\n      const regX1 = RegExp(\r\n        `\\\\${matchArray1[0]}+.*?([\\\\s\\\\S]*?)${matchArray1[1]}.*?`,\r\n        \"g\"\r\n      );\r\n      text.replace(regX1, function (word, key) {\r\n        if(word){\r\n          isNext=true\r\n          window.location.href = word;\r\n        }\r\n       \r\n      });\r\n      if(isNext)return;\r\n      const matchArray2 = [\"yuedu://\", \".htm\"];\r\n      const regX2 = RegExp(\r\n        `\\\\${matchArray2[0]}+.*?([\\\\s\\\\S]*?)${matchArray2[1]}.*?`,\r\n        \"g\"\r\n      );\r\n      text.replace(regX2, function (word, key) {\r\n        if(word){\r\n          isNext=true\r\n          window.location.href = word;\r\n        }\r\n      });\r\n      if(isNext)return;\r\n      const matchArray3 = [\"yuedu://\", \".html\"];\r\n      const regX3 = RegExp(\r\n        `\\\\${matchArray3[0]}+.*?([\\\\s\\\\S]*?)${matchArray3[1]}.*?`,\r\n        \"g\"\r\n      );\r\n      text.replace(regX3, function (word, key) {\r\n        if(word){\r\n          isNext=true\r\n          window.location.href = word;\r\n        }\r\n      });\r\n      if(isNext)return;\r\n      const matchArray4 = [\"yuedu://\", \".txt\"];\r\n      const regX4 = RegExp(\r\n        `\\\\${matchArray4[0]}+.*?([\\\\s\\\\S]*?)${matchArray4[1]}.*?`,\r\n        \"g\"\r\n      );\r\n      text.replace(regX4, function (word, key) {\r\n        if(word){\r\n          isNext=true\r\n          window.location.href = word;\r\n        }\r\n      });\r\n    });\r\n};\r\nif (\r\n  window.location.href.indexOf(\"http://jnztgtjy.usa3.345888.xyz/rss/fb.php\") !=\r\n    -1 ||\r\n  window.location.href.indexOf(\"https://jnztgtjy.usa3.345888.xyz/rss/fb.php\") !=\r\n    -1\r\n) {\r\n  document.body.style = \"display:none\";\r\n  const panelDefault = document.querySelectorAll(\".panel-default\");\r\n  document.body.innerHTML = \"\";\r\n  document.body.appendChild(panelDefault[0]);\r\n  document.body.appendChild(panelDefault[1]);\r\n  document.body.style = \"display:block\";\r\n  Array.from(document.querySelectorAll(\".list-group-item\")).forEach((ele) => {\r\n    const Dom = ele.querySelector(\"a\");\r\n    const href = Dom.getAttribute(\"href\");\r\n    Dom.setAttribute(\"href\", \"javascript:void(0);\");\r\n    Dom.addEventListener(\"click\", () => {\r\n      toYueDuUrl(\"http://jnztgtjy.usa3.345888.xyz/rss/\" + href);\r\n    });\r\n  });\r\n}\r\nif (\r\n  window.location.href.indexOf(\"id=\") != -1 &&\r\n  (window.location.href.indexOf(\"http://jnztgtjy.usa3.345888.xyz\") != -1 ||\r\n    window.location.href.indexOf(\"https://jnztgtjy.usa3.345888.xyz\") != -1)\r\n) {\r\n  document.body.style = \"display:none\";\r\n  const panelDefault = document.querySelectorAll(\".duo_more\");\r\n  document.body.innerHTML = \"\";\r\n  document.body.appendChild(panelDefault[0]);\r\n  document.body.appendChild(panelDefault[1]);\r\n  document.body.style = \"display:block\";\r\n  toYueDuUrl(window.location.href);\r\n}\nif(window.location.href.indexOf('http://sj.ysupan.com/')!=-1 || window.location.href.indexOf('https://sj.ysupan.com/')!=-1){\n    const changeImage=(Dom,style)=>{\n        Dom.style=style\n    }\n    var ImgDom=document.createElement('div');\n    ImgDom.style='display:none'\n    ImgDom.innerHTML=`<div class=\"showImg\" style='position: fixed;width: 100vw;height: 100vh;z-index: 1099999;top: 0;left: 0;background-color: rgba(0,0,0,0.5);display: flex;align-items: center;justify-content: center;flex-direction: column;'>\n        <img src=\"https://xiang-shiwang.gitee.io/document/640.png\" />\n        <div style='width: 50%;height: 40px;display: flex;align-items: center;justify-content: center;background-color: #f2f2f2;box-shadow: 1px 10px 10px rgba(0,0,0,0.5);border-radius: 8px;margin: 20px auto;' id='CloseDom'>关闭</div>\n      </div>`\n    document.body.appendChild(ImgDom);\n    document.getElementById('CloseDom').addEventListener('click',()=>{\n        changeImage(ImgDom,'display:none;')\n    })\n    \n    var divDom =document.createElement('div');\n    divDom.innerHTML='获取小程序码,查询地址'\n    divDom.style='    position: fixed;z-index: 999999;background: #fff;padding: 8px 10px;box-shadow: 1px 5px 10px rgba(0,0,0,0.5);top: 5px;border-radius: 10px;left: 50%;transform: translateX(-50%);'\n    document.body.appendChild(divDom);\n    divDom.addEventListener('click',()=>{\n        changeImage(ImgDom,'display:block;')\n    })\n}",
    "lastUpdateTime": 1765913917968,
    "loadWithBaseUrl": true,
    "ruleArticles": "<js>\n  json=[];\n  if(baseUrl.match(/★/)){\n  list=baseUrl.replace(/http.*?wd=\\s*/,'').split('★');\n  for(i in list){\n  href=list[i].match(/【(.*?)】/)[1];\n  text=list[i].match(/《(.*?)》/)[1];\n  intro=list[i].match(/◎(.*?)◎/)[1];\n  indexUrl=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)【/)[1]\n   if(indexUrl.indexOf('https://xiang-shiwang.gitee.io')!=-1 || indexUrl.indexOf('http://xiang-shiwang.gitee.io')!=-1  || indexUrl.indexOf('http://jnztgtjy.usa3.345888.xyz/rss/fb.php')!=-1 || indexUrl.indexOf('https://jnztgtjy.usa3.345888.xyz/rss/fb.php')!=-1 ){\n       if(indexUrl.indexOf('?')==-1){\n           indexUrl+='?v='+new Date().getTime()\n       }else{\n            indexUrl+='?&='+new Date().getTime()\n       }\n   } json.push({text:text,src:href,intro:intro,index:indexUrl})\n  }\n  }\n  JSON.stringify(json)\n  </js>\n  $.[*]",
    "ruleImage": " $.src",
    "ruleLink": "$.index",
    "rulePubDate": " $.intro",
    "ruleTitle": " $.text",
    "singleUrl": false,
    "sortUrl": "🧰 工具::https://xiang-shiwang.gitee.io/document/index.html【http://sy.legado1.top/sy.php/0039eb4cea8628f772566210dd15ddf6.png】《自用源》◎进入较慢请耐心等待,或浏览器打开◎★https://xingye.me/game/index.php【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/zy/xy.png?ref=master】《星夜小游戏》◎星夜小游戏平台聚合◎★https://www.yikm.net/【https://www.yikm.net/f.png】《小游戏》◎小霸王小游戏◎★https://www.jiongciyuan.net/jocy/【https://www.jiongciyuan.net/jocy/zb_users/theme/zblog5_nav/image/favicon.ico】《囧次元网页版》◎在线查看◎★https://viayoo.com/zh-cn/【https://viayoo.com/zh-cn/images/logo.png】《Via浏览器》◎简洁得浏览器◎★https://www.xbext.com【https://www.xbext.com/icons/favicon-196x196.png】《X浏览器》◎简洁得浏览器◎ ★ https://ant.c-6.app/【https://ant.c-6.app/templates/default/new/assets/images/logo.png】《蚂蚁加速器》◎vpn,蚂蚁加速器◎★https://www.emojiall.com/zh-hans【https://www.emojiall.com/favicon.ico】《Emoje大全》◎Emoje的各种表情◎★https://xiang-shiwang.gitee.io/document/uploading.html【http://sy.legado1.top/sy.php/9654232af59e52b645b3348859b1c888.png】《上传文件》◎进入页面后，点击右上角浏览器中打开◎\n\n📽 看动漫:: https://soupian.pro/【https://soupian.in/images/icon.png】《搜资源》◎soupian.in、soupian.plus、soupian.icu◎★https://m.agedm.org/#/【https://www.agedm.org/favicon.ico】《age动漫》◎永久地址：http://www.age.tv 、http://www.agefans.com ◎★https://www.mxdm.tv/ 【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/ys/mxdm.png?ref=master】《MX动漫》◎专注在线动漫网站◎★http://m.yhdm.io【http://m.iyinghua.io/js/20180601/favicon.ico】《樱花动漫》◎看动漫◎★https://dm530.org【https://dm530.org/static/img/loading.png】《风车动漫》◎看动漫◎★https://www.mddm.tv/【https://www.mddmx.com/favicon.ico】《漫岛tv》◎其他地址：https://www.mddmx.com/◎★http://kudm.vip/【https://www.noisedh.cn/assets/images/logos/yishijeman.png】《異世界动漫》◎其他地址：http://kudm.net/◎\r\n\n📺 看视频:: https://soupian.in/【https://soupian.in/images/icon.png】《搜资源》◎soupian.pro、soupian.plus、soupian.icu◎★ https://www.5280.fun/【https://edu-image.nosdn.127.net/034B6C53B270CC44D56476BBE94C95E4.png】《新视觉影视》◎地址入口◎★ https://www.91mayi.me【https://cdn.aiqingyu1314.com/mayi/statics/img/favicon.ico】《蚂蚁影视》◎地址：https://www.mayiyingshi.org/◎★https://www.wandou.la/【https://www.wandou.la/favicon.ico】《豌豆PRO》◎看电影◎★https://90hd.top?from=VIP【https://v.app.90hd.top/template/conch/asset/img/favicon.png】《VIP影视》◎看电影◎★https://www.freeok.vip/【https://www.freeok.vip/mxtheme/images/favicon.png】《FREEOK》◎看电影，其他地址：https://www.freeok.pro◎★https://www.dianyi.ng/【https://www.noisedh.cn/assets/images/logos/dianyi.png】《电影先生》◎看电影,其他地址：https://dy.xianshe.ng/◎\n\n♾️ 其他的:: https://xydh.fun/【https://xydh.fun/favicon.ico】《炫猿导航》◎各种东西◎★ https://www.noisedh.cn/【https://www.noisedh.cn/assets/images/favicon.png】《Noise导航》◎各种东西◎★ https://www.lengcat.cn/【https://www.lengcat.cn/wp-content/uploads/2022/07/logo-dark_collapsed@2x.png】《冷猫导航站》◎各种东西◎★ https://www.hifawn.com/【https://www.hifawn.com/apple-touch-icon.png】《迷鹿导航》◎各种东西◎★ https://www.9eip.com/【https://www.9eip.com/wp-content/uploads/2023/02/%E5%AE%8C%E7%BE%8E%E6%96%B0logo2023-2-16-1.png】《完美导航》◎各种东西◎★ https://www.zhansousou.com/【https://www.zhansousou.com/favicon.ico】《站搜搜》◎各种东西◎★ http://sj.ysupan.com/wanji#/【http://sj.ysupan.com/favicon.ico】《应用编号查询》◎先查询编号，在通过小程序获取地址◎★ http://jnztgtjy.usa3.345888.xyz/rss/fb.php【http://jnztgtjy.usa3.345888.xyz/view/img/favicon.ico】《源导入》◎进入页面，点击导入◎★ http://jnztgtjy.usa3.345888.xyz/【http://jnztgtjy.usa3.345888.xyz/view/img/favicon.ico】《爱写源论坛》◎应该有用◎",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "http://sy.legado1.top/sy.php/0039eb4cea8628f772566210dd15ddf6.png",
    "sourceName": "常用工具",
    "sourceUrl": "自用源合集"
  },
  {
    "articleStyle": 0,
    "customOrder": 5008,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765914233960,
    "loadWithBaseUrl": true,
    "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\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",
    "singleUrl": false,
    "sortUrl": "帮你导入::http://www.baidu.com?wd=0、0、《帮你导入》◎◎",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_54155739_1657017481/256",
    "sourceName": "帮你导入",
    "sourceUrl": "帮你导入"
  },
  {
    "articleStyle": 0,
    "customOrder": 5009,
    "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": 1765930187497,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "http://sy.legado1.top/sy.php/cfd2b470188567c06d8fb75bd7454de7.png",
    "sourceName": "坚果云盘",
    "sourceUrl": "https://www.jianguoyun.com/#/home"
  },
  {
    "articleStyle": 0,
    "customOrder": 5010,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765915005807,
    "loadWithBaseUrl": true,
    "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}else{\nlist=baseUrl.replace(/http.*?wd=/,'');\nhref=list.match(/【(.*?)】/)[1];\ntext=list.match(/《(.*?)》/)[1];\nintro=list.match(/◎(.*?)◎/)[1];\nindex=list.match(/^(\\d+、\\d+、)/)?list.match(/^(\\d+、\\d+、)/)[1]:list.match(/^(.*?)【/)[1];\njson.push({text:text,src:href,intro:intro,index:index})\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleContent": "all",
    "ruleDescription": "❗️0、1、开始❗️\n<script>\n    function $(selector) {\n        return document.querySelector(selector);\n    }\n\n    function $$(selector) {\n        return document.querySelectorAll(selector);\n    }\n</script>\n<style>\n    button,\n    input {\n        margin: 5px\n    }\n\n    #basic-addon1,\n    #replaceSpan1 {\n        background-color: Azure;\n        padding: 3px\n    }\n\n    button,\n    input[type=\"button\"] {\n        outline: none;\n        height: 30px;\n        box-shadow: 2px 1px #CFD8DC;\n        background: #fff;\n        border: 1px solid #607D8B;\n        border-radius: 6px;\n    }\n\n    textarea {\n        background-color: GhostWhite;\n        border: 0px solid black;\n        width: 100%\n    }\n\n    .bt1,\n    .bt4 {\n        background: #fff;\n        width: 30%;\n        border: 1px solid green;\n        border-radius: 10px;\n    }\n\n    #bt4:active,\n    #bt2:active,\n    #bt3:active {\n        background: #CFD8DC\n    }\n\n    #bt4,\n    #bt2,\n    #bt3 {\n        background: #fff;\n        width: 100%;\n        border: 1px solid #607D8B;\n        border-radius: 6px;\n    }\n\n    button:active,\n    input[type=\"button\"]:active {\n        background: #C8E6C9\n    }\n\n    #success {\n        text-align: center;\n        border: 1px solid green;\n        position: fixed;\n        left: 40%;\n        width: 20%;\n        background: #fff;\n        border-radius: 5px;\n        display: none;\n        top: 2px;\n        box-shadow: 2px 1px 3px #CFD8DC;\n    }\n\n    #pageclass,\n    #pageclass2 {\n        width: 100%\n    }\n\n    .pageclass {\n        font-size: 10px\n    }\n</style>\n<a href=\"https://www.sojson.com/rehtml\">html转义</a>&nbsp;&nbsp;<a href=\"http://www.jsons.cn/urlencode/\">URL解码</a>\n<textarea rows=\"23\" 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<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<button onclick=\"copyText()\" id=\"bt2\">一键复制</button>\n<button onclick=\"formatJson()\" id=\"bt3\">格式化Json</button>\n<div class=\"pageclass\">输入分类里的链接，如： /sort/xuanhuan/ 写成 /sort/分类/ </div>\n<input id=\"pageclass\">\n<div class=\"pageclass\">输入带有翻页的链接，如： /sort/xuanhuan/2.html 写成 /sort/分类/页码.html </div>\n<input id=\"pageclass2\">\n<div class=\"pageclass\"> 第一页跟第二页不一样？ 输入不一样的部分（第二页比第一页多出来的部分） 如 index_页码.html </div>\n<input id=\"pageclass3\">\n<button onclick=\"okpage()\">确认加入翻页（仅旧发现）</button>\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            <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            <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        var 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    var 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    var 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</script>\n<script>\n    function pp(a) {\n        b = a.replace(/\\\\/, '');\n        $(\"#textReplace\").value += b;\n        $(\"#textReplace\").focus()\n    }\n\n    function dis() {\n        document.getElementById(\"bt1\").disabled = true;\n        document.getElementById(\"bt2\").disabled = true\n    }\n\n    function di() {\n        document.getElementById(\"bt1\").disabled = false;\n        document.getElementById(\"bt2\").disabled = false\n    }\n\n    function parseToDOM(str) {\n        var div = document.createElement(\"div\");\n        if (typeof str == \"string\") div.innerHTML = str;\n        return div.querySelectorAll(\"a\");;\n    }\n\n    function okpage() {\n        pageclass = $(\"#pageclass\").value.replace(/(\\+|\\?)/g, '\\\\$1');\n        pageclass = pageclass.replace(/分类$/g, '(.*)').replace(/分类(?!$)/g, '(.*?)');\n        reg = new RegExp(pageclass)\n        pageclass2 = $(\"#pageclass2\").value;\n        html = $(\"#input\").value;\n        pageclass2 = pageclass2.replace(/页码/g, '{\\{page}}');\n        pageclass3 = $(\"#pageclass3\").value.replace(/(\\+|\\?)/g, '\\\\$1').replace(/页码/, '{\\{page}}')\n        h = \"\";\n        if (html.match(/::/) && pageclass != \"\" && pageclass2 != \"\" && !/{\\{page}}/.test(html)) {\n            list = html.split(/\\n|&&/);\n            for (i in list) {\n                if (list[i].match(/::/)) {\n                    text = list[i].match(/(.*?)::/)[1];\n                    href = list[i].match(/::(.*)/)[1]\n                    if (href.match(reg)) {\n                        href = pageclass2.replace(/分类/g, href.match(reg)[1])\n                    } else {\n                        href = href\n                    }\n                    h += text + \"::\" + href + \"\\n\"\n                }\n            }\n            $(\"#input\").value = h\n        }\n        html = $(\"#input\").value\n        if (pageclass3 != \"\" && !/<,.*?>/.test(html)) {\n            reg = new RegExp(\"(\" + pageclass3 + \")\", 'g');\n            $(\"#input\").value = html.replace(reg, '<,$1>')\n        }\n    }\n\n    function getInput() {\n        var str = $(\"#input\").value;\n        var list = parseToDOM(str);\n        if (list.length == 0) {\n            $(\"#input\").placeholder = \"格式化失败！！！请检查是否为带html标签的文本\"\n        } else {\n            var html = \"\";\n            for (let i = 0; i < list.length; i++) {\n                let text = list[i].innerText;\n                let href = list[i].getAttribute(\"href\");\n                html += text + \"::\" + href + \"\\n\"\n            }\n            $(\"#pageclass\").value = html.match(/.*?::(.*?)\\n/)[1];\n            $(\"#input\").value = html\n        }\n    }\n\n    function getInput2() {\n        var str = $(\"#input\").value;\n        var list = parseToDOM(str);\n        if (list.length == 0) {\n            $(\"#input\").placeholder = \"格式化失败！！！请检查是否为带html标签的文本\"\n        } else {\n            var html = [];\n            for (let i = 0; i < list.length; i++) {\n                let text = list[i].innerText;\n                let href = list[i].getAttribute(\"href\");\n                html.push({\n                    title: text,\n                    url: href\n                })\n            }\n            $(\"#input\").value = JSON.stringify(html)\n        }\n    }\n\n    function getInput3() {\n        text = $(\"#input\").value;\n        if (text.match(/\\&\\&|::/g)) {\n            text = text.replace(/\\&\\&/g, '\\n');\n            list = text.match(/.*::.*/g);\n            html = [];\n            for (i = 0; i < list.length; i++) {\n                l = list[i].match(/(.*)::(.*)/);\n                title = l[1];\n                url = l[2]\n                html.push({\n                    title: title,\n                    url: url\n                })\n            }\n            $(\"#input\").value = JSON.stringify(html)\n        } else {\n            html = \"\";\n            json = eval(text);\n            for (i in json) {\n                html += json[i].title + \"::\" + json[i].url + \"\\n\"\n            }\n            $(\"#input\").value = html\n        }\n    }\n\n    function getInput4(flag, x) {\n        text = $(\"#input\").value;\n        if (flag == 1) {\n            json = JSON.parse(text);\n            for (i in json) {\n                json[i].style = {}\n                json[i].style.layout_flexGrow = 1\n            }\n        } else if (flag == 2) {\n            data = {\n                1: 1,\n                2: 0.4,\n                3: 0.25,\n                4: 0.2\n            }\n            json = JSON.parse(text);\n            for (i in json) {\n                json[i].style.layout_flexBasisPercent = data[x]\n            }\n        }\n        $(\"#input\").value = JSON.stringify(json)\n    }\n\n    function setVisible(idElement, visible) {\n        var obj = document.getElementById(idElement);\n        obj.style.visibility = visible ? \"visible\" : \"hidden\";\n    }\n\n    function 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    }\n\n    function 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    }\n\n    function onMatch() {\n        if (!isValidFields()) 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) {\n            var re = \"\";\n            var strResult = \"共找到 \" + result.length + \" 处匹配：\\r\\n\";\n            document.getElementById(\"textResult\").innerText = strResult;\n            for (var i = 0; i < result.length; ++i) {\n                re += result[i] + \"\\r\\n\";\n            }\n            document.getElementById(\"textMatchResult\").value = re;\n        } else {\n            document.getElementById(\"textMatchResult\").value = \"匹配位置：\" + regex.lastIndex + \"\\r\\n匹配结果：\" + result[0];\n        }\n        return true;\n    }\n\n    function 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    }\n\n    function 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    });\n\n    function Empty() {\n        $(\"#textSour\").value = \"\";\n        $(\"#textMatchResult\").value = \"\";\n        $(\"#textReplace\").value = \"\";\n        $(\"#textReplaceResult\").value = \"\";\n        $(\"#textSour\").select();\n    }\n    \n\n// 格式方法\n// 公共方法\nfunction transitionJsonToString (jsonObj, callback) {\n\t// 转换后的jsonObj受体对象\n\tvar _jsonObj = null;\n\t// 判断传入的jsonObj对象是不是字符串，如果是字符串需要先转换为对象，再转换为字符串，这样做是为了保证转换后的字符串为双引号\n\tif (Object.prototype.toString.call(jsonObj) !== \"[object String]\") {\n\t\ttry {\n\t\t\t_jsonObj = JSON.stringify(jsonObj);\n\t\t} catch (error) {\n\t\t\t// 转换失败错误信息\n\t\t\talert('您传递的json数据格式有误，请核对...');\n\t\t\talert(error);\n\t\t\tcallback(error);\n\t\t}\n\t} else {\n\t\ttry {\n\t\t\tjsonObj = jsonObj.replace(/(\\')/g, '\\\"');\n\t\t\t_jsonObj = JSON.stringify(JSON.parse(jsonObj));\n\t\t} catch (error) {\n\t\t\t// 转换失败错误信息\n\t\t\talert('您传递的json数据格式有误，请核对...');\n\t\t\talert(error);\n\t\t\tcallback(error);\n\t\t}\n\t}\n\treturn _jsonObj;\n}\n// callback为数据格式化错误的时候处理函数\nfunction formatJson (callback) {\n    var jsonObj = $(\"#input\").value;\n\t// 正则表达式匹配规则变量\n\tvar reg = null;\n\t// 转换后的字符串变量\n\tvar formatted = '';\n\t// 换行缩进位数\n\tvar pad = 0;\n\t// 一个tab对应空格位数\n\tvar PADDING = '  ';\n\t// json对象转换为字符串变量\n\tvar jsonString = transitionJsonToString(jsonObj, callback);\n\tif (!jsonString) {\n\t\treturn jsonString;\n\t}\n\t// 存储需要特殊处理的字符串段\n\tvar _index = [];\n\t// 存储需要特殊处理的“再数组中的开始位置变量索引\n\tvar _indexStart = null;\n\t// 存储需要特殊处理的“再数组中的结束位置变量索引\n\tvar _indexEnd = null;\n\t// 将jsonString字符串内容通过\\r\\n符分割成数组\n\tvar jsonArray = [];\n    // 正则匹配到{,}符号则在两边添加回车换行\n\tjsonString = jsonString.replace(/([\\{\\}])/g, '\\r\\n$1\\r\\n');\n\t// 正则匹配到[,]符号则在两边添加回车换行\n\tjsonString = jsonString.replace(/([\\[\\]])/g, '\\r\\n$1\\r\\n');\n\t// 正则匹配到,符号则在两边添加回车换行\n\tjsonString = jsonString.replace(/(\\,)/g, '$1\\r\\n');\n\t// 正则匹配到要超过一行的换行需要改为一行\n\tjsonString = jsonString.replace(/(\\r\\n\\r\\n)/g, '\\r\\n');\n\t// 正则匹配到单独处于一行的,符号时需要去掉换行，将,置于同行\n\tjsonString = jsonString.replace(/\\r\\n\\,/g, ',');\n\t// 特殊处理双引号中的内容\n\tjsonArray = jsonString.split('\\r\\n');\n\tjsonArray.forEach(function (node, index) {\n\t\t// 获取当前字符串段中\"的数量\n\t\tvar num = node.match(/\\\"/g) ? node.match(/\\\"/g).length : 0;\n\t\t// 判断num是否为奇数来确定是否需要特殊处理\n\t\tif (num % 2 && !_indexStart) {\n\t\t\t_indexStart = index\n\t\t}\n\t\tif (num % 2 && _indexStart && _indexStart != index) {\n\t\t\t_indexEnd = index\n\t\t}\n\t\t// 将需要特殊处理的字符串段的其实位置和结束位置信息存入，并对应重置开始时和结束变量\n\t\tif (_indexStart && _indexEnd) {\n\t\t\t_index.push({\n\t\t\t\tstart: _indexStart,\n\t\t\t\tend: _indexEnd\n\t\t\t})\n\t\t\t_indexStart = null\n\t\t\t_indexEnd = null\n\t\t}\n\t})\n\t// 开始处理双引号中的内容，将多余的\"去除\n\t_index.reverse().forEach(function (item, index) {\n\t\tvar newArray = jsonArray.slice(item.start, item.end + 1)\n\t\tjsonArray.splice(item.start, item.end + 1 - item.start, newArray.join(''))\n\t})\n\t// 奖处理后的数组通过\\r\\n连接符重组为字符串\n\tjsonString = jsonArray.join('\\r\\n');\n\t// 将匹配到:后为回车换行加大括号替换为冒号加大括号\n\tjsonString = jsonString.replace(/\\:\\r\\n\\{/g, ':{');\n\t// 将匹配到:后为回车换行加中括号替换为冒号加中括号\n\tjsonString = jsonString.replace(/\\:\\r\\n\\[/g, ':[');\n\t// 将上述转换后的字符串再次以\\r\\n分割成数组\n\tjsonArray = jsonString.split('\\r\\n');\n    // 将转换完成的字符串根据PADDING值来组合成最终的形态\n    jsonArray.forEach(function (item, index) {\n\t\tconsole.log(item)\n    \tvar i = 0;\n    \t// 表示缩进的位数，以tab作为计数单位\n\t\tvar indent = 0;\n\t\t// 表示缩进的位数，以空格作为计数单位\n\t\tvar padding = '';\n\t\tif (item.match(/\\{$/) || item.match(/\\[$/)) {\n\t\t\t// 匹配到以{和[结尾的时候indent加1\n\t\t\tindent += 1\n\t\t} else if (item.match(/\\}$/) || item.match(/\\]$/) || item.match(/\\},$/) || item.match(/\\],$/)) {\n\t\t\t// 匹配到以}和]结尾的时候indent减1\n\t\t\tif (pad !== 0) {\n\t\t\t\tpad -= 1\n\t\t\t}\n        } else {\n            indent = 0\n        }\n        for (i = 0; i < pad; i++) {\n            padding += PADDING\n        }\n        formatted += padding + item + '\\r\\n'\n\t\tpad += indent\n   \t})\n\t// 返回的数据需要去除两边的空格\n\t$(\"#input\").value = formatted.trim();\n\t\n}\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": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "singleUrl": false,
    "sortUrl": "🔎 常用网站::http://www.baidu.com/wd=0、1、【】《📝 | 发现规则》◎◎",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://gitee.com/guaner001125/booksource/raw/master/%E5%9B%BE%E7%89%87/%E5%B7%A5%E5%85%B7.jpg",
    "sourceName": "发现规则",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 5011,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930204641,
    "loadWithBaseUrl": true,
    "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=\"格式化发现请输入带html标签的发现内容\"></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<button onclick=\"getInput4(1);\" id=\"bt4\">添加layout_flexGrow: 1</button>\n<button onclick=\"getInput4(2);\" id=\"bt4\">添加layout_flexBasisPercent: 0.2</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.2\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": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "singleUrl": false,
    "sortUrl": "🔎 常用网站::http://www.baidu.com/wd=0、1、《📝 | 发现规则 正则匹配》◎◎•http://192.168.0.101:2121《📝 | 影音猎手 》•0、0、《📝 | 搜视pro》",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://gitee.com/guaner001125/booksource/raw/master/%E5%9B%BE%E7%89%87/%E5%B7%A5%E5%85%B7.jpg",
    "sourceName": "发现规则",
    "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}"
  },
  {
    "articleStyle": 0,
    "customOrder": 5013,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765921361494,
    "loadWithBaseUrl": true,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://qn11.tool.lu/201711/08/002819v0Gaydtvy2P4y03G_144x144.png",
    "sourceName": "在线工具",
    "sourceUrl": "https://tool.lu/"
  },
  {
    "articleStyle": 0,
    "customOrder": 5014,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930253089,
    "loadWithBaseUrl": true,
    "ruleArticles": "@js:\njson=[];\nlist=baseUrl.replace(/http.*?wd=/,'').split('★');\nfor(i in list){\n    href=list[i].match(/【(.*?)】/)[1];\n    title=list[i].match(/《(.*?)》/)[1];\n    json.push({title:title,href:href})\n}\njson",
    "ruleLink": "href",
    "rulePubDate": "href",
    "ruleTitle": "title",
    "singleUrl": false,
    "sortUrl": "工具集::http://www.baidu.com?wd=\t【http://oli-fa.github.io/YueDuBackup】《📔丨小白教程》★【http://oli-fa.github.io/YueDuBackup/import】《🛠️丨一键导入源》★【http://oli-fa.github.io/YueDuBackup/tool】《🛠️丨单源发现列表美化(关耳)》★【http://oli-fa.github.io/YueDuBackup/tool1】《🛠️丨批量发现列表美化》★【http://oli-fa.github.io/YueDuBackup/link】《🛠️丨获取github加速链接》★【https://github.com/oli-fa/YueDuBackup/issues/new】《💬丨意见反馈》★【https://github.com/oli-fa/YueDuBackup/releases/release】《🎊丨更新记录》★【http://oli-fa.github.io/YueDuBackup/sponsor】《🎁丨打赏大佬》",
    "sourceComment": "投稿邮箱：wen@sbfc6.onmicrosoft.com\n<js>github@ifwlzs</js>",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://avatars.githubusercontent.com/u/89572235",
    "sourceName": "菊渊工具",
    "sourceUrl": "https://github.com/oli-fa/",
    "style": "##github@ifwlzs"
  },
  {
    "articleStyle": 0,
    "customOrder": 5015,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930270696,
    "loadWithBaseUrl": true,
    "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];\njson.push({text:text,href:href})\n}\n}else{\nlist=baseUrl.replace(/http.*?wd=/,'');\nhref=list.match(/【(.*?)】/)[1];\ntext=list.match(/《(.*?)》/)[1];\njson.push({text:text,href:href})\n}\njson",
    "ruleLink": "href",
    "rulePubDate": "href",
    "ruleTitle": "text",
    "singleUrl": false,
    "sortUrl": "🔎 常用[5]::http://www.baidu.com?wd=【http://www.wangdaxing.com】《🔎丨夸克导航》•【http://yck.mumuceo.com】《常用 丨源 仓 库》•【https://www.jianguoyun.com】《必备丨云 备 份》•【http://gitee.com/login】《登录丨G i t e e》•【http://mail.qq.com】《📬丨QQ邮箱》\n\n\n🗺️ 导航[11]::http://www.baidu.com?wd=【http://guozhivip.com/rank】《🗺️丨果汁排行》•【http://hao.uc.cn】《🗺️丨UC导航》•【http://h5.mse.360.cn】《🗺️丨360导航》•【http://dh.123.sogou.com】《🗺️丨搜狗导航》•【http://m.ilxdh.com】《🗺️丨龙轩导航》•【http://nav.lazymovie.me】《🗺️丨懒人导航》•【http://www.daoall.cn】《🗺️丨导哦导航》•【https://uz456.com】《🗺️丨UZ导航》•【http://wap.1234wu.com】《🗺️丨123导航》•【https://www.24kdh.com】《🗺️丨24K导航》•【https://www.ak47s.cn】《🗺️丨AK47导航》\n\n\n🗂️ 软件[8]::http://www.baidu.com?wd=【http://www.yxssp.com/os/android/page/1】《🗂️丨异星》•【https://www.sixyin.com/android】《🗂️丨六音》•【https://www.52pojie.cn/forum.php?mod=forumdisplay&fid=16&filter=lastpost&orderby=lastpost&typeid=232】《🗂️丨吾爱破解》•【https://www.ghpym.com/category/all/android】《🗂️丨果核剥壳》•【http://wap.zntx.org.cn/download/book_list.aspx?siteid=956&action=new】《🗂️丨八神论坛》•【http://www.yehes.com/category/shouji】《🗂️丨夜河资源》•【http://m.u9h.com/top.html】《🔞丨5G资源(🎮)》•【https://www.feixuew.com】《🔞丨飞雪娱乐(🗂️)》\n\n\n🛠️ 工具[8]::http://www.baidu.com?wd=【https://www.yeyulingfeng.com】《🛠️丨夜雨聆风》•【https://web.woobx.cn】《🛠️丨一个木函》•【https://uutool.cn】《🛠️丨UU在线》•【https://www.yinsiduanxin.com】《📱丨短信接收》•【https://yunduanxin.net】《📱丨短信接收②》•【http://7qi.me】《📱丨短信轰炸》•【http://h.zy40.cn/dx/index.php】《📱丨短信轰炸②》•【http://h.zy40.cn/sfz】《❓丨随机身份证》\n\n\n⚒️ 工具②[10]::http://www.baidu.com?wd=【http://shuyuan.miaogongzi.site】《⚒️丨书源外链丨网络导入》•【https://www.wenshushu.cn】《⚒️丨文叔叔丨下载:本地导入》•【https://pasteme.cn】《⚒️丨PasteMe丨复制:粘贴导入》•【https://gualemang.com】《⚒️丨网站挂了吗?(检测)》•【https://www.boce.com】《⚒️丨网站测速(PC端)》•【https://4m.cn】《⚒️丨短网址(4M)》•【https://www.ft12.com】《⚒️丨短网址(ft12)》•【http://m.6du.in】《⚒️丨短网站(六度)》•【https://ykjtb.com/c】《⚒️丨剪切板(15分钟)》•【https://sou-yun.cn/STConvert.aspx】《⚒️丨繁简转换(搜韵)》\n\n\n🔧 工具③[11]::http://www.baidu.com?wd=【https://img.fghrsh.net】《🔧丨图床(Fghreh)》•【https://www.hualigs.cn】《🔧丨图床(遇见)》•【https://lab.5ime.cn/video】《🔧丨视频解析》•【http://www.gjw123.com】《🔧丨123工具》•【http://tool.cccyun.cc】《🔧丨彩虹工具》•【https://xhl97.cn】《🔧丨小澎工具》•【https://tool.retiehe.com】《🔧丨热铁盒 》•【https://www.zixuephp.net/tool.html】《🔧丨php自学》•【https://c.runoob.com】《🔧丨菜鸟工具(编程相关)》•【https://tool.lu】《🔧丨在线工具(编程相关)》•【https://www.sojson.com】《🔧丨SO JSON(编程相关)》\n",
    "sourceComment": "\n[整合分支-在线工具]是提取[网站整合](常用)(导航)(工具)(工具②)(工具③)(软件)分组的独立订阅\n联合其他的[整合分支]可以形成长期订阅?\n\n────── 分──割──线 ──────\n\n\n更新了啥?\n提取几个说的出口的更新\n\n\n\n────── 分──割──线 ──────\n\n\n说明一下:\n说明一下相关情况\n\n⓪ 不要相信网站广告!\n错信广告照成的损失本人概不负责\n\n\n① [Pro]的诞生:\n全靠 @关耳 大佬的模板，感谢大佬的帮助\n\n\n② 关于网站: 侵删\n大部分来自 源仓库的分享\n小部分来自 酷安的评论区\n\n我只是个搬运工 仅此而已\n\n分享前会确认能打开网站\n保证能打开，不保证能看\n\n\n③ 如何增加网站?:[格式]\n\n加分类:\n新分类名称 两个\":\" http://www.baidu.com?wd=【网站链接1】《网站名称1》•【网站链接2】《网站名称2》\n\n加网站:\n在任意一个\"【网站链接】《网站名称》\"后面加上\"•【新网站链接】《新网站名称》\"就行\n\n────── 分──割──线 ──────\n\n\n④ [整合分支]的由来\n因为[网站整合]每次版本更新的(网站更改数量)都放在了源URL里\n每次更新都更改源URL就不能用一个链接长期订阅更新\n\n(网站更改数量)放在源名称太难看了，但不放(网站更改数量)又不能直观的知道这个版本更新了啥显得不\"专业\"(笑)\n\n而\"稳定\"的更新链接又是有需求的\n\n共有以下几点原因\n1.长期订阅的链接需要一个稳定的源URL\n\n2.用户需要使用的网站也不是[网站整合]的所有网站\n\n3.我就更新两个订阅源，订阅界面那么大两个订阅显得太孤单了，就算加上旧版的W7.0和T8.0也才只有四个(笑)\n\n因为太闲了(误)我做了[整合分支]\n很简单的，就是删除其他分组\n改个固定的源URL，换个好看的图标就行了\n结果发现最废时间的竟然是源注释(猫猫震惊)\n\n\n⑤ 关于[整合分支]\n[整合分支]是提取[网站整合]部分分组的独立订阅，在此基础上增加一些[网站整合]之前因为更新需求而删除的网站，并固定使用?[网站整合]的(常用)分组\n",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://th.bing.com/th/id/Re29d9d6ccedbda572798b5da632f0504?rik=HHOviwskPp0vMg&riu=http%3a%2f%2fwww.uimaker.com%2fuploads%2fallimg%2f20140930%2f1412040343135425.gif&ehk=Vry0sXROXmxQtojrZ7cednbg9urW0TILY91F556Y6gw%3d&risl=&pid=ImgRaw",
    "sourceName": "在线工具",
    "sourceUrl": "网站整合Pro[分支丨在线工具]"
  },
  {
    "articleStyle": 0,
    "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": 5017,
    "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": 1765930293880,
    "loadWithBaseUrl": true,
    "ruleArticles": "@js:\ntry{\n\t$=JSON.parse(src).text\n\tif($==\"no file\")$=[];\n\t}\ncatch(err){\n\n//网站整合\nif(baseUrl.match(/^https?\\:\\/\\/(www.)?baidu.com\\?wd=\\s*/)){\n\t\t$=[]\n\t\tbaseUrl.replace(/^.*?wd=\\s*/,'').replace(/\\,/g,',{\"headers\":{\"User-Agent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/82.0.4080.0 Safari/537.36 Edg/82.0.453.0\"}}').\n\t\tsplit('♞♞').map($$=>$.push({\n\t\t\t\tname_all: $$.match(/《(.*?)》/)[1],\n\t\t\t\ttime: $$.match(/◎(.*?)◎/)[1].replace(/■/,'■■■■■■■■■■■■■■■■■■').replace(/^g(.*)/,'固定链接$1'),\n\t\t\t\turi: $$.match(/【(.*?)】/)[1],\n\t\t\t\turl: $$.match(/^(.*?)【/)[1]\n\t\t\t}));\n}\n\n//‼️下面这组elseif语句，是为最后一个发现列表【酷安版阅读去限制】构建下载链接。与官方蓝奏云4个测试版中的共存版apk不能共存。\nelse if(\n\tbaseUrl.match(/\\/legadox\\//)){\n$=json=[]\n\t\tname_all = src.match(/\\[(legado.*?)\\]\\((.*?)\\)\\s*上次(构建时间.*)/)[1]\n\t\tid = \"https://ghproxy.com/\"+ src.match(/\\[(legado.*?)\\]\\((.*?)\\)\\s*上次(构建时间.*)/)[2]\n\t\ttime = src.match(/\\[(legado.*?)\\]\\((.*?)\\)\\s*上次(构建时间.*)/)[3]\n\njson.push({name_all:name_all,id:id,time:time})\n\nJSON.stringify(json)\n\n//最新构建下载:[legado-3.23.013123.apk](https://github.com/10bits/gedoor-Build/releases/download/legado-3.23.013123/legado-3.23.013123.apk) 上次构建时间:2023-02-01 02:15:27\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//蓝奏云分组链接\nelse{\n\tmat = 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、结束❗️\n❗️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\n❗️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<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                <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=\"  set='https://apis.jxcxin.cn/api/lanzou'; return onMatch()\" value=\"  解析线路一  \" class=\"btn btn-success\">\n                        <input type=\"button\" onclick=\"set='https://tool.bitefu.net/lanzou'; return onMatch()\" value=\"  解析线路二  \" class=\"btn btn-success\">\n                        <input type=\"button\" onclick=\"set='https://lanzou.baihe.gay'; return onMatch()\" value=\"  解析线路三  \" class=\"btn btn-success\">\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                        <button onclick=\"href=auto()\">非蓝奏链一键</button>\n\n<button onclick=\"copyText()\">◎复制直链◎</button>\n                        <input type=\"button\" onclick=\"Empty();\" value=\"  清空输入框  \" class=\"btn btn-danger\">\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提供 &金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(/.*(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=\"+document.getElementById(\"textSour\").value;\n}\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{{}}@js:\nurl=String(java.getString('$.url'))\n\n//一键导入html\nif(url.match(/^📥/)){\nurl=String(url).replace('📥','')\n\nurl=url.match(/^legado\\:\\/\\//)?url:\n\n//迷迭仓略写链接的补全\nurl.match(/^\\//)? 'legado://import/auto?src=https://agit.ai/butterfly/yd/raw/branch/yd'+url:\n\n'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$(/http/)?  uri:\n\n//一程简化图标\n$(/^\\//)?  uri:\n\n//‼️4⃣️423图标。\n//‼️baseUrl.match(/423down/)?  \"https://pic.616pic.com/ys_b_img/00/04/50/svvOHW89bj.jpg\":\n\n//蝶图标链接\n$(/^md/)?  \"http://pp.myapp.com/ma_icon/0/icon_52437554_1640934578/256\":\n\n//‼️▶️影视仓/多仓。图标写这里也行，列表那里不写。\n//‼️$(/b09svqv1c/)?  \"http://pic.y8l.com/up/2022-6/202262415595588.png\":\n\n//默认封面\n\"https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png\";\n\n//‼️补全酷安用户图标链接\n//‼️src.match(/^\\d{3}(\\/\\d\\d){3}$/) ?`http://avatar.coolapk.com/data/${src}_avatar_middle.jpg` :  \n\n//补全一程图标链接\nsrc.match(/^\\/[^\\.]*\\.png$/) ? `https://gitee.com/i-c/tc/raw/master/dy/yd${src}` : \nsrc",
    "ruleLink": "$.id@js:\nurl=`{{$.url}}`\n//下面这句if是为了【去限制共存版】\nif(result.match(/github/)){result}\nelse if(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",
    "singleUrl": false,
    "sortUrl": "📚一键导入1::http://www.baidu.com?wd=0、2、【md】《💙难受云.直链生成 or 一键导入》◎须先上传书源文件（txt文件）到难受云◎♞♞https://www.yckceo.com/shuyuan/yuan/index.html,【http://www.yckceo.com/favicon.ico】《💚书源》◎感谢木木❤️源仓库www.yckceo.com◎♞♞https://www.yckceo.com/rss/rss/index.html,【http://www.yckceo.com/favicon.ico】《💚订阅源》◎■◎♞♞📥https://www.gitlink.org.cn/api/yi-c/yd/raw?filepath=sy.json【/sy.png】《❤️一程书源》◎g｜每月更新◎♞♞📥https://www.gitlink.org.cn/api/yi-c/yd/raw?filepath=dy.json【/dy.png】《❤️一程订阅源》◎g｜每月更新◎♞♞https://www.gitlink.org.cn/api/yi-c/yd/raw?filepath=README.md【/fb.png】《🧡查看最后更新日期》◎■◎♞♞📥https://raw.githubusercontents.com/PB-pobing/pobing/pb/50.json【/sy.png】《❤️破冰书源》◎g｜随缘更新◎♞♞https://agit.ai/butterfly/pobing【/fb.png】《🧡查看最后更新日期》◎■◎♞♞📥https://ghproxy.com/https://raw.githubusercontent.com/zmn001125/booksources/master/sources/guaner.txt【/sy.png】《❤️关耳书源.女频向》◎g｜佛系更新◎♞♞https://agit.ai/butterfly/guaner【/fb.png】《🧡查看最后更新日期》◎■◎♞♞📥https://raw.iqiq.io/XIU2/Yuedu/master/shuyuan【/sy.png】《❤️XIU2书源》◎g｜◎♞♞https://agit.ai/butterfly/xiu2/commits/branch/master/shuyuan【/fb.png】《🧡查看最后更新日期》◎■◎♞♞📥https://www.gitlink.org.cn/api/haxc/book/raw?filepath=bookSource.json【/sy.png】《❤️Haxc漫画源.导入时有标示日期》◎■◎♞♞https://legado.cn/【/yd3.png】《❤️阅读论坛cn》◎legado.cn◎♞♞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编程狮◎\n\n\n📚一键导入2::http://www.baidu.com?wd=https://legado.aoaostar.com/【/yj.png】《💙一键导入.aoaostar整理收集》◎‼️标示的日期仅为采集刷新日期◎♞♞http://yuedu.miaogongzi.net/gx.html【/yj.png】《❤️一键导入.喵公子整理收集》◎网页◎♞♞https://legado.git.llc/【/yj.png】《💙一键导入.知命整理收集》◎■◎♞♞https://agit.ai/butterfly/yd/【md】《🧡查看以下各合集的版本日期》◎仅作参考.为上传仓库日期.非作者发布日期◎♞♞📥/迷迭书源.json【md】《💙迷迭常用书源》◎◎♞♞📥/迷迭订阅源.json【md】《💙迷迭常用订阅源》◎◎♞♞📥/迷迭TTS.json【md】《💙迷迭TTS在线语音引擎》◎‼️在线TTS朗读会耗用大量流量◎♞♞📥/黄凡凡书源.json【/sy.png】《💙黄凡凡书源》◎酷安@梧桐半死清霜后 ◎♞♞📥/不世玄奇书源.json【/sy.png】《💙不世玄奇.搜索引擎书源+通用书源》◎◎♞♞📥/不世玄奇订阅源.json【/dy.png】《💙不世玄奇.通用发现.订阅源》◎■◎♞♞📥https://ghproxy.com/https://github.com/MD-butterfly/yd/raw/main/Engels.json【https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png】《💔奇怪的订阅源》◎◎♞♞https://jq.qq.com/?_wv=1027&k=6xsTVR3U【md】《暗香迷蝶QQ交流群462030508点我跳转加群》◎若有异常，请自行手动加群◎\n\n📙阅读3.0官方::https://kunfei.lanzoui.com/b0f810h4b##【https://i.loli.net/2021/06/23/S7rvWRZtPIq34MJ.png】\nTTS.Server::https://jing332.lanzouw.com/b09ho81qb##1234\n🎨异次元/漫画::https://yiciyuan.lanzoui.com/b00ej0kba##【https://mmbiz.qlogo.cn/mmbiz_jpg/GwqVApVbd26P0XRjNg7FOdcy1kBEBfNV6PhmNPdMxGrejHxe7cibbbLE5msAj3x5KtPo2FxdI7XPFOcGsW43Zzg/300】\n4⃣️小说软件::https://423down.lanzouv.com/b0f1cdr9i##【https://pic.616pic.com/ys_b_img/00/04/50/svvOHW89bj.jpg】\n\n📙阅读2.0 已不更::https://kunfei.lanzoui.com/b0f7pt4hi##【https://i.loli.net/2021/06/23/S7rvWRZtPIq34MJ.png】\n📙阅读X 3.0 已不更::https://hahahahahaha.lanzoux.com/b08rjey5i##no18ls【https://i.loli.net/2021/06/23/S7rvWRZtPIq34MJ.png】\n📙阅读.A (去限制共存)::https://agit.ai/butterfly/legadox/raw/branch/master/README.md\n📙阅读pro/不似苏::https://busisu.lanzoub.com/s/yuedupro##777【https://i.loli.net/2021/06/23/S7rvWRZtPIq34MJ.png】",
    "sourceComment": "异次元23.3.30图源\n网络导入：http://c.nxw.so/1367\n下载：wws.lanzoul.com/iVdgO0rkajif\n————————\n酷安版阅读 与官方蓝奏云4个测试版中的主apk不能共存（签名不同，只能2选1安装）\n阅读.A(去限制共存版）与官方蓝奏云4个测试版中的共存版apk不能共存（应该，迷迭没安装这个版本）\n————————\nby.Thomas.  迷迭轻改&收集整理。\n✱✱交流群462030508。\nA群637775313不加人。若家炸了查看此群群资料找新家。\n✱✱内容取自网络，仅供学习参考，请同学们在24小时内删除✱✱\n————————\n\nw页请求头\n{\"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.6.164\"}\n\n,{\"headers\":{\"User-Agent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/82.0.4080.0 Safari/537.36 Edg/82.0.453.0\"}}\n\nm页请求头\n{\"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\n,{\"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 Mobile Safari/537.36\"}}\n\n——————————没更新了，先剔除出来。\n♞♞📥https://www.gitlink.org.cn/api/fcdlcb/ydsy/raw?filepath=bookSource.json【/sy.png】《💔风停在了窗边书源.22.8.18》◎g｜已不更◎♞♞📥https://www.gitlink.org.cn/api/fcdlcb/ydsy/raw?filepath=exportRssSource.json【/dy.png】《💔风停在了窗边订阅源.22.8.18》◎g｜已不更◎♞♞https://gitlink.org.cn/fcdlcb/【/fb.png】《🧡查看最后更新日期》◎■◎\n\n♞♞https://md-butterfly.github.io/yd/index.html【md】《💔一键导入.迷迭整理收集.不维护更新这个页面了》◎网页◎\n\n♞♞https://md-butterfly.github.io/yd/readme.html【md】《readme》◎本订阅源的一些乱七八糟说明◎\n\n♞♞https://www.yckceo.com/yiciyuan/tuyuan/index.html,【http://www.yckceo.com/favicon.ico】《💚异次元.漫画源（需复制链接到异次元导入）》◎■◎\n\n♞♞📥/Namo书源.json【/sy.png】《💙Namo书源》◎◎♞♞📥/onede书源.json【/sy.png】《💙onede书源》◎◎\n\n♞♞https://data.newrank.cn/m/s.html?s=NykyOzI9MS5LNQ%3D%3D【/ydlogo.png】《阅读公众号搜索》◎◎\n\n♞♞https://legado.cc/【/yd3.png】《❤️阅读论坛cc》◎legado.cc◎\n\n♞♞https://jq.qq.com/?_wv=1027&k=6xsTVR3U【http://pp.myapp.com/ma_icon/0/icon_10555_1657195559/256】《暗香迷蝶QQ交流群462030508点我跳转加群》◎若有异常，请自行手动加群◎",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://agit.ai/butterfly/yd/raw/branch/yd/pic/0green.jpg",
    "sourceName": "蓝奏云盘",
    "sourceUrl": "https://www.lanzoux.com/#a1",
    "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}"
  },
  {
    "articleStyle": 0,
    "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": 5019,
    "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": 1765930305854,
    "loadWithBaseUrl": 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\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$(/http/)?  uri:\n\n//一程简化图标\n$(/^\\/[^\\.]*\\.png$/)?  uri:\n\n$(/^md/)?  \"http://pp.myapp.com/ma_icon/0/icon_52437554_1640934578/256\":\n\n//4⃣️423图标。\nbaseUrl.match(/423down/)?  \"https://img2.baidu.com/it/u=3514663720,1320483921&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500\":\n\n//baseUrl.match(/423down/)?  \"https://img2.baidu.com/it/u=927735612,3408063919&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=629\":\n\n//‼️▶️影视仓/多仓。图标写这里也行，列表那里不写。\n//‼️$(/b09svqv1c/)?  \"http://pic.y8l.com/up/2022-6/202262415595588.png\":\n\n//‼️默认图标，粉色小鸟\n//\"https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png\";\n\n//默认图标，apk图标\n\"https://android-artworks.25pp.com/fs08/2021/08/02/7/110_578817aeea22639f2b3e99603deae43d_con_130x130.png\";\n\n//‼️补全酷安用户图标链接\n//‼️src.match(/^\\d{3}(\\/\\d\\d){3}$/) ? `http://avatar.coolapk.com/data/${src}_avatar_middle.jpg` :  \n\n//补全一程图标链接\nsrc.match(/^\\/[^\\.]*\\.png$/) ? `https://gitee.com/i-c/tc/raw/master/dy/yd${src}` : src\n\n//‼️src.match(/^apk/)? \"https://android-artworks.25pp.com/fs08/2021/08/02/7/110_578817aeea22639f2b3e99603deae43d_con_130x130.png\": src",
    "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",
    "singleUrl": false,
    "sortUrl": "▶️多仓本地包::http://www.baidu.com?wd=https://agit.ai/butterfly/md/raw/branch/Zaku/987date.json【md】《🧡查看更新日期.987包不勤更。＆相关使用说明》◎不勤更💔用在线线路吧◎♞♞http://gg.gg/MMvMM【md】《💙987本地包.下载后改回zip后缀.解压.密码987》◎‼️解压出3个文件夹放到根目录◎♞♞https://agit.ai/butterfly/md/archive/Zaku.zip【md】《💙多仓配置接口本地包.987已含.解压到.根目录/001box》◎■◎♞♞https://ghproxy.com/https://github.com/gaotianliuyun/gao/archive/refs/heads/master.zip【http://pic.y8l.com/up/2022-6/202262415595588.png】《❤️高天流云本地包.下载.解压到.根目录/002box/gao-master/》◎固定链接，持续维护更新◎♞♞https://agit.ai/butterfly/gaotianliuyun【http://pic.y8l.com/up/2022-6/202262415595588.png】《🧡查看最后更新日期》◎■◎♞♞https://agit.ai/1452635819/h/archive/master.zip【http://pic.y8l.com/up/2022-6/202262415595588.png】《❤️1452635819本地包.下载.解压到.根目录/002box/h/》◎固定链接，持续维护更新◎♞♞https://agit.ai/1452635819/h【http://pic.y8l.com/up/2022-6/202262415595588.png】《🧡查看最后更新日期》◎■◎♞♞https://ghproxy.com/https://raw.githubusercontent.com/FongMi/TV/release/release/leanback-python.apk【】《❤️FongMi.蜂蜜.python版（Jar+Js+Py）》◎TV、TV盒子适用，手机不太适用◎♞♞https://ghproxy.com/https://raw.githubusercontent.com/FongMi/TV/release/release/leanback-java.apk【】《❤️FongMi.蜂蜜.java版（Jar+Js）》◎TV、TV盒子适用，手机不太适用◎♞♞https://agit.ai/butterfly/FongMi/src/branch/release/release【】《🧡查看最后更新日期》◎■◎♞♞https://ghproxy.com/https://github.com/Hunlongyu/ZY-Player/releases/download/v2.8.8/ZY-Player-Setup-2.8.8.exe【https://img1.baidu.com/it/u=324044657,1369754856&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500】《❤️[PC版] ZY-player 2.8.8  与box的源不通用 》◎电脑上用的，看源注释◎\n\n\n▶️多仓本地包/云星::https://wwc.lanzoub.com/b0erx68gf##4e93【https://image.28283.com/attachment/soft/2022/0920/101944_94931889.png】\n▶️可视TV/多仓/云星::https://wwc.lanzoub.com/b0es81t8j##54jb【https://image.28283.com/attachment/soft/2022/0920/101944_94931889.png】\n▶️影视仓/多仓/奇奇::https://qiqi2020.lanzouv.com/b09svqv1c##666【http://pic.y8l.com/up/2022-6/202262415595588.png】\n\n▶️TVBox/终南::https://wws.lanzouv.com/b03j4ulyh##999【https://pic.yidown.com/uploadfile/2022/1129/20221129010510248.png】\n▶️TVbox/神器::https://tsq.lanzouv.com/b0c4nr91c##123【https://pic.yidown.com/uploadfile/2022/1129/20221129010510248.png】\nPC版ZY-Player::https://www.lanzoux.com/b04s6a3re##95px【http://pic.y8l.com/up/2022-6/202262415595588.png】\n\n\n🎬海阔视界::https://haikuo.lanzoui.com/u/GoldRiver##【http://image.coolapk.com/apk_logo/2021/0725/14/ic_launcher-286481-o_1fbe4snlg1r9n1vfokun2st7c3r-uid-726186@192x192.png】\n🎨异次元/漫画::https://yiciyuan.lanzoui.com/b00ej0kba##【https://mmbiz.qlogo.cn/mmbiz_jpg/GwqVApVbd26P0XRjNg7FOdcy1kBEBfNV6PhmNPdMxGrejHxe7cibbbLE5msAj3x5KtPo2FxdI7XPFOcGsW43Zzg/300】\n\n🐶土狗浏览器::https://www.lanzoux.com/s/tgllq##【https://files.youxibao.com/imgfile/20220918/180828286hk7.png】\n\n♬歌词适配::https://gcsp.lanzoux.com/b0e895h2b?w1\n//‼️423软件‼️\n4⃣️洛雪音乐多版本::https://pan.lanzouo.com/b0bf2cfa/##glqw\n4⃣️小黄鸟::https://423down.lanzouv.com/b0f1b9v6j\n4⃣️影视软件::https://423down.lanzouv.com/b0f2x4syh\n4⃣️系统辅助::https://423down.lanzouv.com/b0f1944od\n4⃣️视频图像::https://423down.lanzouv.com/b0f1czyjc\n4⃣️Xposed框架::https://423down.lanzouv.com/b0f1fns7a\n4⃣️TV盒子::https://423down.lanzouv.com/b0f1944aj\n4⃣️资讯软件::https://423down.lanzouv.com/b0f19mgrg\n4⃣️酷安mod::https://423down.lanzouv.com/b0f2uzq2b\n4⃣️WiFi万能钥匙::https://423down.lanzouv.com/b0f1f1t5c\n4⃣️抖音mod::https://423down.lanzouv.com/b0f199a5a\n4⃣️百度地图::https://423down.lanzouv.com/b0f1f64re\n4⃣️浏览器::https://423down.lanzouv.com/b0f24u4de\n4⃣️计算器::https://423down.lanzouv.com/b0f21mrtc\n\napk/不似苏::https://busisu.lanzoub.com/s/yixie##777\n\n\n//‼️快乐分享者‼️\nℹ️软件2::https://lanzoul.com/b02e5e9sd\n💀🎮游戏2::https://lanzoul.com/b02e5e9je##【https://android-artworks.25pp.com/fs08/2022/01/13/5/123_4354f8163cf3b486a8451db4a93adc71_con_130x130.png】\n💀视频2::https://lanzoul.com/b02cy1lzg##【https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png】\n\n\n//‼️2978059511提供‼️\n💀视频3::https://lanzoul.com/b03jjyyvg##【https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png】\n\n♟ES浏览器::https://lanzoui.com/b00ze62be\n♟幸运破解器::https://ghpym.lanzouo.com/b011ah2ah##byfa",
    "sourceComment": "‼️987本地包暂时懒得更新了。张弘删仓跑路，另加了另一个大佬的本地包。暂时先更新一下多仓本地配置，或者用多仓在线配置接口吧：\nhttps://agit.ai/butterfly/md/raw/branch/Zaku/DC-main.json\n\n————————\n✱✱ZY-Player 电脑版\nhttps://ghproxy.com/https://github.com/Hunlongyu/ZY-Player/releases/download/v2.8.8/ZY-Player-Setup-2.8.8.exe\n\n专用源。没测试整理，有部分线路失效，重复\nhttps://raw.iqiq.io/Hunlongyu/ZY-Player-Resources/main/Sites/20220713.json\n\nhttps://ghproxy.com/https://github.com/vfdecl/zy-player-kankan-resource/raw/main/resource.json\n\nhttps://ghproxy.com/https://github.com/shiran588/ZY-Player/raw/main/ZYcr.json\n————————\n♞♞https://md-butterfly.github.io/yd/indexb.html【https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png】《❤️[PC版] ZY-player 2.8.8 及相关源》◎电脑上用的。◎\n\n♞♞https://raw.iqiq.io/Hunlongyu/ZY-Player-Resources/main/Sites/20220713.json【https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png】《❤️ZY-Player专用源 1，下载，电脑软件内导入》◎22.7.13有些线路可能已失效◎♞♞https://ghproxy.com/https://github.com/vfdecl/zy-player-kankan-resource/raw/main/resource.json【https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png】《❤️ZY-Player专用源 2，下载，电脑软件内导入》◎有些线路可能已失效◎♞♞https://ghproxy.com/https://github.com/shiran588/ZY-Player/raw/main/ZYcr.json【https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png】《❤️ZY-Player专用源 3，下载，电脑软件内导入》◎■◎\n\n————————\n:23.1.9 v2\n在Thomas订阅源基础上修改列表内容。\n————————\n✱✱交流群462030508。\nA群637775313不加人。若家炸了查看此群群资料找新家。\n✱✱内容取自网络，仅供学习参考，请同学们在24小时内删除✱✱\n————————\nhttps://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png\nhttp://img0.baidu.com/it/u=2388227362,445367413&fm=253&app=138&f=JPEG?w=500&h=666\n◎————————————————————◎\n{\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36\"}\n\n{\"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\n————————\n♞♞https://md-butterfly.github.io/yd/readmebox.html【md】《❤️readme》◎本订阅源的一些乱七八糟说明◎\n\n♞♞http://77url.com/MMvMM【md】《💙987本地包.下载后改回zip后缀.解压.密码987》◎‼️解压出3个文件夹放到根目录◎\n\nxℹ️软件::https://lanzoul.com/b02damfkd\nx💀🎮游戏::https://lanzoul.com/b02cy01di##【https://android-artworks.25pp.com/fs08/2022/01/13/5/123_4354f8163cf3b486a8451db4a93adc71_con_130x130.png】\n♟ps2模拟器::https://xianuani.lanzoux.com/b02in8lqj##5fxg\n💔♟李跳跳::https://wwe.lanzouw.com/b01v0g3wj##1233\n",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://agit.ai/butterfly/yd/raw/branch/yd/pic/0pink.jpg",
    "sourceName": "蓝奏云盘",
    "sourceUrl": "https://www.lanzoux.com/#c0"
  },
  {
    "articleStyle": 0,
    "customOrder": 5020,
    "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": 1765930311314,
    "loadWithBaseUrl": true,
    "ruleArticles": "<js>\ntry{\n\t$=JSON.parse(src).text\n\tif($==\"no file\")$=[];\n\t}\ncatch(err){\n\n\tmat = baseUrl.match(/^(.*?com)[^##]*\\/(.+)$/)\n\t\turl = java.put('url', mat[1])\n\t\turi = java.put('uri', mat[2])\n\nfunction $(reg){\n\t\treturn uri.match(reg)?true:false\n\t}\n\n//get【pwd】(链接提取码)\npwd = \n$(/##[^【]/)?  baseUrl.match(/##(.*?)(【|$)/)[1]:\n\"\";\n\neval(result.match(/var pgs;([\\s\\S]*?pgs.+;)/)[1]);\neval('$='+result.match(/data :([\\s\\S]*?\\})/)[1])\n\nbody = \"\";\nfor(key in $)body += key+'='+$[key]+'&';\nbody = String(body).replace(/&$/,'');\n\nurl += `/filemoreajax.php,{\"method\":\"POST\",\"body\":\"${body}\"}`\n\njava.ajax(url)}\n</js>\n$.text",
    "ruleContent": "@js:\n$=JSON.parse(src).data;\npath=String($.name).match(/净化/)?\n\"replaceRule\":\nString($.name).match(/订阅[^失败]/)?\n\"rssSource\": \"bookSource\";\n\nsrc = \"legado://import/\"+path+\"?src=\";\n\n//【过客】及【快乐】的蓝奏云列表，下载页面添加提示注释。其他列表则跳转到普通下载页面。\nbaseUrl.match(/lanzoul/)? \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><br>\n\n<center>\n<h3>${$.name}</h3>\n</center>\n　　注：点◎下载文件◎，底栏会弹出信息，<br>\n　　再点信息右面的“下载”，才会开始下载。<br>\n　　文件下载默认存放在 根目录/Download/<br>\n<br>\n　　注：软件若有推群弹窗，分享时不发出去，<br>\n　　返回也算分享成功。勿信广告博彩诈骗。<br>\n<br>\n<h5 style=\"margin:0;padding:3% 5%\">\n\n<b style=\"float:left\"></b>\n\n<b style=\"float:right\">\n文件大小： ${$.size}\n<br><br>\n上传日期： ${$.time}\n<br><br><br>\n<a href=\"${$.url}\">◎ 下载文件 ◎　　　　　　　　　</a>\n</b>\n\n</h5>\n<br><br><br><br><br>\n<p>　　${$.describe}</p>\n\n<br>↓资源链接，点击复制<textarea id=\"copy\" onclick=\"copy()\">${$.url}</textarea>\n<br><br><center>\nrssSource by.Thomas.　　 迷迭轻改&收集整理<br><br>\n资源取自网络，仅作参考试用，请24小时内删除<br></center>\n<script>\nfunction copy(){\n\tdocument.getElementById('copy').select()\n\tdocument.execCommand('copy')\n\talert(\"复制成功\")\n}\n</script>\n`: \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><br><br><br>\n<center>\n<h3>${$.name}</h3>\n</center>\n　　注：点◎下载文件◎，底栏会弹出信息，<br>\n　　再点信息右面的“下载”，才会开始下载。<br>\n　　文件下载默认存放在 根目录/Download/<br>\n<br>\n<h5 style=\"margin:0;padding:3% 5%\">\n\n<b style=\"float:left\"></b>\n\n<b style=\"float:right\">\n文件大小： ${$.size}\n<br><br>\n上传日期： ${$.time}\n<br><br><br>\n<a href=\"${$.url}\">◎ 下载文件 ◎　　　　　　　　　</a>\n</b>\n\n</h5>\n<br><br><br><br><br>\n<p>　　${$.describe}</p>\n\n<br>↓资源链接，点击复制<textarea id=\"copy\" onclick=\"copy()\">${$.url}</textarea>\n<br><br><center>\nrssSource by.Thomas.　　 迷迭轻改&收集整理<br><br>\n资源取自网络，仅作参考试用，请24小时内删除<br></center>\n<script>\nfunction copy(){\n\tdocument.getElementById('copy').select()\n\tdocument.execCommand('copy')\n\talert(\"复制成功\")\n}\n</script>\n`##　　(null|undefined)|null|获取失败",
    "ruleImage": "@js:\nsrc =\nbaseUrl.match(/【http/)?  baseUrl.match(/【(.*?)(】|$)/)[1]:\n\n//一程图标简写补全\nbaseUrl.match(/【\\//)?  \"https://gitee.com/i-c/tc/raw/master/dy/yd\"+baseUrl.match(/【(.*?)(】|$)/)[1]:\n\n//4⃣️423 简写补全\n//baseUrl.match(/【4】/)?  \"https://pic.616pic.com/ys_b_img/00/04/50/svvOHW89bj.jpg\":\n\nbaseUrl.match(/423down/)?  \"https://img2.baidu.com/it/u=2176863467,1140264399&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=501\":\n\n\n//‼️蝶图标 简写补全\n//‼️baseUrl.match(/【md】/)? \"http://pp.myapp.com/ma_icon/0/icon_52437554_1640934578/256\":\n\n//‼️默认图标：粉色小鸟图标\n//‼️\"https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png\"\n\n//默认图标：apk图标\n\"https://android-artworks.25pp.com/fs08/2021/08/02/7/110_578817aeea22639f2b3e99603deae43d_con_130x130.png\"",
    "ruleLink": "@js:\n//key=0;\nkey=String(source.getVariable());\nkey=key.match(/^[12]/)? key:\"0\";\n\nkey.match(/^1/)? \"https://lanzou.baihe.gay/?url=@get:{url}/{{$.id}}\" :\n//key.match(/^2/)?\"https://tool.bitefu.net/lanzou?url=@get:{url}/{{$.id}}\" :\n\"https://apis.jxcxin.cn/api/lanzou?url=@get:{url}/{{$.id}}\";",
    "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}}",
    "ruleTitle": "$.name_all",
    "singleUrl": false,
    "sortUrl": "▶️多仓本地包/云星::https://wwc.lanzoub.com/b0erx68gf##4e93【https://image.28283.com/attachment/soft/2022/0920/101944_94931889.png】\n▶️可视TV/多仓/云星::https://wwc.lanzoub.com/b0es81t8j##54jb【https://image.28283.com/attachment/soft/2022/0920/101944_94931889.png】\n▶️影视仓/多仓/奇奇::https://qiqi2020.lanzouv.com/b09svqv1c##666【http://pic.y8l.com/up/2022-6/202262415595588.png】\n\n▶️TVBox/终南::https://wws.lanzouv.com/b03j4ulyh##999【https://pic.yidown.com/uploadfile/2022/1129/20221129010510248.png】\n▶️TVbox/神器::https://tsq.lanzouv.com/b0c4nr91c##123【https://pic.yidown.com/uploadfile/2022/1129/20221129010510248.png】\nPC版ZY-Player::https://www.lanzoux.com/b04s6a3re##95px【http://pic.y8l.com/up/2022-6/202262415595588.png】\n\n🎬海阔视界::https://haikuo.lanzoui.com/u/GoldRiver##【http://image.coolapk.com/apk_logo/2021/0725/14/ic_launcher-286481-o_1fbe4snlg1r9n1vfokun2st7c3r-uid-726186@192x192.png】\n🎨异次元/漫画::https://yiciyuan.lanzoui.com/b00ej0kba##【https://mmbiz.qlogo.cn/mmbiz_jpg/GwqVApVbd26P0XRjNg7FOdcy1kBEBfNV6PhmNPdMxGrejHxe7cibbbLE5msAj3x5KtPo2FxdI7XPFOcGsW43Zzg/300】\n\n🐶土狗浏览器::https://www.lanzoux.com/s/tgllq##【https://files.youxibao.com/imgfile/20220918/180828286hk7.png】\n\n\n♬歌词适配::https://gcsp.lanzoux.com/b0e895h2b?w1\n//‼️423软件‼️\n4⃣️洛雪音乐多版本::https://pan.lanzouo.com/b0bf2cfa/##glqw\n4⃣️小黄鸟::https://423down.lanzouv.com/b0f1b9v6j\n4⃣️影视软件::https://423down.lanzouv.com/b0f2x4syh\n4⃣️系统辅助::https://423down.lanzouv.com/b0f1944od\n4⃣️视频图像::https://423down.lanzouv.com/b0f1czyjc\n4⃣️Xposed框架::https://423down.lanzouv.com/b0f1fns7a\n4⃣️TV盒子::https://423down.lanzouv.com/b0f1944aj\n4⃣️资讯软件::https://423down.lanzouv.com/b0f19mgrg\n4⃣️酷安mod::https://423down.lanzouv.com/b0f2uzq2b\n4⃣️WiFi万能钥匙::https://423down.lanzouv.com/b0f1f1t5c\n4⃣️抖音mod::https://423down.lanzouv.com/b0f199a5a\n4⃣️百度地图::https://423down.lanzouv.com/b0f1f64re\n4⃣️浏览器::https://423down.lanzouv.com/b0f24u4de\n4⃣️计算器::https://423down.lanzouv.com/b0f21mrtc\n\napk/不似苏::https://busisu.lanzoub.com/s/yixie##777\n\n\n\n//‼️快乐分享者‼️\nℹ️软件2::https://lanzoul.com/b02e5e9sd\n💀🎮游戏2::https://lanzoul.com/b02e5e9je##【https://android-artworks.25pp.com/fs08/2022/01/13/5/123_4354f8163cf3b486a8451db4a93adc71_con_130x130.png】\n💀视频2::https://lanzoul.com/b02cy1lzg##【https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png】\n\n//‼️2978059511提供‼️\n💀视频3::https://lanzoul.com/b03jjyyvg##【https://android-artworks.25pp.com/fs08/2023/01/03/9/110_03e44582413966c9a6310cf847cc08ba_con_130x130.png】\n\n♟ES浏览器::https://lanzoui.com/b00ze62be\n♟幸运破解器::https://ghpym.lanzouo.com/b011ah2ah##byfa",
    "sourceComment": "切换解析线路：如果出现问题页面打不开，点右上角 ->“设置源变量”-> 输入数字。确认。\n（刷新 重新加载列表）\n\n额，测试频繁玩坏了，被封ip了。。\n不知源变量判断语句有没有问题。\n如果仍然打不开网页，请修改“列表”->最下面那项“链接规则”里的语句全删了，换下面3个线路中的一个。‼️bitefu线路参数略不同，就不用也这个订阅源里了。\nhttps://tool.bitefu.net/lanzou?url=@get:{url}/{{$.id}}\nhttps://apis.jxcxin.cn/api/lanzou?url=@get:{url}/{{$.id}}\nhttps://lanzou.baihe.gay/?url=@get:{url}/{{$.id}}\n\n————————\nhttps://tool.bitefu.net/lanzou?type=down&url=\nhttps://apis.jxcxin.cn/api/lanzou?type=down&url=\nhttps://lanzou.baihe.gay/?type=down&url=\n————————\n@js:\n//key=0;\nkey=String(source.getVariable());\nkey=key.match(/^[12]/)? key:\"0\";\n\nkey.match(/^1/)? \"https://tool.bitefu.net/lanzou?url=@get:{url}/{{$.id}}\" : \nkey.match(/^2/)? \"https://apis.jxcxin.cn/api/lanzou?url=@get:{url}/{{$.id}}\" : \"https://lanzou.baihe.gay/?url=@get:{url}/{{$.id}}\";\n————————\nby. Thomas\n\n云图标\nhttp://i-1.emu999.net/2105/2148/6559a00508a842a0ab5ccdb7f74ca7f2.png\n蝶图标\nhttp://pp.myapp.com/ma_icon/0/icon_52437554_1640934578/256\n\n\n\n\n\nhttps://i01piccdn.sogoucdn.com/ccfccb7297e21f01\n\n‼️若无法跳转到下载页面，请刷新列表（右上角，“刷新分类”。或下拉屏幕也可刷新）。\n————————\n本订阅源套用了第三方直链生成工具。\nby. Thomas\nmd轻改及收集整理列表。\n————————\n小说交流群462030508\nA群637775313不加人。若群炸了查看此群群资料找新家。\n\n内容取自网络，仅供学习参考，请同学们在24小时内删除\n————————\n云图标\nhttp://i-1.emu999.net/2105/2148/6559a00508a842a0ab5ccdb7f74ca7f2.png\n蝶图标\nhttp://pp.myapp.com/ma_icon/0/icon_52437554_1640934578/256\n————————\n4⃣️小说软件::https://423down.lanzouv.com/b0f1cdr9i\n📙阅读3.0::https://kunfei.lanzoui.com/b0f810h4b##【https://i.loli.net/2021/06/23/S7rvWRZtPIq34MJ.png】\n📙阅读pro/不似苏::https://busisu.lanzoub.com/s/yuedupro##【https://i.loli.net/2021/06/23/S7rvWRZtPIq34MJ.png】\n📙阅读X 3.0 已不更::https://hahahahahaha.lanzoux.com/b08rjey5i##no18ls【https://i.loli.net/2021/06/23/S7rvWRZtPIq34MJ.png】\n📙阅读2.0 已不更::https://kunfei.lanzoui.com/b0f7pt4hi##【https://i.loli.net/2021/06/23/S7rvWRZtPIq34MJ.png】\n\n▶️多仓本地包/云星::https://wwc.lanzoub.com/b0erx68gf##4e93【https://image.28283.com/attachment/soft/2022/0920/101944_94931889.png】\n▶️可视TV/多仓/云星::https://wwc.lanzoub.com/b0es81t8j##54jb【https://image.28283.com/attachment/soft/2022/0920/101944_94931889.png】\n▶️影视仓/多仓/奇奇::https://qiqi2020.lanzouv.com/b09svqv1c##666【http://pic.y8l.com/up/2022-6/202262415595588.png】",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://agit.ai/butterfly/yd/raw/branch/yd/pic/purple2.jpg",
    "sourceName": "蓝奏云盘",
    "sourceUrl": "https://www.lanzoux.com#d1",
    "style": "a{text-decoration:none}\nimg{width:20%;height:auto;border-radius:50%}\ntextarea{width:100%;border-radius:5px}",
    "variableComment": "✱✱请输入数字，选择解析线路：\n0  jxcxin线路；\n1  baihe线路。\n不选则默认为 0.jxcxin线路。"
  }
]