[
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10100162,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "版本：在线版\n——洛娅橙",
    "sourceIcon": "https://gitee.com/lyc486/yuedu/raw/master/drtb.gif",
    "sourceName": "导入",
    "sourceUrl": "https://loyc.xyz/b/daoru",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": ".+abe.ymmiyun.com.+,.+star.xfztgxt.com.+,.+jjpp.lmtjapi.com.+",
    "customOrder": -10100161,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "@js:\ncache.putMemory('yckdm',String.raw`\njava.toast('地址发布页 yckceo.vip');\nvar surl='https://yckceo.vip', mint=9999;\r\nvar rr=java.ajax(surl);\r\nrr = org.jsoup.Jsoup.parse(rr);\nrr = rr.select(\"#urllist a:not([href='#'])\");\nrr.length<2&&java.longToast('发布页访问异常');\nPackages.java.util.Collections.reverse(rr);\r\nlet aly = new JavaImporter(Packages.org.jsoup.Jsoup, Packages.org.jsoup.Connection);\r\nfor (char of rr) {\r\n\tlet url = char.attr(\"href\");\r\n\turl = 'https://' + String(url).replace(/^.*\\//, '');\r\n\ttry {\r\n\tlet st = Date.now();\r\n\t\twith (aly) {\r\n\t\t\tJsoup.connect(url)\r\n\t\t\t\t.timeout(5000)\r\n\t\t\t\t.ignoreContentType(true)\r\n\t\t\t\t.followRedirects(false)\r\n\t\t\t\t.method(Connection.Method.HEAD)\r\n\t\t\t\t.execute()}\r\n\tlet et = Date.now();\n\turl+=(cache.get('yckwb')||'');\r\n\tlet tm = et-st;\r\n\tif (tm<900) {surl=url; break;}\r\n\tif (tm<mint) {mint=tm;surl=url;}\r\n\t} catch(err) {}\r\n}\ntry {\ncookie.setCookie(surl,source.getLoginHeaderMap().Cookie);\n} catch(e) {cookie.removeCookie(surl);}\nsurl\r\n`);\r\nJSON.stringify({\"User-Agent\":java.getWebViewUA().replaceAll(\"; wv| Version\\/4.0\",'')});",
    "jsLib": "qiehuanlib=[{首页:\"\"},{阅读:\"/yuedu/index/index.html\"},{书源:\"/yuedu/shuyuan/index.html\"},{书源合集:\"/yuedu/shuyuans/index.html\"},{订阅源:\"/yuedu/rss/index.html\"},{订阅源合集:\"/yuedu/rsss/index.html\"},{其它:\"/yuedu/tools/index.html\"}];",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "[\n {\n \"name\": \"📌切换起始页\",\n \"type\": \"button\",\n \"action\": \"qiehuan()\",\n \"style\": {\n \t\"layout_flexGrow\": 0,\n \t\"layout_flexBasisPercent\": -1,\n  \"layout_wrapBefore\": true}\n },\n {\n \"name\": \"📝登录\",\n \"type\": \"button\",\n \"action\": \"denglu()\",\n \"style\": {\n  \"layout_flexGrow\": 0,\n  \"layout_flexBasisPercent\": -1,\n  \"layout_wrapBefore\": false}\n }\n]",
    "loginUrl": "function login(){}\nfunction qiehuan(){\n\tlet nm = source.get('ycknm');\n\tif(nm==''||nm>6) {nm=0;}\n\tlet qh = qiehuanlib[nm];\n\tlet key = Object.keys(qh)[0];\n\tlet value = qh[key];\n\tcache.put('yckwb',value);\n\tjava.longToast('\\n起始页已设为\\n'+key);\n\tnm++;\n\tsource.put('ycknm',nm);\n}\nfunction denglu(){\n\tlet url=eval(String(cache.getFromMemory('yckdm'))).match(/^http.{4}[^\\/]+/);\n\tif (url) {\n\tjava.startBrowserAwait(url,'登录');\n\tPackages.java.lang.Thread.sleep(50);\n let ck=cookie.getCookie(url)+'';\nif (!ck.includes('token')) java.toast('💔登录失败');\nelse source.putLoginHeader(`{Cookie: \"${ck}\"}`),java.toast('🎉登录成功');\n\t\t} else java.toast('获取网址失败');\n}",
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceIcon": "https://gitee.com/lyc486/yuedu/raw/master/ycktb.gif",
    "sourceName": "源仓库",
    "sourceUrl": "http@js:eval(String(cache.getFromMemory('yckdm')))",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": -10100160,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "jsLib": "let hosts = [\n\"https://skybook.pages.dev\",\n\"https://skybook.legado1.top\",\n\"https://sw.skybook.qzz.io\"\n]\n\nfunction bhost() {\n  const { source, java } = this\n  let host = source.getVariable()\n  if (host == \"\") {\n    host = checkLatency(hosts, this)[0].host\n    source.setVariable(host)\n  }\n  return host\n}\n\nfunction checkLatency(urls, ctx) {\n  const { java } = ctx\n  var results = [],\n    count = 0;\n  for (var i = 0; i < urls.length; i++) {\n    var url = urls[i].startsWith(\"http\") ? urls[i] : \"https://\" + urls[i];\n    try {\n      java.toast(`检测可用线路：(${i + 1}/${urls.length})`);\n      var start = Date.now();\n      org.jsoup.Jsoup.connect(url)\n        .method(org.jsoup.Connection.Method.HEAD)\n        .timeout(5000)\n        .ignoreHttpErrors(true)\n        .execute();\n      var end = Date.now();\n      var latency = end - start;\n      if (latency > 0) count++;\n      results.push({ host: url, latency: latency });\n    } catch (e) {\n      java.log(url + \":\" + e);\n    }\n  }\n  results.sort(function (a, b) {\n    return a.latency - b.latency;\n  });\n  java.longToast(`检测完成：共(${count}/${urls.length})个可用线路`);\n  return results;\n}",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "loginUi": "[\n{\"name\":\"多线路优选\",\"type\":\"button\",\"action\":\"check()\"}\n]",
    "loginUrl": "function check() {\n\tcheckLatency(hosts, this)\n}",
    "preload": false,
    "ruleArticles": "@js:\nlet item_list = [];\n\nif (baseUrl.includes(\"activities\")) {\n  let res = java.ajax(bhost() + \"/content.json\");\n  let posts = JSON.parse(res).posts || [];\n  let sixHours = 6 * 60 * 60 * 1000;\n\n  let activities = posts.map(function(post) {\n    let title = post.title || '无标题';\n    let permalink = post.path || '#';\n    let author = post.author || '明月';\n    let date = post.date;\n    let updated = post.updated;\n\n    if (!date) return null;\n    let publish = new Date(date);\n    if (isNaN(publish)) return null;\n\n    let effective = publish;\n    let type = 'publish';\n\n    if (updated) {\n      let upd = new Date(updated);\n      if (!isNaN(upd) && (upd - publish) > sixHours) {\n        type = 'update';\n        effective = upd;\n      }\n    }\n\n    return { type, date: effective, title, permalink, author };\n  }).filter(Boolean);\n\n  let sorted = activities\n    .filter(a => !isNaN(a.date))\n    .sort((a, b) => b.date - a.date)\n    .slice(0, 20);\n\n  sorted.forEach(function(a) {\n    let action = a.type === 'update' ? '更新了文章' : '发布了文章';\n    let d = a.date;\n    let dateStr = `${d.getFullYear()}年${d.getMonth() + 1}月${d.getDate()}日 ${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}`;\n    let title = `${a.author} ${action} ${a.title}`;\n    let url = bhost() + (a.permalink.startsWith('/') ? a.permalink : '/' + a.permalink);\n    item_list.push({ title, url, date: dateStr });\n  });\n\n} else {\n  let list = java.getElements(\".post-item\");\n  list.forEach(function(item) {\n    let doc = org.jsoup.Jsoup.parse(item.html ? item.html() : item);\n    let title = doc.select(\".title\").text();\n    let date = doc.select(\".post-time\").text();\n    let url = doc.select(\"h2>a\").attr(\"href\");\n    item_list.push({ title, url: bhost() + url, date });\n  });\n}\n\nitem_list.map(x => JSON.stringify(x));",
    "ruleLink": "$.url",
    "ruleNextPage": "@js:\n(() => {\n  if (baseUrl.includes(\"activities\")) return\n  if (baseUrl.includes(\"page\")) {\n    page = baseUrl.match(/page\\/(\\d+)/)[1]\n    return java.log(baseUrl.replace(/(\\d+)\\/$/, +page + 1 + \"/\"))\n  } else {\n    return baseUrl + \"page/2/\"\n  }\n})()",
    "rulePubDate": "$.date",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "动态::{{bhost()}}/activities/\n书源::{{bhost()}}/categories/%E4%B9%A6%E6%BA%90/\n订阅源::{{bhost()}}/categories/%E8%AE%A2%E9%98%85%E6%BA%90/\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/%E5%85%AC%E5%91%8A/\n其他::{{bhost()}}/categories/%E5%85%B6%E4%BB%96%E8%B5%84%E6%BA%90/",
    "sourceIcon": "data:image/png;base64,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",
    "sourceName": "明月书阁",
    "sourceUrl": "明月书阁",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 2,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/gedoor/legado@master/app/src/main/res/mipmap-hdpi/ic_launcher.png",
    "sourceName": "使用说明",
    "sourceUrl": "https://www.yuque.com/legado",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "",
    "sourceIcon": "https://cdn.jsdelivr.net/gh/mgz0227/meowcloud/icon.png",
    "sourceName": "Meow云",
    "sourceUrl": "https://pan.miaogongzi.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4854,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "let str = document.body.innerHTML;\nlet imgsrc = '';\nstr.replace(/(?<=(\"image\":\"))([^\"]*)/,(match,key)=>imgsrc = match.replaceAll(/\\\\/g,\"\"))\nlet html = '<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\"><body>'\nhtml += '<img width=\"100%\" src=\"'+imgsrc+'\"></body>'\ndocument.write(html)",
    "lastUpdateTime": 1765930072088,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://api.j4u.ink/favicon.ico",
    "sourceName": "读懂世界",
    "sourceUrl": "https://api.j4u.ink/v1/store/other/proxy/remote/news/60.json",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4855,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765920876466,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://gss0.baidu.com/-fo3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/7af40ad162d9f2d3315aa6fea0ec8a136327cc5c.jpg",
    "sourceName": "起点中文",
    "sourceUrl": "https://m.qidian.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4856,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925354122,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://mms1.baidu.com/it/u=3889785552,3676099628&fm=253&app=138&f=JPEG&fmt=auto&q=75?w=500&h=500",
    "sourceName": "起点男生",
    "sourceUrl": "https://m.qidian.com/rank/hotsales/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4857,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765924972236,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://mms0.baidu.com/it/u=2344825277,2420529963&fm=253&app=138&f=JPEG&fmt=auto&q=75?w=500&h=500",
    "sourceName": "QQ男生",
    "sourceUrl": "https://ubook.reader.qq.com/book-rank/535189",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 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,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4859,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765918938444,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3370476127,2382276875&fm=26&gp=0.jpg",
    "sourceName": "QQ阅读",
    "sourceUrl": "https://ubook.reader.qq.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4860,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765924967552,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4862,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765923355469,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://p2.ssl.qhimgs1.com/t018ed3a3c0da49b9bc.png",
    "sourceName": "SF轻小说",
    "sourceUrl": "https://m.sfacg.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4863,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765920892442,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://s.faloo.com/novel/favicon.ico",
    "sourceName": "飞卢小说",
    "sourceUrl": "http://wap.faloo.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4864,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765921548174,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_7731_1621508397/256",
    "sourceName": "书旗小说",
    "sourceUrl": "https://t.shuqi.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4865,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765919393666,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://android-artworks.25pp.com/fs08/2019/06/10/1/110_78cec5736548eab292590c024e3a414e_con.png",
    "sourceName": "书旗小说",
    "sourceUrl": "https://t.shuqi.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4866,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925593379,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4867,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765923202048,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=528387707,1375937155&fm=26&gp=0.jpg",
    "sourceName": "掌阅小说",
    "sourceUrl": "https://m.zhangyue.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4868,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765923224666,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4869,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765921541662,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://m.jjwxc.com/images/wap/logo2.png",
    "sourceName": "晋江文学",
    "sourceUrl": "https://m.jjwxc.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 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,
    "preload": false,
    "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}",
    "showWebLog": false,
    "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#",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4871,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765920884714,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_1129886_1605601942/256",
    "sourceName": "纵横中文",
    "sourceUrl": "https://m.zongheng.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4872,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765924978537,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4874,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765919367213,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img.cingov.com.cn/uploadimg/ico/2020/0821/1597980183384150.png",
    "sourceName": "黑岩小说",
    "sourceUrl": "https://w2.heiyan.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4875,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765919382215,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://newyx-img.hellonitrack.com/android/201512/18/8befde2d23.png",
    "sourceName": "百度阅读",
    "sourceUrl": "https://yd.baidu.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4876,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765921507643,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://yuedu-cms.bj.bcebos.com/v1/wap/logo_300x300-1493192637282.png",
    "sourceName": "百度阅读",
    "sourceUrl": "https://yd.baidu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4877,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765926344328,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4878,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765919576823,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img.anfensi.com/upload/2018-8/2018821120202396.png",
    "sourceName": "磨铁阅读",
    "sourceUrl": "https://m.motie.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4879,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765923360737,
    "loadWithBaseUrl": false,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://m.ruochu.com/favicon.ico",
    "sourceName": "若初文学",
    "sourceUrl": "https://m.ruochu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4880,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765920129049,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4881,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765923340263,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://wap.hanwujinian.com/public/static/wap/wap1/image/icon/img_1.png",
    "sourceName": "寒武纪年",
    "sourceUrl": "http://wap.hanwujinian.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 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,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4885,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765923345646,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://qidian.gtimg.com/hongxium/img/activities/download-header-logo-dda168a850.png",
    "sourceName": "红袖添香",
    "sourceUrl": "https://m.hongxiu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4886,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765920901181,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://wap.cmread.com/r/p/content/repository/ues/image/s1/favicon.png",
    "sourceName": "咪咕阅读",
    "sourceUrl": "https://wap.cmread.com/r/p/index.jsp",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4887,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765920353396,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4888,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765923350149,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://user-center.cdn.bcebos.com/head/raw/uc.101.3ffef3f1.bNa6UN8LJuLLG5xk514L7w?x-bce-process=image/resize,m_lfit,w_200,h_200&autime=3",
    "sourceName": "潇湘书院",
    "sourceUrl": "https://m.xxsy.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4889,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925670329,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4890,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765926414509,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4891,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925100294,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://www.iqiyipic.com/common/fix/h5-read//logo2.png",
    "sourceName": "爱奇艺文",
    "sourceUrl": "https://wenxue.m.iqiyi.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4892,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765923267618,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.imgtextlist@li",
    "ruleContent": "class.bdbtn greenBtn@href<js>java.ajax('https://m.txt80.com/'+result)</js>class.module mt10@all",
    "ruleImage": "img@src",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@@tag.p.1@text}} {{@@tag.p.2@text}} {{@@tag.p.3@text}} {{@@tag.p.4@text}}",
    "ruleTitle": "{{@@img@alt##图片}}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://m.txt80.cc/\n书库::https://m.txt80.cc/all/\n排行::https://m.txt80.cc/hot/\n推荐::https://m.txt80.cc/recommendall/\n最新::https://m.txt80.cc/new/\n都市小说::https://m.txt80.com/dushi/\n女生言情::https://m.txt80.com/yanqing/\n玄幻奇幻::https://m.txt80.com/xuanhuan/\n武侠仙侠::https://m.txt80.com/wuxia/\n网游竞技::https://m.txt80.com/wangyou/\n军事历史::https://m.txt80.com/junshi/\n科幻灵异::https://m.txt80.com/kehuan/\n耽美同人::https://m.txt80.com/danmei/\n文学名著::https://m.txt80.com/wenxue/\n其他小说::https://m.txt80.com/qita/",
    "sourceComment": "::",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://m.txt80.com/favicon.ico",
    "sourceName": "八零电子",
    "sourceUrl": "https://m.txt80.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4893,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925314642,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img1.baidu.com/it/u=2027087676,320860448&fm=253&fmt=auto&app=138&f=JPEG?w=250&h=250",
    "sourceName": "追书男生",
    "sourceUrl": "http://m.zhuishushenqi.com/ranking?typeId=cda853cada62401c980fd720f4bc3083",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4894,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765923466922,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://static.17k.com/pic/app_logo.png",
    "sourceName": "十七小说",
    "sourceUrl": "https://h5.17k.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4895,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765926292408,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://mms0.baidu.com/it/u=3057616090,4224022483&fm=253&app=138&f=PNG&fmt=auto&q=75?w=500&h=500",
    "sourceName": "十七男生",
    "sourceUrl": "https://h5.17k.com/top/list.html?type=2&classId=2",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4896,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765923285680,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".wc3 li",
    "ruleLink": "a@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "人气：{{@@tag.span.0@text}} · 大小：{{@@tag.span.1@text}}",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "东方玄幻::https://m.zei8.me/xuanhuan\n传统武侠::https://m.zei8.me/chuantongwuxia\n恐怖惊悚::https://m.zei8.me/kongbujing\n现代都市::https://m.zei8.me/xiandaidushi\n人物传记::https://m.zei8.me/renwuchuanji\n网游动漫::https://m.zei8.me/wangyoudongman\n军事历史::https://m.zei8.me/junshilishi\n热点资源::https://m.zei8.me/redianziyuan\n西方奇幻::https://m.zei8.me/xifangqihuan\n仙侠修真::https://m.zei8.me/xianxiaxiuzhen\n侦探推理::https://m.zei8.me/zhentantuili\n经典科幻::https://m.zei8.me/jingdiankehuan\n名著杂志::https://m.zei8.me/mingzhuzazhi\n历史穿越::https://m.zei8.me/lishichuanyue\n传统言情::https://m.zei8.me/chuantongyanqing\n都市社会::https://m.zei8.me/dushishehui\n幻想现言::https://m.zei8.me/huanxiangxianyan\n耽美百合::https://m.zei8.me/danmeibaihe",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://tse1-mm.cn.bing.net/th/id/OIP-C.-aFdxcsvUb_2C_YJK7uYHAAAAA?w=150&h=150&c=7&o=5&dpr=3&pid=1.7",
    "sourceName": "下载贼吧",
    "sourceUrl": "https://m.zei8.me",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4897,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765921161985,
    "loadWithBaseUrl": true,
    "preload": false,
    "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",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://sm.bdimg.com/static/wiseindex/img/favicon64.ico",
    "sourceName": "书籍搜索",
    "sourceUrl": "https://www.baidu.com?wd=书籍下载",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4898,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765921534603,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://imgcn.ihuaben.com/common/logo.jpg",
    "sourceName": "话本小说",
    "sourceUrl": "https://www.ihuaben.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4899,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765919117222,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@js:\njson=[];\nif(baseUrl.match(/•/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('•');\nfor(i in list){\nhref=list[i].match(/【(.*?)】/)[1];\ntext=list[i].match(/《(.*?)》/)[1];\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",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://image.52pk.com/bgame/202008/23095416vjje.png",
    "sourceName": "小说阅读",
    "sourceUrl": "https://m.readnovel.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4901,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765921169648,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@js:\njson=[];\nif(baseUrl.match(/•/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('•');\nfor(i in list){\nhref=list[i].match(/【(.*?)】/)[1];\ntext=list[i].match(/《(.*?)》/)[1];\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",
    "showWebLog": false,
    "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": "？？",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "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,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/ /)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split(' ');\nfor(i in list){\nhref=list[i].match(/【(.*?)】/)[1];\ntext=list[i].match(/《(.*?)》/)[1];\nintro=list[i].match(/◎(.*?)◎/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)【/)[1]\njson.push({text:text,src:href,intro:intro,index:index})\n}\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📥 小说::https://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": "［网站合集］",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4903,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 10; TEL-AN00 Build/HONORTEL-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.105 Mobile Safari/537.36\"}",
    "lastUpdateTime": 1765926492923,
    "loadWithBaseUrl": true,
    "loginUrl": "https://www.hjcy.xyz/member.php?mod=logging&action=login&mobile=2",
    "preload": false,
    "ruleArticles": "class.list",
    "ruleContent": "class.message.0@all&&tag.script@all",
    "ruleLink": "a.2@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@class.mtime@text }}  {{@@class.mr@text}}",
    "ruleTitle": "em@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "同人审核区::/forum.php?mod=forumdisplay&fid=2&page={{page}}\n同人连载::/forum.php?mod=forumdisplay&fid=3&page={{page}}\n同人完结::/forum.php?mod=forumdisplay&fid=4&page={{page}}\n\n常规审核区::/forum.php?mod=forumdisplay&fid=7&page={{page}}\n常规连载::/forum.php?mod=forumdisplay&fid=8&page={{page}}\n常规完结::/forum.php?mod=forumdisplay&fid=9&page={{page}}\n",
    "sourceComment": "没有附件，需登录。如附件名称错误，请自行更改文件名称",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://www.hjcy.xyz/data/attachment/common/template/boardimg_20240616mcgfcqmv.png",
    "sourceName": "搜书论坛",
    "sourceUrl": "https://hjcy.xyz",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4904,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765923334795,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://oss.xrzww.com/mini/youdu/urllogo.png",
    "sourceName": "有毒小说",
    "sourceUrl": "https://m.youdubook.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4905,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925638205,
    "loadWithBaseUrl": true,
    "preload": false,
    "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",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 4906,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925706736,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.submenu",
    "ruleImage": "class.CAI_img@tag.img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.newsPag@tag.a.-1@href",
    "rulePubDate": "class.p_bz_rq@text##.+日期：",
    "ruleTitle": "class.csc@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "美文选粹::http://www.jiaoshi100.com/index.php?m=content&c=index&a=lists&catid=133&z=\n时文选粹::http://www.jiaoshi100.com/index.php?m=content&c=index&a=lists&catid=120&z=\n作文365::http://www.jiaoshi100.com/index.php?m=content&c=index&a=lists&catid=121&z=\n作文头条::http://www.jiaoshi100.com/index.php?m=content&c=index&a=lists&catid=119&z=\n读写计划::http://www.jiaoshi100.com/index.php?m=content&c=index&a=lists&catid=132&z=\n师说::http://www.jiaoshi100.com/index.php?m=content&c=index&a=lists&catid=122&z=",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1971586952,3598078305&fm=26&gp=0.jpg",
    "sourceName": "作文指北",
    "sourceUrl": "http://www.jiaoshi100.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4907,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765925258251,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "tag.ol@tag.li",
    "ruleContent": " [id=content1]@all",
    "ruleLink": "tag.a@href",
    "ruleTitle": "tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "【三洞真经】\n洞真上清经::http://www.daorenjia.com/c8\n洞玄灵宝经::http://www.daorenjia.com/c9\n洞神三皇经::http://www.daorenjia.com/c10\n三洞经教::http://www.daorenjia.com/c11\n【四辅真经】\n太平部诸经::http://www.daorenjia.com/c12\n太玄部经诀::http://www.daorenjia.com/c13\n正一部经籙::http://www.daorenjia.com/c14\n道德真经::http://www.daorenjia.com/c15\n四子真经::http://www.daorenjia.com/c16\n黄帝阴符经::http://www.daorenjia.com/c17\n道教易学::http://www.daorenjia.com/c18\n太清金丹经::http://www.daorenjia.com/c19\n太清摄养经::http://www.daorenjia.com/c20\n【道教论集】\n诸子文集::http://www.daorenjia.com/c21\n道学论著::http://www.daorenjia.com/c22\n全真文集::http://www.daorenjia.com/c23\n道教类书::http://www.daorenjia.com/c24\n【道法众术】\n道法诸经::http://www.daorenjia.com/c25\n道法总集::http://www.daorenjia.com/c26\n【道教科仪】\n科戒威仪::http://www.daorenjia.com/c27\n灵宝诸斋仪::http://www.daorenjia.com/c28\n灯仪法忏章表::http://www.daorenjia.com/c29\n【道史仙传】\n神仙高道传::http://www.daorenjia.com/c30\n仙境名山志::http://www.daorenjia.com/c31",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://p2.ssl.qhimgs1.com/t01a4ef0a3b59e725b2.jpg",
    "sourceName": "道经大全",
    "sourceUrl": "http://www.daorenjia.com/",
    "style": "*{\n\tmax-width:100%;\n\theight: auto;\n\tletter-spacing: 0.5;\n\tword-wrap: break-word\n}\n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4908,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925839229,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "tag.ol@tag.li",
    "ruleContent": "<js>result</js>",
    "ruleLink": "tag.a@href",
    "ruleTitle": "tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "【三洞真经】\n洞真上清经::http://www.daorenjia.com/c8\n洞玄灵宝经::http://www.daorenjia.com/c9\n洞神三皇经::http://www.daorenjia.com/c10\n三洞经教::http://www.daorenjia.com/c11\n【四辅真经】\n太平部诸经::http://www.daorenjia.com/c12\n太玄部经诀::http://www.daorenjia.com/c13\n正一部经籙::http://www.daorenjia.com/c14\n道德真经::http://www.daorenjia.com/c15\n四子真经::http://www.daorenjia.com/c16\n黄帝阴符经::http://www.daorenjia.com/c17\n道教易学::http://www.daorenjia.com/c18\n太清金丹经::http://www.daorenjia.com/c19\n太清摄养经::http://www.daorenjia.com/c20\n【道教论集】\n诸子文集::http://www.daorenjia.com/c21\n道学论著::http://www.daorenjia.com/c22\n全真文集::http://www.daorenjia.com/c23\n道教类书::http://www.daorenjia.com/c24\n【道法众术】\n道法诸经::http://www.daorenjia.com/c25\n道法总集::http://www.daorenjia.com/c26\n【道教科仪】\n科戒威仪::http://www.daorenjia.com/c27\n灵宝诸斋仪::http://www.daorenjia.com/c28\n灯仪法忏章表::http://www.daorenjia.com/c29\n【道史仙传】\n神仙高道传::http://www.daorenjia.com/c30\n仙境名山志::http://www.daorenjia.com/c31",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "http://m.daorenjia.com/favicon.ico",
    "sourceName": "道藏大全",
    "sourceUrl": "http://www.daorenjia.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4909,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765926110748,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".fojing@ul@li",
    "ruleContent": ".post@all",
    "ruleLink": "a@href",
    "ruleTitle": "a@text<js>\nresult=result.replace(\"大正藏\" ,\"\").replace(\"乾隆大藏经\" ,\"\").replace(\"中央统战部\" ,\"\").replace(\"国家宗教事务局\" ,\"\").replace(\"人民网\" ,\"\").replace(\"新华网\" ,\"\").replace(\"中国网\" ,\"\").replace(\"支付宝公益\" ,\"\").replace(\"腾讯公益\" ,\"\")\nresult\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://img1.baidu.com/it/u=4002694570,770476022&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=534",
    "sourceName": "经典佛经",
    "sourceUrl": "https://www.fojingzaixian.com/",
    "style": "*{\n\tmax-width:100%;\n\theight: auto;\n\tletter-spacing: 0.5;\n\tword-wrap: break-word\n}\n",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4910,
    "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": 1765925127141,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://ts2.cn.mm.bing.net/th?id=ODLS.0fb30a7c-5c0c-461f-a214-20ac5d3cd0b4&w=32&h=32&qlt=91&pcl=fffffa&o=6&pid=1.2",
    "sourceName": "古诗文网",
    "sourceUrl": "https://www.gushiwen.cn/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4911,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765925748518,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.inline1||class.articleLink2||class.navLink",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.0@href||href@js:\"https://sou-yun.cn/\"+result",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.comment@text",
    "ruleTitle": "tag.a.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部类别::https://sou-yun.cn/AnalyzeCi.aspx\n诗词库::https://sou-yun.cn/PoemIndex.aspx?\n诗文观止::https://sou-yun.cn/PoemIndex.aspx?path=%e8%a9%a9%e6%96%87%e8%a7%80%e6%ad%a2\n典故::https://sou-yun.cn/PoemIndex.aspx?path=%e5%85%b8%e6%95%85\n唐诗::https://sou-yun.cn/PoemIndex.aspx?path=%e5%94%90%e8%a9%a9\n岁时::https://sou-yun.cn/PoemIndex.aspx?path=%e6%ad%b2%e6%99%82\n咏物::https://sou-yun.cn/PoemIndex.aspx?path=%e8%a9%a0%e7%89%a9\n当代::https://sou-yun.cn/PoemIndex.aspx?path=%e7%95%b6%e4%bb%a3\n人文地理::https://sou-yun.cn/PoemIndex.aspx?path=%e4%ba%ba%e6%96%87%e5%9c%b0%e7%90%86\n典故、词汇::https://sou-yun.cn/AllusionsIndex.aspx?sort=People",
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://sou-yun.cn/images/publish.png",
    "sourceName": "古典诗词",
    "sourceUrl": "https://sou-yun.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4912,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765926268017,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.fl_g",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.dt@tag.a@href@js:\"https://www.xn--cjztj18l.com/\"+result",
    "rulePubDate": "tag.dd@text",
    "ruleTitle": "tag.dt@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "小说 订阅",
    "sourceIcon": "https://www.xn--cjztj18l.com/template/xinshutouch/touch/static/images/shaizi.gif",
    "sourceName": "神秘网络",
    "sourceUrl": "https://www.xn--cjztj18l.com/forum.php",
    "type": 0
  },
  {
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": 4913,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765924030762,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.pins",
    "ruleContent": "<style>\n:root {\n    --text-color: #333;\n    --bg-color: #f8f5f2;\n    --title-color: #222;\n    --link-color: #666;\n    --highlight-color: #d4a373;\n    --border-color: #e9e5e1;\n}\n\n@media (prefers-color-scheme: dark) {\n    :root {\n        --text-color: #e0e0e0;\n        --bg-color: #1a1a1a;\n        --title-color: #ffffff;\n        --link-color: #aaaaaa;\n        --highlight-color: #d4a373;\n        --border-color: #333;\n    }\n}\n\nbody {\n    padding: 20px;\n    line-height: 1.8;\n    letter-spacing: 0.5px;\n    background: var(--bg-color);\n    color: var(--text-color);\n    word-wrap: break-word;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n    max-width: 1200px;\n    margin: 0 auto;\n    transition: all 0.3s ease;\n}\n\nh1 {\n    text-align: center;\n    font-size: 24px;\n    line-height: 1.4;\n    margin: 25px 0 15px;\n    color: var(--title-color);\n    font-weight: 600;\n    position: relative;\n    padding-bottom: 15px;\n}\n\nh1:after {\n    content: \"\";\n    position: absolute;\n    bottom: 0;\n    left: 50%;\n    transform: translateX(-50%);\n    width: 80px;\n    height: 2px;\n    background: var(--highlight-color);\n}\n\np {\n    text-indent: 2em;\n    margin: 15px 0;\n    font-size: 16px;\n    color: var(--text-color);\n}\n\n.author {\n    font-style: italic;\n    color: var(--highlight-color);\n    text-align: center;\n    margin: 10px 0 25px;\n    font-size: 15px;\n}\n\n.board-description {\n    background: rgba(212, 163, 115, 0.1);\n    padding: 15px;\n    border-radius: 6px;\n    margin: 20px 0;\n    border-left: 3px solid var(--highlight-color);\n}\n\n.recommendations-title {\n    font-weight: 700;\n    margin: 50px 0 30px;\n    color: var(--title-color);\n    font-size: 26px;\n    text-align: left;\n    position: relative;\n    padding: 20px 0;\n    letter-spacing: 1.5px;\n    line-height: 1.3;\n    background: linear-gradient(135deg, rgba(212, 163, 115, 0.1) 0%, transparent 50%, rgba(212, 163, 115, 0.1) 100%);\n    border-radius: 10px;\n}\n\n.image-container {\n    margin: 25px 0;\n    border-radius: 8px;\n    overflow: hidden;\n    box-shadow: 0 5px 15px rgba(0,0,0,0.1);\n}\n\n.image-container img {\n    display: block;\n    width: 100%;\n    height: auto;\n    transition: transform 0.3s ease;\n}\n\n.image-container img:hover {\n    transform: scale(1.02);\n}\n\n/* 优化瀑布流布局，确保图片间距合适 */\n.recommendations {\n    column-count: 4;\n    column-gap: 20px;\n    margin: 30px 0;\n}\n\n.recommendations img {\n    width: 100%;\n    height: auto;\n    border-radius: 10px;\n    margin-bottom: 20px;\n    break-inside: avoid;\n    transition: all 0.3s ease;\n    box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n    display: block;\n}\n\n.recommendations img:hover {\n    transform: translateY(-5px);\n    box-shadow: 0 8px 25px rgba(0,0,0,0.2);\n}\n\n/* 响应式调整 - 确保在不同屏幕下都能完整显示 */\n@media (max-width: 1024px) {\n    .recommendations {\n        column-count: 3;\n    }\n    \n    .recommendations-title {\n        font-size: 24px;\n        margin: 40px 0 25px;\n        padding: 18px 0;\n    }\n    \n    .recommendations-title:before {\n        left: 25%;\n    }\n    \n    .recommendations-title:after {\n        right: 25%;\n    }\n}\n\n@media (max-width: 768px) {\n    .recommendations {\n        column-count: 2;\n        column-gap: 15px;\n    }\n    \n    .recommendations-title {\n        font-size: 22px;\n        margin: 35px 0 20px;\n        padding: 15px 0;\n        letter-spacing: 1px;\n    }\n    \n    .recommendations-title:before,\n    .recommendations-title:after {\n        font-size: 18px;\n    }\n    \n    .recommendations-title:before {\n        left: 20%;\n    }\n    \n    .recommendations-title:after {\n        right: 20%;\n    }\n    \n    body {\n        max-width: 100%;\n        padding: 15px;\n    }\n}\n\n@media (max-width: 480px) {\n    .recommendations {\n        column-count: 1;\n        column-gap: 10px;\n    }\n    \n    .recommendations-title {\n        font-size: 20px;\n        margin: 30px 0 15px;\n        padding: 12px 0;\n        background: rgba(212, 163, 115, 0.08);\n    }\n    \n    .recommendations-title:before,\n    .recommendations-title:after {\n        display: none; /* 在小屏幕上隐藏装饰图标，确保文字完全显示 */\n    }\n}\n\n.original-link {\n    text-align: center;\n    margin: 50px 0 25px;\n}\n\n.original-link a {\n    color: var(--link-color);\n    text-decoration: none;\n    font-size: 16px;\n    padding: 10px 25px;\n    border: 1px solid var(--border-color);\n    border-radius: 25px;\n    transition: all 0.3s ease;\n    display: inline-block;\n}\n\n.original-link a:hover {\n    color: var(--highlight-color);\n    border-color: var(--highlight-color);\n    background: rgba(212, 163, 115, 0.05);\n    transform: translateY(-2px);\n}\n</style>\n\n<div>\n    <h1>{{$.pin.board.title}}</h1>\n    <p class=\"author\">By：{{$.pin.user.username}}</p>\n    \n    <div class=\"image-container\">\n        <img src=\"https://hbimg.huabanimg.com//{{$.pin.file.key}}\"/>\n    </div>\n    \n    <p>{{$.pin.raw_text}}</p>\n    \n    <p class=\"board-description\">{{$.pin.board.description}}</p>\n    \n    <!-- 优化后的相关推荐标题 - 更大更突出，确保完全显示 -->\n    <p class=\"recommendations-title\">相关推荐</p>\n    \n    <div class=\"recommendations\">\n        {{json=JSON.parse(java.getElements('$.pin.board.pins'));\n        img='';\n        for (i in json){\n        key=json[i].file.key;\n        img=img+'<img src=\"https://hbimg.huabanimg.com//'+key+'\"/>'\n        }\n        img\n        }}\n    </div>\n    \n    <div class=\"original-link\">\n        <a href=\"https://huaban.com/pins/{{$.pin.pin_id}}\">阅读原文</a>\n    </div>\n</div>\n",
    "ruleImage": "https://hbimg.huabanimg.com//{$.file.key}",
    "ruleLink": "https://api.huaban.com/pins/{$.pin_id}",
    "ruleNextPage": "page",
    "rulePubDate": "$.created_at@js:(new Date(result*1000)).toLocaleDateString();",
    "ruleTitle": "{{$.board.title}}•{{$.raw_text}}",
    "searchUrl": "https://api.huaban.com/search/file?sort=created_at&limit=62&text={{key}}&page={{page}}&position=search_pin",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::https://api.huaban.com/search/file?sort=created_at&limit=62&text={{svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/><text x=\"200\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"70\" fill=\"#333\" font-weight=\"bold\">输入要搜索的内容</text></svg>`));if(page==1){let a=\"\";try{a=java.getVerificationCode('data:image/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()}source.setVariable(a);a}else{source.getVariable()};}}&page={{page}}&position=search_pin\nUI/UX::https://api.huaban.com/favorite/web_app_icon?limit=100&page={{page}}&&平面::https://api.huaban.com/favorite/design?limit=100&page={{page}}&&插画/漫画::https://api.huaban.com/favorite/illustration?limit=100&page={{page}}&&摄影::https://api.huaban.com/favorite/photography?limit=100&page={{page}}&&游戏::https://api.huaban.com/favorite/games?limit=100&page={{page}}&&动漫::https://api.huaban.com/favorite/anime?limit=100&page={{page}}&&工业设计::https://api.huaban.com/favorite/industrial_design?limit=100&page={{page}}&&建筑设计::https://api.huaban.com/favorite/architecture?limit=100&page={{page}}&&人文艺术::https://api.huaban.com/favorite/art?limit=100&page={{page}}&&家居/家装::https://api.huaban.com/favorite/home?limit=100&page={{page}}&&女装/搭配::https://api.huaban.com/favorite/apparel?limit=100&page={{page}}&&男士/风尚::https://api.huaban.com/favorite/men?limit=100&page={{page}}&&造型/美妆::https://api.huaban.com/favorite/modeling_hair?limit=100&page={{page}}&&手工/布艺::https://api.huaban.com/favorite/diy_crafts?limit=100&page={{page}}&&美食::https://api.huaban.com/favorite/food_drink?limit=100&page={{page}}&&旅行::https://api.huaban.com/favorite/travel_places?limit=100&page={{page}}&&婚礼::https://api.huaban.com/favorite/wedding_events?limit=100&page={{page}}&&儿童::https://api.huaban.com/favorite/kids?limit=100&page={{page}}&&宠物::https://api.huaban.com/favorite/pets?limit=100&page={{page}}&&美图::https://api.huaban.com/favorite/quotes?limit=100&page={{page}}&&明星::https://api.huaban.com/favorite/people?limit=100&page={{page}}&&美女::https://api.huaban.com/favorite/beauty?limit=100&page={{page}}&&礼物::https://api.huaban.com/favorite/desire?limit=100&page={{page}}&&极客::https://api.huaban.com/favorite/geek?limit=100&page={{page}}&&数据图::https://api.huaban.com/favorite/data_presentation?limit=100&page={{page}}&&汽车/摩托::https://api.huaban.com/favorite/cars_motorcycles?limit=100&page={{page}}&&电影/图书::https://api.huaban.com/favorite/film_music_books?limit=100&page={{page}}&&生活百科::https://api.huaban.com/favorite/tips?limit=100&page={{page}}&&教育::https://api.huaban.com/favorite/education?limit=100&page={{page}}&&运动::https://api.huaban.com/favorite/sports?limit=100&page={{page}}&&搞笑::https://api.huaban.com/favorite/funny?limit=100&page={{page}}&&健身/舞蹈::https://api.huaban.com/favorite/fitness?limit=100&page={{page}}&&其它::https://api.huaban.com/favorite/other?limit=100&page={{page}}&&3C数码::https://api.huaban.com/favorite/digital?limit=100",
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://api.huaban.com/favicon.ico",
    "sourceName": "花瓣美图",
    "sourceUrl": "https://api.huaban.com",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 4914,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765906855550,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "//div.list-com/a",
    "ruleContent": "//ul/li",
    "ruleImage": "//img@src##.*?<img src=\"(.*?)\".*?##$1###@js:header={\"Referer\":baseUrl}\nheaders={\"headers\":JSON.stringify(header)}\nresult=result+','+JSON.stringify(headers)",
    "ruleLink": "href",
    "ruleNextPage": "page",
    "rulePubDate": "//img@src##.*?<img src=\"https://imgfzone.tooopen.com/(.*?)/.*?.jpg\".*?##$1###",
    "ruleTitle": "//text()",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://img2.baidu.com/it/u=3447143413,168358415&fm=253&fmt=auto&app=138&f=JPEG?w=347&h=500",
    "sourceName": "美图公社",
    "sourceUrl": "https://desk.tooopen.com/artphoto_3<,_{{page}}>.html",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 4915,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\t\"User-Agent\": \"picasso,315,tencent\"\n}",
    "lastUpdateTime": 1765924036327,
    "loadWithBaseUrl": true,
    "loginUrl": "https://thomasyo.coding.net/p/yuedu/d/dingyue/git/raw/master/bizhimiao.jpg",
    "preload": false,
    "ruleArticles": "$.res.category||$.res.album||$.res.keyword[0].items\n@js:\njson=[]\nc1=baseUrl.match(/skip=/)\nc2=baseUrl.match(/push\\/keyword/)\nif(c1&&!c2){\n\t\tjson=result\n\t}\nelse{eval(String(source.sourceComment))\n\n\nfunction push(name,fenlei){\n\t\tjson.push(JSON.stringify({\"name\": name, \"fenlei\": fenlei, \"cover\": cover(), \"desc\": desc()}))\n\t}\nfunction unshift(name,fenlei){\n\t\tjson.unshift(JSON.stringify({\"name\": name, \"fenlei\": fenlei, \"cover\": cover(), \"desc\": desc()}))\n\t}\n\n\n\nif(c1&&c2){\n\t\tfor(i in result){push(result[i],\"随机搜索\")}\n\t}\nelse{\n\nfunction sousuo(fenlei){\n\t\turl = a+'/v1/push/keyword?uid='+uid+'&first='\n\t\tfenlei==\"热门搜索\"?url+=1:(url+=0,java.put('url', url))\n\t\titems = JSON.parse(java.ajax(url)).res.keyword[0].items\n\t\tfor(i in items){\n\t\t\t\tpush(items[i],fenlei)\n\t\t\t}\n\t}\n\n\nfunction fenlei(list,并列){$=[]\n\t\tfor(i in list){\n\t\t\t\tif(i==list.length-1){\n\t\t\t\t\t\tif(uid=='avatar'){\n\t\t\t\t\t\t\t\tlist[i]?unshift('最新',uid):''\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tlist[i][1]?unshift('热门',uid):''\n\t\t\t\t\t\t\t\tlist[i][0]?unshift('最新',uid):''\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t\tif(uid=='avatar'){\n\t\t\t\t\t\t\tlist[i]?$.push(result[i]):''\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\tresult[i].count=''\n\t\t\t\t\t\tname=result[i].name\n\t\t\t\t\t\t并列?\n\t\t\t\t\t\t\tjson.push(\n\t\t\t\t\t\t\tJSON.stringify(list[i][0]?(result[i].fenlei=\"最新\",result[i].name=name+\" ⁿᵉʷ\",result[i]):''),\n\t\t\t\t\t\t\tJSON.stringify(list[i][1]?(result[i].fenlei=\"热门\",result[i].name=name+\" ʰᵒᵗ\",result[i]):'')\n\t\t\t\t\t\t):\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tjson.push(JSON.stringify(list[i][0]?(result[i].fenlei=\"最新\",result[i].name=name+\" ⁿᵉʷ\",result[i]):'')),\n\t\t\t\t\t\t\t$.push(list[i][1]?(result[i].fenlei=\"热门\",result[i].name=name+\" ʰᵒᵗ\",result[i]):'')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t}\n\t\t\t}\n\t\tfor(i in $){\n\t\t\t\tjson.push(JSON.stringify($[i]))\n\t\t\t}\n\t}\n\n\nfunction zhuanji(list){$=[];url=[]\n\t\tif(!list){\n\t\t\t\t$ = JSON.parse(java.ajax(a+'/v4/homepage'+b)).res.homepage[1].items\n\t\t\t}\n\t\telse{urb=[]\n\t\t\t\tfor(i in list){\n\t\t\t\t\tif(list[i]==true){\n\t\t\t\t\t\tif(i==list.length-1){\n\t\t\t\t\t\t\tura = a+'/v2'+b\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse if(i==list.length-2){\n\t\t\t\t\t\t\tura = e\n\t\t\t\t\t\t\turb = '/'+key\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tura = a+c+'/category/'+result[i].id\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\turl = ura+'/album'+urb+'?limit=10'\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tif(url!=\"\"){\n\t\t\t\tjava.put('url', url)\n\t\t\t\t$ = JSON.parse(java.ajax(url)).res.album\n\t\t\t}\n\t\tfor(i in $){\n\t\t\t\tif(!list){$[i].fenlei=\"小编推荐\"}\n\t\t\t\tjson.push(JSON.stringify($[i]))\n\t\t\t}\n\t}\n\n\ns0=key;s1=\"自定义搜索\";\ns2=\"热门搜索\";s3=\"随机搜索\";\nf1=\"发现\";f2=\"热门设置\";f3=\"推荐\";\nif(uid=='vertical'){\n\t\t分类=竖屏.分类\n\t\t分类.显示?fenlei(分类.设置,分类.并列):''\n\t\t发现.竖屏?unshift(f1,f2):''\n\t\t搜索=竖屏.搜索\n\t\t搜索.显示?(搜索.自定?unshift(key,s1):''):''\n\t\t搜索.显示?(搜索.热门?sousuo(s2):''):''\n\t\t搜索.显示?(搜索.随机?sousuo(s3):''):''\n\t\t专辑=竖屏.专辑\n\t\t专辑.显示?(专辑.推荐?zhuanji():''):''\n\t\t专辑.显示?zhuanji(专辑.设置):''\n\t}\nelse if(uid=='wallpaper'){\n\t\t分类=横屏.分类\n\t\t分类.显示?fenlei(分类.设置,分类.并列):''\n\t\t发现.横屏?unshift(f1,f2):''\n\t\t搜索=横屏.搜索\n\t\t搜索.显示?(搜索.自定?unshift(key,s1):''):''\n\t\t搜索.显示?(搜索.热门?sousuo(s2):''):''\n\t\t搜索.显示?(搜索.随机?sousuo(s3):''):''\n\t\t专辑=横屏.专辑\n\t\t专辑.显示?zhuanji(专辑.设置):''\n\t}\nelse if(uid=='videowp'){\n\t\t分类=动态.分类\n\t\t分类.显示?fenlei(分类.设置,分类.并列):''\n\t\t动态.推荐?unshift(f3,f2):''\n\t\t发现.动态?unshift(f1,f2):''\n\t}\nelse{\n\t\t分类=头像.分类\n\t\t分类.显示?fenlei(分类.设置,分类.并列):''\n\t\t发现.头像?unshift(f1,f2):''\n\t}\n//去除空值\n}json=json.filter(e=>{return e!='\"\"'})}\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));w}}\"\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\tif(src==\"\"){\n\t\t\tio.unobserve(loads)\n\t\t\tloads.innerText='我是有底线的'\n\t\t}else{\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\t}\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>\n@js:\nhtml = result\nif(String(java.getString('$.res.vertical||$.res.wallpaper||$.res.videowp||$.res.data||$.res.avatar'))==\"\"){\n\thtml = '<title>随机图片</title>\\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\"><br>\\n<h3 style=\"text-align:center\">内容为空</h3>\\n<h6>试试随机图片吧，点击刷新</h6>\\n<img width=\"100%\" src=\"http://www.dmoe.cc/random.php\" id=\"tu\" onclick=\"tu()\">\\n<script>\\nsrc = \"{{eval(String(source.sourceComment));String(u1)}}\".split(\",\")\\n\\nfunction tu(){\\n\t\tdocument.getElementById(\"tu\").src = src[Math.ceil(Math.random()*4)-1] + Math.random()\\n\t}\\n</script>'\n\t}\nhtml",
    "ruleImage": "$..cover||$.img",
    "ruleLink": "$.value.id||$.id||$._id\n@js:\nid = String(result)\nname = String(java.get('name'))\nfenlei = String(java.getString('$.fenlei'))\neval(String(source.sourceComment))\n\nif(name==\"搜索\"||fenlei.match(/搜索/)){\n\t\turl = e+'/resource/'+(fenlei!='自定义搜索'?name: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+'?'+(fenlei=='热门'?'order=hot&':'')\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||fenlei=='小编推荐')?'/album/':'/category/') +id+b+'?'+(fenlei=='热门'?'order=hot&':'')\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:pg=\"\"\nif(result!=\"\"){\n\t\tpg = ' '+java.put('pg', result)+'p'\n\t}\njava.getString('$.fenlei') + pg +' &nbsp;'+ String(java.getString('$.tag[*]&&$..desc')).replace(/\\n/g,' ')",
    "ruleTitle": "$..name||$.category##\\n.*\n@js:java.put('name',result)",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "竖屏::http://service.picasso.adesk.com/v1/vertical/category\n横屏::http://service.picasso.adesk.com/v1/wallpaper/category\n动态::https://service.videowp.adesk.com/v1/videowp/category\n头像::http://m.adesk.com/v1/avatar/category",
    "sourceComment": "//v3.6\n//右上角登录查看使用说明(简略, 加载比较慢\n//增加分类热门，优化搜索，正文\n\n\n\n//1启用，0禁用\n竖屏 = {\n\t\t搜索: {\n\t\t\t\t显示: 0 ,\n\t\t\t\t自定: 0 ,\n\t\t\t\t热门: 0 ,\n\t\t\t\t随机: 0\n\t\t\t},\n\t\t分类: {\n\t\t\t\t显示: 1 ,\n\t\t\t\t并列: 1 ,\n\t\t\t\t设置: [\n\t\t\t\t\t\t[ 1 , 1 ] ,//美女\n\t\t\t\t\t\t[ 1 , 1 ] ,//动漫\n\t\t\t\t\t\t[ 1 , 0 ] ,//风景\n\t\t\t\t\t\t[ 1 , 0 ] ,//游戏\n\t\t\t\t\t\t[ 1 , 0 ] ,//文字\n\t\t\t\t\t\t[ 1 , 0 ] ,//视觉\n\t\t\t\t\t\t[ 1 , 0 ] ,//情感\n\t\t\t\t\t\t[ 1 , 0 ] ,//设计\n\t\t\t\t\t\t[ 1 , 0 ] ,//明星\n\t\t\t\t\t\t[ 1 , 0 ] ,//物语\n\t\t\t\t\t\t[ 1 , 0 ] ,//男人\n\t\t\t\t\t\t[ 1 , 0 ] ,//机械\n\t\t\t\t\t\t[ 1 , 0 ] ,//城市\n\t\t\t\t\t\t[ 1 , 0 ] ,//动物\n\t\t\t\t\t\t[ 0 , 0 ] //最新, 热门\n\t\t\t\t\t]\n\t\t\t},\n\t\t专辑: {\n\t\t\t\t显示: 0 ,\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\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搜索: {\n\t\t\t\t显示: 0 ,\n\t\t\t\t自定: 0 ,\n\t\t\t\t热门: 0 ,\n\t\t\t\t随机: 0\n\t\t\t},\n\t\t分类: {\n\t\t\t\t显示: 1 ,\n\t\t\t\t并列: 1 ,\n\t\t\t\t设置: [\n\t\t\t\t\t\t[ 1 , 1 ] ,//美女\n\t\t\t\t\t\t[ 1 , 1 ] ,//动漫\n\t\t\t\t\t\t[ 1 , 0 ] ,//风景\n\t\t\t\t\t\t[ 1 , 0 ] ,//游戏\n\t\t\t\t\t\t[ 1 , 0 ] ,//文字\n\t\t\t\t\t\t[ 1 , 0 ] ,//视觉\n\t\t\t\t\t\t[ 1 , 0 ] ,//情感\n\t\t\t\t\t\t[ 1 , 0 ] ,//设计\n\t\t\t\t\t\t[ 1 , 0 ] ,//明星\n\t\t\t\t\t\t[ 1 , 0 ] ,//物语\n\t\t\t\t\t\t[ 1 , 0 ] ,//男人\n\t\t\t\t\t\t[ 1 , 0 ] ,//机械\n\t\t\t\t\t\t[ 1 , 0 ] ,//城市\n\t\t\t\t\t\t[ 1 , 0 ] ,//动物\n\t\t\t\t\t\t[ 0 , 0 ] //最新, 热门\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\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分类: {\n\t\t\t\t显示: 1 ,\n\t\t\t\t并列: 1 ,\n\t\t\t\t设置: [\n\t\t\t\t\t\t[ 1 , 1 ],//动漫新番\n\t\t\t\t\t\t[ 1 , 1 ],//网络红人\n\t\t\t\t\t\t[ 1 , 0 ],//游戏专区\n\t\t\t\t\t\t[ 1 , 0 ],//热门推荐\n\t\t\t\t\t\t[ 1 , 0 ],//风景名胜\n\t\t\t\t\t\t[ 1 , 0 ],//其他资源\n\t\t\t\t\t\t[ 1 , 0 ],//歌曲热舞\n\t\t\t\t\t\t[ 1 , 0 ],//娱乐明星\n\t\t\t\t\t\t[ 1 , 0 ],//热门影视\n\t\t\t\t\t\t[ 1 , 0 ],//动物萌宠\n\t\t\t\t\t\t[ 0 , 0 ]//最新，热门\n\t\t\t\t\t]\n\t\t\t}\n\t}\n\n\n\n头像 = {\n\t\t分类: {\n\t\t\t\t显示: 1 ,\n\t\t\t\t设置: [\n\t\t\t\t\t\t0 ,//个性男头\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\t0 //最新\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\t\t随机封面: 1 ,\n\t\t随机语句: 0 ,\n\t\t变量搜索: 1 ,\n\t\t历史浏览: 0 ,\n\t\t跳转按钮: 1\n\t}\n\n\n\nuri = '.adesk.com'\nuid = baseUrl.match(/\\/v\\d\\/([^\\/]+)/)[1]\nif(uid=='push'){\n\t\tuid = baseUrl.match(/uid=([^&]+)/)[1]\n\t}\nelse if(uid=='search'){\n\t\tuid = baseUrl.match(/\\/search\\/([^\\/]+)/)[1]\n\t}\na='http://service.picasso'+uri\nb='/'+uid\nc='/v1'+b\nd='https://service.'+uid+uri+c\ne='http://so.picasso'+uri+'/v1/search'+b\n\n\n\n//获取正文图宽，搜索关键词\nv = String(source.getVariable())\nv = (v!=\"\"&&v!=\"null\")?v:\"夏日\"\nif(uid!='wallpaper'){\n\t\tw=2\n\t\tk=竖屏.搜索.自定\n\t}\nelse{\n\t\tw=1\n\t\tk=横屏.搜索.自定\n\t}\nW = v.match(/^[1234]$/)?v:w\nw = k?(其他.变量搜索?w:W):W\nkey = 其他.变量搜索?v:String(java.getVerificationCode(\"https://thomasyo.coding.net/p/yuedu/d/dingyue/git/raw/master/yanzheng/sou.jpg\"))\n\n\n\n//随机封面和随机语句的链接\nu1 = [\n\t\t'http://www.dmoe.cc/random.php?',\n\t\t'http://api.mtyqx.cn/tapi/random.php?',\n\t\t'https://api.ixiaowai.cn/api/api.php?',\n\t\t'https://acg.toubiec.cn/random.php?'\n\t]\nu2 = [\n\t\t'http://api.guaqb.cn/v1/onesaid?',\n\t\t'https://v1.hitokoto.cn/?encode=text&',\n\t\t'https://v1.jinrishici.com/rensheng.txt?',\n\t\t'http://yijuzhan.com/api/word.php?'\n\t]\nfunction x(){\n\t\treturn Math.ceil(Math.random()*4)-1\n\t}\nfunction cover(){\n\t\treturn 其他.随机封面?u1[x()]+Math.random():''\n\t}\nfunction desc(){\n\t\treturn 其他.随机语句?java.ajax(u2[x()]+Math.random()):''\n\t}",
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://image.baidu.com/search/down?thumburl=https://weibo.com&url=https://wx1.sinaimg.cn/large/006RKGBpgy1gnwmbic1qoj30lo0ug42o.jpg",
    "sourceName": "壁纸小喵",
    "sourceUrl": "http://service.picasso.adesk.com/v1/lightwp/category",
    "style": "h6{\n\tmargin:0;\n\ttext-align:center;\n}\nimg,button{\n\tmargin:1.25%;\n\tborder-radius:20px;\n}\nbutton{\n\toutline:none;\n\tfloat:right;\n\tposition:sticky;\n\ttop:0;\n}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 4916,
    "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": 1765924050316,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.res.vertical[*]",
    "ruleContent": "@js:\na=baseUrl;\nb='<img src=\"'+a+'\"';\nc='<html><head><meta charset=\"utf-8\"><title>壁纸喵</title><style>body{background-color:#ffffff}</style></head><body>'+b+' width=\"100%\" height=\"auto\" controls=\"controls\" <\"></video></body></html>'",
    "ruleImage": "$.img",
    "ruleLink": "$.img",
    "ruleNextPage": "page",
    "rulePubDate": "❤️{{$.favs}}",
    "ruleTitle": "$.store",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::http://service.picasso.adesk.com/v1/vertical/vertical?disorder=true&limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fvertical&order=hot\n美女::http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000000/vertical?limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fcategory%2F4e4d610cdf714d2966000000%2Fvertical&order=new\n动漫::http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000003/vertical?limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fcategory%2F4e4d610cdf714d2966000003%2Fvertical&order=new\n风景::http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000002/vertical?limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fcategory%2F4e4d610cdf714d2966000002%2Fvertical&order=new\n游戏::http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000007/vertical?limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fcategory%2F4e4d610cdf714d2966000007%2Fvertical&order=new\n文字::http://service.picasso.adesk.com/v1/vertical/category/5109e04e48d5b9364ae9ac45/vertical?limit=16&skip={{(page-1)*16}}&adult=false&first=1&url=http%3A%2F%2Fservice.picasso.adesk.com%2Fv1%2Fvertical%2Fcategory%2F5109e04e48d5b9364ae9ac45%2Fvertical&order=new",
    "sourceComment": "\"700px\"",
    "sourceGroup": "图片 订阅",
    "sourceIcon": "http://gchat.qpic.cn/gchatpic_new/0/0-0-91D8938EB5E07D8E301B9A48885928C7/0?term=2",
    "sourceName": "壁纸小喵",
    "sourceUrl": "http://service.picasso.adesk.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4917,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765924042898,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "链接里的广告不要相信\n本链接所有内容全部取自网络 仅用于网络环境测试 请于二十四小时之内删除\n免费书源交流群：178801993",
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://img2.baidu.com/it/u=2497591018,1494490685&fm=253&fmt=auto&app=138&f=JPEG?w=375&h=500",
    "sourceName": "爱买家秀",
    "sourceUrl": "https://www.ikmjx.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4918,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "li@.m-pic-list",
    "ruleContent": "li.tx-box.size.big@all##src=\".*\" data-src##src",
    "ruleImage": "img@data-src",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "{{@@p.0@text}}{{@@p.1@text}}",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "女生头像::https://mip.woyaogexing.com/touxiang/nv/index<,_{{page}}>.html",
    "sourceComment": "分类自行补全\n分类Url快速生成\nhttp://dalaoha.github.io/yuedu",
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://ps.ssl.qhmsg.com/t022c0047a09b681985.jpg",
    "sourceName": "女生头像",
    "sourceUrl": "https://mip.woyaogexing.com",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 4919,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.list",
    "ruleDescription": "\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\r\n{{$.title}}\r\n<ul id=\"box\">\r\n<li><img src='{{$.url##(http.*\\.jpg).*$##$1}}'> </li>\r\n</ul>\r\n\r\n<link rel=\"stylesheet\" href=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.css\">\r\n<script src=\"https://cdn.bootcdn.net/ajax/libs/viewerjs/1.10.1/viewer.min.js\"></script>\r\n<script>\r\nroot = document.getElementById('box');\r\n//查看大图插件\r\nnew Viewer(root,{title:false,interval:3000});\r\n</script>",
    "ruleImage": "$.url",
    "ruleLink": "$.url",
    "ruleNextPage": "page",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "AI画展::/api/aip/exhibitList,{\"method\": \"POST\",\"body\":\"page={{page}}&limit=20\"}",
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://aigc.yizhentv.com/favicon.ico?d8006b4dc7a0f0997472",
    "sourceName": "一帧秒创",
    "sourceUrl": "https://webapi.yizhentv.com",
    "style": "/*标题相关*/\nh3{text-align:center}\nh6{margin-bottom:0}\n* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4920,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765924092817,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://bkimg.cdn.bcebos.com/pic/80cb39dbb6fd5266b9277876a918972bd4073647?x-bce-process=image/resize,m_lfit,h_700,limit_1/quality,Q_80",
    "sourceName": "胶片味道",
    "sourceUrl": "http://letsfilm.org",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4921,
    "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": 1765914283163,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://lf3-cdn-tos.bytescm.com/obj/static/xitu_juejin_web/static/favicons/favicon-32x32.png",
    "sourceName": "稀土掘金",
    "sourceUrl": "https://juejin.cn/user/center/signin?avatar_menu",
    "style": ".app-open-button{display:none !important;}",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 4922,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765914778033,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.item-issue!-1:-2@div!0:-1",
    "ruleContent": "class.text-detail@html&&class.picture-detail@html@js:\"<a href=\"+baseUrl+\">原文地址<a>\"+result",
    "ruleImage": "tag.img@src",
    "ruleLink": "class.div-link@href",
    "rulePubDate": "@js:if(String(result).match(/issue-article/)){a=String(result).match(/作者([^<]+)</);result=\"文章·\"+a[1]}else{if(String(result).match(/issue-picture/)){a=String(result).match(/class=\"date\">([^\"]+)<span class=\"issue-no\">([^\"]+)<\\/span>/);\nresult=\"图文·\"+a[1]+a[2]}else{result=\"问答\"}}",
    "ruleTitle": "class.text-content-short@text||class.text-title@text##作者.*",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "图片 订阅",
    "sourceIcon": "http://image.wufazhuce.com/apple-touch-icon.png",
    "sourceName": "一个",
    "sourceUrl": "http://m.wufazhuce.com/index",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 4923,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765918996076,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".main@li",
    "ruleContent": "all##ul##details",
    "ruleImage": "img@realsrc",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "❤️{{@@.love@text}}&nbsp;           {{@@span@text}}",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "性感美女::https://m.tuiimg.com/xingganmeinv/list_{{page}}.html\n清纯美女::https://m.tuiimg.com/qingchunmeinv/list_{{page}}.html\n妹子图::https://m.tuiimg.com/meizitu/list_{{page}}.html\n美女写真::https://m.tuiimg.com/meinvxiezhen/list_{{page}}.html",
    "sourceGroup": "图片 订阅",
    "sourceIcon": "http://i1.shaodiyejin.com/uploads/tu/201911/10133/743e1b888e_77.jpg",
    "sourceName": "超甜妹子图",
    "sourceUrl": "https://m.tuiimg.com",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 4924,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765919049721,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\nJSON.parse(String(org.jsoup.Jsoup.parse(result).select(\"script[id='__NEXT_DATA__']\")).replace(/<.*?script.*?>/g,\"\")).props.pageProps.data\n</js>",
    "ruleContent": "<js>\nresult=result.match(/const source = '(https.*playlist.m3u8)';/)[1]\nresult = \"<video src=\\\"\" + result + \"\\\" width=\\\"100%\\\" height=\\\"240px\\\" controls=\\\"controls\\\" ></video>\";\r\nresult = \"<html><head><meta charset=\\\"utf-8\\\"><meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" /><style>html,body{margin:0;padding:0;width:100%;}</style></head><body>\" + result + \"</body></html>\"\n</js>",
    "ruleImage": "img_preview",
    "ruleLink": "<js>/video/{{result._id}}</js>",
    "ruleNextPage": "page",
    "rulePubDate": "<js>\n📆 {{result.release}}&nbsp;⏱️ {{result.timeLengh}}\n</js>",
    "ruleTitle": "title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "巨乳::https://avple.tv/tags/1/{{page}}/date\n中出::https://avple.tv/tags/2/{{page}}/date\n人妻::https://avple.tv/tags/3/{{page}}/date\n出軌::https://avple.tv/tags/4/{{page}}/date\n熟女::https://avple.tv/tags/5/{{page}}/date\n不倫::https://avple.tv/tags/6/{{page}}/date\n主奴調教::https://avple.tv/tags/7/{{page}}/date\n凌辱強暴::https://avple.tv/tags/8/{{page}}/date\n制服誘惑::https://avple.tv/tags/9/{{page}}/date\n多P群交::https://avple.tv/tags/10/{{page}}/date\n絲襪美腿::https://avple.tv/tags/11/{{page}}/date\n少女::https://avple.tv/tags/12/{{page}}/date\n絲襪::https://avple.tv/tags/13/{{page}}/date\n乳交::https://avple.tv/tags/14/{{page}}/date\n黑絲::https://avple.tv/tags/15/{{page}}/date\n口爆::https://avple.tv/tags/16/{{page}}/date\n調教::https://avple.tv/tags/17/{{page}}/date\n潮吹::https://avple.tv/tags/18/{{page}}/date\n凌辱::https://avple.tv/tags/19/{{page}}/date\n美腿::https://avple.tv/tags/20/{{page}}/date\n強姦::https://avple.tv/tags/21/{{page}}/date\n輪姦::https://avple.tv/tags/22/{{page}}/date\n老師::https://avple.tv/tags/23/{{page}}/date\n短髮::https://avple.tv/tags/24/{{page}}/date\n誘惑::https://avple.tv/tags/25/{{page}}/date\n痴女::https://avple.tv/tags/26/{{page}}/date\n中文字幕::https://avple.tv/tags/27/{{page}}/date\nNTR::https://avple.tv/tags/28/{{page}}/date\n接吻::https://avple.tv/tags/29/{{page}}/date\n夫目前犯::https://avple.tv/tags/30/{{page}}/date\n年齡差::https://avple.tv/tags/31/{{page}}/date\n顏射::https://avple.tv/tags/32/{{page}}/date\n多P::https://avple.tv/tags/33/{{page}}/date\n眼鏡娘::https://avple.tv/tags/34/{{page}}/date\n運動裝::https://avple.tv/tags/35/{{page}}/date\n男友視角::https://avple.tv/tags/36/{{page}}/date\n童貞::https://avple.tv/tags/37/{{page}}/date\n溫泉::https://avple.tv/tags/38/{{page}}/date\n口交::https://avple.tv/tags/39/{{page}}/date\n按摩::https://avple.tv/tags/40/{{page}}/date\n深喉::https://avple.tv/tags/41/{{page}}/date\n學校::https://avple.tv/tags/42/{{page}}/date\n直接開啪::https://avple.tv/tags/43/{{page}}/date\n監獄::https://avple.tv/tags/44/{{page}}/date\n刑具::https://avple.tv/tags/45/{{page}}/date\n3P::https://avple.tv/tags/46/{{page}}/date\n漁網::https://avple.tv/tags/47/{{page}}/date\n肛交::https://avple.tv/tags/48/{{page}}/date\n校服::https://avple.tv/tags/49/{{page}}/date\n水著::https://avple.tv/tags/50/{{page}}/date\n美尻::https://avple.tv/tags/51/{{page}}/date\n處女作::https://avple.tv/tags/52/{{page}}/date\n綑綁::https://avple.tv/tags/53/{{page}}/date\n長身::https://avple.tv/tags/54/{{page}}/date\nOL::https://avple.tv/tags/55/{{page}}/date\n軟體::https://avple.tv/tags/56/{{page}}/date\n媚藥::https://avple.tv/tags/57/{{page}}/date\n盜攝偷拍::https://avple.tv/tags/58/{{page}}/date\n偷拍::https://avple.tv/tags/59/{{page}}/date\n4小時以上::https://avple.tv/tags/60/{{page}}/date\n魔鏡號::https://avple.tv/tags/61/{{page}}/date\n痙攣::https://avple.tv/tags/62/{{page}}/date\n貧乳::https://avple.tv/tags/63/{{page}}/date\n瞬間插入::https://avple.tv/tags/64/{{page}}/date\n圖書館::https://avple.tv/tags/65/{{page}}/date\n催眠::https://avple.tv/tags/66/{{page}}/date\n蘿莉::https://avple.tv/tags/67/{{page}}/date\n球隊經理::https://avple.tv/tags/68/{{page}}/date\n一日十回::https://avple.tv/tags/69/{{page}}/date\n過膝襪::https://avple.tv/tags/70/{{page}}/date\n女同歡愉::https://avple.tv/tags/71/{{page}}/date\n錄像::https://avple.tv/tags/72/{{page}}/date\n搜查官::https://avple.tv/tags/73/{{page}}/date\n護士::https://avple.tv/tags/74/{{page}}/date\n廁所::https://avple.tv/tags/75/{{page}}/date\n吊帶襪::https://avple.tv/tags/76/{{page}}/date\n泥醉::https://avple.tv/tags/77/{{page}}/date\n放尿::https://avple.tv/tags/78/{{page}}/date\n露出::https://avple.tv/tags/79/{{page}}/date\n和服::https://avple.tv/tags/80/{{page}}/date\n洗浴場::https://avple.tv/tags/81/{{page}}/date\n風俗娘::https://avple.tv/tags/82/{{page}}/date\n泡姬::https://avple.tv/tags/83/{{page}}/date\n巨漢::https://avple.tv/tags/84/{{page}}/date\n偶像::https://avple.tv/tags/85/{{page}}/date\n感謝祭::https://avple.tv/tags/86/{{page}}/date\n兔女郎::https://avple.tv/tags/87/{{page}}/date\nCosplay::https://avple.tv/tags/88/{{page}}/date\n腳交::https://avple.tv/tags/89/{{page}}/date\n汽車::https://avple.tv/tags/90/{{page}}/date\n醜男::https://avple.tv/tags/91/{{page}}/date\n復仇::https://avple.tv/tags/92/{{page}}/date\n無碼解放::https://avple.tv/tags/93/{{page}}/date\n逃犯::https://avple.tv/tags/94/{{page}}/date\n醫生::https://avple.tv/tags/95/{{page}}/date\n電車::https://avple.tv/tags/96/{{page}}/date\n女僕::https://avple.tv/tags/97/{{page}}/date\n主播::https://avple.tv/tags/98/{{page}}/date\n未亡人::https://avple.tv/tags/99/{{page}}/date\n泳池::https://avple.tv/tags/100/{{page}}/date\n情侶::https://avple.tv/tags/101/{{page}}/date\n白虎::https://avple.tv/tags/102/{{page}}/date\n男M::https://avple.tv/tags/103/{{page}}/date\n處女::https://avple.tv/tags/104/{{page}}/date\n黑人::https://avple.tv/tags/105/{{page}}/date\n家庭教師::https://avple.tv/tags/106/{{page}}/date\n健身房::https://avple.tv/tags/107/{{page}}/date\n獸耳::https://avple.tv/tags/108/{{page}}/date\n下雨天::https://avple.tv/tags/109/{{page}}/date\n家政婦::https://avple.tv/tags/110/{{page}}/date\n痴漢::https://avple.tv/tags/111/{{page}}/date\n空姐::https://avple.tv/tags/112/{{page}}/date\n旗袍::https://avple.tv/tags/113/{{page}}/date\n母乳::https://avple.tv/tags/114/{{page}}/date\n綜藝::https://avple.tv/tags/115/{{page}}/date\n便利店::https://avple.tv/tags/116/{{page}}/date\n紋身::https://avple.tv/tags/117/{{page}}/date\n時間停止::https://avple.tv/tags/118/{{page}}/date\n婚紗::::https://avple.tv/tags/119/{{page}}/date\n肉絲::https://avple.tv/tags/120/{{page}}/date\nSWAG::https://avple.tv/tags/122/{{page}}/date\n麻豆傳媒::https://avple.tv/tags/121/{{page}}/date\n果凍傳媒::https://avple.tv/tags/123/{{page}}/date\n皇家華人::https://avple.tv/tags/124/{{page}}/date\n精東影業::https://avple.tv/tags/125/{{page}}/date\n天美傳媒::https://avple.tv/tags/126/{{page}}/date\n星空傳媒::https://avple.tv/tags/127/{{page}}/date\n樂播傳媒::https://avple.tv/tags/128/{{page}}/date\n蜜桃傳媒::https://avple.tv/tags/129/{{page}}/date\n烏鴉傳媒::https://avple.tv/tags/130/{{page}}/date\n國產自拍::https://avple.tv/tags/131/{{page}}/date\n探花精選::https://avple.tv/tags/132/{{page}}/date\nHongKongDoll::https://avple.tv/tags/133/{{page}}/date\nNicoLove::https://avple.tv/tags/134/{{page}}/date\nFC2PPV::https://avple.tv/tags/135/{{page}}/date\n孟若羽::https://avple.tv/tags/136/{{page}}/date\n福利姬::https://avple.tv/tags/137/{{page}}/date\n台灣AV::https://avple.tv/tags/138/{{page}}/date",
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://avple.tv/public/favicon.ico",
    "sourceName": "Avple",
    "sourceUrl": "https://avple.tv/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4925,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "injectJs": "//选择需要删除的标签，以,分隔\nitems = document.querySelectorAll(`\n\t.notice-top,\n\t.navbar-nav>li:nth-child(n+3),\n\t.navbar-right,\n\t.anti-select,\n\t#show-qrcode,\n\t#ex-comment,\n\t.hidden-more\n`)\n\n//把选择的html值改成空\nArray.from(items,(item)=>{\n\titem.innerHTML = ``\n\titem.style.display = `none`\n})\n\n\n\n//上面是通用js，下面的不是\n//删除网站的随机广告\nitems = document.querySelectorAll('.item')\nif(items){\nArray.from(items,(item)=>{\nif(item.querySelector('.item-num').innerText == 'AD'){\n\t\titem.innerHTML = ``\n\t\titem.style.display = `none`\n\t}\n})\n}",
    "lastUpdateTime": 1765916152400,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "广告屏蔽测试，阅读版本需要22.11.08以上",
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://www.fulitu.cc/usr/themes/photograph/favicon.png",
    "sourceName": "福利兔",
    "sourceUrl": "https://www.fulitu.cc",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 4926,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765916190319,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.item col-xs-12 col-sm-6 col-md-4 col-lg-3",
    "ruleImage": "img@data-original",
    "ruleLink": "class.item-link@href",
    "ruleNextPage": "page",
    "rulePubDate": "页数::{{@class.item-num@textNodes}}",
    "ruleTitle": "class.item-link-text@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://www.fulitu.cc/page/{{page}}/\n白丝::https://www.fulitu.cc/category/baisi/{{page}}/\n肉丝::https://www.fulitu.cc/category/rousi/{{page}}/\n黑丝::https://www.fulitu.cc/category/heisi/{{page}}/\n萝莉::https://www.fulitu.cc/category/loli/{{page}}/\n少女::https://www.fulitu.cc/category/shaonv/{{page}}/\n御姐::https://www.fulitu.cc/category/yujie/{{page}}/\n腿控::https://www.fulitu.cc/category/tuikong/{{page}}/\n脚控::https://www.fulitu.cc/category/jiaokong/{{page}}/\n网袜::https://www.fulitu.cc/category/wangwa/{{page}}/\n女仆::https://www.fulitu.cc/category/nvpu/{{page}}/\n睡衣::https://www.fulitu.cc/category/shuiyi/{{page}}/\n泳装::https://www.fulitu.cc/category/yongzhuang/{{page}}/\n旗袍::https://www.fulitu.cc/category/qipao/{{page}}/\n巨乳::https://www.fulitu.cc/category/juru/{{page}}/\n锁骨::https://www.fulitu.cc/category/suogu/{{page}}/\n比基尼::https://www.fulitu.cc/category/bijini/{{page}}/\n兔女郎::https://www.fulitu.cc/category/tunvlang/{{page}}/\nJK制服::https://www.fulitu.cc/category/jk/{{page}}/\n死库水::https://www.fulitu.cc/category/sikushui/{{page}}/\n运动体操服::https://www.fulitu.cc/category/yundongticaofu/{{page}}/",
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://img4.tuwandata.com/v2/thumb/jpg/NWFkMywxMTI1LDAsOSwzLDEsLTEsTk9ORSwsLDkw/u/res.tuwan.com/zipgoods/20190508/3b6408c569f8eb687a8dd6eb3578bdb9.jpg",
    "sourceName": "福利兔",
    "sourceUrl": "https://www.fulitu.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4927,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765917236293,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "图片 订阅",
    "sourceIcon": "https://c-ssl.duitang.com/uploads/people/201908/23/20190823164218_8ZA3v.png",
    "sourceName": "堆糖",
    "sourceUrl": "https://m.duitang.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4928,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765917285467,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://dgss3.bdstatic.com/-bA2ezTa2gU2pMbgoY3K/img/0/512_512/ce8d065cbedf24ecf82449b4033450f2.png",
    "sourceName": "哔哩哔哩",
    "sourceUrl": "https://m.bilibili.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4929,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765918406561,
    "loadWithBaseUrl": true,
    "preload": false,
    "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",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4930,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765928788635,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "http://m.anitama.cn/style/image/res/icon/android-chrome-192x192.png",
    "sourceName": "哔哩哔哩",
    "sourceUrl": "http://m.anitama.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4931,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928716967,
    "loadWithBaseUrl": true,
    "preload": false,
    "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",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 4932,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765928770766,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://cdn.aixifan.com/dotnet/20130418/umeditor/dialogs/emotion/images/ac/47.gif",
    "sourceName": "爱次正义",
    "sourceUrl": "https://m.acfun.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4933,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928848222,
    "loadWithBaseUrl": true,
    "loginUrl": "https://www.douyin.com",
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://lf1-cdn-tos.bytegoofy.com/goofy/ies/douyin_web/public/favicon.ico",
    "sourceName": "抖音网页",
    "sourceUrl": "https://www.douyin.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4934,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928852098,
    "loadWithBaseUrl": true,
    "loginUrl": "https://www.kuaishou.com/new-reco",
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://static.yximgs.com/udata/pkg/WEB-LIVE/kwai_icon.8f6787d8.ico",
    "sourceName": "快手网页",
    "sourceUrl": "https://www.kuaishou.com/new-reco",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4935,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765918398679,
    "loadWithBaseUrl": true,
    "preload": false,
    "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",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4936,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765915737472,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "http://img2.3png.com/a507fc72abc2eea3b9ad8780d7c33155ffde.png",
    "sourceName": "央视直播",
    "sourceUrl": "https://tv.cctv.com/live/m/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4937,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765928913891,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://img3.doubanio.com/f/talion/7c6364aadf368dc0210173c940cfd0f64ceddc66/pics/icon/m_logo_200.png",
    "sourceName": "豆瓣视频",
    "sourceUrl": "https://m.douban.com/home_guide",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4938,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765928697244,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://www.agedm.org/favicon.ico",
    "sourceName": "艾格动漫",
    "sourceUrl": "https://m.agedm.org/#/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "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')));",
    "preload": false,
    "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}",
    "showWebLog": false,
    "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=`",
    "type": 0,
    "variableComment": "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"
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 4940,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\"User-Agent\":\"Mozilla/5.0 (Android 14; Mobile; rv:120.0) Gecko/120.0 Firefox/120.0\"\n}",
    "lastUpdateTime": 1765928744300,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": ".vod-list@ul@li",
    "ruleContent": "<js>\nfunction $(rule){\n\treturn java.getElements(rule);\n}\nvar tab_name,url_list,all_list;\n//获取线路❗️\ntab=$('.swiper-wrapper@li')\nfor(i=0;i<tab.length;i++){\n\turl_list=\"\";\n\t//获取播放列表❗️\n\tlist=$('.ewave-playlist-content')[i]\n\tlist=list.select('li')\n\t//拼接线路\n\ttab_name+=`<li>${String(tab[i].text()).replace(/\\d+$/,'')}<span>${list.length}</span></li>\\n`\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\turl_list+=`<li><a link=\"${url}\">${text}</a></li>\\n`\n\t}\n\turl_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=$('.info .row span.-1').text();\ndesc=String(desc).replace(/状态：/,'')\narea=$('.info .row span.1').select('a').text();\nyear=$('.info .row span.2').select('a').text();\nsort=`•${area}•${year}`\nintro=$('.more-box p.0').text();\n\n//最后结果，拼接完整网页\nresult=`\n<html>\n<title>${java.get('title')}</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<!--引入jquery-->\n<script src=\"https://code.jquery.com/jquery-3.0.0.min.js\"></script>\n\n<!--播放器-->\n<div id=\"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       <span class=\"desc\">${desc}</span>\n       <span>${sort}</span>\n       <!--简介按钮 -->\n       <span class=\"open_content\" id=\"open_content\">简介</span>\n    </p>\n    <div class=\"v_content\" id=\"v_content\" style=\"display:none;\">\n      <!--封面图片 -->\n      <div class=\"cover\" style=\"\">\n         <img src=\"${java.get('pic')}\"></img>\n      </div>\n      <!--剧情信息 -->\n      <div class=\"content\" id=\"intro_content\">\n        <div id=\"intro\">\n       <p style=\"text-indent:2em;\">${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    <div style=\"height:34px;\"></div>\n    <!--所有播放列表与排序-->\n    <div class=\"tab_content\" id=\"play_list\">\n        <div class=\"play_list_sort\" id=\"play_list_sort\">\n⇅ 正序/倒序</div>\n        ${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    \treq();\n    }\n });\n //发送请求\n function req(){\n   var xhr = new XMLHttpRequest();\n   xhr.open('get',url);\n   xhr.send();\n   //接收返回数据\n   xhr.onload=async function(){\n      data=await xhr.responseText;\n      //获取播放链接\n      data=data.match(/player_aaaa=(.*})/)[1];\n      d=JSON.parse(data);\n      url=unescape(d.url);\n      if(d.from.match(/SLNB|dm295/)){\n      \t play = 'https://jx.cilicili.one/player/?url='+url\n      }else if(d.from.match(/dplayer/)){\n      \t play = url\n      }else if(d.from.match(/NBY|cycp/)){\n      \t play = 'https://play.dilidili.ink/player/?url='+url\n      }else if(d.from.match(/languang/)){\n      \t play = 'https://player.123tv.icu/player/ec.php?code=yunq&if=1&url='+url\n      }else if(d.from.match(/ACG/)){\n      \t play = 'https://play.cilicili.one/player/?url='+url\n      }else if(d.from.match(/ces/)){\n      \t play = 'https://play.8888.st/web/Player?url='+url\n      }else{\n      \t play = \"https://jx.wujinkk.com/dplayer/?url=\"+url\n      }\n      //给iframe的src赋值\n      iframe.attr('src',play);\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 $('.play_list').eq(0).addClass('current');\n\t    $('.play_list li').eq(0).addClass('current');\n\t    $('.tab_control li').eq(0).addClass('current');\n\t    url=$('.play_list li.current a').attr('link');\n\t    req();\n\t  })();\n</script>\n`\n</js>",
    "ruleImage": ".img-wrapper@data-original\n<js>\njava.put('pic',result)\n</js>",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".item-status@text\n<js>\njava.put('status',result)\n</js>",
    "ruleTitle": ".name@a@text\n<js>\njava.put('title',result)\n</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "新番(日热)::/index.php/vod/show/by/hits/class/日韩动漫/id/20/page/{{page}}.html\n❗️搜索❗️::/index.php/vod/search/page/{{page}}/wd/{{source.getVariable()}}.html\n追番(日热)::/index.php/vod/show/by/hits/class/日韩动漫/id/4/page/{{page}}.html\n新番(国热)::/index.php/vod/show/by/hits/class/国产动漫/id/20/page/{{page}}.html\n追番(国热)::/index.php/vod/show/by/hits/class/国产动漫/id/4/page/{{page}}.html\n新番(日时)::/index.php/vod/show/by/time/class/日韩动漫/id/20/page/{{page}}.html\n追番(日时)::/index.php/vod/show/by/time/class/日韩动漫/id/4/page/{{page}}.html\n新番(国时)::/index.php/vod/show/by/title/class/国产动漫/id/20/page/{{page}}.html\n追番(国时)::/index.php/vod/show/by/time/class/国产动漫/id/4/page/{{page}}.html",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://pic2.imge.cc/2024/04/14/661b8a40477ec.png",
    "sourceName": "囧次元网",
    "sourceUrl": "https://jocydm.com",
    "style": "*{\n\n\tmargin:0;padding:0;\n\n}\n\nhtml{\n\n\tbackground-color:#222;\n\n}\n\na{\n\n\ttext-decoration:none;\n\n\tcolor:#222;\n\n}\n\nul{\n\n\tlist-style:none;\n\n}\n\niframe{\n\n\twidth:100%;height:100%;\n\n}\n\nh1,h2,h3,h4,h5,h6{\n\n\tfont-size:100%;font-weight:normal;\n\n}\n\nimg,video{\n\n\theight:auto;max-width:100%;\n\n}\n\n#Player{\n\n\tposition:fixed;\n\n\ttop:0;left:0;\n\n\twidth:100%;height:28%;\n\n\tz-index:99999;\n\n\tbackground-color:black;\n\n}\n\n/*块通用*/ \n\n.card{padding:15px 15px 0 15px;}\n\n.card .c_header{display: flex;flex-direction: row;justify-content: space-between;padding-bottom:20px;} \n\n.card .c_title{font-size:18px;color:#fff;font-weight:700;} \n\n.card .c_title a{color:#fff;} \n\n.card .c_right a{color:#666;} \n\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:#FFB026;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\n.tab_control{position:absolute;display: flex;flex-direction: row;overflow-x:scroll;width:92.3%} \n\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\n.tab_control li span{display: inline-block;min-width: 10px;padding: 2px 2px;font-size: 9px;font-weight: 700;line-height: 1;color: #fff;text-align: center;white-space: nowrap;vertical-align: middle;background-color:#FFB026;border-radius: 2px;}\n\n.tab_control li.current{z-index:99;height:37px;font-weight:700;color:#eee;background-image:linear-gradient(180deg, #BF360C 0%, #444 90%);border-radius: 4px 4px 0 0;} \n\n.tab_content{padding:12px;background: #444;box-shadow: 0 2px 8px 0 rgba(0,0,0,0.50);border-radius: 5px;} \n\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/*处理电影的集数宽度*/ \n\n.large li{width:25%;} .play_list_sort{padding-bottom:20px;color:#999;} \n\n/*遮罩*/ \n\n.mask{width:100%;height:100%;background:rgba(0, 0, 0, 0.5);position: fixed;left:0;top:0;display: none;} \n\n/*白天主题配色*/\n\n@media(prefers-color-scheme:light){\n\nhtml{background:#FEFEFE;}\n\n.v_title{color:black !important;}\n\n.v_desc,.v_desc a,#intro{color:#444 !important;}\n\n.open_content{color:#4898E0 !important;}\n\n#show_more{background: linear-gradient(to bottom,transparent,#FEFEFE 100%);}\n\n.tab_content{background:#FEFEFE;}\n\n.tab_control li span{background:#4898E0;}\n\n.tab_control li.current{color:#eee;background: linear-gradient(to bottom,black 10%,white 90%);}\n\n.play_list li a{color:#444;background:#eee;}\n\n.play_list li.current a{color:black;border:2px solid black;}\n\n} \n\n",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "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,
    "preload": false,
    "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>",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4942,
    "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": 1765928618995,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/★/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('★');\nfor(i in list){\nhref=list[i].match(/【(.*?)】/)[1];\ntext=list[i].match(/《(.*?)》/)[1];\nintro=list[i].match(/◎(.*?)◎/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)【/)[1]\njson.push({text:text,src:href,intro:intro,index:index})\n}\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📰 日报::https://tophub.today/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/jrrb.png?ref=master】《今日热榜》◎各站热榜聚合◎★https://s.weibo.com/top/summary【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/wbrs.png?ref=master】《微博热搜》◎最新鲜·最热门·最有料◎★http://top.baidu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/bdrs.png?ref=master】《百度热搜》◎百度热搜各类榜单◎★https://www.zhihu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/zh.png?ref=master】《知乎》◎知识分享社区◎\n\n\n🌏 新闻::http://m.people.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/rmw.png?ref=master】《人民网》◎权威媒体、大众网站◎★https://m.cctv.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/ysw.png?ref=master】《央视网》◎中央广播电视总台◎★https://m.chinanews.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/zxw.png?ref=master】《中新网》◎中国新闻网◎★https://xw.qq.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/txw.png?ref=master】《腾讯网》◎新闻、生活、资讯等互联网媒体平台◎★https://m.toutiao.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/jrtt.png?ref=master】《今日头条》◎通用信息平台◎★https://m.thepaper.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/ppxw.png?ref=master】《澎湃新闻》◎问答式新闻与新闻追踪◎★https://m.jiemian.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/jmxw.png?ref=master】《界面新闻》◎中产阶级的新闻及商业社交平台◎★https://sina.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/xlw.png?ref=master】《新浪网》◎24小时及时新闻◎★https://3g.163.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/wy.png?ref=master】《网易》◎中国领先的互联网技术公司◎★http://www.gov.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/gwy.png?ref=master】《国务院》◎中央人民政府门户网站◎★https://m.guancha.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/gcz.png?ref=master】《观察者》◎中西文化交流平台◎★https://www.huanqiu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/hqw.png?ref=master】《环球网》◎中国领先的国际资讯门户◎★https://www.un.org/zh/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/lhg.png?ref=master】《联合国》◎健康地球上的和平、尊严与平等◎\n\n\n🎶 音乐::https://www.tosound.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/ts.png?ref=master】《淘声》◎全球免费声音素材聚合平台◎★http://www.xmsj.org/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/yyssq.png?ref=master】《音乐搜索器》◎多站合一音乐搜索，音乐在线试听◎★https://bgmcat.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/bgmm.png?ref=master】《BGM猫》◎视频配乐、片头音乐◎★https://hali.life:82/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/yyjs.png?ref=master】《音乐解锁》◎解锁已购的加密音乐◎★http://www.waasaa.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/wsw.png?ref=master】《挖沙网》◎挖沙，放肆幻听◎★http://www.ningmeng.name/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/sfg.png?ref=master】《私房歌》◎民谣，独立◎★https://ifish.fun/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/ysyy.png?ref=master】《洛奇Town》◎鱼声音乐精选◎★http://www.misshcl.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/ysxj.png?ref=master】《盐酸小姐》◎没有人像我一样◎★https://m.9ku.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/jkyy.png?ref=master】《九酷音乐》◎流行歌曲大全◎★http://m.htqyy.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/htqyy.png?ref=master】《好听轻音乐》◎轻音乐交流平台◎★http://www.tyqyyw.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/tyqyy.png?ref=master】《田园轻音乐》◎轻音乐分享网站◎★http://www.52qingyin.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/qylw.png?ref=master】《清音陋屋》◎优美纯音乐精美散文分享网站◎\n\n\n🛰 直播::https://livechina.cctv.com/index.shtml【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/zbzg.png?ref=master】《直播中国》◎展现美丽中国◎★http://tv.cctv.com/m/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/yszb.png?ref=master】《央视直播》◎中央广播电视总台◎★https://m.kankanzhibo.com/pindaodaquan/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/kkzb.png?ref=master】《看看直播》◎电视台直播、NBA录像回放◎★https://m.huya.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/hyzb.png?ref=master】《虎牙直播》◎弹幕式互动直播平台◎★https://m.douyu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/dyzb.png?ref=master】《斗鱼直播》◎每个人的直播平台◎★https://wap.yy.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/yyzb.png?ref=master】《ＹＹ直播》◎全民娱乐的互动直播平台◎★https://live.douyin.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/dy.png?ref=master】《抖音直播》◎人气火爆的抖音直播间大全◎\n\n\n📻 音频::https://podtown.xyz/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/bkxz.png?ref=master】《播客小镇》◎播客节目聚合◎★http://diantaiwang.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/dtw.png?ref=master】《广播电台》◎电台之家提供电台网址电台节目查询◎★https://sao.fm/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/safm.png?ref=master】《思奥FM》◎网络收音机◎★http://m.cnr.cn/#/pages/broadcast/broadcast【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/ygw.png?ref=master】《央广电台》◎中央广播电视总台◎★https://m.qtfm.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/qtfm.png?ref=master】《蜻蜓FM》◎听书听小说听电台◎★https://m.lizhi.fm/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/lzfm.png?ref=master】《荔枝FM》◎广播剧听书直播◎\n\n\n📺 视频::https://m.acfun.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/aczy.png?ref=master】《AC正义》◎国内首家弹幕视频网站◎★https://www.xinpianchang.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/xpc.png?ref=master】《新片场》◎发现全球优质视频与创作人◎★https://m.bilibili.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/blbl.png?ref=master】《哔哩哔哩》◎国内知名的在线视频弹幕网站◎★https://haokan.baidu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/hksp.png?ref=master】《好看视频》◎海量高清短视频◎★https://m.ixigua.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/xgsp.png?ref=master】《西瓜视频》◎高清免费在线视频◎\n\n\n🍵 生活::https://www.jianshu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/js.png?ref=master】《简书》◎优质的创作社区◎★https://m.douban.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/db.png?ref=master】《豆瓣》◎一个神奇的社区◎★https://zh.wikihow.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/wh.png?ref=master】《wikiHow》◎万事指南网站◎★http://neikuw.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/nkcx.png?ref=master】《内酷网》◎内酷才是真酷，追求清静寂定的心境。◎\n\n\n🎲 娱乐::http://i.jandan.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/jd.png?ref=master】《煎蛋》◎地球上没有新鲜事◎★https://www.zhangzs.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/zzs.png?ref=master】《涨姿势》◎骚年,来这里涨点姿势吧！◎★http://m.ifanjian.net/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/fjz.png?ref=master】《泛见志》◎一个有内涵的网站◎★https://www.dbbqb.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/dbzjsj.png?ref=master】《逗比拯救世界》◎专业的表情包搜索网站◎★https://m.soogif.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/soogif.png?ref=master】《SOOGIF》◎gif制作及搜索◎★https://m.hupu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/hp.png?ref=master】《虎扑》◎体育、游戏等兴趣社区◎\n\n\n🎰 游媒::https://www.gcores.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/jh.png?ref=master】《机核GCORES》◎分享游戏玩家生活，探讨游戏相关文化。◎★http://www.chuapp.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/cl.png?ref=master】《触乐》◎国内最优秀的游戏媒体之一◎★https://www.yystv.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/yys.png?ref=master】《游研社》◎游戏新媒体◎★http://www.nadianshi.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/synds.png?ref=master】《手游那点事》◎关注手机游戏运营和手机游戏推广◎★https://www.vgtime.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/yxsg.png?ref=master】《游戏时光》◎分享游戏乐趣◎\n\n\n📑 期刊::http://qk.demo.lifves.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/qkzz.png?ref=master】《电子期刊》◎初见·杂志期刊，意林、读者、故事会◎★https://m.fx361.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/ckw.png?ref=master】《参考网》◎过期杂志阅读平台◎★http://www.53bk.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/szbz.png?ref=master】《多媒体数字报纸》◎53BK数字报纸系统◎\n\n\n🗞️ 资讯::https://wap.zol.com.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/zgczx.png?ref=master】《中关村在线》◎手机,电脑等科技数码的资讯和行情报价◎★https://bohaishibei.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/bhsb.png?ref=master】《博海拾贝》◎博海拾贝官方网站◎★https://www.yxgapp.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/yxg.png?ref=master】《译学馆》◎译制知识视频的平台◎★https://m.36kr.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/36k.png?ref=master】《36氪》◎互联网创业资讯◎★https://m.dgtle.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/szwb.png?ref=master】《数字尾巴》◎丰富的数码资讯◎★https://hackernews.cc/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/hkzx.png?ref=master】《黑客资讯》◎国际威胁情报、黑客动向及维基解密资讯。◎\n\n\n✏️ 设计::https://hao.uisdc.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/sjswzdh.png?ref=master】《设计师网站导航》◎设计师精选国内外优质网站◎★https://www.uisdc.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/ys.png?ref=master】《优设》◎设计师交流学习平台◎★https://huaban.com/discovery/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/hb.png?ref=master】《花瓣》◎发现网络上你喜欢的事物◎★https://m.duitang.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/dt.png?ref=master】《堆糖》◎美图壁纸兴趣社区◎★https://m.zhisheji.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/zsj.png?ref=master】《致设计》◎电商设计师交流平台◎★https://m.topys.cn/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/topys.png?ref=master】《TOPYS》◎创意内容平台◎★http://www.woshipm.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/rrdscpjl.png?ref=master】《人人都是产品经理》◎产品经理、产品爱好者学习交流平台◎★https://www.toodaylab.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/lxshsys.png?ref=master】《理想生活实验室》◎创意设计与生活消费的媒体◎\n\n\n🛰️ 科技::https://m.guokr.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/gk.png?ref=master】《果壳》◎泛科技主题网站◎★https://www.pingwest.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/pw.png?ref=master】《品玩》◎有品好玩的科技，一切与你有关！◎★https://m.huxiu.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/hx.png?ref=master】《虎嗅》◎商业科技资讯◎★https://sspai.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/ssp.png?ref=master】《少数派》◎高品质数字消费指南◎★https://m.ithome.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/itzj.png?ref=master】《IT之家》◎前沿科技新闻网站◎★https://www.ifanr.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/afe.png?ref=master】《爱范儿》◎聚焦新创和消费主题的科技媒体◎★https://m.tmtpost.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/tmt.png?ref=master】《钛媒体》◎全球科技财经资讯平台◎★http://m.zealer.com/【https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/mt/zealer.png?ref=master】《ZEALER》◎电子产品评测网站◎",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://www.gitlink.org.cn/api/yi-c/tc/raw/dy/tb/mt.png?ref=master",
    "sourceName": "媒体聚合",
    "sourceUrl": "媒体合集",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4943,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928626298,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "[class=\"card-box\"] >div>a&&[class=\"hl-vod-list clearfix\"]>li&&.row>div>ul>li",
    "ruleContent": "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<title>内容提取</title>\n<!-- v2025.05.10 -->\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<script src=\"https://code.jquery.com/jquery-3.6.0.min.js\"></script>\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.css\" />\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/viewerjs/1.11.3/viewer.min.js\"></script>\n<style>\n    body { font-family: Arial, sans-serif; font-size: 16px; }\n    #title, #page, #loading-status { margin: 0 auto; font-size: 20px; text-align: center; }\n    #description, #urls, #video-url, #video-sources, #messages { width: 100%; max-width: 800px; margin: 1.5px auto; font-size: 14px; text-align: left; word-wrap: break-word; white-space: pre-wrap; }\n    #text, #text :not(img), #text img + * { text-indent: 2em; width: 100%; font-size: 16px; line-height: 1.5em; margin-top: 0; margin-bottom: 0; word-wrap: break-word; white-space: pre-wrap; }\n    img, #text img { width: 100%; height: auto; display: block; margin-bottom: 1.5px; }\n    .flex-container { display: flex; justify-content: center; align-items: center; gap: 10px; margin: 1.5px 0; font-size: 14px; }\n    button, select { flex: 1 1 31%; padding: 3px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; cursor: pointer; background-color: #f9f9f9; transition: background-color 0.3s ease; margin: 1.5px; min-width: 0; font-size: 14px; }\n    #url-select, #video-source-select { flex: 1 1 100%; margin-left: 0; margin-right: 0; text-align: center; }\n    #video-element { width: 100%; height: auto; }\n    textarea { width: 100%; height: auto; min-height: 100px; box-sizing: border-box; resize: vertical; }\n    .error, .warn { color: red; }\n</style>\n</head>\n<body>\n    <h3 id=\"title\">{{@@h2.0@text}}</h3>\n    <p id=\"description\">{{@@.info.0@html||.jianjie@html}}</p>\n    <p id=\"page\" style=\"display:none;\">共<span id=\"total-pages\">1</span>页</p>\n    <p id=\"loading-status\" style=\"display:none;\"></p>\n\n    <div class=\"flex-container\" id=\"loading-buttons\" style=\"display:none;\">\n        <button id=\"prev-page-btn\">上一页</button>\n        <button id=\"next-page-btn\">下一页</button>\n        <button id=\"auto-load-btn\">自&nbsp;&nbsp;动</button>\n    </div>\n    \n    <div class=\"flex-container\">\n        <select id=\"url-select\" style=\"display:none;\"></select>\n    </div>\n    \n    <div class=\"flex-container\">\n        <button id=\"toggle-urls-btn\">显/隐网址</button>\n        <button id=\"toggle-messages-btn\">显/隐信息</button>\n        <button id=\"toggle-debug-btn\">显/隐调试</button>\n    </div>\n    <div id=\"urls\"></div>\n    <div id=\"messages\"></div>\n    <div id=\"debug-info\"></div>\n    <div id=\"video-url\"></div>\n    <div id=\"video-container\" style=\"display: none;\">\n        <video id=\"video-element\" controls preload=\"auto\" width=\"640\" height=\"264\">\n            <source id=\"video-source\" src=\"\" type=\"\">您的浏览器不支持 video 标签。\n        </video>\n    </div>\n    <div class=\"flex-container\" id=\"video-source-container\" style=\"display: none;\">\n        <select id=\"video-source-select\" onchange=\"updateVideoSource()\"></select>\n    </div>\n    <div id=\"images\"></div>\n    <div id=\"text\"></div>\n\n    <script>\n        // 配置对象，包含各种选择器、延迟时间等配置项\n        const config = {    \n            videoSelector: 'body', // 视频选择器\n            imgSelector: '.gridlane-box-inside img,.photos figure img', // 图片选择器\n            textSelector: '#content, .content', // 文本选择器\n            debugSelector: '#content, .page, .pager, .content, script', // 调试信息选择器\n            swapImageAttributes: false, // 是否交换图片属性\n            delayTime: 1500, // 延迟提取时间\n            retryDelayTime: 1500, // 重试加载延迟时间\n            maxLoadAttempts: 3, // 最大加载次数\n            autoLoading: false, // true自动模式，false单页模式\n            debugOnce: 0, // 只在特定索引输出一次调试信息\n            totalPagesText: '{{@@.pager@a.-2@textNodes}}', // 总页码\n            urlSuffixToRemove: /\\.html$/, // 移除url后缀\n            pageUrlText: '{urlPrefix}/{i}.html', // 拼接URL模板        \n            ListMode: true, // true网址列表模式，false网址拼接模式    \n            initialUrls: `{{@@#hl-plays-list.0@li@a@href}}`, // 网址\n            initialUrlsName: `{{@@#hl-plays-list.0@li@a@text}}`, // 网址名称\n            sourceurl: '', // 来源URL前缀\n        };\n\n        let videoSources = []; // 存储视频源数组\n        let loadAttempts = {}; // 记录每个URL的加载尝试次数\n        let urls = []; // 存储所有页面的URL\n        let imageBox;\n        let textBox;\n        let currentPageIndex = 0; // 当前页面索引\n        let canLoadNextPage = true; // 控制是否可以加载下一页\n        let autoLoadInProgress = false; // 自动加载状态\n\n        // 构建URL列表\n        function buildUrls(totalPages, baseUrl) {\n            let initialUrlsArray = config.initialUrls.trim().split('\\n').filter(url => url.trim() !== '');\n            let initialUrlsNameArray = config.initialUrlsName.trim().split('\\n').filter(name => name.trim() !== '');\n\n            if (config.ListMode && initialUrlsArray.length > 0) {\n                if (initialUrlsArray.length !== initialUrlsNameArray.length) {\n                    $('#messages').append(`<span class=\"warn\">警告：initialUrls 和 initialUrlsName 的长度不匹配。</span><br>`);\n                }\n\n                urls = initialUrlsArray.map(url => {\n                    if (config.sourceurl && url.startsWith('/') && !/^https?:\\/\\//i.test(url)) {\n                        return config.sourceurl.replace(/\\/$/, '') + url;\n                    } else {\n                        return url;\n                    }\n                });\n\n                urls.forEach((url, index) => {\n                    const name = initialUrlsNameArray[index] || `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            } else {\n                if (totalPages === 1) {\n                    urls.push(baseUrl);\n                } else {\n                    urls.push(baseUrl);\n                    for (let i = 2; i <= totalPages; i++) {\n                        urls.push(config.pageUrlText.replace('{urlPrefix}', baseUrl.replace(config.urlSuffixToRemove, '').replace(/\\/$/, '')).replace('{i}', i));\n                    }\n                }\n\n                urls.forEach((url, index) => {\n                    const name = `第 ${index + 1} 页`;\n                    $('#url-select').append(`<option value=\"${index}\">${name}</option>`);\n                    $('#urls').append(`<div>${name}: ${url}</div>`);\n                });\n            }\n\n            $('#total-pages').text(urls.length);\n            toggleNavigationButtons();\n            toggleTotalPagesDisplay();\n        }\n\n        // 规范化URL\n        function normalizeUrl(url) {\n            if (typeof url !== 'string' || !url.trim()) {\n                return '';\n            }\n            const match = url.match(/['\"](.*?)['\"]/);\n            if (match && match[1]) {\n                url = match[1];\n            }\n\n            function processUrl(str) {\n                str = str.trim();\n                str = str.replace(/\\\\u[\\dA-F]{4}/gi, match => String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16)));\n                str = decodeURIComponent(str);\n                str = str.replace(/^http:\\/([^/])/, 'http://$1');\n                str = str.replace(/^https:\\/([^/])/, 'https://$1');\n                return str;\n            }\n            return processUrl(url);\n        }\n\n        // 清空容器内容\n        function clearContainers() {\n            $('#messages').empty();\n            $('#images').empty();\n            $('#text').empty();\n        }\n\n        // 更新图像源\n        function updateImageSrc(elements, shouldSwap) {\n            elements.each(function () {\n                const $this = $(this);\n                const attrsToUpdate = {};\n                if (shouldSwap) {\n                    ['data-original', 'data-src', 'data-url'].forEach(attr => {\n                        if ($this.attr(attr)) {\n                            attrsToUpdate['src'] = $this.attr(attr);\n                        }\n                    });\n                }\n                $this.attr(attrsToUpdate);\n            });\n            return elements;\n        }\n\n        // 切换导航按钮显示状态\n        function toggleNavigationButtons() {\n            if ($('#url-select option').length > 1 && !config.autoLoading) {\n                $('#loading-buttons').show();\n                $('#url-select').show();\n            } else {\n                $('#loading-buttons').hide();\n                $('#url-select').hide();\n            }\n        }\n\n        // 显示加载状态\n        function showLoadingStatus(pageNumber) {\n            const selectedOption = $('#url-select option:selected').text();\n            $('#loading-status').text(`正在加载：${selectedOption}`).show();\n        }\n\n        // 隐藏加载状态\n        function hideLoadingStatus() {\n            $('#loading-status').hide();\n        }\n\n        // 加载指定索引的内容\n        function loadContent(index) {\n            if (index < 0 || index >= urls.length || !canLoadNextPage) return;\n            canLoadNextPage = false;\n            currentPageIndex = index;\n            $('#url-select').val(index);\n            $('#messages').append(`<div>当前地址: <span class=\"warn\">${urls[index]}</span></div>`);\n            if (autoLoadInProgress) {\n                showLoadingStatus(index + 1);\n            }\n            $.ajax({\n                url: urls[index],\n                type: 'GET',\n                success: function (data) {\n                    try {\n                    const $data = $(data);\n                    let updatedHtmlContent = data.replace(/(['\"])(\\/\\/)(?!\\/)/g, '$1https://')\n                        .replace(/src=\"upload/gi, 'src=\"/upload')\n                        .replace(/style=[\"'][^'\"]+[\"']/gi, '')\n                        .replace(/\\\\\\//g, '/');\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(updatedHtmlContent, \"text/html\");\n\n                    if (config.debugOnce === index) {\n                        const debugElements = $(doc).find(config.debugSelector);\n                        if (debugElements.length > 0) {\n                            const debugContents = $('<pre>').html(debugElements.clone().wrapAll('<div/>').parent().html()).html();\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">${debugContents}</textarea></span>`);\n                        } else {\n                            $('#debug-info').html(`<span class=\"warn\">调试信息: <textarea rows=\"10\" cols=\"80\">调试信息未提取到内容，请检查选择器！</textarea></span>`);\n                        }\n                    }\n                    // 方法1：提取视频\n                    const videoSources1 = [];\n                    const videoContents = $(doc).find(config.videoSelector);\n                    const videoTags = $(videoContents).find('video, source');\n                    videoTags.each(function() {\n                        const videosrc = $(this).attr('src') || \n                                     $(this).attr('data-src') || \n                                     $(this).attr('data-original') || '';\n                        \n                        if (videosrc) {\n                            videoSources1.push(videosrc);\n                        }\n                    });\n                    //反馈\n                    if (videoSources1.length > 0) {\n                        $('#messages').append(`<span>方法1，找到 ${videoSources1.length} 个视频。</span><br>`);\n                    }\n\n                    // 方法2：正则提取视频\n                    const regex = /['\"]https?[^'<>\"]+(m3u8|mp4|webm|ogg|flv|mp3|m4a|wav|ape|flac)([^'<>\"]+)?['\"]/gi;\n                    const matches = data.match(regex);\n                    const videoSources2 = [];\n\n                    if (matches) {\n                        const uniqueMatches = [...new Set(matches)];\n                    \n                        uniqueMatches.forEach(match => {\n                            const normalizedSrc = normalizeUrl(match.replace(/['\"]/g, ''));\n                            videoSources2.push(normalizedSrc);\n                        });\n                    }\n                    //反馈\n                    if (videoSources2.length > 0) {\n                        $('#messages').append(`<span>方法2，找到 ${videoSources2.length} 个视频。</span><br>`);\n                    }\n\n                    // 合并两种方法的结果\n                    videoSources = [...videoSources1, ...videoSources2];\n\n                    // 去重并标准化 URL\n                    const imageExtensions = /\\.(jpg|jpeg|png|gif|bmp|svg)$/i;\n\n                    videoSources = videoSources\n                                  .map(src => normalizeUrl(src.replace(/\\\\+/g, '')))\n                                  .filter(src => src) // 过滤空值\n                                  .filter(src => !imageExtensions.test(src)); // 移除图片地址\n                        \n                    videoSources = [...new Set(videoSources)];// 去重\n\n                    // 显示最终结果\n                    $('#messages').append(`<span>总共找到 ${videoSources.length} 个视频。</span><br>`);\n\n                    if (videoSources.length > 0) {\n                        $('#messages').append(`<span>成功提取到视频，找到 ${videoSources.length} 个视频。</span><br>`);\n                        videoSources.forEach((src, idx) => {\n                            $('#messages').append(`<div>视频地址:<span class=\"warn\"> ${src}</span><br></div>`);\n                            $('#video-source-select').append(`<option value=\"${idx}\">视频源 ${idx + 1}</option>`);\n                        });\n                    \n                        if (videoSources.length == 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').hide();\n                            updateVideoSource();\n                        } else if (videoSources.length > 1) {\n                            $('#video-container').show();\n                            $('#video-url').show();\n                            $('#video-source-container').show();\n                            updateVideoSource();\n                        } else {\n                            $('#video-container').hide();\n                            $('#video-url').hide();\n                            $('#video-source-container').hide();\n                        }\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未找到视频源。</span><br>`);\n                        $('#video-container').hide();\n                        $('#video-url').hide();\n                        $('#video-source-container').hide();\n                    }\n\n                    //提取图片\n                    const $imgContents = $(doc).find(config.imgSelector);\n                    const shouldSwap = config.swapImageAttributes;\n                    const newContents = updateImageSrc($imgContents.clone(), shouldSwap);\n                    $('#images').append(newContents).show();\n                    if (newContents.length > 0) {\n                        $('#messages').append(`<span>成功提取图片，共 ${newContents.length} 张。</span><br>`);\n                        newContents.each(function () {\n                            const imgSrc = $(this).attr('src') || $(this).attr('data-original') || $(this).attr('data-src') || $(this).attr('data-url');\n                            $('#messages').append(`<div>地址:<span class=\"warn\"> ${imgSrc}</span><br></div>`);\n                        });\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图片。</span><br>`);\n                    }\n\n                    //提取图片和文本\n                    const textContents = $(doc).find(config.textSelector).map(function () {\n                        const $currentContents = $(this);\n                        $currentContents.find('img + br, script, video, source, iframe').remove();\n                        $currentContents.html($currentContents.html().replace(/>\\s+/gi, '>').replace(/<\\/?br\\s*([^>]*)\\s*\\/?>/gi, '\\n').replace(/\\n+/g, '\\n'));\n                        return $currentContents.html();\n                    }).get().join('');\n                    if (textContents.trim()) {\n                        $('#text').append(`<span>${textContents}</span><br>`).show();\n                        $('#messages').append(`<span>成功提取图文。</span><br>`);\n                    } else {\n                        $('#messages').append(`<span class=\"warn\">未提取到图文。</span><br>`);\n                    }\n\n                    if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                        setTimeout(() => { \n                            canLoadNextPage = true;\n                            loadContent(currentPageIndex + 1); \n                        }, config.delayTime);\n                    } else {\n                        canLoadNextPage = true;\n                        if (autoLoadInProgress) {\n                            hideLoadingStatus();\n                        }\n                    }\n                } catch (parseError) {\n                    $('#messages').append(`<span class=\"error\">解析页面内容时发生错误: ${parseError.message}</span><br>`);\n                    handleLoadFailure(urls, index);\n                } finally {\n                    if (imageBox) imageBox.viewer.update();\n                    if (textBox) textBox.viewer.update();\n                }\n            },\n            error: function (jqXHR, textStatus, errorThrown) {\n                let errorMessage = `内容加载失败: ${urls[index]}`;\n                switch (textStatus) {\n                    case 'timeout':\n                        errorMessage += ', 请求超时';\n                        break;\n                    case 'abort':\n                        errorMessage += ', 请求被取消';\n                        break;\n                    case 'parsererror':\n                        errorMessage += ', 解析响应出错';\n                        break;\n                    default:\n                        errorMessage += `, 状态码: ${jqXHR.status}, 错误信息: ${errorThrown}`;\n                        break;\n                }\n                $('#messages').append(`<span class=\"error\">${errorMessage}</span><br>`);\n                handleLoadFailure(urls, index);\n                }\n            });\n        }\n\n        // 处理加载失败的情况\n        function handleLoadFailure(urls, index) {\n            if (!loadAttempts[urls[index]]) {\n                loadAttempts[urls[index]] = 1;\n            } else {\n                loadAttempts[urls[index]]++;\n            }\n            if (loadAttempts[urls[index]] <= config.maxLoadAttempts) {\n                const retryMessage = `第${index + 1}页加载失败，正在进行第${loadAttempts[urls[index]]}次加载！`;\n                $('#messages').append(`<span class=\"error\">${retryMessage}</span><br>`);\n                setTimeout(() => { \n                    canLoadNextPage = true;\n                    loadContent(index); \n                }, config.retryDelayTime);\n            } else {\n                const finalErrorMessage = `第${index + 1}页加载失败，已达到最大尝试次数(${config.maxLoadAttempts})！`;\n                $('#messages').append(`<span class=\"error\">${finalErrorMessage}</span><br>`);\n                if (autoLoadInProgress && currentPageIndex < urls.length - 1) {\n                    setTimeout(() => { \n                        canLoadNextPage = true;\n                        loadContent(currentPageIndex + 1); \n                    }, config.delayTime);\n                } else {\n                    canLoadNextPage = true;\n                    if (autoLoadInProgress) {\n                        hideLoadingStatus();\n                    }\n                }\n            }\n        }\n\n        // 更新视频源\n        function updateVideoSource() {\n            const selectedIndex = parseInt(document.getElementById('video-source-select').value);\n            if (isNaN(selectedIndex) || !videoSources[selectedIndex]) {\n                $('#messages').append(`<span class=\"warn\">未找到有效的视频源。</span><br>`);\n                console.warn(\"Invalid or undefined video source:\", selectedIndex, videoSources);\n                return;\n            }\n\n            const selectedSource = videoSources[selectedIndex];\n            document.getElementById('video-url').textContent = `视频地址:\\n ${selectedSource}`;\n\n            const videoSourceElement = document.getElementById('video-source');\n            videoSourceElement.src = selectedSource;\n\n            const videoElement = document.getElementById('video-element');\n            videoElement.load();\n\n            $('#messages').append(`<span>更新视频源为: ${selectedSource}</span><br>`);\n            console.log(\"Updated video source to:\", selectedSource);\n        }\n\n        // 切换总页数显示状态\n        function toggleTotalPagesDisplay() {\n            if (urls.length > 1) {\n                $('#page').show();\n            } else {\n                $('#page').hide();\n            }\n        }\n\n        // 页面加载完成后执行的主要逻辑\n        $(document).ready(function () {\n            imageBox = document.getElementById('images');\n            textBox = document.getElementById('text');\n            if (imageBox && textBox) {\n                new Viewer(imageBox, { title: true, interval: 2000 });\n                new Viewer(textBox, { title: true, interval: 2000 });\n            }\n\n            const totalPagesText = config.totalPagesText;\n            const totalPages = parseInt(totalPagesText, 10) || 1;\n            const baseUrl = '{{baseUrl}}';\n\n            clearContainers();\n            $('#urls, #debug-info textarea, #video-url, #video-source-select').empty();\n            $('#urls, #messages, #debug-info, #video-url, #video-container, #video-source-container, #images, #text').hide();\n\n            buildUrls(totalPages, baseUrl);\n\n            const urlSelect = document.getElementById('url-select');\n            if (urlSelect.options.length > 0) {\n                urlSelect.value = '0'; \n\n                if (config.autoLoading) {\n                    autoLoadInProgress = true;\n                    for (let i = 0; i < urls.length; i++) {\n                        loadContent(i);\n                    }\n                } else {\n                    loadContent(0);\n                }\n            } else {\n                loadContent(0);\n            }\n\n            $('#url-select').change(function () {\n                clearContainers();\n                const selectedIndex = parseInt($(this).val());\n                loadContent(selectedIndex);\n            });\n            $('#prev-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex > 0) {\n                    loadContent(currentPageIndex - 1);\n                }\n            });\n            $('#next-page-btn').click(function () {\n                clearContainers();\n                if (currentPageIndex < urls.length - 1) {\n                    loadContent(currentPageIndex + 1);\n                }\n            });\n            $('#auto-load-btn').click(function () {\n                autoLoadInProgress = true;\n                showLoadingStatus(1); \n                for (let i = currentPageIndex + 1; i < urls.length; i++) {\n                    loadContent(i);\n                }\n            });\n            $('#toggle-messages-btn').click(function () { $('#messages').toggle(); });\n            $('#toggle-urls-btn').click(function () { $('#urls').toggle(); });\n            $('#toggle-debug-btn').click(function () { $('#debug-info').toggle(); });\n        });\n    </script>\n</body>\n</html>",
    "ruleImage": "a@data-original||a@data-src||a@src",
    "ruleLink": "a.0@href",
    "ruleNextPage": "//*[contains(text(),\"下一頁\")]/../@href||//*[contains(text(),\"下一页\")]/../@href",
    "rulePubDate": ".hl-pic-text@text",
    "ruleTitle": "a.0@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "全部::/\n短剧::/index.php/vod/show/id/5.html\n动漫::/index.php/vod/show/id/4.html\n电影::/index.php/vod/show/id/1.html\n电视剧::/index.php/vod/show/id/2.html\n中国大陆::/index.php/vod/show/area/%E4%B8%AD%E5%9B%BD%E5%A4%A7%E9%99%86/id/2.html\n中国香港::/index.php/vod/show/area/%E4%B8%AD%E5%9B%BD%E9%A6%99%E6%B8%AF/id/2.html\n中国台湾::/index.php/vod/show/area/%E4%B8%AD%E5%9B%BD%E5%8F%B0%E6%B9%BE/id/2.html\n美国::/index.php/vod/show/area/%E7%BE%8E%E5%9B%BD/id/2.html\n法国::/index.php/vod/show/area/%E6%B3%95%E5%9B%BD/id/2.html\n英国::/index.php/vod/show/area/%E8%8B%B1%E5%9B%BD/id/2.html\n日本::/index.php/vod/show/area/%E6%97%A5%E6%9C%AC/id/2.html\n韓韩国::/index.php/vod/show/area/%E9%9F%A9%E5%9B%BD/id/2.html\n德國::/index.php/vod/show/area/%E5%BE%B7%E5%9B%BD/id/2.html\n泰国::/index.php/vod/show/area/%E6%B3%B0%E5%9B%BD/id/2.html\n越南::/index.php/vod/show/area/%E8%B6%8A%E5%8D%97/id/2.html\n马来西亚::/index.php/vod/show/area/%E9%A9%AC%E6%9D%A5%E8%A5%BF%E4%BA%9A/id/2.html\n新加坡::/index.php/vod/show/area/%E6%96%B0%E5%8A%A0%E5%9D%A1/id/2.html\n西班牙::/index.php/vod/show/area/%E8%A5%BF%E7%8F%AD%E7%89%99/id/2.html\n俄罗斯::/index.php/vod/show/area/%E4%BF%84%E7%BD%97%E6%96%AF/id/2.html\n巴西::/index.php/vod/show/area/%E5%B7%B4%E8%A5%BF/id/2.html\n瑞典::/index.php/vod/show/area/%E7%91%9E%E5%85%B8/id/2.html\n丹麦::/index.php/vod/show/area/%E4%B8%B9%E9%BA%A6/id/2.html\n印度::/index.php/vod/show/area/%E5%8D%B0%E5%BA%A6/id/2.html\n加拿大::/index.php/vod/show/area/%E5%8A%A0%E6%8B%BF%E5%A4%A7/id/2.html\n爱尔兰::/index.php/vod/show/area/%E7%88%B1%E5%B0%94%E5%85%B0/id/2.html\n意大利::/index.php/vod/show/area/%E6%84%8F%E5%A4%A7%E5%88%A9/id/2.html\n澳大利亚::/index.php/vod/show/area/%E6%BE%B3%E5%A4%A7%E5%88%A9%E4%BA%9A/id/2.html",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "",
    "sourceName": "棒哒影视",
    "sourceUrl": "https://bangbangda.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4944,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928636679,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://oss-xpc0.xpccdn.com/Upload/edu/2019/09/095d75c392a6a3f.png",
    "sourceName": "新的片场",
    "sourceUrl": "https://www.xinpianchang.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4945,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928646549,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "//备用\nhttp://vip.liu16.com\nhttp://s.liu16.com\nhttp://vip.catv1.com\nhttps://www.123mfk.com",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "http://cmdy.liu16.com/favicon.ico",
    "sourceName": "草民网络",
    "sourceUrl": "http://cmdy.liu16.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4946,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765928923949,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://www.wandou.la/favicon.ico",
    "sourceName": "豌豆加强",
    "sourceUrl": "https://www.wandou.la/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://lupic.cdn.bcebos.com/,\nhttps://cpro.baidu.com/,\nhttps://eclick.baidu.com/,\nhttps://sofire.baidu.com/,\nhttps://analytics.woozooo.com/,\nhttps://statics.woozooo.com/,\nhttps://hm.baidu.com/,\nhttps://wwads.cn/code/,\nhttps://cdn.wwads.cn/,\nhttps://pagead2.googlesyndication.com,\nhttps://www.qlspx.com,\nhttps://sdk.51.la,\nhttps://abk.lingsiqiwu.com,\n\nhttps://googleads4.g.doubleclick.net,\nhttps://static.googleadsserving.cn,\nhttps://s0.2mdn.net,\nhttps://tpc.googlesyndication.com,\nhttps://www.googletagservices.com,\nhttps://cm.g.doubleclick.net,,\nhttps://star.jsyunmy.com,\nhttps://p.qlogo.cn,\nhttps://partner.googleadservices.com,",
    "customOrder": 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,
    "preload": false,
    "ruleArticles": "<js>\ntry {\n    $ = JSON.parse(src).text;\n    if ($ == \"no file\") $ = [];\n} \n\n//💙catch。。。\ncatch (err) {\n\n    //💚💚网站整合\n     if (baseUrl.match(/www\\.baidu\\.com\\?wd=/)) {\n\neval(String(source.sourceComment));\n\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",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4948,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928723813,
    "loadWithBaseUrl": true,
    "preload": false,
    "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##☞",
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4949,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765919429367,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://www.ikanbot.com/resources/logo.svg",
    "sourceName": "爱看电影",
    "sourceUrl": "https://www.ikanbot.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": ".*bcebos.com.*gif.*,\n.*hm.baidu.com.*",
    "customOrder": 4950,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "injectJs": "// 选择需要删除的标签  以,分隔\nitems = document.querySelectorAll(`\n\t#ad,[class~=ad],\n\t#respond,.updlbox,h1:last-of-type,\n\t.footer_link,.shuoming,.bansheming\n`)\n\n\n// 隐藏选择的html\nArray.from(items,(item)=>{\n\titem.style.display = `none`\n})\n\n\n\n\n\n// 屏蔽首页广告\nArray.from(document.querySelectorAll(`.swiper-slide`),(item,i)=>{\n\timg = item.querySelector('img');\n\tsrc = img.getAttribute('data-src')||img.src;\n\tif(src.match(/\\.gif/)){\n\titem.style.display = `none`;\n\t}\n});",
    "lastUpdateTime": 1765919624446,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "发布页：https://www.czzy.site/",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://gimg3.baidu.com/gimg/app=2028&src=img.py1080p.com//2020/05/cropped-90b07fe57d6142-192x192.png",
    "sourceName": "厂长资源",
    "sourceUrl": "https://www.cz4k.com",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 4951,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928813496,
    "loadWithBaseUrl": true,
    "preload": false,
    "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",
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 4952,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928822137,
    "loadWithBaseUrl": true,
    "preload": false,
    "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",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4953,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765928828538,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "http://m.aikantv.org/favicon.ico",
    "sourceName": "爱看电视",
    "sourceUrl": "http://m.aikantv.org",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4954,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\r\n  \"User-Agent\": \"Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36\"\r\n}",
    "lastUpdateTime": 1765928842036,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.col-md-12.9@a&&class.col-md-12.10@a&&class.col-md-12.11@a&&class.col-md-12.12@a&&class.col-md-12.13@a&&class.col-md-12.14@a&&class.col-md-12.15@a&&class.col-md-12.16@a&&class.col-md-12.17@a&&class.col-md-12.18@a&&class.col-md-12.19@a&&class.col-md-12.20@a&&class.col-md-12.21@a&&class.col-md-12.22@a&&class.col-md-12.23@a&&class.col-md-12.24@a&&class.col-md-12.25@a&&class.col-md-12.26@a&&class.col-md-12.27@a&&class.col-md-12.28@a&&class.col-md-12.29@a&&class.col-md-12.30@a&&class.col-md-12.31@a&&class.col-md-12.32@a&&class.col-md-12.33@a&&class.col-md-12.34@a&&class.col-md-12.35@a&&class.col-md-12.36@a&&class.col-md-12.37@a&&class.col-md-12.38@a&&class.col-md-12.39@a",
    "ruleContent": "<js>\nresult='<body style=\"background-color:#000\"><iframe src=\"'+baseUrl+'\" width=\"100%\" height=\"280px\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\"></iframe>'\n</js>",
    "ruleLink": "a@href@js:\"https://live.64ma.com/\"+result",
    "ruleTitle": "a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "央视::https://live.64ma.com/#cctv\n卫视::https://live.64ma.com/#satellite",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "http://live.64ma.com/img/logo.png",
    "sourceName": "电视地方",
    "sourceUrl": "http://live.64ma.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4955,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765928883583,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "http://m.haoqu99.com/favicon.ico",
    "sourceName": "好趣网吧",
    "sourceUrl": "http://m.haoqu99.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4956,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765928903061,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.itemList",
    "ruleDescription": "<html><head><meta charset=\"utf-8\"><title>开眼</title><style>body{background-color:#8e8e8e}</style></head><body><a href=\"{{$.data.content.data.webUrl.raw||$.data.webUrl.raw}}\" style=\"color:#e0e0e0\">原文地址</a>\n<p style=\"text-align:center;color:#ffffff\"><strong>{{$.data.content.data.title||$.data.title}}</strong></p><video src=\"{{$.data.content.data.playUrl||$.data.playUrl}}\" width=\"350px\" height=\"200px\" controls=\"controls\"  poster=\"{{$.data.content.data.cover.feed||$.data.feed}}\"></video><p style=\"color:#f0f0f0;text-indent: 2em\">{{$.data.content.data.description||$.data.description}}</p></body></html>",
    "ruleImage": "$.data.content.data.cover.feed",
    "ruleLink": "$.data.text||$.data.content.data.webUrl.raw||$.data.web.raw",
    "ruleNextPage": "{{$.nextPageUrl}}&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28",
    "rulePubDate": "$.data.header.description",
    "ruleTitle": "$.data.text||$.data.content.data.title||$.data.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "日报::http://baobab.kaiyanapp.com/api/v5/index/tab/feed?udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&广告::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=16&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&剧情::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=12&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&运动::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1022&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&创意::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=2&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&旅行::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1019&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&记录::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=24&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&音乐::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1018&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&影视::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1025&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&科技::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1024&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&开胃::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=1020&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&游戏::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=30&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&搞笑::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=140&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&时尚::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=26&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&综艺::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=28&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28&&生活::http://baobab.kaiyanapp.com/api/v1/tag/videos?id=666&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://mip-haote-com.mipcdn.com/i/s/img.haote.com/upload/info/20170621/1498024249458069.png",
    "sourceName": "开眼视频",
    "sourceUrl": "http://baobab.kaiyanapp.com/api/v1/tag/videos?id=12&udid=187de68fafce4bcf8d6cca9e147574226a2e711e&vc=570&vn=6.0&size=1080X2255&deviceModel=JKM-AL00b&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=28",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4957,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765917251985,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "视频 订阅",
    "sourceIcon": "http://g.hiphotos.baidu.com/normandy/pic/item/c8177f3e6709c93d36585710933df8dcd00054aa.jpg",
    "sourceName": "好看视频",
    "sourceUrl": "https://haokan.baidu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4958,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765917345188,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "#searchList@li||.myui-panel_bd@li",
    "ruleContent": "<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\"/>\n<script src=\"//cdn.staticfile.org/jquery/2.2.4/jquery.min.js\"></script>\n<script src=\"//cdn.staticfile.org/dplayer/1.25.0/DPlayer.min.js\"></script>\n<link rel =\"stylesheet\" href = \"//cdn.staticfile.org/dplayer/1.25.0/DPlayer.min.css\">\n</head>\n\n\n<div class =\"dz\" width=\"100%\"></div>\n\n<div class=\"dplayer\" id=\"dplayer\" style=\"width:100%;height:300\"></div>\n\n<div id=\"tab\"><ul>{{@@class.nav nav-tabs active@a@html}}</ul></div>\n{{@@class.myui-content__list@html}}\n\n\n<script>\nfunction video(url){\n$.get(url,function(result){json=result.match(/var player.*?=(\\{.*\\})/)[1];\nsrc= JSON.parse(json).url;\nloadding='https://ftp.bmp.ovh/imgs/2021/05/5c31747aeb7bff4e.gif'\n//假如提取到的视频带 mp4|m3u8 就采用dp播放器播放\nif(src.match(/mp4|m3u8/)){\nvar dplayer = new DPlayer({element:document.getElementById(\"dplayer\"),autoplay: true,lang: 'zh-cn',video:{url:src,pic:loadding}});}else\n//直接提取的前面带https://jx.quanmingjiexi.com/?url= 进行播放\n{\nsrc=\"https://jx.quanmingjiexi.com/?url=\"+src;\niframe='<iframe src=\"'+src+'\" width=\"350\" height=\"280\" id=\"cciframe\" scrolling=\"no\"allowfullscreen=\"true\" webkitallowfullscreen=\"true\" autoplay=\"true\" mozallowfullscreen=\"true\"></iframe>'\n\n$(\".dplayer\").html(iframe)\n}\n$(\".dz\").html(src);\n});\n}\n\n(function(){\n$(\".myui-content__list\").hide();\n$(\".myui-content__list:eq(0)\").show();\n$(\"li:eq(0)\").addClass(\"active\")})();\n\n$(\"button\").click(function(){\n$(\"button\").removeClass(\"upBtn\");\n$(this).addClass(\"upBtn\");\nurl='http://www.hc34567.com/'+$(this).val();\nvideo(url)\n});\n\n$(\"button\").click(function(){\n$(\"button\").removeClass(\"upBtn\");\n$(this).addClass(\"upBtn\");\nurl='http://www.hc34567.com/'+$(this).val();\nvideo(url);\n});\n\n$(\"li\").click(function(){\n$(\"li\").removeClass(\"active\");\n$(this).addClass(\"active\");\nindex=$(this).index();\n$(\".myui-content__list\").hide();\n$(\".myui-content__list:eq(\"+index+\")\").show();\n})\n</script>\n</html>\n\n@js:\nresult = result.replace(/.*href=\"([^\"]+)\">([^<]+).*/g,'<button value=\"$1\">$2</button>').replace(/<a/g,'<li').replace(/<\\/a>/g,'</li>')",
    "ruleImage": "a@data-original",
    "ruleLink": "a@href",
    "ruleNextPage": "page",
    "rulePubDate": "p.2@textNodes||.myui-vodlist__detail@p@text",
    "ruleTitle": "h4@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索::hcvodsearch/{{source.getVariable()}}----------{{page}}---.html\n电影::/hcvodtype/1-{{page}}.html\n电视剧::/hcvodtype/2-{{page}}.html\n动漫::/hcvodtype/4-{{page}}.html\n综艺::/hcvodtype/3-{{page}}.html\n豆瓣电影::/hcvodtype/42-{{page}}.html",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "http://www.hc34567.com/static/images/logo.png",
    "sourceName": "影视森林",
    "sourceUrl": "http://www.hc34567.com/",
    "style": "#tab{\nheight:40px;\nmargin-bottom:8px;\n}\n\n.dz {\npadding:5px 0;\noverflow:scroll;\nbackground:#1C1B1E;color:#D3D3D3;;\n}\n\nul{\nmargin:0;\npadding:0;\n}\n\n#tab li {\nfont-size:15px;\nlist-style:none;\nfloat:left;\nheight:30px;\nmargin-right:5px;\ncolor:#D3D3D3;\nline-height:25px;\n}\n\n#tab li.active {\ncolor:#FF8C00;\nborder-bottom:3px solid #FF8C00;\n}\n\nbutton{\noutline:none;\nheight:35px; \nborder:3px solid #1C1B1E ;\nborder-radius:8px;\nmargin-bottom:8px;\nbackground:#1C1B1E;color:#A9A9A9;\nvertical-align:middle; \nwidth:24%;\noverflow:scroll\n}\n\nbutton.upBtn{\nborder:1px solid #FF8C00 ;\nbackground-color:#555555; \n}\n\nbody{\nmargin:0;\nbackground-color: #333333; \n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4959,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765928731451,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "//:Mengteen",
    "sourceGroup": "视频 订阅",
    "sourceIcon": "https://cdn.sshs.rip/63/a0/63d782d6ef5f9104b6b92f3ca0a317a0.webp",
    "sourceName": "福利视频",
    "sourceUrl": "https://jiejie.uk/xjj/fuli/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "ruleArticles": ".row!0||tbody tr",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".text-success@text||small@text",
    "ruleTitle": "a.0@text",
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 4961,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "#post_container li",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.1@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "{{@@tag.span.0@text}} · {{@@tag.span.1@text}} · {{@@tag.span.-1@text}}",
    "ruleTitle": "tag.a.1@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新音乐::http://www.tyqyyw.com/\n轻音乐::http://www.tyqyyw.com/qingyinyue/\n有声音乐::http://www.tyqyyw.com/yuansheng/\n有声电台::http://www.tyqyyw.com/diantai/\n音乐心情::http://www.tyqyyw.com/shenghuo/\n专辑曲目::http://www.tyqyyw.com/wusun/\n轻音乐MV::http://www.tyqyyw.com/mtv/",
    "sourceGroup": "音频 订阅",
    "sourceIcon": "http://www.tyqyyw.com/wp-content/themes/Loocol/avatar/8.jpg",
    "sourceName": "田园轻乐",
    "sourceUrl": "http://www.tyqyyw.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4962,
    "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": 1765924738239,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "音频 订阅",
    "sourceIcon": "https://s1.hdslb.com/bfs/maoer/assets/images/index/favicon.ico",
    "sourceName": "猫耳有声",
    "sourceUrl": "https://m.missevan.com/",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 4963,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765917308504,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.post",
    "ruleImage": "tag.img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.page_next@tag.a@href",
    "rulePubDate": "{{@@class.date_y@text}}{{@@class.small-number@text}}",
    "ruleTitle": "tag.a.0@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "古典民乐::http://www.52qingyin.cn/gudianminyue\n天籁钢琴::http://www.52qingyin.cn/tianlaigangqin\n经典配乐::http://www.52qingyin.cn/jingdianpeiyue\n浅吟心殇::http://www.52qingyin.cn/yinchang\n古风歌曲::http://www.52qingyin.cn/gufenggequ\n新世纪::http://www.52qingyin.cn/newage\n专辑推荐::http://www.52qingyin.cn/tag/zhuanjituijian\n网络美文::http://www.52qingyin.cn/wangluomeiwen\n网络投稿::http://www.52qingyin.cn/contribute\n音画插图::http://www.52qingyin.cn/yinhuatuwen",
    "sourceGroup": "音频 订阅",
    "sourceIcon": "https://p3.ssl.qhimgs1.com/bdr/300_115_/t02f63c0e5683609e13.jpg",
    "sourceName": "清音陋屋",
    "sourceUrl": "http://www.52qingyin.cn",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4964,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765924746071,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "音频 订阅",
    "sourceIcon": "http://www.mp3.ningmeng.name/wp-content/uploads/2020/02/logo_%E5%89%AF.png",
    "sourceName": "私房听歌",
    "sourceUrl": "http://www.ningmeng.name",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4965,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765912688319,
    "loadWithBaseUrl": true,
    "preload": false,
    "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}",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4966,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765913545574,
    "loadWithBaseUrl": true,
    "preload": false,
    "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}",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4967,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765930737447,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/★/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('★');\nfor(i in list){\nhref=list[i].match(/【(.*?)】/)[1];\ntext=list[i].match(/《(.*?)》/)[1];\nintro=list[i].match(/◎(.*?)◎/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)【/)[1]\njson.push({text:text,src:href,intro:intro,index:index})\n}\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "🐰 艾儿::https://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": "艾儿的天空",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4968,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765913642404,
    "loadWithBaseUrl": true,
    "preload": false,
    "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",
    "showWebLog": 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#",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4969,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765913654800,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4970,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765913666437,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "data:image/jpeg;base64,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",
    "sourceName": "夸克榜单",
    "sourceUrl": "https://quark.sm.cn/api/rest?method=Novelnew.home&format=html&schema=v2&gender=male&cate=%E5%85%A8%E9%83%A8&rank=rank_hot&pv=2420440",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4971,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765930751121,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "by：Lingsanya\n2024年10月更新",
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://i.postimg.cc/hPp6qQdP/MTXX-PT20241027142957519-edit-971919037356380.jpg",
    "sourceName": "芭时圈子",
    "sourceUrl": "https://www.basequan.com/",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 4972,
    "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": "document.getElementById(\"app\").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)},{\"origin\":\"https://m.jjwxc.net/channel/\"}`;\n\t\n\t\t//获取书籍名称\ntitle = document.querySelector(\".big.o\").innerText.replace(/首页>/,'');\n\n//获取作者名称\nauthor = document.querySelector(\".authorname-content a\").innerText;\n\n//跳转作者url[可省略]\ndocument.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\t\n    \tdocument.body.appendChild(A);\n \t}\t",
    "lastUpdateTime": 1765914723282,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.data[*]",
    "ruleContent": "<div class=\"booklist_desc\">\n    <p class=\"listname\">\n        <span class=\"level\">\n            &emsp;{{$.data.booklist_desc.level}}级&emsp;\n        </span>\n          {{$.data.booklist_desc.listname}}\n     </p>\n     <span class=\"dateline\">\n         {{$.data.booklist_desc.dateline||$.data.booklist_desc.create_time}}\n     </span>\n     <p class=\"des\">\n         荐书描述 共{{$.data.booklist_desc.booknum}}本\n     </p>\n     <div class=\"introduction\">\n           <p>{{$.data.booklist_desc.introduction}}</p>\n     </div>\n</div>\n\n<br>\n<br>\n\n<js>\ntry{\n   function getBooklist(list){\n   \tlet html=\"\";\n   \tfor(i in list){\n    \t  $ = list[i];\n    \t  let novelid = \"https://m.jjwxc.net/book2/\"+$.novelid;\n    \t  let cover = $.cover;\n    \t  let novelname = $.novelname;\n    \t  let authorname = $.authorname;\n    \t  let novelstep_name = $.novelstep_name || $.novelstep_str;\n    \t  let novelsize = $.novelsize;\n    \t  let novel_review_score = $.novel_review_score || ($.fav_count_str+\"收藏\");\n    \t  let novelstar = $.novelstar || 0;\n    \t  let s=\"\";\n    \t  for(i=0;i<novelstar;i++){s+=\"★\"}\n    \t  novelstar=s;\n    \t  let novelintroshort = $.novelintroshort;\n    \t  let comment = $.comment || \"\";\n    \t  let novelclass_str = $.novelclass_str;\n    \t  \n\t      html +=`\n\t         <div class=\"book\">\n\t            <div class=\"bookdes\">\n\t             <div class=\"pic\">\n\t                 <img src=\"${cover}\" referrerpolicy=\"no-referrer\">\n\t             </div>\n\t             <div class=\"details>\n\t                  <p class=\"bookname\">\n\t                      <span class=\"name\">\n\t                         <a href=\"${novelid}\">${novelname}</a>\n\t                      </span>\n\t                      <br>\n\t                      <span class=\"author\">\n\t                         ——${authorname}\n\t                      </span>\n\t                  </p>\t\n\t                  <p class=\"tag\">\n\t                  ${novelsize}•${novelstep_name}•${novel_review_score}<br><br>\n\t                    ${novelintroshort}<br><br>\n\t                    ${novelclass_str}<br><br>\n\t                    ${novelstar}\n\t                  </p>             \n\t             </div>\t             \n\t             </div>\n\t             <div class=\"comment\">\n\t                 ${comment}\n\t             </div>            \n\t         </div>     \n\t         `;\n\t    }\n\t    return html\n   \t}\n\n    list = JSON.parse(src).data.novel_lists || JSON.parse(src).data.booklist_desc.recommend_novelinfo;\n     reply = \"\";\n     if(/subjectDetail/.test(baseUrl)){\n     \treply_url = \"https://app.jjwxc.org/app.jjwxc/android/reading/BookListFindBook/replyList?versionCode=357&listid={{baseUrl.match(/id=(\\d+)/)[1]}}&page=1&filter_recommend=0\";\n     \t\n    data = JSON.parse(java.ajax(reply_url));\n    l = data.data.data;\n    \n    page_count = data.data.page_count;\n    if(page_count>1){\n    \t   for(k=2;k<=page_count;k++){\n    \t  reply_url = reply_url.replace(/page=\\d+/,'page='+k);\n    \t  l = l.concat(JSON.parse(java.ajax(reply_url)).data.data);\n    \t}\n    }\n   \n    for(j in l){\n    \t    reply+='<div class=\"comment\"><span style=\"color:#3A9DBF\">'+(Number(j)+1)+'楼 </span>'+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     \t\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\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##</*.*?>",
    "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}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "书单广场::https://app.jjwxc.org/app.jjwxc/android/reading/BookListFindBook/square?versionCode=357&rec_new_offset=0&find_new_offset=0&rec_edit_offset=0&page={{page}}\n\n搜索书单::https://app.jjwxc.org/app.jjwxc/android/reading/BookListSearch/search?versionCode=357&keywords={{source.getVariable()}}&page=1&sort=fav_count\n\n搜索百合书单::https://android.jjwxc.com/app.jjwxc/android/reading/BookListSearch/search?versionCode=358&keywords={{source.getVariable()}}&page=1&sort=fav_count&must_xx=3&could_xx=5&book_num_range=0%2C252&data_type=1%2C2",
    "sourceComment": "//点击右上角三点，设置源变量搜索书单",
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://m-static.jjwxc.net/images/wap/logo.png",
    "sourceName": "晋江书单",
    "sourceUrl": "https://app.jjwxc.org",
    "style": "a:link {color:#415E44;}\na:visited{color:#8EB28B}\n.listname{\n\tfont-size:20px;\n\theight:4px;\n\tfont-weight:bolder\n\t}\n.level{\n\tbackground:#9DD8ED;\n\tfont-size:15px;\n\tborder-radius:8px;\n\t}\n.dateline{\n\tcolor:#BABABB;\n\tfont-size:12px\n\t}\n.introduction{\n\tborder:2px dashed #3A9DBF;\n\tborder-radius:10px;\n\t}\n.introduction p{\n\ttext-indent: 3ch;\n\tmargin:5px;\n\tfont-size:18px;\n\tfont-weight:bold\n\t}\n.des{\n\tmargin-top:10px;\n\tmargin-bottom:0px;\n\tmargin-left:18px;\n\tfont-weight:bolder;\n\tcolor:#1D5F22\n\t}\n.bookdes{\n\tdisplay: flex;\n\tflex-direction:row;\n\tmargin:5px;\n\twidth:100%;\n\tposition: relative;\n\t}\n.book{\n\twidth:100%;\n\tdisplay: flex;\n\tflex-direction:column;\n\talign-items:flex-start;\n\tmargin-bottom:8px;\n\t}\n.pic{\n\twidth:25vw;\n\tmargin-right:20px;\n\t}\n.pic img{\n\tboder:1px solid #C4C4C4;\n\tborder-radius:5px;\n box-shadow: 1px 2px 2px black;\n\twidth:97%;\n\theight:auto;\n\t}\n.details{\n\twidth:72vw;\n\tmargin-left:25px;\n\t}\n\n.name{\n\tfont-size:20px;\n\tcolor:#000;\n\t}\n.author{\n\tcolor:#929292;\n\tfont-size:15px;\n\tdisplay:inline-block;\n\tposition:absolute;\n\tright:5px;\n\t}\n.tag{\n\tcolor:#929292;\n\tfont-size:12px;\n\tmargin-top:-10px;\n\t}\n.comment{\n\tpadding:10px;\n\tmargin-bottom:18px;\n\tmargin-top:-3px;\n\tbackground:#E8F6E9;\n\tborder-radius:5px;\n\twidth:100%;\n\t}",
    "type": 0
  },
  {
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 4973,
    "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": 1765915071609,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.list[*]",
    "ruleImage": "$.collection_cover##\\?.*",
    "ruleLink": "https://m.gongzicp.com/home/bookView-{{$.collection_id}}.html",
    "ruleNextPage": "<js>\nif(/getList/.test(baseUrl)){\n\tresult = \"https://m.gongzicp.com/webapi/book/getList?type=3&pre={{$.data.pre}}&bid=0\"\n\t}else{\n\t\tresult = baseUrl.replace(/page=\\d+/,\"page=\"+(Number(baseUrl.match(/page=(\\d+)/)[1])+1));\n\t\t\n\t\t\t}\n\t\t\n</js>",
    "rulePubDate": "{{$.category}}•{{$.collection_list_count}}本•{{$.collection_intro}}",
    "ruleTitle": "$.collection_name",
    "shouldOverrideUrlLoading": "if(/[\\?#&]book[AN]/.test(url)){\n\ttitle = url.match(/[\\?#&]book[AN].+?=(.*)/)[1];\n\tURLDecoder = Packages.java.net.URLDecoder;\n\tgb2312Str = URLDecoder.decode(title,\"gbk\");\n utf8Str = URLDecoder.decode(title,\"utf-8\");\n\t result = gb2312Str.length() >= utf8Str.length();\n\t title = result?decodeURI(title):gb2312Str;\n\tjava.searchBook(title)\n\t}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "最新书单::https://m.gongzicp.com/webapi/book/getList?type=3&pre=0&bid=0\n热门书单::https://m.gongzicp.com/webapi/book/getList?type=2&pre=0&bid=0\n推荐书单::https://m.gongzicp.com/webapi/book/getList?type=1&pre=0&bid=0\n搜索书单::https://m.gongzicp.com/webapi/search/books?k={{source.getVariable()}}&page=1",
    "sourceComment": "设置源变量搜索书单",
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://pp.myapp.com/ma_icon/0/icon_52680621_1713258197/256",
    "sourceName": "长佩书单",
    "sourceUrl": "长佩书单",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4974,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765930772757,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.data[*]",
    "ruleImage": "$.cover",
    "ruleLink": "https://baidu.com/s?wd={{$.title}}",
    "ruleNextPage": "page",
    "rulePubDate": "📕{{$.source_name}}  👤{{$.author_nickname}}  🏷️{{$.second_type_name}}  ✏️{{$.word_number_name}}",
    "ruleTitle": "$.title",
    "shouldOverrideUrlLoading": "if (/s?wd=/.test(url)) {\n  java.searchBook(java.toURL(url).searchParams.get('wd').split(' ')[0]);\n  1;\n}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "畅销榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=best_sell&date_type=day&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n人气榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=popular&date_type=month&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n收藏榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=coll&date_type=month&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n完本榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=finish&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n字数榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=word_number&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n新书榜::https://pre-api.tuishujun.com/api/listBookRank?rank_type=new_book&first_type_id=1&second_type_id=0&page={{page}}&pageSize=10\n全部::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=0&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n起点::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=1&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n晋江::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=2&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n刺猬猫::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=3&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n飞卢::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=4&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n纵横::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=5&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n有毒::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=6&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n息壤::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=7&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n17k::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=8&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n豆瓣::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=9&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\nSF::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=10&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n铁血::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=11&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}\n番茄::https://pre-api.tuishujun.com/api/listBookRepository?first_type_id=0&second_type_id=0&source=12&word_number_type=0&update_type=0&is_exclude_selected=0&is_can_read=0&is_filter_added_score=0&page={{page}}",
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://img.xiazaiba.com/d/icon/2022/0119/1642554301896538.png",
    "sourceName": "推书君子",
    "sourceUrl": "http://www.tuishujun.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4975,
    "enableJs": false,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930766255,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "$.data",
    "ruleContent": "<style>body{background:floralwhite;}</style>\n<center><h3>帖子详情</h3></center><h3>【{{$..category.name}}】{{$.data.threadInfo.title}}</h3>\n<p>发布者：{{$.data.threadInfo.userInfo.nickname}}</p>\n<p>{{$.data.threadInfo.content..text}}</p>*************************************<center>\n<img src=\"{{$..coverImg}}\" width='130px' height='180px'>\n<h3>{{$.data.threadInfo..bookName}}</h3>\n<p>作者：{{$..authorPenName}}</p>\n<p>{{$..bookChannel.name}}·{{$..bookCategory.name}}·{{$..authLevel.name}}</p>\n<p>更新至：{{$..lastUpdateChapter.name}}</p></center><p>简介：{{$..introduction}}</p>",
    "ruleImage": "$..coverImg",
    "ruleLink": "http://api.17k.com/sns/thread/{{$.id}}?groupId={{$.groupId}}&clientType=1&cpsOpid=17Kxiaomi&_filterData=1&channel=0&_versions=1041&merchant=17Kxiaomi&appKey=4037465544&cpsSource=0&platform=2",
    "rulePubDate": "summary",
    "ruleTitle": "【{{$.groupName}}】{{$.title}}",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://is4-ssl.mzstatic.com/image/thumb/Purple123/v4/9a/1e/39/9a1e39a1-9918-8997-65ed-5e5359a60479/AppIcon-0-0-1x_U007emarketing-0-0-0-7-0-0-85-220.png/246x0w.png",
    "sourceName": "十七找书",
    "sourceUrl": "http://api.17k.com/sns/group/thread?num=100&typeId=5&id=2519733&page=1&type=0&clientType=1&cpsOpid=17Kxiaomi&_filterData=1&channel=0&_versions=1041&merchant=17Kxiaomi&appKey=4037465544&cpsSource=0&platform=2",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4976,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765930779774,
    "loadWithBaseUrl": true,
    "preload": false,
    "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",
    "showWebLog": false,
    "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}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4977,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": ",{\n\"Headers\": \"User-Agent: Mozilla/5.0 (Linux; Android 4.4; Nexus 5 Build/_BuildID_) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/2.1.1\"\n}",
    "lastUpdateTime": 1765930784833,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\nJSON.parse(result).items.map(bk=>({\na:bk.title+bk.summary,\nb:java.timeFormat(bk.create_time*1000),\nc:bk.book_cover,\nd:\"https://www.duokan.com/store/v0/android/feed/\"+bk.id\n}))\n</js>",
    "ruleContent": "<js>\nvar json=JSON.parse(result);\n\n\"<center><h3>\"+json.data.title+\"</h3></center>\"+json.data.content.d.map(it=>{\r\n if(it.t==\"b\"){\r\n  var bk=json.books[it.c];\r\n  return \"<center><img src='\"+bk.cover+\"' width='130px' height='180px'></center>\\n\"+\"<center><h3>\"+bk.title+\"</h3></center>\"+\"<center><p>\"+bk.role.join(\"<br>\").replace(/者,/g,\"者:\")+\"</p></center>\\n\"+\"<p>简介:<br>　　\"+bk.intro+\"</p>\"+\"<p>****************************************************</p>\";\r\n }else{\r\n  return \"<h4>\"+it.c.replace(/\\n/g,\"<br>\")+\"</h4>\";\r\n }\r\n}).join(\"\\n\")</js>",
    "ruleImage": "c",
    "ruleLink": "d",
    "rulePubDate": "b",
    "ruleTitle": "a",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://www.duokan.com/favicon.ico",
    "sourceName": "多看阅读",
    "sourceUrl": "https://www.duokan.com/store/v0/android/feed?_t=1573971619&_c=21630&start=0&count=100&withid=1",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/ /)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split(' ');\nfor(i in list){\nhref=list[i].match(/【(.*?)】/)[1];\ntext=list[i].match(/《(.*?)》/)[1];\nintro=list[i].match(/◎(.*?)◎/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)【/)[1]\njson.push({text:text,src:href,intro:intro,index:index})\n}\n}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",
    "showWebLog": false,
    "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": "星云推书",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4979,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930794267,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.list-content",
    "ruleContent": "class.post-content@all",
    "ruleLink": "class.list-body@a@href",
    "ruleNextPage": "page",
    "ruleTitle": "class.list-body@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://www.basequan.com/wp-content/uploads/2017/09/logo2.png",
    "sourceName": "芭莳圈子",
    "sourceUrl": "https://www.basequan.com/yqxs/page/{{page}}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4980,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765921251940,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@js:\njson=[];\nif(baseUrl.match(/ /)){\nlist=baseUrl.replace(/http.*?wd=/,'').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",
    "ruleImage": "$.headUrl",
    "ruleLink": "href",
    "rulePubDate": "href",
    "ruleTitle": "text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "兴趣*推荐::http://www.baidu.com?wd=推书君:http://www.tuishujun.com/hot-tags 书荒神器(源分类中编辑10个标签):https://vt.sm.cn/api/novelStarReco/index?uc_param_str=dnntnwvepffrgibijbprsvdsdicheiniut#/books/种田|位面|娱乐|智商|文明|同人|历史|穿越|重生|诸天|架空\n\n书单*收藏::http://www.baidu.com?wd=搜索🚀VPN(聚合推书君、优书网、芭莳圈、起点图):https://cse.google.com/cse?cx=f32acb3002a7d182a#gsc.tab=0 我的收藏:https://www.yousuu.com/user/1274271/favbooklists 优书书单:https://www.yousuu.com/booklists?type=man&screen=latest&page=1 起点图:https://www.qidiantu.com/booklists/ 扫文小院:http://saowen.net/novellists 芭莳圈:https://www.basequan.com/yqxs\n\n关键字*书单::http://www.baidu.com?wd=种田:https://www.yousuu.com/search/?search_type=booklist&search_value=种田&from=search 文抄:https://www.yousuu.com/search/?search_type=booklist&search_value=文抄&from=search 文明:https://www.yousuu.com/search/?search_type=booklist&search_value=文明&from=search\n\n书名*书单::http://www.baidu.com?wd=位面小蝴蝶:https://www.yousuu.com/book/19237/booklists 纸上人:https://www.yousuu.com/book/28848/booklists 幻想世界大穿越:https://www.yousuu.com/book/32903/booklists",
    "sourceComment": "根据需求另加，以空格隔开",
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://gitee.com/alanskycn/yuedu/raw/master/JS/youshuwang.png",
    "sourceName": "优书书单",
    "sourceUrl": "http://www.baidu.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4981,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765921259828,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/ /)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split(' ');\nfor(i in list){\nhref=list[i].match(/【(.*?)】/)[1];\ntext=list[i].match(/《(.*?)》/)[1];\nintro=list[i].match(/◎(.*?)◎/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)【/)[1]\njson.push({text:text,src:href,intro:intro,index:index})\n}\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📖 书单::https://vt.sm.cn/api/novelStarReco/index【https://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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4982,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765925228580,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/★/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('★');\nfor(i in list){\nhref=list[i].match(/【(.*?)】/)[1];\ntext=list[i].match(/《(.*?)》/)[1];\nintro=list[i].match(/◎(.*?)◎/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)【/)[1]\njson.push({text:text,src:href,intro:intro,index:index})\n}\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleImage": "$.src",
    "ruleLink": "$.index",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📋 书单::https://vt.sm.cn/api/novelStarReco/index【https://gitee.com/yc-sy/yd/raw/master/dy/ts/xyts.png】《星云推书》◎书荒搜书神器◎★https://www.lkong.com/【https://gitee.com/yc-sy/yd/raw/master/dy/ts/lk.png】《龙空》◎网络文学交流互动平台◎★https://www.yousuu.com/【https://gitee.com/yc-sy/yd/raw/master/dy/ts/ysw.png】《优书网》◎优书网书单◎★https://www.tuishujun.com/【https://gitee.com/yc-sy/yd/raw/master/dy/ts/tsj.png】《推书君》◎书荒求书就找推书君◎★https://www.qidiantu.com/【https://gitee.com/yc-sy/yd/raw/master/dy/ts/qdw.png】《起点图》◎起点数据、网络小说数据可视化分析专家◎★https://m.ttwwq.com/【https://gitee.com/yc-sy/yd/raw/master/dy/ts/cstw.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/yc-sy/yd/raw/master/dy/ts/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/yc-sy/yd/raw/master/dy/ts/bdbd.png】《百度榜单》◎百度浏览器小说榜单◎★https://m.qidian.com/rank/【https://gitee.com/yc-sy/yd/raw/master/dy/ts/qdw.png】《起点榜单》◎起点中文网榜单◎★https://ubook.reader.qq.com/book-rank/male-monthly【https://gitee.com/yc-sy/yd/raw/master/dy/ts/qqbd.png】《QQ榜单》◎QQ阅读榜单◎★http://saowen.net/【https://gitee.com/yc-sy/yd/raw/master/dy/ts/swxy.png】《扫文小院》◎🔎登录｜耽美小说扫文网站◎★https://www.basequan.com/【https://gitee.com/yc-sy/yd/raw/master/dy/ts/bsq.png】《芭莳圈》◎好看的言情小说推荐◎\n\n\n⭐ 十一::https://data.newrank.cn/m/s.html?s=Py8yOTE5KDE4【https://gitee.com/yc-sy/yd/raw/master/dy/ts/xssy.png】《🔎小说拾遗》◎小说拾遗公众号-号内搜索◎★https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319671603470581762&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/shudan.png】《精选书单》◎主推优质完结和连载100万字以上小说◎★https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319666229510193155&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/xinshu.png】《潜力新书》◎主推大神新书和20～100万字的优质新书◎★http://mp.weixin.qq.com/mp/homepage?__biz=MzI2MDg2NjAwMg==&hid=11&sn=c55d27329c109430838bc5b5f5b615b7&scene=18#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/gaofen.png】《高分必看》◎高分完本合集◎★https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319668267623170050&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/wanjie.png】《近期完结》◎主推近一段时间内优质的完结小说◎★https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319673664333463554&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/nvpin.png】《女频书单》◎主推女频优质小说◎★https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=1319675692849872897&__biz=MzI2MDg2NjAwMg==#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/hougong.png】《后宫精选》◎后宫精选合集◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI2MDg2NjAwMg==&action=getalbum&album_id=1651826809002328065#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/niantui.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/yc-sy/yd/raw/master/dy/ts/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/yc-sy/yd/raw/master/dy/ts/shudan.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/yc-sy/yd/raw/master/dy/ts/fenlei.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/yc-sy/yd/raw/master/dy/ts/jingxuan.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/yc-sy/yd/raw/master/dy/ts/shuju.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/yc-sy/yd/raw/master/dy/ts/zatan.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/yc-sy/yd/raw/master/dy/ts/niandu.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/yc-sy/yd/raw/master/dy/ts/qushi.png】《网文趣事》◎各类和网文相关的趣事-每月一期◎\n\n\n🔆 九哥::https://mp.weixin.qq.com/mp/homepage?__biz=Mzk0NzM4NDQ1MQ==&hid=1&sn=5da30daac494ae3c63760de3f63ec71d&scene=18【https://gitee.com/yc-sy/yd/raw/master/dy/ts/dsh.png】《大书荒之三十六计》◎盘点佳作，整合书单，专注解决书荒◎★https://mp.weixin.qq.com/s/0e7bOXWYGaN_NzhaRShTDw【https://gitee.com/yc-sy/yd/raw/master/dy/ts/biaoqian.png】《标签详解》◎九哥标签流派详解！◎★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://gitee.com/yc-sy/yd/raw/master/dy/ts/tuishu.png】《九哥推书》◎九哥推书合集◎★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://gitee.com/yc-sy/yd/raw/master/dy/ts/fenlei.png】《分类书单》◎分类书单合集◎\n\n\n🐰 艾儿::https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2472077598102421505&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/aetk.png】《万订小说》◎万订小说◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2472077597951426561&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/dashen.png】《大神作品》◎大神作品◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2470719187540541441&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/wanjie.png】《最新完结》◎最新完结◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2469275510150561793&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/shouding.png】《起点首订》◎起点首订◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2469271805875486724&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/shiwan.png】《起点十万订》◎起点十万订作品◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2467582717124444162&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/yuepiao.png】《起点月票》◎起点月票榜◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2467593988158816258&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/qita.png】《其他资讯》◎其他资讯◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2470721486103019522&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/xinshu.png】《新书上线》◎新书上线◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2673425041430446081&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/wanjie.png】《每周完结》◎每周完结汇总◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2ODgyNTkyNw==&action=getalbum&album_id=2632993193290399745&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/xinshu.png】《每周新书》◎每周新书汇总◎\n\n👩 少女::https://data.newrank.cn/m/s.html?s=Oi8xPDQ8MTs9【https://gitee.com/yc-sy/yd/raw/master/dy/ts/tyzsn.png】《拖延症少女》◎号内搜索-拖延症少女的种蘑菇日记◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1345594488839929857&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/zhenli.png】《安利整理》◎大家的好文推荐整合◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1841462094366375936&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/heji.png】《合集》◎合集◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1639972761961889797&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/pandian.png】《盘点》◎盘点◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1296482285570686976&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/qiangtui.png】《强推文》◎好文中的好文推荐◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1353008118996860929&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/shadiao.png】《沙雕文》◎沙雕的快乐◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1345612926295670785&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/kuaichuan.png】《快穿故事》◎快穿文和故事集◎★https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMjEwNjg1MQ==&action=getalbum&album_id=1345608230420021249&scene=126#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/tongren.png】《HP同人文》◎本命德拉科！除了德哈其他都吃◎★http://mp.weixin.qq.com/mp/homepage?__biz=MzUyMjEwNjg1MQ==&hid=2&sn=606421437c8003bbfab3074b3cabb529&scene=18#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/qiuwen.png】《求文整理》◎小时光一点一滴◎★http://mp.weixin.qq.com/mp/homepage?__biz=MzUyMjEwNjg1MQ==&hid=4&sn=8d12186de8e82f98cb45f3808981a9db&scene=18#wechat_redirect【https://gitee.com/yc-sy/yd/raw/master/dy/ts/qiangtui.png】《强推文合集》◎强推文合集◎★https://mp.weixin.qq.com/s/-IUlibqIqEIqLaD2uke7zA【https://gitee.com/yc-sy/yd/raw/master/dy/ts/shudan.png】《书单合集》◎三年所有书单合集◎★https://mp.weixin.qq.com/s/xtBqdX9LHLc2TPRH25h-zw【https://gitee.com/yc-sy/yd/raw/master/dy/ts/chanshi.png】《女性常识》◎女生第一次要知道的那些事儿◎",
    "sourceGroup": "榜单 订阅",
    "sourceIcon": "https://gitee.com/yc-sy/yd/raw/master/dy/tb/ts.png",
    "sourceName": "推书订阅",
    "sourceUrl": "推书合集",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 4983,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765930090282,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data",
    "ruleDescription": "$.content",
    "ruleImage": "@js:'{{java.getString('$.content').match(/<img.*?src=\"(.*?)\".*?>/)?java.getString('$.content').match(/<img.*?src=\"(.*?)\".*?>/)[1]:null}}'",
    "ruleLink": "$.url",
    "ruleNextPage": "page",
    "rulePubDate": "{{java.timeFormatUTC(java.getString(\"updated\")*1000,\"YYYY-MM-dd HH:mm:ss\",8)}}",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "https://www.zhihu.com/api/v4/columns/c_1085975047386050560/items?limit=30&offset={{(page-1)*30}}",
    "sourceComment": "1.打开浏览器，打开你要制作的知乎专栏页面，查看url，例如‘每天60秒读懂世界’的页面url为<https://www.zhihu.com/column/c_1261258401923026944>\n2.复制url后半段<c_1261258401923026944>，这是专栏的id\n3.修改知乎专栏模板订阅源\n（1）.修改上面的源url，把你复制的<c_1261258401923026944>知乎专栏id，替换进去。位置在/columns/和/items之间\n（2）.修改下面的分类url，把你复制的<c_1261258401923026944>知乎专栏id，替换进去。位置在/columns/和/items之间\n（3）.修改订阅源名称",
    "sourceGroup": "新闻 订阅",
    "sourceIcon": "https://picx.zhimg.com/v2-624f6eb03f71a1b045034d25185d29f4_l.jpg?source=d16d100b",
    "sourceName": "知乎早报",
    "sourceUrl": "https://www.zhihu.com/api/v4/columns/c_1085975047386050560/items?limit=30&offset={{(page-1)*30}}",
    "style": "/*标题相关*/\nh3{text-align:center}\nh6{margin-bottom:0}\n* {\n\tmargin: 0;\n\tpadding: 0\n}\nul {\n\tfont-size: 0;\n\theight: 100%;\n\toverflow-y: scroll\n}\nli {\n\tlist-style: none;\n\ttext-align: center\n}\nimg {\n\twidth: 100%;\n\theight: auto\n}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4984,
    "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": 1765925549029,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data",
    "ruleContent": "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<br>\n<h3>{{$..title}}</h3>\n<h6>\n\t<a href=\"{{$..url}}\">{{$..source}}</a>\n\t<i>{{$..date}}</i>\n</h6>\n<p>{{$..content}}</p>",
    "ruleImage": "$.img",
    "ruleLink": "/detail?id={{$.id}}",
    "ruleNextPage": "@js:\nresult = '{{baseUrl}}'.replace(/&id=\\d{7,}$/,'')+'&id={{$.data[24].id}}'",
    "rulePubDate": "🌐 {{$.source}} &nbsp; ⏱️ {{$.date##T|\\.\\d{3}[zZ]$## }}",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::https://api.yinrss.com/feed?limit=25&media=&keyword=\n搜索::https://api.yinrss.com/feed?limit=25&keyword={{source.getVariable().length()<1? source.setVariable(\"ai\") : source.getVariable()}}\n人民网::https://api.yinrss.com/feed?limit=25&media=88\n投中网::https://api.yinrss.com/feed?limit=25&media=89\n新华社::https://api.yinrss.com/feed?limit=25&media=90\n澎湃新闻::https://api.yinrss.com/feed?limit=25&media=17\n小众软件::https://api.yinrss.com/feed?limit=25&media=46\nDoNews::https://api.yinrss.com/feed?limit=25&media=1\n机器之心::https://api.yinrss.com/feed?limit=25&media=2\n游戏时光::https://api.yinrss.com/feed?limit=25&media=3\n36氪::https://api.yinrss.com/feed?limit=25&media=4\n钛媒体::https://api.yinrss.com/feed?limit=25&media=5\nIT之家::https://api.yinrss.com/feed?limit=25&media=6\n少数派::https://api.yinrss.com/feed?limit=25&media=7\n游研社::https://api.yinrss.com/feed?limit=25&media=8\n爱范儿::https://api.yinrss.com/feed?limit=25&media=10\n理想生活实验室::https://api.yinrss.com/feed?limit=25&media=11\n虎嗅网::https://api.yinrss.com/feed?limit=25&media=12\nFT中文网::https://api.yinrss.com/feed?limit=25&media=16\n澎湃评论::https://api.yinrss.com/feed?limit=25&media=18\n品玩::https://api.yinrss.com/feed?limit=25&media=19\n极客公园::https://api.yinrss.com/feed?limit=25&media=20\n威锋网::https://api.yinrss.com/feed?limit=25&media=21\nReadhub::https://api.yinrss.com/feed?limit=25&media=22\n快科技::https://api.yinrss.com/feed?limit=25&media=23\nTechWeb::https://api.yinrss.com/feed?limit=25&media=24\n雷锋网::https://api.yinrss.com/feed?limit=25&media=25\n触乐::https://api.yinrss.com/feed?limit=25&media=26\n猎云网::https://api.yinrss.com/feed?limit=25&media=31\n站长之家::https://api.yinrss.com/feed?limit=25&media=32\n奇客Solidot::https://api.yinrss.com/feed?limit=25&media=33\ncnBeta::https://api.yinrss.com/feed?limit=25&media=34\n动点科技::https://api.yinrss.com/feed?limit=25&media=35\n机核网::https://api.yinrss.com/feed?limit=25&media=37\n游戏邦::https://api.yinrss.com/feed?limit=25&media=38\n游戏葡萄::https://api.yinrss.com/feed?limit=25&media=39\nGameLook::https://api.yinrss.com/feed?limit=25&media=40\n拆盒网::https://api.yinrss.com/feed?limit=25&media=41\nVOICER::https://api.yinrss.com/feed?limit=25&media=42\nMac玩儿法::https://api.yinrss.com/feed?limit=25&media=44\n异次元软件世界::https://api.yinrss.com/feed?limit=25&media=45\nxclient::https://api.yinrss.com/feed?limit=25&media=49\n优设网::https://api.yinrss.com/feed?limit=25&media=53\n开源中国::https://api.yinrss.com/feed?limit=25&media=54\n技术小黑屋::https://api.yinrss.com/feed?limit=25&media=55\n美团技术团队::https://api.yinrss.com/feed?limit=25&media=56\n煎蛋::https://api.yinrss.com/feed?limit=25&media=58\nYOHO!潮流资讯::https://api.yinrss.com/feed?limit=25&media=59\nHYPEBEAST::https://api.yinrss.com/feed?limit=25&media=60\nACG批评::https://api.yinrss.com/feed?limit=25&media=61\n苹果fans博客::https://api.yinrss.com/feed?limit=25&media=62\n知乎每日精选::https://api.yinrss.com/feed?limit=25&media=64\n界面::https://api.yinrss.com/feed?limit=25&media=65\n超能网::https://api.yinrss.com/feed?limit=25&media=66\n锋潮科技::https://api.yinrss.com/feed?limit=25&media=67\n游戏动力::https://api.yinrss.com/feed?limit=25&media=68\nindienova::https://api.yinrss.com/feed?limit=25&media=69\n二柄::https://api.yinrss.com/feed?limit=25&media=70\n鲸媒体::https://api.yinrss.com/feed?limit=25&media=71\n芥末堆::https://api.yinrss.com/feed?limit=25&media=72\n电脑爱好者::https://api.yinrss.com/feed?limit=25&media=73\n新闻联播::https://api.yinrss.com/feed?limit=25&media=79\n多知网::https://api.yinrss.com/feed?limit=25&media=84\n蓝鲸财经::https://api.yinrss.com/feed?limit=25&media=85\n量子位::https://api.yinrss.com/feed?limit=25&media=86\n新智元::https://api.yinrss.com/feed?limit=25&media=87\n果壳::https://api.yinrss.com/feed?limit=25&media=91\n晚点LatePost::https://api.yinrss.com/feed?limit=25&media=92\n芯东西::https://api.yinrss.com/feed?limit=25&media=93\nVOGUE中国::https://api.yinrss.com/feed?limit=25&media=94\n时尚芭莎::https://api.yinrss.com/feed?limit=25&media=95\n时尚COSMO::https://api.yinrss.com/feed?limit=25&media=96\niOS老司机周报::https://api.yinrss.com/feed?limit=25&media=97\n安全客::https://api.yinrss.com/feed?limit=25&media=100\nFreeBuf::https://api.yinrss.com/feed?limit=25&media=101\n晚点早知道::https://api.yinrss.com/feed?limit=25&media=102\n财联社::https://api.yinrss.com/feed?limit=25&media=103\n映维网::https://api.yinrss.com/feed?limit=25&media=104\nVR陀螺::https://api.yinrss.com/feed?limit=25&media=105\n新浪VR::https://api.yinrss.com/feed?limit=25&media=106",
    "sourceComment": "原作者ThomasYou-red\n修复了获取下一页的规则\n\n\n//设置源变量搜索\n\n\n//关于\"订阅\"\n固定搜索关键词即可\n\n例：\n新冠疫情::https://api.yinrss.com/feed?limit=25&keyword=新冠疫情\n\n游戏::https://api.yinrss.com/feed?limit=25&keyword=游戏\n\n\n//网站主页\nhttps://yinrss.com\n\n\n//全部分类地址\nhttps://api.yinrss.com/source\n<js>\nlist=\"\"\n$=JSON.parse(java.ajax(\"https://api.yinrss.com/source\")).data\nfor(i=0;i<$.length;i++){\n\tlist += \"\\n\"+$[i].name+\"::https://api.yinrss.com/feed?limit=25&media=\"+$[i].id\n}\nlist\n</js>",
    "sourceGroup": "新闻 订阅",
    "sourceIcon": "https://yinrss.com/favicon.ico",
    "sourceName": "隐性订阅",
    "sourceUrl": "https://api.yinrss.com/feed",
    "style": "*{max-width:100%}\nh3{text-align:center}\nh6{margin-bottom:0}\na{text-decoration:none}\ni{float:right}\ntextarea { width: 100%; height: 100%;  }",
    "type": 0,
    "variableComment": "搜索"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4985,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765925345559,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "$.data.items[?(!(@.imgsrc == ''))]",
    "ruleContent": "\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<br>\n<h3>{{$..message}}(暂时)</h3>\n<h3>{{$..title}}</h3>\n<h6>\n\t<a href=\"{{$..shareLink}}\">{{$..source}}</a>\n\t<i>{{$..ptime}}</i>\n</h6>\n<div id=\"body\"></div>\n\n\n\n<script>\nvar body = '{{$..body##'##\"}}';\nvar imgs = {{java.getString(\"$.data..img\").length() > 0 ? java.getString(\"$.data..img\"):\"[]\"}}\nvar videos = {{java.getString(\"$..video\").length() > 0 ? java.getString(\"$..video\"):\"[]\"}}\n\nfunction render(template, imgs,videos) {\nreturn template.replace(/\\<\\!\\-\\-IMG#(.*?)\\-\\-\\>/g, (match, key) => \"<img src=\\\"\"+imgs[key].src + \"\\\">\").replace(/\\<\\!\\-\\-VIDEO#(.*?)\\-\\-\\>/g, (match, key) => \"<video controls><source src=\\\"\" + videos[key].url_mp4 + \"\\\"type=\\\"video/mp4\\\"></video>\");\n}\n\n\ndocument.getElementById('body').outerHTML = render(body,imgs,videos)\n</script>",
    "ruleImage": "$.imgsrc",
    "ruleLink": "{{java.getString(\"TAG\").length() < 0 ? \"/nc/api/v2/article/preload/\"+java.getString(\"$.postid\")+\"/full\" :  \"/nc/api/v2/article/\"+java.getString(\"$.postid\")+\"/full\" }}",
    "ruleNextPage": "page",
    "rulePubDate": "$.mtime",
    "ruleTitle": "$.title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "轻松::/nc/api/v1/feed/static/normal-list?start={{(page-1)*20}}&tid=T1350383429665&size=20",
    "sourceGroup": "新闻 订阅",
    "sourceIcon": "http://cms-bucket.ws.126.net/2022/0419/6778ac9cj00ral2om001zc000ij00ijc.jpg",
    "sourceName": "轻松一刻",
    "sourceUrl": "https://gw.m.163.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4986,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "header": "{\n\"Content-Type\": \"application/x-www-form-urlencoded;charset=utf-8\"\n}",
    "lastUpdateTime": 1765926334309,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>result.replace(/null/g,'')</js>\n$.response.items[*]||$.response.posts[*]||$.data.blogs[*]",
    "ruleContent": "<js>\nif(baseUrl.match(/detail/)){\nurl='{{$.response.posts[0].post.blogPageUrl}}';\njava.ajax(url);\n}else{result}\n</js>\n@css:.g-mnc,div[class~=cont],.main\n.box,.ct@html\n##(.*?class=\"nctitle\">|<!-- Pager -->)[\\s\\S]+|(?<=\\<p\\>)(\\s|&nbsp;)*",
    "ruleDescription": "$.blogName\n<js>\nif(result){\nscript1='<script src=\"http://yck.mumuceo.com/static/extend/clipboard/clipboard.min.js\"></script>';\ntext='<span id=\"tar_text\">{{$.blogNickName}}::http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-6.9.2,{\"method\":\"POST\",\"body\":\"supportposttypes=1%2C2%2C3%2C4%2C5%2C6&blogdomain='+result+'.lofter.com&offset={\\{(page-1)*18}}&method=getPostLists&postdigestnew=1&returnData=1&limit=18&checkpwd=1&needgetpoststat=1\"}</span>';\nbon='<button id=\"copy\" data-clipboard-action=\"copy\" data-clipboard-target=\"#tar_text\">一键复制</button>';\nscript=\"<script>var clipboard = new Clipboard('#copy');clipboard.on('success', function (e) {alert('复制成功！');});clipboard.on('error',function (e) {alert('对不起，您的浏览器暂不支持一键复制功能！');});</script>\";\nresult='复制以下文字，添加至分类url可订阅用户<br><br>'+script1+text+'<br>'+bon+script\n}\n\n</js>",
    "ruleImage": "$.post||$.bigAvaImg\n@js:if(result.match(/firstImageUrl=\\[\"\",\"\"\\]/)){\nresult=result.match(/bigAvaImg=(.*?),/)?result.match(/bigAvaImg=(.*?),/)[1]:'';}else if(!baseUrl.match(/newsearch/)){\nresult=result.match(/firstImageUrl=\\[\"([^\"]+)\"/)[1]\n}else{result=result}",
    "ruleLink": "@js:url='{{$.post.blogPageUrl||$.blogId}}';\nid='{{$.post.id}}';\nif(url.match(/_blogid_\\d+/)){\nmain=url.match(/(_blogid_.*?)\\//)[1];\nbody=\"blogdomain=\"+main+\"&postid=\"+id;\nresult='https://api.lofter.com/oldapi/post/detail.api?product=lofter-android-6.11.3,{\"method\":\"POST\",\"body\":\"'+String(body)+'\"}';\n}else{result=url}",
    "ruleNextPage": "page",
    "rulePubDate": "$.post.publishTime\n@js:result?java.timeFormat(parseInt(result)):''",
    "ruleTitle": "$.post.title||$.post.digest||$.blogNiceName||$.blogNickName\n<js>\na=result.replace(/^(.{0,15})/,'$1').replace(/<.*?>/g,'');\njava.put('text',a);\na</js>",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "裹紧我的萧被子::http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-6.9.2,{\"method\":\"POST\",\"body\":\"supportposttypes=1%2C2%2C3%2C4%2C5%2C6&blogdomain=xbwuj.lofter.com&offset={{(page-1)*18}}&method=getPostLists&postdigestnew=1&returnData=1&limit=18&checkpwd=1&needgetpoststat=1\"}\n电影::https://api.lofter.com/oldapi/tagPosts.api?product=lofter-android-6.11.3&method=newTagSearch&offset={{(page-1) *22}}&limit=22&firstpermalink=null&tag=电影&type=new,{\"method\": \"POST\",\"body\":\"null\"}\n\n搜索用户::https://api.lofter.com/newsearch/blog.json?key=裹紧我的",
    "sourceComment": "如要添加，请按格式添加在分类Url\n<用户可通过分类url的搜索用户获得>\n\n用户名::http://api.lofter.com/v2.0/blogHomePage.api?product=lofter-android-6.9.2,{\"method\":\"POST\",\"body\":\"supportposttypes=1%2C2%2C3%2C4%2C5%2C6&blogdomain=用户主页链接&offset={{(page-1)*18}}&method=getPostLists&postdigestnew=1&returnData=1&limit=18&checkpwd=1&needgetpoststat=1\"}\n\n标签名::https://api.lofter.com/oldapi/tagPosts.api?product=lofter-android-6.11.3&method=newTagSearch&offset={{(page-1) *22}}&limit=22&firstpermalink=null&tag=标签名&type=new,{\"method\": \"POST\",\"body\":\"null\"}",
    "sourceGroup": "新闻 订阅",
    "sourceIcon": "https://bkimg.cdn.bcebos.com/pic/32fa828ba61ea8d390fc7f67900a304e241f58f2?x-bce-process=image/resize,m_lfit,h_700,limit_1/quality,Q_80",
    "sourceName": "Lofter",
    "sourceUrl": "Lofter",
    "style": ".text blockquote{ border-left-color:#828d95;}\nbody{background-color:#dfdfe1;width:100%}\nbody{background-image:url(//imglf3.nosdn0.126.net/img/1553236065974180.png)}\n.img img{width:100%}\na, a:hover, .day{color:#828d95;}\np{text-indent:2em}\n.pic img{width:100%}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4987,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765926182133,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻 订阅",
    "sourceIcon": "https://www.zhangzs.com/wp-content/uploads/2020/05/favicon.png",
    "sourceName": "爱涨姿势",
    "sourceUrl": "https://www.zhangzs.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4988,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765926218250,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻 订阅",
    "sourceIcon": "https://static.toodaylab.com/static/images/share-logo.jpg",
    "sourceName": "理想实验",
    "sourceUrl": "https://www.toodaylab.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4989,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765926254022,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻 订阅",
    "sourceIcon": "https://p1.ssl.qhimgs1.com/t01c3bbb937fc25bdcb.png",
    "sourceName": "人人产品",
    "sourceUrl": "http://www.woshipm.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4990,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765926239040,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "新闻 订阅",
    "sourceIcon": "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=354824078,81693241&fm=26&gp=0.jpg",
    "sourceName": "品玩文章",
    "sourceUrl": "https://www.pingwest.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4991,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765909919033,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "（自用）精品网站合集",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "",
    "sourceName": "在线工具",
    "sourceUrl": "https://tinywow.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4992,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765930001762,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "（自用）精品网站合集",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "",
    "sourceName": "好用网站",
    "sourceUrl": "https://lkssite.vip/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4993,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"\"}",
    "lastUpdateTime": 1765930025083,
    "loadWithBaseUrl": true,
    "preload": false,
    "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}",
    "showWebLog": false,
    "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": "人间",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4994,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"\"}",
    "lastUpdateTime": 1765912231783,
    "loadWithBaseUrl": true,
    "preload": false,
    "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",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "默认::https://bing.com/search?q=0【写源助手】简单小工具＃",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjUxNHB0IiBoZWlnaHQ9IjUxNHB0IiB2aWV3Qm94PSIwIDAgNTE0IDUxNCI+PHBhdGggZD0iTTIzNy4xNDYgMi4wNTdDMTYyLjc0NCA4LjY4OCA5Ni44NTIgNDQuODU1IDUyLjk3MyAxMDMuMTQ0Yy0yNi4xOSAzNC43OTEtNDIuNDEyIDczLjgxMy00OS4wNTUgMTE4LTMuMDYxIDIwLjM2MS0zLjA2NiA1MS41MS0uMDEyIDcxLjcxMkMxNi43ODggMzc4LjA3IDY3LjA3IDQ0Ny41NDEgMTQzLjUwOSA0ODUuNzM0YzM2LjY5MiAxOC4zMzQgNzEuMzYxIDI2LjM5OCAxMTMuNDkxIDI2LjM5OCA0Mi4xMyAwIDc2Ljc5OS04LjA2NCAxMTMuNDkxLTI2LjM5OCA2Mi4wNi0zMS4wMDkgMTA3LjI3NC04Mi45MDIgMTI4LjkxOC0xNDcuOTY1IDkuMjEzLTI3LjY5NCAxMi45MDctNTEuMTk2IDEyLjg1Mi04MS43NjktLjA0Mi0yMy42MDItMi4xNTUtNDAuNjk3LTcuNzA4LTYyLjM2Mi0yMy44MzMtOTIuOTkyLTk4LjMxLTE2NS4zMDMtMTkxLjU2Mi0xODUuOTkzLTIzLjY4LTUuMjU0LTU0LjI5My03LjUwOS03NS44NDUtNS41ODhNMTk2LjUgMjA4LjQxOWMyLjIuNzY0IDQuMTMyIDIuMDM4IDQuMjk0IDIuODMzLjE2Mi43OTQtMi44NzYgNC45MzQtNi43NSA5LjE5OS02Ljk4NCA3LjY4OS04LjQ5NCAxMS4wNTUtNS40OCAxMi4yMTIgMS43NDIuNjY4IDQuNjU0LS41OTkgOC40ODMtMy42OTJsMi41NDYtMi4wNTggNC43OTcgMi42ODFjNC41MTIgMi41MjIgNC43NTUgMi44NjYgNC4xIDUuNzk0LS4zODMgMS43MTEtLjk4NyA3LjgxMS0xLjM0MyAxMy41NTRsLS42NDcgMTAuNDQzLTYuNzYyLjE1MmMtNy4zMjguMTY2LTguNjI4LjY4Ni02LjkwNCAyLjc2My43MTMuODU5IDEuMjE5IDguMDQ0IDEuMzkzIDE5Ljc3NGwuMjczIDE4LjQyNiAzLjg3NS4zMThjMy4xMzUuMjU3IDQuNDM2LS4yMiA2LjgxOS0yLjVsMi45NDQtMi44MTggMi45MDIgMy41YzEuNTk3IDEuOTI1IDIuNzY3IDMuOTUgMi42MDEgNC41LS4xNjYuNTUtNS4xMjQgMS4zMjQtMTEuMDE3IDEuNzItNy4xMzguNDgtMTEuNjY0IDEuMjgyLTEzLjU1OCAyLjQtMS41NjQuOTI0LTMuNTY4IDEuNDAxLTQuNDU1IDEuMDYxLTEuNzA1LS42NTQtMS43ODYtMi4xMTktMS44MDktMzIuNjgxLS4wMDUtNi44NzUtLjQyOS0xMy4yODctLjk0MS0xNC4yNS0uNjEyLTEuMTUxLTIuMTE4LTEuNzUtNC4zOTYtMS43NS0zLjM0IDAtNC41NCAxLjIxNy0yLjQ2NSAyLjUgMS44NzIgMS4xNTcgMS4wMDcgMy43ODYtMi43NSA4LjM1OC0yLjA2MiAyLjUxLTQuMiA1LjI5NC00Ljc1IDYuMTg3LS41NS44OTMtMi43MDUgNC4wNjEtNC43ODggNy4wMzktNy40MyAxMC42MjQtOC43MjEgMTIuNDg0LTEyLjQyOSAxNy45MTYtNS42NDQgOC4yNjktNS4yODMgMy45NTYuNjYxLTcuODg5IDIuNzgxLTUuNTQxIDUuMDU2LTEwLjU1NCA1LjA1Ni0xMS4xMzkgMC0uNTg1IDEuNjI5LTQuNTMxIDMuNjE5LTguNzY4IDUuNzA1LTEyLjE0MyA0LjU5Ni0xNy42MjEtMi4zOC0xMS43NTItNS45ODkgNS4wNC02LjIzOSA0LjQ2NC02LjIzOS0xNC4zOTMgMC0xNy4xOTcuNTA0LTE5LjU0NSAzLjYzOS0xNi45NDMgMS4wMzEuODU1IDUuNTMxIDEuMzcxIDEzLjM4OCAxLjUzNWwxMS44MzYuMjQ3IDIuMTQyLTMuNjMxYzIuMTQ5LTMuNjQyIDQuMTg4LTkuMTY0IDUuNDUzLTE0Ljc2Ny43NDUtMy4yOTggMy4xNzItNy41MDkgNC4zMTUtNy40ODUuNC4wMDggMi41MjcuNjQgNC43MjcgMS40MDRtMzguNzc0LTEyLjY1MWMzLjYyOSAzLjcxNyAzLjY1OCAzLjgwOSAyLjA4NSA2Ljc1LTEuNzk0IDMuMzU0LTIuMDc3IDEyLjgzOC0yLjMxNSA3Ny40ODJsLS4xMzggMzcuNS01Ljg0NiA2LjM2LTUuODQ1IDYuMzYtOC4xNjYtOC4xMTFjLTQuNDkxLTQuNDYxLTcuODc0LTguNTgyLTcuNTE4LTkuMTU5LjM5OC0uNjQ0IDEuMDk0LS42OTcgMS44MDgtLjEzNy42MzkuNTAxIDMuMzc0IDEuMiA2LjA3OCAxLjU1MyA5LjE4OSAxLjE5OSA4LjU5MyA1LjEzOSA4LjUxMy01Ni4yNzEtLjAzOS0yOS40NzctLjM5OS01NC40My0uODAxLTU1LjQ1MS0uNDAxLTEuMDIxLTIuMTg3LTIuNDctMy45NjktMy4yMTktMS43ODEtLjc0OS0yLjk2NC0uOTE4LTIuNjI5LS4zNzUuMzk2LjY0Mi03LjQ3MS44OTMtMjIuNDYyLjcxOS0xNC41MzUtLjE3LTIzLjA3MS0uNjM5LTIzLjA3MS0xLjI2OSAwLS42MzUgOS42NzQtMS4wOTcgMjYuNDg5LTEuMjY2bDI2LjQ4OC0uMjY3IDEuNjI4LTIuNDgzYzIuMjk5LTMuNTEgNS4zOTEtMy4wOTkgOS42NzEgMS4yODRtNTUuODM2IDMyLjRjMi42OSAxLjc0MyA0Ljg5IDMuMzM0IDQuODkgMy41MzYgMCAuMjAxLS42ODIgMS40MDctMS41MTYgMi42NzktMS4yODIgMS45NTctMS40NzQgNi43NjMtMS4yNSAzMS4yMTUuMzA2IDMzLjI5NC0uMDUzIDMyLjMxMiA5LjUxNiAyNS45ODcgMi44ODgtMS45MDggNS4yNS0zLjEyNyA1LjI1LTIuNzA3IDAgLjQyLTIuNTg3IDMuNDM4LTUuNzUgNi43MDYtMy4xNjIgMy4yNjgtOS4wNDMgOS42NDgtMTMuMDY4IDE0LjE3OS00Ljg0OSA1LjQ1OC04LjAzOCA4LjIzNy05LjQ1MiA4LjIzNy0yLjUzNyAwLTguNzMtNS42OTUtOC43My04LjAyOSAwLS45IDEuOC0zLjA4MyA0LTQuODUxbDQtMy4yMTR2LTMyLjMzMWMwLTI2LjkzNS0uMjQxLTMyLjUzLTEuNDQxLTMzLjUyNi0uNzkzLS42NTgtNC41MDYtMS4yMjgtOC4yNS0xLjI2Ni02LjY1OS0uMDY3LTkuODM3LTEuMTItOC43MzktMi44OTYuMzAxLS40ODggNC4zOTEtLjg4NyA5LjA4OC0uODg3IDguMTk5IDAgOC42NTEtLjEyIDExLjM0Mi0zIDEuNTQxLTEuNjUgMy4zNDctMyA0LjAxMi0zIC42NjUgMCAzLjQwOSAxLjQyNiA2LjA5OCAzLjE2OG0tMTYxLjM2LTIwLjE5NSA0LjI1IDEuOTI5VjMxNy4xMmwtNS4xNDUgNS40NGMtMi44MyAyLjk5Mi01LjUzIDUuNDQtNiA1LjQ0LS45OTUgMC0xLjE4Mi0xMjAuMzM5LS4xODgtMTIxLjMzMyAxLjA0Mi0xLjA0MiAyLjUwMy0uNzczIDcuMDgzIDEuMzA2TTM0My41IDIzNmMuOTk1IDEuMSAyLjg0OSAyIDQuMTIgMiAzLjgyMiAwIDQuNTM3IDMuMDI0IDQuNDQ2IDE4LjgyNS0uMDQ2IDguMDcxLS4xOTIgMTUuOC0uMzI1IDE3LjE3NWwtLjI0MSAyLjUgMTIuNjM5LjI3OSAxMi42NC4yNzkgNC4wMTQtNC41NiA0LjAxNC00LjU2IDQuMzQ3IDIuOTRjNS40MzMgMy42NzYgOS40MjYgNy44NzcgOC40MjggOC44NjgtLjQxNy40MTUtNC44ODEuNzU0LTkuOTIuNzU0LTI4LjM1MiAwLTM1LjYxNS40NTEtMzcuNDEyIDIuMzIyLS45NjIgMS4wMDItNS41NzUgNi4yMTEtMTAuMjUgMTEuNTc0YTgyNjMuMjc4IDgyNjMuMjc4IDAgMCAxLTEzLjUgMTUuNDUzYy0yLjc1IDMuMTM1LTYuNDkgNy40MjQtOC4zMTIgOS41MzEtMS44MjEgMi4xMDYtMy41MzEgMy42MTEtMy43OTkgMy4zNDMtLjU1OS0uNTU5IDIuNTgxLTYuMzcyIDYuNjAxLTEyLjIyMyAxLjUxMS0yLjIgMy42NzYtNS41NzUgNC44MTEtNy41IDEuMTM0LTEuOTI1IDQuMTE4LTYuOTY3IDYuNjMxLTExLjIwMyAyLjUxMi00LjIzNyA0LjU2OC04LjM4OSA0LjU2OC05LjIyNiAwLTEuMjkyLTIuNTM4LTEuNTY0LTE2Ljc1LTEuNzk3LTE0LjEtLjIzMS0xNi43NS0uNTExLTE2Ljc1LTEuNzc0IDAtMS4yNjEgMi42MTUtMS41NDQgMTYuNDI4LTEuNzc2IDEwLjA0Mi0uMTY4IDE2Ljk0My0uNzAyIDE3Ljc1LTEuMzcyIDEuMDE0LS44NDEgMS4zMjItNS42OSAxLjMyMi0yMC44MDggMC0yMi4wOTEuMzYxLTIzLjYxOCA0LjUtMTkuMDQ0bTEuNDcyLTUwLjAxNGMyLjE0MSAxLjA5MiA0LjI2IDIuNTU0IDQuNzEgMy4yNS40NS42OTUuODE4IDQuNDE0LjgxOCA4LjI2NHY3bDguMTc1LjI4OWM3LjkzLjI4MSA4LjI2OS4xOTggMTEuMjg1LTIuNzUgMS43MS0xLjY3MSAzLjQxLTMuMDM5IDMuNzc3LTMuMDM5IDEuMjQgMCA3LjI2MyA2LjM4MiA3LjI2MyA3LjY5NiAwIDEuMDEyLTMuMjQxIDEuMzA0LTE0LjQ2NSAxLjMwNC0xNi44NTggMC0xNi4zMzEtLjM0MS0xNi4wNTUgMTAuMzg4LjIzOSA5LjI5OS43ODIgOS42MzcgMTQuMzc2IDguOTUxIDguMjI2LS40MTUgMTEuMjU5LS45NjggMTMuMzU0LTIuNDM4IDEuNDktMS4wNDUgMy4yNDMtMS45MDEgMy44OTctMS45MDEuOTY2IDAgNi42NzcgNC4xMSAxMS4zMTkgOC4xNDcgMS4wMDYuODc1LTIuMDUzIDQuODUzLTMuNzMxIDQuODUzLS41NDcgMC00LjE0OSAxLjgxOC04LjAwNCA0LjA0MS03Ljk0OCA0LjU4My0xMC4wNTggNC4yMjktNy43OTctMS4zMDUuNzI4LTEuNzggMS4zODYtNC4xMzYgMS40NjQtNS4yMzYuMTM5LTEuOTU2LS42MzEtMi4wMTEtMzQuODU4LTIuNS0yOS4xMy0uNDE2LTM1LS43MzUtMzUtMS45MDMgMC0xLjEzNSAyLjc5NC0xLjQyMSAxNC42NjctMS41IDguMDY3LS4wNTMgMTUuMDQyLS40NzIgMTUuNS0uOTI5LjQ1OC0uNDU4IDEuMDYxLTQuMjMyIDEuMzQxLTguMzg2LjY3NC0xMC4wMy4wNTItMTAuNDYzLTE0LjY3LTEwLjIxLTguNjM0LjE0OC0xMC44MzgtLjA5NS0xMC44MzgtMS4xOTMgMC0xLjA4NSAyLjcxNi0xLjQzOSAxMi43NS0xLjY1OSA3LjAxMy0uMTU0IDEyLjc2Ni0uNjA0IDEyLjc4Ni0xIC4wMi0uMzk2LjE1OS0zLjg3LjMxLTcuNzIuMjUtNi40MjQgMS43OTEtMTIuNSAzLjE2OS0xMi41LjMxMSAwIDIuMzE2Ljg5NCA0LjQ1NyAxLjk4Nm0xMi43NjIgMTA5Ljc1OWMxLjQ2NC45NiA4LjUzNiA0LjY3MiAxNS43MTQgOC4yNSA4LjMxNyA0LjE0NSAxMy4xNjkgNy4xMzkgMTMuMzc1IDguMjUzLjQ1NyAyLjQ3NS01Ljc4NSAxMS43NTItNy45MDcgMTEuNzUyLS45NjIgMC0zLjIyMi0xLjkxMi01LjAyNC00LjI1LTEuODAyLTIuMzM3LTUuNTUyLTYuODI3LTguMzM0LTkuOTc2LTEwLjMwOC0xMS42NjktMTIuNTE4LTE0LjQ4MS0xMS44NzktMTUuMTIuOTExLS45MTEgMS4wNi0uODcxIDQuMDU1IDEuMDkxTTI3NiAxOTIuMDM2YzEuMzc1Ljk0MSA1LjMxMyAzLjEyNCA4Ljc1IDQuODUyIDMuNDM4IDEuNzI3IDYuMjUgMy40OTEgNi4yNSAzLjkxOCAwIC40MjgtMS45OTIgMi43MzItNC40MjYgNS4xMjEtNi4zMTUgNi4xOTktOC4yMzggNC44NzctMTMuNTI1LTkuMjk2LTIuOTc2LTcuOTc2LTIuNjc1LTguNDQ0IDIuOTUxLTQuNTk1bS0xMjguMjIzLTEuMjUyIDguMjc3IDQuMjY1LTMuNjA4IDQuNzI2Yy0xLjk4NSAyLjU5OS00LjEwNCA0LjcyNS00LjcxIDQuNzI1LS42MDYgMC0yLjA4Ny0xLjgtMy4yOTItNC02LjQyMy0xMS43MzEtNy4yMTgtMTMuMzkyLTYuNjY4LTEzLjk0My4zMjktLjMyOS44NTItLjQ3MyAxLjE2Mi0uMzE5LjMwOS4xNTQgNC4yODcgMi4yIDguODM5IDQuNTQ2bTE3Mi4xOTMgNjYuNzMzYzMuNTU5IDEuMjY3IDYuNjIyIDIuNzYgNi44MDggMy4zMTguNjQzIDEuOTI4LTMuNzc1IDkuMTY1LTUuNTk0IDkuMTY1LTEuMDc2IDAtMy43OTgtMi45MTEtNi45MTYtNy4zOTYtNC45NTUtNy4xMjctNS42MDUtOS4zNzgtMi4zMi04LjAyOS44NTMuMzUxIDQuNDY0IDEuNjc1IDguMDIyIDIuOTQybTcuODMzLTE2LjYzNGMyLjM2Ni42NzYgNC41MjkgMS44MTggNC44MDUgMi41MzguNjI0IDEuNjI2LTIuODc5IDguMDc5LTQuMzg1IDguMDc5LTEuNzYzIDAtOS40MDgtMTEuNTc2LTguNzYtMTMuMjYzLjUwOS0xLjMyNy43ODctMS4zMzMgMi4zMDgtLjA0Ni45NTEuODA1IDMuNjY1IDIuMDE3IDYuMDMyIDIuNjkybS0xNjAuNDY2LTIzLjgyOGMzLjExNSAyLjIzIDUuNjYzIDQuMjk4IDUuNjYzIDQuNTk2IDAgMS4zNDUtNC4yNjkgNi4zNDktNS40MTYgNi4zNDktLjcwNCAwLTIuMTEyLTEuOTEyLTMuMTI4LTQuMjUtMS4wMTYtMi4zMzctMi42NDYtNS40MjYtMy42MjItNi44NjMtMS42Mi0yLjM4NS0xLjU1NC0zLjg4Ny4xNy0zLjg4Ny4zNjkgMCAzLjIxOSAxLjgyNSA2LjMzMyA0LjA1NSIgZmlsbD0iI0U3RUVGRkZGIiBzdHJva2U9IiNFN0VFRkZGRiIgb3BhY2l0eT0iLjgiLz48cGF0aCBkPSJNMTg5LjU5MSAyMDkuMjVjLS44MDEgMS4yMzgtMS43NiAzLjYtMi4xMzMgNS4yNS0xLjI2NSA1LjYwMy0zLjMwNCAxMS4xMjUtNS40NTMgMTQuNzY3bC0yLjE0MiAzLjYzMS0xMS44MzYtLjI0N2MtNy44NTctLjE2NC0xMi4zNTctLjY4LTEzLjM4OC0xLjUzNS0zLjEzNS0yLjYwMi0zLjYzOS0uMjU0LTMuNjM5IDE2Ljk0MyAwIDE4Ljg1Ny4yNSAxOS40MzMgNi4yMzkgMTQuMzkzIDYuOTc2LTUuODY5IDguMDg1LS4zOTEgMi4zOCAxMS43NTItMS45OSA0LjIzNy0zLjYxOSA4LjE4My0zLjYxOSA4Ljc2OCAwIC41ODUtMi4yNzUgNS41OTgtNS4wNTYgMTEuMTM5LTUuOTQ0IDExLjg0NS02LjMwNSAxNi4xNTgtLjY2MSA3Ljg4OSAzLjcwOC01LjQzMiA0Ljk5OS03LjI5MiAxMi40MjktMTcuOTE2IDIuMDgzLTIuOTc4IDQuMjM4LTYuMTQ2IDQuNzg4LTcuMDM5LjU1LS44OTMgMi42ODgtMy42NzcgNC43NS02LjE4NyAzLjc1Ny00LjU3MiA0LjYyMi03LjIwMSAyLjc1LTguMzU4LTIuMDc1LTEuMjgzLS44NzUtMi41IDIuNDY1LTIuNSAyLjI3OCAwIDMuNzg0LjU5OSA0LjM5NiAxLjc1LjUxMi45NjMuOTM2IDcuMzc1Ljk0MSAxNC4yNS4wMjMgMzAuNTYyLjEwNCAzMi4wMjcgMS44MDkgMzIuNjgxLjg4Ny4zNCAyLjg5MS0uMTM3IDQuNDU1LTEuMDYxIDEuODk0LTEuMTE4IDYuNDItMS45MiAxMy41NTgtMi40IDUuODkzLS4zOTYgMTAuODUxLTEuMTcgMTEuMDE3LTEuNzIuMTY2LS41NS0xLjAwNC0yLjU3NS0yLjYwMS00LjVsLTIuOTAyLTMuNS0yLjk0NCAyLjgxOGMtMi4zODMgMi4yOC0zLjY4NCAyLjc1Ny02LjgxOSAyLjVsLTMuODc1LS4zMTgtLjI3My0xOC40MjZjLS4xNzQtMTEuNzMtLjY4LTE4LjkxNS0xLjM5My0xOS43NzQtMS43MjQtMi4wNzctLjQyNC0yLjU5NyA2LjkwNC0yLjc2M2w2Ljc2Mi0uMTUyLjY0Ny0xMC40NDNjLjM1Ni01Ljc0My45Ni0xMS44NDMgMS4zNDMtMTMuNTU0LjY1NS0yLjkyOC40MTItMy4yNzItNC4xLTUuNzk0bC00Ljc5Ny0yLjY4MS0yLjU0NiAyLjA1OGMtMy44MjkgMy4wOTMtNi43NDEgNC4zNi04LjQ4MyAzLjY5Mi0zLjAxNC0xLjE1Ny0xLjUwNC00LjUyMyA1LjQ4LTEyLjIxMiAzLjg3NC00LjI2NSA2LjkxMi04LjQwNSA2Ljc1LTkuMTk5LS4yNDYtMS4yMS02LjU4NC00LjE4Ni05LjAyMS00LjIzNy0uNC0uMDA4LTEuMzgyLjk5OC0yLjE4MiAyLjIzNW0yLjIwOSAyNy45NWMxLjg2OSAxLjg2OSAxLjU4OSAxNi4yMzItLjM0OCAxNy44NC0yLjA1OCAxLjcwOC0yNi45NSAxLjYyMi0yOS4wMjUtLjEwMS0xLjAyNC0uODQ5LTEuNDI3LTMuNTA0LTEuNDI3LTkuMzk1IDAtNC41MTYuMy04LjUxMS42NjctOC44NzcgMS4yNDUtMS4yNDYgMjguODQyLS43NTggMzAuMTMzLjUzMyIgZmlsbD0iIzQzNjBCN0ZGIiBzdHJva2U9IiM0MzYwQjdGRiIvPjxwYXRoIGQ9Im0yMjUuNjAzIDE5NC40ODQtMS42MjggMi40ODMtMjYuNDg4LjI2N2MtMTYuODE1LjE2OS0yNi40ODkuNjMxLTI2LjQ4OSAxLjI2NiAwIC42MyA4LjUzNiAxLjA5OSAyMy4wNzEgMS4yNjkgMTQuOTkxLjE3NCAyMi44NTgtLjA3NyAyMi40NjItLjcxOS0uMzM1LS41NDMuODQ4LS4zNzQgMi42MjkuMzc1IDEuNzgyLjc0OSAzLjU2OCAyLjE5OCAzLjk2OSAzLjIxOS40MDIgMS4wMjEuNzYyIDI1Ljk3NC44MDEgNTUuNDUxLjA4IDYxLjQxLjY3NiA1Ny40Ny04LjUxMyA1Ni4yNzEtMi43MDQtLjM1My01LjQzOS0xLjA1Mi02LjA3OC0xLjU1My0uNzE0LS41Ni0xLjQxLS41MDctMS44MDguMTM3LS4zNTYuNTc3IDMuMDI3IDQuNjk4IDcuNTE4IDkuMTU5bDguMTY2IDguMTExIDUuODQ1LTYuMzYgNS44NDYtNi4zNi4xMzgtMzcuNWMuMjM4LTY0LjY0NC41MjEtNzQuMTI4IDIuMzE1LTc3LjQ4MiAxLjU3My0yLjk0MSAxLjU0NC0zLjAzMy0yLjA4NS02Ljc1LTQuMjgtNC4zODMtNy4zNzItNC43OTQtOS42NzEtMS4yODRNMjgxIDIyOGMtMi42OTEgMi44OC0zLjE0MyAzLTExLjM0MiAzLTQuNjk3IDAtOC43ODcuMzk5LTkuMDg4Ljg4Ny0xLjA5OCAxLjc3NiAyLjA4IDIuODI5IDguNzM5IDIuODk2IDMuNzQ0LjAzOCA3LjQ1Ny42MDggOC4yNSAxLjI2NiAxLjIuOTk2IDEuNDQxIDYuNTkxIDEuNDQxIDMzLjUyNnYzMi4zMzFsLTQgMy4yMTRjLTIuMiAxLjc2OC00IDMuOTUxLTQgNC44NTEgMCAyLjMzNCA2LjE5MyA4LjAyOSA4LjczIDguMDI5IDEuNDE0IDAgNC42MDMtMi43NzkgOS40NTItOC4yMzcgNC4wMjUtNC41MzEgOS45MDYtMTAuOTExIDEzLjA2OC0xNC4xNzkgMy4xNjMtMy4yNjggNS43NS02LjI4NiA1Ljc1LTYuNzA2IDAtLjQyLTIuMzYyLjc5OS01LjI1IDIuNzA3LTkuNTY5IDYuMzI1LTkuMjEgNy4zMDctOS41MTYtMjUuOTg3LS4yMjQtMjQuNDUyLS4wMzItMjkuMjU4IDEuMjUtMzEuMjE1LjgzNC0xLjI3MiAxLjUxNi0yLjQ3OCAxLjUxNi0yLjY3OSAwLS43MjMtOS44MDQtNi43MDQtMTAuOTg4LTYuNzA0LS42NjUgMC0yLjQ3MSAxLjM1LTQuMDEyIDNNMTIyLjY2NyAyMDYuNjY3Yy0uOTk0Ljk5NC0uODA3IDEyMS4zMzMuMTg4IDEyMS4zMzMuNDcgMCAzLjE3LTIuNDQ4IDYtNS40NGw1LjE0NS01LjQ0VjIwOS45MDJsLTQuMjUtMS45MjljLTQuNTgtMi4wNzktNi4wNDEtMi4zNDgtNy4wODMtMS4zMDYiIGZpbGw9IiM0MzYwQjdGRiIgc3Ryb2tlPSIjNDM2MEI3RkYiLz48cGF0aCBkPSJNMzM5LjY2NyAyMzQuNjY3Yy0uMzY3LjM2Ni0uNjY3IDkuNTM2LS42NjcgMjAuMzc3IDAgMTUuMTE4LS4zMDggMTkuOTY3LTEuMzIyIDIwLjgwOC0uODA3LjY3LTcuNzA4IDEuMjA0LTE3Ljc1IDEuMzcyLTEzLjgxMy4yMzItMTYuNDI4LjUxNS0xNi40MjggMS43NzYgMCAxLjI2MyAyLjY1IDEuNTQzIDE2Ljc1IDEuNzc0IDE0LjIxMi4yMzMgMTYuNzUuNTA1IDE2Ljc1IDEuNzk3IDAgLjgzNy0yLjA1NiA0Ljk4OS00LjU2OCA5LjIyNkE1NzU2LjA4NSA1NzU2LjA4NSAwIDAgMCAzMjUuODAxIDMwM2MtMS4xMzUgMS45MjUtMy4zIDUuMy00LjgxMSA3LjUtNC4wMiA1Ljg1MS03LjE2IDExLjY2NC02LjYwMSAxMi4yMjMuMjY4LjI2OCAxLjk3OC0xLjIzNyAzLjc5OS0zLjM0MyAxLjgyMi0yLjEwNyA1LjU2Mi02LjM5NiA4LjMxMi05LjUzMSAyLjc1LTMuMTM1IDguODI1LTEwLjA4OSAxMy41LTE1LjQ1MyA0LjY3NS01LjM2MyA5LjI4OC0xMC41NzIgMTAuMjUtMTEuNTc0IDEuNzk3LTEuODcxIDkuMDYtMi4zMjIgMzcuNDEyLTIuMzIyIDUuMDM5IDAgOS41MDMtLjMzOSA5LjkyLS43NTQuOTk4LS45OTEtMi45OTUtNS4xOTItOC40MjgtOC44NjhsLTQuMzQ3LTIuOTQtNC4wMTQgNC41Ni00LjAxNCA0LjU2LTEyLjY0LS4yNzktMTIuNjM5LS4yNzkuMjQxLTIuNWMuMTMzLTEuMzc1LjI3OS05LjEwNC4zMjUtMTcuMTc1LjA5MS0xNS44MDEtLjYyNC0xOC44MjUtNC40NDYtMTguODI1LTEuMjcxIDAtMy4xMjUtLjktNC4xMi0yLTEuOTItMi4xMjEtMi43NTUtMi40MTItMy44MzMtMS4zMzMiIGZpbGw9IiM0MzYwQjdGRiIgc3Ryb2tlPSIjNDM2MEI3RkYiLz48cGF0aCBkPSJNMzM4Ljc4NSAxODYuNzVjLS42NDEgMS41MTMtMS4yODkgNS45LTEuNDM5IDkuNzUtLjE1MSAzLjg1LS4yOSA3LjMyNC0uMzEgNy43Mi0uMDIuMzk2LTUuNzczLjg0Ni0xMi43ODYgMS0xMC4wMzQuMjItMTIuNzUuNTc0LTEyLjc1IDEuNjU5IDAgMS4wOTggMi4yMDQgMS4zNDEgMTAuODM4IDEuMTkzIDE0LjcyMi0uMjUzIDE1LjM0NC4xOCAxNC42NyAxMC4yMS0uMjggNC4xNTQtLjg4MyA3LjkyOC0xLjM0MSA4LjM4Ni0uNDU4LjQ1Ny03LjQzMy44NzYtMTUuNS45MjktMTEuODczLjA3OS0xNC42NjcuMzY1LTE0LjY2NyAxLjUgMCAxLjE2OCA1Ljg3IDEuNDg3IDM1IDEuOTAzIDM0LjIyNy40ODkgMzQuOTk3LjU0NCAzNC44NTggMi41LS4wNzggMS4xLS43MzYgMy40NTYtMS40NjQgNS4yMzYtMi4yNjEgNS41MzQtLjE1MSA1Ljg4OCA3Ljc5NyAxLjMwNSAzLjg1NS0yLjIyMyA3LjQ1Ny00LjA0MSA4LjAwNC00LjA0MSAxLjY3OCAwIDQuNzM3LTMuOTc4IDMuNzMxLTQuODUzLTQuNjQyLTQuMDM3LTEwLjM1My04LjE0Ny0xMS4zMTktOC4xNDctLjY1NCAwLTIuNDA3Ljg1Ni0zLjg5NyAxLjkwMS0yLjA5NSAxLjQ3LTUuMTI4IDIuMDIzLTEzLjM1NCAyLjQzOC0xMy41OTQuNjg2LTE0LjEzNy4zNDgtMTQuMzc2LTguOTUxLS4yNzYtMTAuNzI5LS44MDMtMTAuMzg4IDE2LjA1NS0xMC4zODggMTEuMjI0IDAgMTQuNDY1LS4yOTIgMTQuNDY1LTEuMzA0IDAtMS4zMTQtNi4wMjMtNy42OTYtNy4yNjMtNy42OTYtLjM2NyAwLTIuMDY3IDEuMzY4LTMuNzc3IDMuMDM5LTMuMDE2IDIuOTQ4LTMuMzU1IDMuMDMxLTExLjI4NSAyLjc1bC04LjE3NS0uMjg5di03YzAtMy44NS0uMzY4LTcuNTY5LS44MTgtOC4yNjQtLjc1NS0xLjE2OC03Ljg3OC01LjIzNi05LjE2Ny01LjIzNi0uMzEgMC0xLjA4OSAxLjIzOC0xLjczIDIuNzUiIGZpbGw9IiM0MzYwQjdGRiIgc3Ryb2tlPSIjNDM2MEI3RkYiLz48cGF0aCBkPSJNMTYxLjY2NyAyMzYuNjY3Yy0uMzY3LjM2Ni0uNjY3IDQuMzYxLS42NjcgOC44NzcgMCA1Ljg5MS40MDMgOC41NDYgMS40MjcgOS4zOTUgMi4wNzUgMS43MjMgMjYuOTY3IDEuODA5IDI5LjAyNS4xMDEgMS45MzctMS42MDggMi4yMTctMTUuOTcxLjM0OC0xNy44NC0xLjI5MS0xLjI5MS0yOC44ODgtMS43NzktMzAuMTMzLS41MzMiIGZpbGw9IiNFN0VFRkZGRiIgc3Ryb2tlPSIjRTdFRUZGRkYiIG9wYWNpdHk9Ii44Ii8+PHBhdGggZD0iTTM1My42NzkgMjk0LjY1NGMtLjYzOS42MzkgMS41NzEgMy40NTEgMTEuODc5IDE1LjEyIDIuNzgyIDMuMTQ5IDYuNTMyIDcuNjM5IDguMzM0IDkuOTc2IDEuODAyIDIuMzM4IDQuMDYyIDQuMjUgNS4wMjQgNC4yNSAyLjEyMiAwIDguMzY0LTkuMjc3IDcuOTA3LTExLjc1Mi0uMjA2LTEuMTE0LTUuMDU4LTQuMTA4LTEzLjM3NS04LjI1My03LjE3OC0zLjU3OC0xNC4yNS03LjI5LTE1LjcxNC04LjI1LTIuOTk1LTEuOTYyLTMuMTQ0LTIuMDAyLTQuMDU1LTEuMDkxTTI3My4wNDkgMTk2LjYzMWM1LjI4NyAxNC4xNzMgNy4yMSAxNS40OTUgMTMuNTI1IDkuMjk2IDIuNDM0LTIuMzg5IDQuNDI2LTQuNjkzIDQuNDI2LTUuMTIxIDAtLjQyNy0yLjgxMi0yLjE5MS02LjI1LTMuOTE4LTMuNDM3LTEuNzI4LTcuMzc1LTMuOTExLTguNzUtNC44NTItNS42MjYtMy44NDktNS45MjctMy4zODEtMi45NTEgNC41OTVNMTM3Ljc3NiAxODYuNTU3Yy0uNTUuNTUxLjI0NSAyLjIxMiA2LjY2OCAxMy45NDMgMS4yMDUgMi4yIDIuNjg2IDQgMy4yOTIgNCAuNjA2IDAgMi43MjUtMi4xMjYgNC43MS00LjcyNWwzLjYwOC00LjcyNi04LjI3Ny00LjI2NWMtNC41NTItMi4zNDYtOC41My00LjM5Mi04LjgzOS00LjU0Ni0uMzEtLjE1NC0uODMzLS4wMS0xLjE2Mi4zMTlNMzA5Ljc2MSAyNTQuNTczYy0xLjEwMiAxLjEwMSA5LjUwNyAxNS40MjcgMTEuNDIzIDE1LjQyNyAxLjgxOSAwIDYuMjM3LTcuMjM3IDUuNTk0LTkuMTY1LS4xODYtLjU1OC0zLjI0OS0yLjA1MS02LjgwOC0zLjMxOC0zLjU1OC0xLjI2Ny03LjE2OS0yLjU5MS04LjAyMi0yLjk0Mi0uODU0LS4zNS0xLjgzOC0uMzUyLTIuMTg3LS4wMDJNMzE5LjQ2MyAyMzguMjM3Yy0uNjQ4IDEuNjg3IDYuOTk3IDEzLjI2MyA4Ljc2IDEzLjI2MyAxLjUwNiAwIDUuMDA5LTYuNDUzIDQuMzg1LTguMDc5LS4yNzYtLjcyLTIuNDM5LTEuODYyLTQuODA1LTIuNTM4LTIuMzY3LS42NzUtNS4wODEtMS44ODctNi4wMzItMi42OTItMS41MjEtMS4yODctMS43OTktMS4yODEtMi4zMDguMDQ2TTE1OS42OTYgMjEzLjYzN2MtLjM1LjM1MS4xNjIgMS44MTMgMS4xMzggMy4yNS45NzYgMS40MzcgMi42MDYgNC41MjYgMy42MjIgNi44NjMgMS4wMTYgMi4zMzggMi40MjQgNC4yNSAzLjEyOCA0LjI1IDEuMTQ3IDAgNS40MTYtNS4wMDQgNS40MTYtNi4zNDkgMC0uNjY5LTExLjA3LTguNjUxLTExLjk5Ni04LjY1MS0uMzY5IDAtLjk1Ny4yODctMS4zMDguNjM3IiBmaWxsPSIjNDM2MEI3RkYiIHN0cm9rZT0iIzQzNjBCN0ZGIi8+PC9zdmc+",
    "sourceName": "写源助手",
    "sourceUrl": "简单小工具",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4995,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765912287557,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://www.logosc.cn/uploads/icon/2021/01/07//c0409859-780a-4b5f-b918-d0ae879368e7.png",
    "sourceName": "星云推书",
    "sourceUrl": "https://vt.sm.cn/api/novelStarReco/index?uc_param_str=dnntnwvepffrgibijbprsvdsdicheiniu#/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4996,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765918203048,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@js:\nvar x = baseUrl.substr(35);\njava.getElements(\"@@class.menu.\"+x+\"@a\");",
    "ruleLink": "href",
    "ruleTitle": "text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "字体转换／字体预览::https://www.qqxiuzi.cn/daohang.htm?0\n非主流字体转换／字效生成::https://www.qqxiuzi.cn/daohang.htm?1\n文字在线工具::https://www.qqxiuzi.cn/daohang.htm?2\n汉字／汉语工具书::https://www.qqxiuzi.cn/daohang.htm?3\n字符编码解码::https://www.qqxiuzi.cn/daohang.htm?4\n字符加密解密::https://www.qqxiuzi.cn/daohang.htm?5\n信息／资料::https://www.qqxiuzi.cn/daohang.htm?6\n频道／栏目::https://www.qqxiuzi.cn/daohang.htm?7\nZRQR付费::https://www.qqxiuzi.cn/daohang.htm?8",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://www.qqxiuzi.cn/favicon.ico",
    "sourceName": "千千秀字",
    "sourceUrl": "https://www.qqxiuzi.cn/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4997,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765918215638,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.wap_home_album_list_container@li&&class.wap_font_list@li",
    "ruleContent": "all",
    "ruleImage": "img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "page",
    "ruleTitle": "h5@text||tag.a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "首页::http://m.fonts.net.cn\n幼圆::http://m.fonts.net.cn/fonts-zh/tag-youyuan-{{page}}.html\n行书::http://m.fonts.net.cn/fonts-zh/tag-xingshu-{{page}}.html\n草书::http://m.fonts.net.cn/fonts-zh/tag-caoshu-{{page}}.html\n隶书::http://m.fonts.net.cn/fonts-zh/tag-lishu-{{page}}.html\n行楷::http://m.fonts.net.cn/fonts-zh/tag-xingkai-{{page}}.html\n篆体::http://m.fonts.net.cn/fonts-zh/tag-zhuanti-{{page}}.html\n黑体::http://m.fonts.net.cn/fonts-zh/tag-heiti-{{page}}.html\n广告::http://m.fonts.net.cn/fonts-zh/tag-guanggao-{{page}}.html\n宋体::http://m.fonts.net.cn/fonts-zh/tag-songti-{{page}}.html\n楷体::http://m.fonts.net.cn/fonts-zh/tag-kaiti-{{page}}.html\n魏碑::http://m.fonts.net.cn/fonts-zh/tag-weibei-{{page}}.html\n毛笔::http://m.fonts.net.cn/fonts-zh/tag-maobi-{{page}}.html\n手写::http://m.fonts.net.cn/fonts-zh/tag-shouxie2-{{page}}.html\n彩云::http://m.fonts.net.cn/fonts-zh/tag-caiyun-{{page}}.html\n卡通::http://m.fonts.net.cn/fonts-zh/tag-katong2-{{page}}.html\n综艺::http://m.fonts.net.cn/fonts-zh/tag-zhongyi-{{page}}.html\n书法::http://m.fonts.net.cn/fonts-zh/tag-shufa2-{{page}}.html\n新魏::http://m.fonts.net.cn/fonts-zh/tag-xinwei-{{page}}.html\n仿宋::http://m.fonts.net.cn/fonts-zh/tag-fangsong-{{page}}.html\n大黑::http://m.fonts.net.cn/fonts-zh/tag-dahei-{{page}}.html\n娃娃::http://m.fonts.net.cn/fonts-zh/tag-wawa-{{page}}.html\n钢笔::http://m.fonts.net.cn/fonts-zh/tag-gangbi-{{page}}.html\n琥珀::http://m.fonts.net.cn/fonts-zh/tag-hupo-{{page}}.html\n细黑::http://m.fonts.net.cn/fonts-zh/tag-xihei-{{page}}.html\n古印::http://m.fonts.net.cn/fonts-zh/tag-guyin-{{page}}.html\n空心::http://m.fonts.net.cn/fonts-zh/tag-kongxin-{{page}}.html\n姚体::http://m.fonts.net.cn/fonts-zh/tag-yaoti-{{page}}.html\n颜楷::http://m.fonts.net.cn/fonts-zh/tag-yankai-{{page}}.html\n海报::http://m.fonts.net.cn/fonts-zh/tag-haibao-{{page}}.html\n明体::http://m.fonts.net.cn/fonts-zh/tag-mingti-{{page}}.html\n瘦金体::http://m.fonts.net.cn/fonts-zh/tag-shoujin-{{page}}.html\n方正字体::http://m.fonts.net.cn/fonts-zh/tag-fangzheng-{{page}}.html\n汉仪字体::http://m.fonts.net.cn/fonts-zh/tag-hanyi-{{page}}.html\n腾祥字体::http://m.fonts.net.cn/fonts-zh/tag-tengxiang-{{page}}.html\nAa字体::http://m.fonts.net.cn/fonts-zh/tag-Aafont-{{page}}.html\n新蒂字体::http://m.fonts.net.cn/fonts-zh/tag-xindi-{{page}}.html\n锐字家族::http://m.fonts.net.cn/fonts-zh/tag-ruizi-{{page}}.html\n字心坊::http://m.fonts.net.cn/fonts-zh/tag-zixinfang-{{page}}.html\n造字工房::http://m.fonts.net.cn/fonts-zh/tag-zaozigongfang-{{page}}.html\n书法家字体::http://m.fonts.net.cn/fonts-zh/tag-shufajia-{{page}}.html\n上首造字::http://m.fonts.net.cn/fonts-zh/tag-shangshou-{{page}}.html\n逐浪字体::http://m.fonts.net.cn/fonts-zh/tag-zhulang-{{page}}.html\n苏新诗字体::http://m.fonts.net.cn/fonts-zh/tag-suxinshi-{{page}}.html\n经典字体::http://m.fonts.net.cn/fonts-zh/tag-jingdian-{{page}}.html\n创艺字体::http://m.fonts.net.cn/fonts-zh/tag-chuangyi-{{page}}.html\n中国龙字体::http://m.fonts.net.cn/fonts-zh/tag-zhongguolong-{{page}}.html\n金桥字体::http://m.fonts.net.cn/fonts-zh/tag-jinqiao-{{page}}.html\n金梅字体::http://m.fonts.net.cn/fonts-zh/tag-jinmei-{{page}}.html\n华康字体::http://m.fonts.net.cn/fonts-zh/tag-huakang-{{page}}.html\n汉鼎字体::http://m.fonts.net.cn/fonts-zh/tag-handing-{{page}}.html\n迷你字体::http://m.fonts.net.cn/fonts-zh/tag-mini-{{page}}.html\n华文字体::http://m.fonts.net.cn/fonts-zh/tag-huawen-{{page}}.html\n超世纪字体::http://m.fonts.net.cn/fonts-zh/tag-chaoshiji-{{page}}.html\n长城字体::http://m.fonts.net.cn/fonts-zh/tag-changcheng-{{page}}.html\n博洋字体::http://m.fonts.net.cn/fonts-zh/tag-boyangshouxie-{{page}}.html\n书体坊字体::http://m.fonts.net.cn/fonts-zh/tag-shufafang-{{page}}.html\n微软字体::http://m.fonts.net.cn/fonts-zh/tag-weiruan-{{page}}.html\n三极字库::http://m.fonts.net.cn/fonts-zh/tag-sanji-{{page}}.html\n蒙纳字体::http://m.fonts.net.cn/fonts-zh/tag-mengna-{{page}}.html\n文鼎字体::http://m.fonts.net.cn/fonts-zh/tag-wending-{{page}}.html\n全真字体::http://m.fonts.net.cn/fonts-zh/tag-quanzhen-{{page}}.html\n超研泽字体::http://m.fonts.net.cn/fonts-zh/tag-chaoyanze-{{page}}.html\n张海山字体::http://m.fonts.net.cn/fonts-zh/tag-zhanghaishan-{{page}}.html\n文泉驿字体::http://m.fonts.net.cn/fonts-zh/tag-wenquanyi-{{page}}.html\n文悦字体::http://m.fonts.net.cn/fonts-zh/tag-wenyue-{{page}}.html\n思源字体::http://m.fonts.net.cn/fonts-zh/tag-siyuan-{{page}}.html\n田氏字体::http://m.fonts.net.cn/fonts-zh/tag-tianshi-{{page}}.html\n北师大字体::http://m.fonts.net.cn/fonts-zh/tag-beishida-{{page}}.html\n雅坊字体::http://m.fonts.net.cn/fonts-zh/tag-yafang-{{page}}.html\n富汉通字体::http://m.fonts.net.cn/fonts-zh/tag-fuhantong-{{page}}.html\n四通利方字体::http://m.fonts.net.cn/fonts-zh/tag-sitonglifang-{{page}}.html\n白舟字体::http://m.fonts.net.cn/fonts-zh/tag-baizhou-{{page}}.html\n昆仑字体::http://m.fonts.net.cn/fonts-zh/tag-kunlun-{{page}}.html\n王汉宗字体::http://m.fonts.net.cn/fonts-zh/tag-wanghanzong-{{page}}.html\n日系中文::http://m.fonts.net.cn/fonts-zh/tag-rixi-{{page}}.html\n吉页字体::http://m.fonts.net.cn/fonts-zh/tag-jiyeziku-{{page}}.html\n刻石录字体::http://m.fonts.net.cn/fonts-zh/tag-keshilu-{{page}}.html\n喜鹊造字::http://m.fonts.net.cn/fonts-zh/tag-xique-{{page}}.html\n汉标字库::http://m.fonts.net.cn/fonts-zh/tag-hanbiao-{{page}}.html\n其它字体::http://m.fonts.net.cn/fonts-zh/tag-qitaziku-{{page}}.html\nA::http://m.fonts.net.cn/fonts-zh/letter-a-{{page}}.html\nB::http://m.fonts.net.cn/fonts-zh/letter-b-{{page}}.html\nC::http://m.fonts.net.cn/fonts-zh/letter-c-{{page}}.html\nD::http://m.fonts.net.cn/fonts-zh/letter-d-{{page}}.html\nE::http://m.fonts.net.cn/fonts-zh/letter-e-{{page}}.html\nF::http://m.fonts.net.cn/fonts-zh/letter-f-{{page}}.html\nG::http://m.fonts.net.cn/fonts-zh/letter-g-{{page}}.html\nH::http://m.fonts.net.cn/fonts-zh/letter-h-{{page}}.html\nI::http://m.fonts.net.cn/fonts-zh/letter-i-{{page}}.html\nJ::http://m.fonts.net.cn/fonts-zh/letter-j-{{page}}.html\nK::http://m.fonts.net.cn/fonts-zh/letter-k-{{page}}.html\nL::http://m.fonts.net.cn/fonts-zh/letter-l-{{page}}.html\nM::http://m.fonts.net.cn/fonts-zh/letter-m-{{page}}.html\nN::http://m.fonts.net.cn/fonts-zh/letter-n-{{page}}.html\nO::http://m.fonts.net.cn/fonts-zh/letter-o-{{page}}.html\nP::http://m.fonts.net.cn/fonts-zh/letter-p-{{page}}.html\nQ::http://m.fonts.net.cn/fonts-zh/letter-q-{{page}}.html\nR::http://m.fonts.net.cn/fonts-zh/letter-r-{{page}}.html\nS::http://m.fonts.net.cn/fonts-zh/letter-s-{{page}}.html\nT::http://m.fonts.net.cn/fonts-zh/letter-t-{{page}}.html\nU::http://m.fonts.net.cn/fonts-zh/letter-u-{{page}}.html\nV::http://m.fonts.net.cn/fonts-zh/letter-v-{{page}}.html\nW::http://m.fonts.net.cn/fonts-zh/letter-w-{{page}}.html\nX::http://m.fonts.net.cn/fonts-zh/letter-x-{{page}}.html\nY::http://m.fonts.net.cn/fonts-zh/letter-y-{{page}}.html\nZ::http://m.fonts.net.cn/fonts-zh/letter-z-{{page}}.html\n其它::http://m.fonts.net.cn/fonts-zh/letter-else-{{page}}.html",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://img04.sogoucdn.com/v2/thumb/crop/xy/ai/x/0/y/0/w/200/h/200/iw/70/ih/70/t/0/ir/3/retype_exclude_gif/ext/auto/q/75?t=2&appid=200965&url=http%3A%2F%2Fimg03.sogoucdn.com%2Fapp%2Fa%2F10010016%2F070598442766ca845f6017ac4eb5a4bc&sign=dd6435fdfdc768ce466aa7bf27ec525c",
    "sourceName": "字体天下",
    "sourceUrl": "http://m.fonts.net.cn/fonts-zh/tag-lishu-1.html",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4998,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930046964,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "让你告别浏览器。\n所有数据cookies来保存\n你可以添加，删除，修改任意链接",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "",
    "sourceName": "新浏览器",
    "sourceUrl": "https://dalaoha.github.io/box",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 4999,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "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/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5000,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.four columns box-item-fixed-index a-relative",
    "ruleContent": "link@all&&.row!0:1@all",
    "ruleImage": ".mockup-thumb@style##.*\\(|\\);",
    "ruleLink": "a.0@href",
    "ruleNextPage": "page",
    "rulePubDate": ".d-btn@text",
    "ruleTitle": "a@title",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "简体::https://font.sucai999.com/search/0_1_{{page}}.html\n繁体::https://font.sucai999.com/search/0_2_{{page}}.html",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "",
    "sourceName": "字体下载",
    "sourceUrl": "https://font.sucai999.com",
    "type": 0
  },
  {
    "articleStyle": 1,
    "cacheFirst": false,
    "customOrder": 5001,
    "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、结束❗️",
    "preload": false,
    "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",
    "showWebLog": false,
    "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写源工具整合",
    "type": 0,
    "variableComment": "◎分类1◎\n【序号或链接】《列表名称》@图片链接@『简介』\n------------------\n◎分类2◎\n【序号或链接】《列表名称》@图片链接@『简介』\n❗️0、2、开始❗️\n\n❗️0、2、结束❗️"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5002,
    "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": 1765913226067,
    "loadWithBaseUrl": true,
    "loginUrl": "https://linux.do",
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceComment": "邀请链接：https://linux.do/invites/NHbqjjBANN\n或者直接搜索“邀请链接”",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://pic.imgdb.cn/item/65ede9ae9f345e8d0351a2e1.png",
    "sourceName": "linux.do",
    "sourceUrl": "https://linux.do",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://metaso.cn/favicon.ico",
    "sourceName": "秘塔搜索",
    "sourceUrl": "https://metaso.cn/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5004,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930124061,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://www.fuzhugou.com/View/images/logo.fuzhugou.com.png",
    "sourceName": "辅助狗子",
    "sourceUrl": "https://www.xibuluo.com/?fzg",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5005,
    "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      btn.innerHTML = `<button type=\"button\" id='open-yuedu-bookshelf' style=\"z-index: 9999999999;position: fixed;bottom: 7%;right: 7%;background-color: rgb(255, 153, 0);border-radius: 2px;border: 1px solid rgb(255, 153, 0);color: #fff;font-size:${window.innerWidth/80}vw;font-weight: 400;padding: ${window.innerWidth/400}vw ${window.innerWidth/150}vw;\" onclick=\"window.open('legado://import/addToBookshelf?src=${encodeURIComponent(window.location.href)}','_blank')\">加入书架</button>`;\n      document.body.appendChild(btn);\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(() => {\twindow.open(`legado://import/addToBookshelf?src=${encodeURIComponent(inner)}`, '_blank')\n            }, 600);\n          }\n          break;\n        }\n      }\n    };\nfunction onTouchEnd(evt) {\n      if (time) {\n        clearTimeout(time);\n        time = undefined;\n      }\n\tfor (const el of evt.path) {\n        if (el.tagName === \"A\") {\n          if (el.href === 'javascript:void(0)') {\n            const herf = herfs.get(el);\n            if (herf) {\n              el.setAttribute('href', herf)\n            }\n          }\n          break;\n        }\n    }\n}\n\nfunction addListener(els){\nArray.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    });\nnum= els.length;\n}\n\nfunction reAdd(){\n\t\tconst els = document.getElementsByTagName('a');\n\tif(els.length>num)addListener(els);\n}\n\nreAdd();\n\nconst observer = new ResizeObserver(reAdd);\nobserver.observe(document.body);",
    "lastUpdateTime": 1765921623863,
    "loadWithBaseUrl": false,
    "preload": false,
    "ruleArticles": "@js:\nvar labels = `${source.getVariable()||\"\"}`.trim();\n[\n{\n\t\"name\":\"夸克搜索\",\n\t\"url\":\"https://quark.sm.cn/s?q=小说排行\"\n},\n{\n\t\"name\":\"搜狗搜索\",\n\t\"url\":\"https://wap.sogou.com/web/searchList.jsp?keyword=小说排行\"\n},\n{\n\t\"name\":\"头条搜索\",\n\t\"url\":\"https://so.toutiao.com/search/?keyword=小说排行\"\n},\n{\n\t\"name\":\"360搜索\",\n\t\"url\":\"https://m.so.com/s?q=小说排行\"\n},\n{\n\t\"name\":\"必应搜索\",\n\t\"url\":\"https://cn.bing.com/search?q=小说排行\"\n},\n{\n\t\"name\":\"百度搜索\",\n\t\"url\":\"https://www.baidu.com/s?wd=小说排行\"\n}\n].concat(labels?labels.split(/\\s+/).map(it=>{\n\tconst href=it.split(\"::\");\n\treturn {\"name\":href[0],\"url\":href[1]}\n\t}):(source.setVariable(`谷歌搜索(VPN)\t::https://www.google.com/search?q=\n谷歌镜像1::https://shitu.paodekuaiweixinqun.com/webhp?safe=off&hl=zh-CN&q=\n谷歌镜像2::https://images.hk.53yu.com/search?safe=off&hl=zh-CN&q=`),[{\n\t\"name\":\"谷歌搜索(VPN)\",\n\t\"url\":\"https://www.google.com/search?q=\"\n},\n{\n\t\"name\":\"谷歌镜像1\",\n\t\"url\":\"https://shitu.paodekuaiweixinqun.com/webhp?safe=off&hl=zh-CN&q=\"\n},\n{\n\t\"name\":\"谷歌镜像2\",\n\t\"url\":\"https://images.hk.53yu.com/search?safe=off&hl=zh-CN&q=\"\n}]))",
    "ruleLink": "url",
    "ruleTitle": "name",
    "showWebLog": false,
    "singleUrl": false,
    "sourceComment": "以如下格式设置源变量，可在列表后追加任意多个书签和搜索引擎\n\n夸克搜索::https://quark.sm.cn/s?q=小说排行",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://5b0988e595225.cdn.sohucs.com/q_70,c_zoom,w_640/images/20180118/22271e695f5f48a89795e2b9858f5008.jpeg",
    "sourceName": "聚合搜索",
    "sourceUrl": "https://www.baidu.com",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "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",
    "showWebLog": false,
    "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": "自用源合集",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5007,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 0,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://s11.ax1x.com/2024/02/13/pF8aDmQ.png",
    "sourceName": "电子木鱼",
    "sourceUrl": "https://muyv.saop.cc/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5008,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765914233960,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/•/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('•');\nfor(i in list){\ntext=list[i].match(/《(.*?)》/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)《/)[1]\njson.push({text:text,index:index})\n}\n}else{\nlist=baseUrl.replace(/http.*?wd=/,'');\ntext=list.match(/《(.*?)》/)[1];\nindex=list.match(/^(\\d+、\\d+、)/)?list.match(/^(\\d+、\\d+、)/)[1]:list.match(/^(.*?)《/)[1];\njson.push({text:text,index:index})\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleDescription": "❗️0、0、开始❗️\n<script>jiexi=[//蓝奏云解析\n\n//格式：[\"解析名称\",\"请求链接\",\"链接参数\",\"密码参数\",\"下载参数\"],\n\n[\"默认解析\",\"https://apis.jxcxin.cn/api/lanzou\",\"url\",\"pwd\",\"type=down\"],\n[\"备用解析\",\"https://tool.bitefu.net/lanzou\",\"url\",\"pwd\",\"type=down\"],\n\n]</script>\n\n\n<br>\n<div class=\"url\">\n<p>资源链接/蓝奏云文件链接</p>\n<textarea rows=\"4\" placeholder=\"蓝奏云链接可以直接拼接密码\n格式：链接#密码\n例子：http://qiqi.lanzoub.com/b09tbdngh#666\" oninput=\"geturl()\"></textarea>\n</div>\n\n<br>\n<div class=\"pwd\">\n<p>如果是蓝奏云链接，请输入密码</p>\n<textarea placeholder=\"在上面写了/没有密码 留空即可\" oninput=\"geturl()\"></textarea>\n</div>\n\n<br>\n<div>\n<p>蓝奏解析接口</p>\n<div class=\"port\"></div>\n<hr>\n</div>\n\n\n\n<br>\n<div>\n<p>资源导入格式</p>\n<div class=\"path\">\n\t\t<button onclick=\"xuan(this,1)\" value=\"auto\"><b>自动识别</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"bookSource\"><b>书源导入</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"rssSource\"><b>订阅导入</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"replaceRule\"><b>替换净化</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"textTocRule\"><b>TXT目录</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"httpTTS\"><b>TTS朗读</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"theme\"><b>阅读主题</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"readConfig\"><b>阅读排版</b></button>\n</div>\n<hr>\n</div>\n\n<br>\n<div>\n<p>导入阅读</p>\n<textarea rows=\"6\" placeholder=\"请输入资源链接\" readonly></textarea>\n<div>\n\t\t<button onclick=\"copy(2)\"><b>复制链接</b></button>\n\t\t<button onclick=\"importu()\" style=\"float:right\"><b>导入阅读</b></button>\n</div>\n<hr>\n</div>\n\n\n\n<iframe hidden></iframe>\n<script>\n\n\n//选中标签\n$=(rule)=>document.querySelectorAll(rule);\n\n\n//获取textarea\ntextarea=(index)=>$('textarea')[index];\n\n\n//删除active\nomit=(A)=>Array.from(A,a=>a.className='');\n\n\n//复制链接\nfunction copy(index){\n\t\ttextarea(index).select();//选中文本\n\t\tdocument.execCommand('copy');//复制\n\t}\n\n\n//切换选择\nxuan=(item,type)=>{\n\t\ttype=type==0?'port':'path'\n\t\tbtn=$(`.${type} button.active`)\n\t\tif(item.value==btn[0].value)return;\n\t\tomit(btn)\n\t\titem.className='active'\n\t\tgeturl()\n\t}\n\n\n//获取value\ngetu=(type,index)=>{\n\t\tu=String($('.'+type+' button.active')[0].value).split(',')[index].trim();\n\nif(type=='path')u=`legado://import/${u}?src=`;\n\t\treturn u\n}\n\n\n//获取url\ngeturl=()=>{\n\t\turl = String(textarea(0).value).trim()\nif(/^\\s*$/.test(url))return textarea(2).value='';\n\nif(url.match(/lanzou/)){//蓝奏云url拼接\ntry{\n\t\tif(url.match(/#.+/)){\n\t\t\t\tpwd = url.split('#')[1]\n\t\t\t\turl = url.split('#')[0]\n\t\t\t}\n\t\telse{\n\t\t\t\tpwd = String(textarea(1).value).trim()\n\t\t\t}\n\t}\ncatch(err){pwd=''}\nurl = getu('port',0)+\n\t'?'+getu('port',1)+'='+url.replace('/tp/','/').replace(/[\\?#].*/g,'')+\n\t'&'+getu('port',2)+'='+pwd+\n\t'&'+getu('port',3);\n}\nreturn textarea(2).value=url=getu('path',0)+url\n}\n\n\n//导入阅读\nimportu=()=>{\n\t\tgeturl();\n\t\tif(!url)return;\n\t\treturn $('iframe')[0].src = url;\n\t}\n\n\n//初始化\n(()=>{\n\n//格式化解析\n\t\t$('.port')[0].innerHTML = '\\n\\t\\t'+jiexi.map(x=>`<button onclick=\"xuan(this,0)\" value=\"${x[1]},${x[2]},${x[3]},${x[4]}\"><b>${x[0]}</b></button>`).join('\\n\\t\\t')+'\\n'\n\n\t\t$('.port button')[0].className='active'\n\t\t$('.path button')[0].className='active'\n\t\treturn geturl()\n\t})()\n</script>\n<style>\n*{\n\tz-index:0;\n\tmargin:0;\n\tpadding:0;\n\twidth:100%;\n\theight:auto;\n}\n.port,.path{\n\toverflow-x:auto;\n\toverflow-y:hidden;\n\twhite-space:nowrap;\n}\nbutton{\n\twidth:30%;\n\tmargin:1.25%;\n\tpadding:5px;\n\toutline:none;\n\tborder-radius:8px;\n\tfont-size:0.7rem;\n\ttext-overflow:ellipsis;\n  overflow:hidden;\n\tposition:sticky;\n}\nbutton.active{\n\tz-index:1;\n\tcolor:#166188;\n\tleft:0;right:0;\n}\n</style>\n❗️0、0、结束❗️\n\n\n\n——————分割线————————\n{{}}\n<js>\nindex='{{$.index}}';\nif(index.match(/\\d+、\\d+、/)){\nreg=eval('/❗️'+index+'开始❗️[\\\\s\\\\S]+?❗️'+index+'结束❗️/g');\nreg2=eval('/❗️'+index+'..❗️/g');\nresult=result.match(reg)?result.match(reg)[0]:'<br/>'\nresult.replace(reg2,'')}else{result=''}\n</js>",
    "ruleImage": "http://pp.myapp.com/ma_icon/0/icon_54155739_1657017481/256{{}}",
    "ruleLink": "$.id@js:\nurl=`{{$.url}}`\nif(result)url+=`/tp/{{$.id}}`;\nString(url).replace(/^蓝奏链接(.+com).*\\/(.+)/,'$1/tp/$2').replace(/^..导入/,'')",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "帮你导入::http://www.baidu.com?wd=0、0、《帮你导入》◎◎",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "http://pp.myapp.com/ma_icon/0/icon_54155739_1657017481/256",
    "sourceName": "帮你导入",
    "sourceUrl": "帮你导入",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "http://sy.legado1.top/sy.php/cfd2b470188567c06d8fb75bd7454de7.png",
    "sourceName": "坚果云盘",
    "sourceUrl": "https://www.jianguoyun.com/#/home",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5010,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765915005807,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/•/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('•');\nfor(i in list){\nhref=list[i].match(/【(.*?)】/)[1];\ntext=list[i].match(/《(.*?)》/)[1];\nintro=list[i].match(/◎(.*?)◎/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)【/)[1]\njson.push({text:text,src:href,intro:intro,index:index})\n}\n}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",
    "showWebLog": false,
    "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}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5011,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930204641,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/•/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('•');\nfor(i in list){\ntext=list[i].match(/《(.*?)》/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)《/)[1]\njson.push({text:text,index:index})\n}\n}else{\nlist=baseUrl.replace(/http.*?wd=/,'');\ntext=list.match(/《(.*?)》/)[1];\nindex=list.match(/^(\\d+、\\d+、)/)?list.match(/^(\\d+、\\d+、)/)[1]:list.match(/^(.*?)《/)[1];\njson.push({text:text,index:index})\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleContent": "@js:\nif(baseUrl.match(/(?:\\d+\\.){3}\\d+:\\d+/)){\nbutton='<button id=\"bian\" onclick=\"javascript:document.getElementById(\\'rules\\').style.display=\\'inline\\'\";document.getElementById(\\'outbox\\').style.display=\\'none\\'\">编辑</button><button  id=\"tiao\" onclick=\"javascript:document.getElementById(\\'rules\\').style.display=\\'none\\'\";document.getElementById(\\'outbox\\').style.display=\\'inline\\'\">调试</button>';\n\n\nhtml=button+String(java.getString(\"@@tag.script@html&&tag.body@children@html\",false)).replace(/rows=\"1\"/g,'rows=\"3\"').replace(/textarea(?!\\srow)/g,'textarea rows=\"30\" readonly').replace(/<\\/div>\\s+?<div>/g,'</div><p></p><div>').replace(/class=\"rules\"/,'class=\"rules\" id=\"rules\"').replace(/outbox\"/,'outbox\" id=\"outbox\"')}else{html=java.getString(\"@@all\",false)}\nresult=String(html).replace(/极光/,'影音猎手')",
    "ruleDescription": "❗️0、1、开始❗️\n<style>\nbutton,input{\nmargin:5px\n}\n#basic-addon1,#replaceSpan1{\nbackground-color:Azure;\npadding:3px\n}\ntextarea{\nbackground-color:GhostWhite;\nborder:0px solid black\n}\n</style>\n<script>function $(selector) { return document.querySelector(selector); }\nfunction $$(selector) { return document.querySelectorAll(selector); }</script>\n<a href=\"https://www.sojson.com/rehtml\">html转义</a>&nbsp;&nbsp;<a href=\"http://www.jsons.cn/urlencode/\">URL解码</a>\n<textarea rows=\"10\" id=\"input\" onfocus=\"di()\" placeholder=\"格式化发现请输入带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",
    "showWebLog": false,
    "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}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5012,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930242489,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://qinggongju.com/wp-content/uploads/2020/12/hdImg_fbfcbb35309ba72a78da9be4a6b45f9415985150181.png",
    "sourceName": "全轻工具",
    "sourceUrl": "https://qinggongju.com/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5013,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765921361494,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://qn11.tool.lu/201711/08/002819v0Gaydtvy2P4y03G_144x144.png",
    "sourceName": "在线工具",
    "sourceUrl": "https://tool.lu/",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5014,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930253089,
    "loadWithBaseUrl": true,
    "preload": false,
    "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",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5015,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930270696,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "@js:\njson=[];\nif(baseUrl.match(/•/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('•');\nfor(i in list){\nhref=list[i].match(/【(.*?)】/)[1];\ntext=list[i].match(/《(.*?)》/)[1];\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",
    "showWebLog": false,
    "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[分支丨在线工具]",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5016,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765916234900,
    "loadWithBaseUrl": true,
    "preload": false,
    "showWebLog": false,
    "singleUrl": true,
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://qn13.tool.lu/201710/15/103319bpfNNx3ST9v8UKtO_56x56.png",
    "sourceName": "在线工具",
    "sourceUrl": "https://tool.lu",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "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",
    "showWebLog": false,
    "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}",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5018,
    "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": 1765930300365,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\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//如果是txt文件则跳转到“一键导入”的页面，非txt文件则跳转到“下载”的页面。\nString($.name).match(/\\.txt/)? \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\n<center>\n<br><br><br>\n<h3>${$.name}</h3>\n</center>\n　　注：点◎下载文件◎，底栏会弹出信息，<br>\n　　再点信息右面的“下载”，才会开始下载。<br>\n　　文件下载默认存放在 根目录/Download/<br>\n<br>\n　　注：书源仅txt文件可一键导入。<br>\n　　zip文件需下载到本地解压。<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=\"${src}${$.url}\">◎ 一键导入 ◎　</a>\n<br><br><br>\n<a href=\"${$.url}\">◎ 下载文件 ◎　　　　　　　　　</a>\n</b>\n\n</h5>\n<br><br><br><br><br><br><br>\n<p>　上传者说：${$.describe}</p>\n\n<br>↓资源链接，点击复制<textarea id=\"copy\" onclick=\"copy()\">${$.url}</textarea>\n\n<br><br><center>\nrssSource by.Thomas.　　 迷迭轻改&收集整理<br><br>\n资源取自网络，仅作参考试用，请24小时内删除<br></center>\n\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\n<center>\n<br><br><br><br><br>\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\n<br><br><center>\nrssSource by.Thomas.　　 迷迭轻改&收集整理<br><br>\n资源取自网络，仅作参考试用，请24小时内删除<br></center>\n\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//蝶图标 简写补全\nbaseUrl.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\"",
    "ruleLink": "@js:\n//key=0;\nkey=String(source.getVariable());\nkey=key.match(/^[12]/)? key:\"0\";\njava.log('❤️❤️❤️key: '+ key);\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",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "📙阅读3.0::https://kunfei.lanzoui.com/b0f810h4b##【https://i.loli.net/2021/06/23/S7rvWRZtPIq34MJ.png】\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📚关耳/书源::https://wwa.lanzoux.com/b05fs5ccd##guaner【/sy.png】\n📚请李入梦::https://nanbei81.lanzoub.com/b02j13bna##【/sy.png】\n📚云兔搜书::https://yuntuxs.lanzoui.com/b02p6xrze##4vi9【/sy.png】\n📚8u15/书源::https://ls125781003.lanzoum.com/b066gazed##8u15\n📚烏雲/淨化::https://www.lanzoux.com/b0bw8jwoh##【http://image.coolapk.com/apk_logo/2021/0428/20/1619612378_5275-284468-o_1f4c6n8v01tnjakb1minb1q1m16r-uid-3191309@256x256.png】\n✏️七十六时/字体::https://lsy-again.lanzouf.com/b01dlfjej##5tfp【http://pp.myapp.com/ma_icon/0/icon_53955697_1597330741/256】\nTTS.Server::https://jing332.lanzouw.com/b09ho81qb##1234\n\n4⃣️小说软件::https://423down.lanzouv.com/b0f1cdr9i##【https://img2.baidu.com/it/u=2176863467,1140264399&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=501】\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📙阅读pro/不似苏::https://busisu.lanzoub.com/s/yuedupro##777【https://i.loli.net/2021/06/23/S7rvWRZtPIq34MJ.png】",
    "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标题规则。这样可以把蓝奏云非txt文件剔除出去。\n$.name_all<js>result.match(/\\.txt/)? result:\"\"</js>\n\n",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://agit.ai/butterfly/yd/raw/branch/yd/pic/0yellow.jpg",
    "sourceName": "蓝奏云盘",
    "sourceUrl": "https://www.lanzoux.com#b1",
    "style": "a{text-decoration:none}\nimg{width:20%;height:auto;border-radius:50%}\ntextarea{width:100%;border-radius:5px}",
    "type": 0,
    "variableComment": "✱✱请输入数字，选择解析线路：\n0  jxcxin线路；\n1  baihe线路。\n不选则默认为 0.jxcxin线路。\n（此线路频繁解析会封ip）"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "contentBlacklist": "https://lupic.cdn.bcebos.com/,\nhttps://cpro.baidu.com/,\nhttps://eclick.baidu.com/,\nhttps://sofire.baidu.com/,\nhttps://analytics.woozooo.com/,\nhttps://statics.woozooo.com/",
    "customOrder": 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,
    "preload": false,
    "ruleArticles": "@js:\ntry{\n\t$=JSON.parse(src).text\n\tif($==\"no file\")$=[];\n\t}\ncatch(err){\n\n\n//网站整合\nif(baseUrl.match(/^https?\\:\\/\\/(www.)?baidu.com\\?wd=\\s*/)){\n\t\t$=[]\n\t\tbaseUrl.replace(/^.*?wd=\\s*/,'').\n\t\tsplit('♞♞').map($$=>$.push({\n\t\t\t\tname_all: $$.match(/《(.*?)》/)[1],\n\t\t\t\ttime: $$.match(/◎(.*?)◎/)[1].replace(/■/,'■■■■■■■■■■■■■■■■■■'),\n\t\t\t\turi: $$.match(/【(.*?)】/)[1],\n\t\t\t\turl: $$.match(/^(.*?)【/)[1]\n\t\t\t}));\n\t}\n\n\n//蓝奏云\nelse{\n\n//蓝奏云非分组链接\nif(String(java.getString('text.举报文件@href')).length){$=[{\n\t\tname_all: String(java.getString('class.md@textNodes')),\n\t\ticon: String(java.getString('class.md@textNodes')).replace(/.*\\./,''),\n\t\tsize: String(java.getString('class.mtt@text')).replace(/\\( /,'').replace(/ \\)/,''),\n\t\ttime: String(java.getString('class.mf@textNodes')).replace(/.*\\n/,''),\n\t\turi: baseUrl.replace(/^(.+com).*\\/(.+)$/,'$2'),\n\t\turl: baseUrl.replace(/^(.+com).*\\/(.+)$/,'$1/tp/$2')\n\t}]}\n\n\n//蓝奏云分组链接\nelse{\nmat = baseUrl.match(/^(.*?com)[^##]*\\/(.+)$/)\n\t\turl = mat[1]\n\t\turi = mat[2]\nfunction $(reg){\n\t\treturn uri.match(reg)?true:false\n\t}\n\n\n//get【pwd】(链接提取码)\npwd = \n\n//蓝奏云密码\n$(/##.*/)?  baseUrl.match(/##(.*?)(【|\\,|$)/)[1]:\n\n//‼️Thomas密码。密码写这里也行，列表链接那里不写。\n//‼️$(/b03p9ftpc/)?  \"read\":\n\n\"\";\n\n\n//get 【body】\neval(src.match(/var pgs;([\\s\\S]*?pgs.+;)/)[1])\neval('body=\"\";$='+src.match(/data :([\\s\\S]*?\\})/)[1])\nfor(key in $)body+=key+'='+$[key]+'&';\nbody=String(body).replace(/&$/,'')\n\n\n//补全【url】\nurl += `/filemoreajax.php,{\"method\":\"POST\",\"body\":\"${body}\",\"uri\":\"${uri}\"}`\n\n\n//ajax\n$=JSON.parse(java.ajax(baseUrl=url));\n$=$.text!=0?$.text:\n\n//密码错误提示\n[{name_all:$.info,time:uri+$.info,url:uri+$.info}];\n}\n\n}}\njava.put('url', baseUrl)\n$.map($=>JSON.stringify($))",
    "ruleDescription": "❗️0、0、开始❗️\n111\n❗️0、0、结束❗️❗️0、1、开始❗️\n<title>{{$.name_all}}</title><style>\ninput{\n\toutline:0;\n\ttext-indent:10px;\n\tborder:1px solid #000;\n\twidth:60%;\n\theight:35px;\n\tposition:absolute;\n\ttop:35%;\n\tleft:10%;\n\tborder-top-left-radius:10px;\n\tborder-bottom-left-radius:10px\n}\nbutton{\n\toutline:none;\n\twidth:20%;\n\theight:35px;\n\tposition:absolute;\n\ttop:35%;\n\tright:10%;\n\tborder-top-right-radius:10px;\n\tborder-bottom-right-radius:10px\n}\nh3{text-align:center}\n</style>\n\n\n<br><h3>帮你导入</h3>\n<input type=\"text\" id=\"src\" placeholder=\"输入正确的资源链接...\">\n<button onclick=\"clickme()\">一键导入</button>\n<iframe id=\"iframe\" src=\"\" hidden></iframe>\n\n<script>\nfunction clickme(){\n\tdocument.getElementById('iframe').src = \"legado://import/auto?src=\"+document.getElementById('src').value\n}\n</script>\n❗️0、1、结束❗️\n\n{{}}@js:\nurl=String(java.getString('$.url'))\n\n//一键导入html\nif(url.match(/^📥/)){\nurl=String(url).replace('📥','')\n\nurl=url.match(/^legado\\:\\/\\//)?url:'legado://import/auto?src='+url\n\n\nresult=`<title>{{$.name_all}}</title>\n<iframe src=\"${url}\" hidden></iframe>\n<br><h3>{{$.name_all}}</h3>\n<h5>导入不成功？多导入几次试试</h5>\n<h6><b>\n↓资源链接，点击复制\n<a href=\"${url}\">一键导入</a>\n<textarea id=\"copy\" onclick=\"copy()\">${String(url).replace(/legado.*?src=/,'')}</textarea>\n{{$.time}}\n</b></h6><style>\na{float:right;text-decoration:none}\nh3,h5{text-align:center}\nh6{margin:0 2;position:sticky;top:30%}\ntextarea{width:100%;border-radius:5px}\n</style><script>\nfunction copy(){\n\tdocument.getElementById('copy').select()\n\tdocument.execCommand('copy')\n\talert(\"复制成功\")\n}\n</script>`}\n\n//自定义html\nelse if(url.match(/\\d+、\\d+、/)){\nreg=new RegExp('❗️'+url+'开始❗️\\\\s*([\\\\s\\\\S]+?)\\\\s*❗️'+url+'结束❗️')\n\n//默认禁用放大缩小按钮\nresult=result.match(reg)?'<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">'+result.match(reg)[1]:'<br>未找到对应html'\n}else{result=''}",
    "ruleImage": "$.uri\n@js:\n\nu=String(java.get('url'));\nuri = String(result) || (u.match(/uri\":\"([^\"]+)/)?u.match(/uri\":\"([^\"]+)/)[1]:\"\");\n\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",
    "showWebLog": false,
    "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",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "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,
    "preload": false,
    "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",
    "showWebLog": false,
    "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}",
    "type": 0,
    "variableComment": "✱✱请输入数字，选择解析线路：\n0  jxcxin线路；\n1  baihe线路。\n不选则默认为 0.jxcxin线路。"
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5021,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": false,
    "lastUpdateTime": 1765930316746,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "<js>\njson=[];\nif(baseUrl.match(/•/)){\nlist=baseUrl.replace(/http.*?wd=\\s*/,'').split('•');\nfor(i in list){\ntext=list[i].match(/《(.*?)》/)[1];\nindex=list[i].match(/^(\\d+、\\d+、)/)?list[i].match(/^(\\d+、\\d+、)/)[1]:list[i].match(/^(.*?)《/)[1]\njson.push({text:text,index:index})\n}\n}else{\nlist=baseUrl.replace(/http.*?wd=/,'');\ntext=list.match(/《(.*?)》/)[1];\nindex=list.match(/^(\\d+、\\d+、)/)?list.match(/^(\\d+、\\d+、)/)[1]:list.match(/^(.*?)《/)[1];\njson.push({text:text,index:index})\n}\nJSON.stringify(json)</js>\n$.[*]",
    "ruleDescription": "❗️0、0、开始❗️\n<script>jiexi=[//蓝奏云解析\n\n//格式：[\"解析名称\",\"请求链接\",\"链接参数\",\"密码参数\",\"下载参数\"],\n\n[\"默认解析\",\"https://apis.jxcxin.cn/api/lanzou\",\"url\",\"pwd\",\"type=down\"],\n[\"备用解析\",\"https://tool.bitefu.net/lanzou\",\"url\",\"pwd\",\"type=down\"],\n[\"备用解析\",\"https://lanzou.baihe.gay\",\"url\",\"pwd\",\"type=down\"],\n\n]</script>\n\n\n<br>\n<div class=\"url\">\n<p>资源链接/蓝奏云文件链接</p>\n<textarea rows=\"4\" placeholder=\"蓝奏云链接可以直接拼接密码\n格式：链接#密码\n例子：http://qiqi.lanzoub.com/b09tbdngh#666\" oninput=\"geturl()\"></textarea>\n</div>\n\n<br>\n<div class=\"pwd\">\n<p>如果是蓝奏云链接，请输入密码</p>\n<textarea placeholder=\"在上面写了/没有密码 留空即可\" oninput=\"geturl()\"></textarea>\n</div>\n\n<br>\n<div>\n<p>蓝奏解析接口</p>\n<div class=\"port\"></div>\n<hr>\n</div>\n\n\n\n<br>\n<div>\n<p>资源导入格式</p>\n<div class=\"path\">\n\t\t<button onclick=\"xuan(this,1)\" value=\"auto\"><b>自动识别</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"bookSource\"><b>书源导入</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"rssSource\"><b>订阅导入</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"replaceRule\"><b>替换净化</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"textTocRule\"><b>TXT目录</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"httpTTS\"><b>TTS朗读</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"theme\"><b>阅读主题</b></button>\n\t\t<button onclick=\"xuan(this,1)\" value=\"readConfig\"><b>阅读排版</b></button>\n</div>\n<hr>\n</div>\n\n<br>\n<div>\n<p>导入阅读</p>\n<textarea rows=\"6\" placeholder=\"请输入资源链接\" readonly></textarea>\n<div>\n\t\t<button onclick=\"copy(2)\"><b>复制链接</b></button>\n\t\t<button onclick=\"importu()\" style=\"float:right\"><b>导入阅读</b></button>\n</div>\n<hr>\n</div>\n\n\n\n<iframe hidden></iframe>\n<script>\n\n\n//选中标签\n$=(rule)=>document.querySelectorAll(rule);\n\n\n//获取textarea\ntextarea=(index)=>$('textarea')[index];\n\n\n//删除active\nomit=(A)=>Array.from(A,a=>a.className='');\n\n\n//复制链接\nfunction copy(index){\n\t\ttextarea(index).select();//选中文本\n\t\tdocument.execCommand('copy');//复制\n\t}\n\n\n//切换选择\nxuan=(item,type)=>{\n\t\ttype=type==0?'port':'path'\n\t\tbtn=$(`.${type} button.active`)\n\t\tif(item.value==btn[0].value)return;\n\t\tomit(btn)\n\t\titem.className='active'\n\t\tgeturl()\n\t}\n\n\n//获取value\ngetu=(type,index)=>{\n\t\tu=String($('.'+type+' button.active')[0].value).split(',')[index].trim();\n\nif(type=='path')u=`legado://import/${u}?src=`;\n\t\treturn u\n}\n\n\n//获取url\ngeturl=()=>{\n\t\turl = String(textarea(0).value).trim()\nif(/^\\s*$/.test(url))return textarea(2).value='';\n\nif(url.match(/lanzou/)){//蓝奏云url拼接\ntry{\n\t\tif(url.match(/#.+/)){\n\t\t\t\tpwd = url.split('#')[1]\n\t\t\t\turl = url.split('#')[0]\n\t\t\t}\n\t\telse{\n\t\t\t\tpwd = String(textarea(1).value).trim()\n\t\t\t}\n\t}\ncatch(err){pwd=''}\nurl = getu('port',0)+\n\t'?'+getu('port',1)+'='+url.replace('/tp/','/').replace(/[\\?#].*/g,'')+\n\t'&'+getu('port',2)+'='+pwd+\n\t'&'+getu('port',3);\n}\nreturn textarea(2).value=url=getu('path',0)+url\n}\n\n\n//导入阅读\nimportu=()=>{\n\t\tgeturl();\n\t\tif(!url)return;\n\t\treturn $('iframe')[0].src = url;\n\t}\n\n\n//初始化\n(()=>{\n\n//格式化解析\n\t\t$('.port')[0].innerHTML = '\\n\\t\\t'+jiexi.map(x=>`<button onclick=\"xuan(this,0)\" value=\"${x[1]},${x[2]},${x[3]},${x[4]}\"><b>${x[0]}</b></button>`).join('\\n\\t\\t')+'\\n'\n\n\t\t$('.port button')[0].className='active'\n\t\t$('.path button')[0].className='active'\n\t\treturn geturl()\n\t})()\n</script>\n<style>\n*{\n\tz-index:0;\n\tmargin:0;\n\tpadding:0;\n\twidth:100%;\n\theight:auto;\n}\n.port,.path{\n\toverflow-x:auto;\n\toverflow-y:hidden;\n\twhite-space:nowrap;\n}\nbutton{\n\twidth:30%;\n\tmargin:1.25%;\n\tpadding:5px;\n\toutline:none;\n\tborder-radius:8px;\n\tfont-size:0.7rem;\n\ttext-overflow:ellipsis;\n  overflow:hidden;\n\tposition:sticky;\n}\nbutton.active{\n\tz-index:1;\n\tcolor:#166188;\n\tleft:0;right:0;\n}\n</style>\n❗️0、0、结束❗️\n\n\n\n——————分割线————————\n{{}}\n<js>\nindex='{{$.index}}';\nif(index.match(/\\d+、\\d+、/)){\nreg=eval('/❗️'+index+'开始❗️[\\\\s\\\\S]+?❗️'+index+'结束❗️/g');\nreg2=eval('/❗️'+index+'..❗️/g');\nresult=result.match(reg)?result.match(reg)[0]:'<br/>'\nresult.replace(reg2,'')}else{result=''}\n</js>",
    "ruleImage": "http://pp.myapp.com/ma_icon/0/icon_54155739_1657017481/256{{}}",
    "ruleLink": "$.id@js:\nurl=`{{$.url}}`\nif(result)url+=`/tp/{{$.id}}`;\nString(url).replace(/^蓝奏链接(.+com).*\\/(.+)/,'$1/tp/$2').replace(/^..导入/,'')",
    "rulePubDate": "$.intro",
    "ruleTitle": "$.text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "帮你导入::http://www.baidu.com?wd=0、0、《帮你导入v2(beta)》◎◎",
    "sourceComment": "帮你导入v2(beta)\n",
    "sourceGroup": "工具 订阅",
    "sourceIcon": "https://img2.baidu.com/it/u=3550540229,3606721659&fm=253&fmt=auto&app=138&f=JPEG?w=492&h=500",
    "sourceName": "直链生成",
    "sourceUrl": "帮你导入v2Thomas",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5022,
    "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": 1765912438087,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.container@class.col-md-3 col-xs-6",
    "ruleContent": "all## <script type=\"text/javascript\">var cnzz_protocol = [\\s\\S]+?</script> ",
    "ruleImage": "img@src",
    "ruleLink": "tag.a.0@href",
    "ruleNextPage": "class.pager@tag.a.-1@href",
    "rulePubDate": "class.table@span@text##\\n##·",
    "ruleTitle": "class.card-caption@text",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "搜索用::https://www.yikm.net/search?name=拳皇\n\n\nGBA游戏::https://www.yikm.net/nes?page=1&tag=&e=2\n街机游戏::https://www.yikm.net/nes?page=1&tag=9\nH5游戏::https://www.yikm.net/nes?page=1&tag=1\n动作冒险::https://www.yikm.net/nes?page=1&tag=2\n小游戏::https://www.yikm.net/nes?page=1&tag=8\n飞行射击::https://www.yikm.net/nes?page=1&tag=3\n格斗::https://www.yikm.net/nes?page=1&tag=4\n棋牌::https://www.yikm.net/nes?page=1&tag=5\n射击::https://www.yikm.net/nes?page=1&tag=6\n运动比赛::https://www.yikm.net/nes?page=1&tag=7\n角色扮演::https://www.yikm.net/nes?page=1&tag=10",
    "sourceGroup": "游戏 订阅",
    "sourceIcon": "http://srvcn.xbext.com/touch_icons/96x96/mobile.h5_games.png",
    "sourceName": "在线游戏",
    "sourceUrl": "https://www.yikm.net/nes?tag=9",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5023,
    "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}",
    "lastUpdateTime": 1765916217694,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "class.container@class.col-md-3 col-xs-6",
    "ruleContent": "all## <script type=\"text/javascript\">var cnzz_protocol = [\\s\\S]+?</script> ",
    "ruleImage": "img@src",
    "ruleLink": "h4@tag.a.0@href",
    "ruleNextPage": "text.下一页@href",
    "rulePubDate": "class.table@span@text##\\n##•",
    "ruleTitle": "h4@tag.a@text",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "游戏 订阅",
    "sourceIcon": "http://srvcn.xbext.com/touch_icons/96x96/mobile.h5_games.png",
    "sourceName": "在线游戏",
    "sourceUrl": "https://www.yikm.net",
    "type": 0
  },
  {
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 5024,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "lastUpdateTime": 1765931206672,
    "loadWithBaseUrl": true,
    "preload": false,
    "ruleArticles": "data",
    "ruleImage": "pic",
    "ruleLink": "playlink",
    "ruleNextPage": "page",
    "rulePubDate": "{{$.category}}😊{{$.html5introduce}}",
    "ruleTitle": "title",
    "showWebLog": false,
    "singleUrl": false,
    "sourceGroup": "游戏 订阅",
    "sourceIcon": "",
    "sourceName": "四三九九",
    "sourceUrl": "http://h.4399.com/data/android_s148_{{page}}.js?t=1650965242",
    "type": 0
  }
]