聚合搜索
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": ""
}