聚合搜索

https://www.baidu.com

分享者: no-mystery (13204)发布时间: 3天前

最新聚合搜索v5,可长按“加入书架”触发高级功能(高级功能需要通用发现配合)
二维码导入
{
    "articleStyle": 0,
    "concurrentRate": "",
    "customOrder": -25036,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\": \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/81.0.4044.138 Safari\/537.36\"}",
    "injectJs": "const href = window.location.href\nif (\/^https:\\\/\\\/www.yousuu.com\/.test(href)) {\n  const list = [\n      {\n        name: \"夸克搜索\",\n        url: \"https:\/\/quark.sm.cn\/s?q=\",\n      },\n      {\n        name: \"搜狗搜索\",\n        url: \"https:\/\/wap.sogou.com\/web\/searchList.jsp?keyword=\",\n      },\n      {\n        name: \"头条搜索\",\n        url: \"https:\/\/so.toutiao.com\/search\/?keyword=\",\n      },\n      {\n        name: \"360搜索\",\n        url: \"https:\/\/m.so.com\/s?q=\",\n      },\n      {\n        name: \"必应搜索\",\n        url: \"https:\/\/cn.bing.com\/search?q=\",\n      },\n      {\n        name: \"百度搜索\",\n        url: \"https:\/\/www.baidu.com\/s?wd=\",\n      },\n    ],\n    autoBtn = document.createElement(\"div\"),\n    widthIsMax = window.innerWidth > window.innerHeight\n  let size,\n    unit = 1500\n\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:${\n    4 * size\n  }${unit};font-weight: 400;padding: ${size}${unit} ${size}${unit};`\n\n  const pubBtn = (btns, innerText) => {\n    let text = \"\"\n    for (const { name, url } of btns) {\n      text += `<button type=\"button\" style=\"margin:5px 10px;${pubStyle}\" onclick=\"window.open('${url}${innerText}', '_blank')\">${name}<\/button>`\n    }\n    return text\n  }\n\n  const showAuto = name => {\n    autoBtn.innerHTML = `<div id='auto-yuedu-bookshelf' style=\"z-index: 9999999999;position: fixed;background-color:#ffffff;bottom:0;left: 0;width:100%;\">\n        <p style=\"line-height:1;font-size:${\n          4 * size\n        }${unit};margin:5px;color: rgb(255, 153, 0);background-color:#ffffff;width:100%;text-align: center;\">${name}<\/p>\n        <div style=\"background-color:#f0f0f0;border-top:1px rgb(255, 153, 0) solid;display:flex;flex-wrap: wrap;\">${pubBtn(\n          list,\n          name\n        )}\n        <\/div>\n    <\/div>`\n  }\n\n  if (\/\\\/(book|name)\\\/\/.test(href)) {\n    showAuto(document.getElementsByTagName(\"h1\")[0].innerText)\n  } else {\n    function onBtnStart2() {\n      autoBtn.style.display = \"none\"\n    }\n    autoBtn.style.display = \"none\"\n    autoBtn.addEventListener(\"touchstart\", onBtnStart2)\n    autoBtn.addEventListener(\"mousedown\", onBtnStart2)\n\n    let time, isLong\n    function genListener(item) {\n      const innerText = item.innerText\n      item.setAttribute(\"add-yuedu-bookshelf\", \"add-yuedu-bookshelf\")\n      const target = item.target || \"_blank\"\n      item.removeAttribute(\"target\")\n      const href = item.href\n      item.removeAttribute(\"href\")\n\n      function onBtnStart(evt) {\n        time = setTimeout(() => {\n          isLong = true\n          showAuto(\n            innerText.startsWith(\"《\") ? innerText.slice(1, -1) : innerText\n          )\n          autoBtn.style.display = \"block\"\n        }, 600)\n      }\n      function onBtnEnd(evt) {\n        if (isLong) {\n          isLong = undefined\n        } else {\n          clearTimeout(time)\n          time = undefined\n          window.open(href, target)\n        }\n      }\n      item.addEventListener(\"touchstart\", onBtnStart)\n      item.addEventListener(\"touchend\", onBtnEnd)\n      item.addEventListener(\"touchcancel\", onBtnEnd)\n      item.addEventListener(\"mousedown\", onBtnStart)\n      item.addEventListener(\"mouseup\", onBtnEnd)\n    }\n    let num = 0\n    function addListener(els) {\n      Array.from(els, item => {\n        if (\n          !item.children.length &&\n          item.getAttribute(\"add-yuedu-bookshelf\") !== \"add-yuedu-bookshelf\" &&\n          \/^(https:\\\/\\\/www.yousuu.com)?\\\/(book|name)\\\/\/.test(item.href)\n        )\n          genListener(item)\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)\n  }\n  document.body.appendChild(autoBtn)\n} else {\n  if (\n    \/^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(\n      href\n    )\n  ) {\n    if (!document.getElementById(\"open-yuedu-bookshelf\")) {\n      let time,\n        isLong,\n        num = 0\n      function genListener(item) {\n        item.setAttribute(\"add-yuedu-bookshelf\", \"add-yuedu-bookshelf\")\n        const target = item.target || \"_blank\"\n        item.removeAttribute(\"target\")\n        const href = item.href\n        item.removeAttribute(\"href\")\n\n        function onTouchStart(evt) {\n          time = setTimeout(() => {\n            isLong = true\n            window.open(\n              `legado:\/\/import\/addToBookshelf?src=${encodeURIComponent(href)}`,\n              \"_blank\"\n            )\n          }, 600)\n        }\n        function onTouchEnd(evt) {\n          if (isLong) {\n            isLong = undefined\n          } else {\n            clearTimeout(time)\n            time = undefined\n            window.open(href, target)\n          }\n        }\n\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      function addListener(els) {\n        Array.from(els, item => {\n          if (\n            item.getAttribute(\"add-yuedu-bookshelf\") !==\n              \"add-yuedu-bookshelf\" &&\n            item.innerText &&\n            item.href &&\n            !\/^#|^javascript:\/.test(item.href)\n          )\n            genListener(item)\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)\n    }\n  } else {\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,\n      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:${\n      4 * size\n    }${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(\n          btns[i]\n        )},{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      {\n        目录识别: window.location.href,\n        尾页目录: `${window.location.href}?录`,\n        单页识别: `${window.location.href}?单`,\n        尾页正文: `${window.location.href}?[${window.location.href}]单`,\n      }\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(\n          `legado:\/\/import\/addToBookshelf?src=${encodeURIComponent(\n            window.location.href\n          )}`,\n          \"_blank\"\n        )\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",
    "jsLib": "",
    "lastUpdateTime": 0,
    "loadWithBaseUrl": false,
    "ruleArticles": "@js:\nlet labels = `${source.getVariable()}`.trim();\nlet list = [\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];\n\nlabels?list.concat(labels.split(\/\\s+\/).map(it=>{\n\tconst href=it.split(\"::\");\n\treturn {\"name\":href[0],\"url\":href[1]}\n})):list",
    "ruleContent": "",
    "ruleDescription": "",
    "ruleImage": "",
    "ruleLink": "url",
    "ruleNextPage": "",
    "rulePubDate": "",
    "ruleTitle": "name",
    "singleUrl": false,
    "sortUrl": "",
    "sourceComment": "通用发现v5\n\n以如下格式设置源变量,可在列表后追加任意多个书签和搜索引擎\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",
    "style": "",
    "variableComment": ""
}
广告