【🔍搜索酱】 - 又一个多功能搜索引擎切换与聚合搜索脚本,效率工具

showtips简化模式添加了。
由两部分组成。
例如:

showTips:https://api.exchangerate.host/convert?from=USD&to=CNY&amount=1 <i>%s USD = {json.result*%s} RMB</i>

首先从 api.exchangerate.host/convert?from=USD&to=CNY&amount=1 抓取汇率
然后给一个 <i>%s USD = {json.result*%s} RMB</i> 。搜索酱就会自动解析为 json 并抓取 json.result 然后乘以选中的美元数额,最后显示在 tips 里。

还添加了以下功能:

  • 显示引擎名 功能,开启后会在引擎图标下方显示引擎名。

  • 连续抓取,当页内搜索时使用抓取工具时,按住ctrl移动鼠标就能连续抓取元素并复制

大佬,发现最近 2 个版本会导致浏览器内存急剧增加,网页加载迟缓。禁用搜索酱会恢复正常。

我用的是 Firefox 和 Tampermonkey。不知道和新增的 showtips 功能有没有关系。

showTips没有规则触发就只是死代码,不应当影响性能。你能否测试一下,你本地最后一个没有问题的版本是哪一个?

我在本地测试了一下,未开启搜索酱时内存占用433MB,开启搜索酱后内存占用439MB。我的引擎数量有431个。我怀疑是你卡在某个图标加载上了。

测试页面:标普500ETF-Vanguard(VOO)股票股价_股价行情_财报_数据报告 - 雪球

观察目标:观察从刷新网页开始到分时图出现的时间,主观感受。

观察结果:最近的几个版本加载时间都比较长,我现在回退到 1.6.6.54.23 版本,有所改善,但仍然比禁用搜索酱后的加载时间长。也许这是脚本的工作原理导致的必然结果?

更主要的影响是内存占用,还是以 1.6.6.54.23 版本为例。启用搜索酱后刷新测试页面,内存占用会从 7GB 飙升到 13GB,然后最终回到 6.5GB 到 7GB 。禁用搜索酱后刷新测试页面,内存占用则波动不大。

SearchJumperOff

SearchJumperOn

系統分配内存不一定等于使用内存。

我用上面的雪球网站测试了一下,firefox112.0.2 tm 4.18.1 搜索酱版本 1.6.6.80.64,禁用其他所有扩展。引擎规则还是一样的431个。
取 about:processes 内显示的数据

未开启搜索酱时 Firefox 占用内存 262 MB,扩展总占用 72MB。
开启搜索酱之后 Firefox 占用内存 270 MB,扩展总占用 80MB。

加载缓慢估计是图标和 FontAwesome 库的问题。你试试在“导出设置”页面将 FontAwesome CDN 地址换成其他的。然后将加载缓慢的引擎图标改成本地图片。或者直接开启“缓存图标”功能

“缓存图标”的选项我一直是打开的。

FontAwesome CDN 地址我没有自定义,但我有安装 https://www.localcdn.org/ 这个插件,不知道会不会对搜索酱生效?或者产生干扰?稍后我会把它禁用试试。

自从禁用搜索酱后,浏览器一下子变得非常顺滑,原来卡顿、内存飙升的症状都消失了。

也可能是因为和你安装的某个扩展冲突了吧,因为就算是因为图标加载,搜索酱最新版也只会加载当前分组的图标,不可能造成卡顿。
我自己也在不同环境下测试过,都没有你这么夸张,一下子占用掉6个G的内存。
或者你方便的话,在设置页长按导出完整配置,发我邮箱 mailto:[email protected] 给我调试看看

另外,缓存图标开启之后,如果没有完成,每次新开页面都会继续缓存。如果你在墙内并且完全导入了我的自用配置,那页面大概率是会长期处于并发加载状态的。

我也怀疑是和某个扩展冲突了,但当我只保留这3个扩展的时候,问题仍然存在。我没有继续禁用另外两个扩展,因为我的 Tab 很多,担心会有不可预料的后果。

另一方面,一旦禁用搜索酱,问题就解决。我已将完整配置发给您了。

新增了三个评分 showTips,效果如下:

加了长度为50,有效期一天的缓存,但要用的话还是建议自行编辑“URL正则匹配当前引擎”,只在固定站点使用

这个 showTips 可以取代一些划词翻译的插件了,比如下面的代码就可以调用有道的查词结果。只是简单示例一下,还可以美化一下样式。

showTips:https://dict.youdao.com/result?word=%s&lang=en
{.trans}

另外,内存占用的问题也解决了,感谢大佬!

新增了页内搜索的拼音扩展,效果如下

image

大佬,这个功能怎么开启?

安装这个扩展就能生效,因为引入了拼音库,所以不想放进主代码里。

  • 新增了百度汉语查字,效果如下:
    image

  • 新增了维基百科词卡,效果如下:
    image

  • 关键词分隔参数新增了全部打开功能,例如 %s[all] 代表以换行符分隔后批量调用对应的引擎。再如 https://%s[all|@].replace(/^https?:\/\//,"") 代表以@分隔后分别删除开头的http://然后在开头添加https://后批量打开。如果剪贴板复制了很多网址,可以用这个规则批量打开。

  • 新增了页内高亮指定链接的功能,效果如下:
    image

  • 新增了页内高亮预置分组的功能,配合上一项可以实现在任何网站根据用户 ID 一键屏蔽指定用户的功能,步骤如下:

    1. 在设置页新建分组,例如分组名 weibo,分组内容 /123456/li (l 代表筛选链接,i 代表不区分大小写,123456 即为你要屏蔽的用户 ID)
    2. 新增高亮搜索词,搜索词为@weibo,隐藏父级元素,根据层级调整父级深度,保存高亮规则。
    3. 在链接处理分组 新增引擎,内容为 find.addto(weibo):%t.replace(/.*u\//,""),代表将指定链接中u/后面的 ID 提取出来添加进 weibo 分组。添加根据 url 正则匹配:u/\d+,代表仅在链接包含u/xxxxx的用户名链接上唤出时该引擎才出现。
    4. 然后就可以一键屏蔽了,对着讨厌的用户长按右键,点击你新增的屏蔽,用户就被屏蔽啦。
  • 新增了all页面的指定引擎调用,例如https://hoothin.github.io/SearchJumper/all.html?kw=搜索酱&engine=百度。便于通过外部全局划词软件(例如 utools / popclip)调用搜索酱当中的某个引擎搜索

  • 新增了立即搜索所有标签页,默认关闭。开启后页内查找时,如果 pin 住高亮词,所有打开的标签页都会检测该高亮词,如果有结果,标签页将会闪烁。

页内高亮规则支持单独导入导出,也能通过 webdav 同步。
*因为没有测试场景以及测试时间无,这些新功能可能会有 bug。

多了一个高质量用户,所以新增了很多功能,在此记录一下

  • 工具栏/磁贴/提示文本/拖拽圆盘分别缩放
  • 磁贴每行引擎数设置
    image
  • 页内查找的单词模式,开启后会自动按空格分割并且只搜索完整单词
    image
  • 跨元素搜索
    image
  • 替换元素搜索
    image
  • 磁贴引擎数不足时自动回缩
    image
  • 密钥功能,用于保存一些apikey,在分享引擎的时候去隐私
  • 批量验证引擎有效性之后的批量删除功能
  • 新写了一个英文拼写扩展,通过莱文斯坦距离比对来模糊搜索英文单词,这样页内搜索时就可以覆盖ing、ed之类的时态以及一些拼写错误了
    image
  • 新增了高亮定位栏的最小化功能,点击后会暂时清除页内高亮词并且隐藏定位栏,再次点击可恢复
    image
  • 新增了扩展切换功能,如果有特殊查找需求(例如按某种特殊语言的分隔符全字查找),可以自行编写扩展,搜索酱将自动调用。并且支持即时切换
    image
  • 新增了配置页镜像页支持,克隆我的 github 并且架设配置页之后可以设为默认配置页,这样如果访问不了 github.io 或者哪天我弃坑了还能继续使用 :joy:。
2 Likes

感谢大佬持续更新。

我有一个需求是在 Hacker News 的详情页高亮出现的链接,我的高亮规则如下:

    "/^https://news\\.ycombinator\\.com/item/i": {
        "sep": "@",
        "words": [
            "/https?:\\/\\/[^ ]+/"
        ]
    },

以 Show HN: YouTube banned adblockers so I built an extension to skip their ads | Hacker News 为例,该规则会高亮不该高亮的部分比如某些单词如下图:

同时又没有高亮应该高亮的链接,如下图:

请大佬指点一下问题出在哪里,或是否有更好的办法来实现我的需求,谢谢!

多谢反馈,这是个bug,已经修复了。
至于高亮链接,因为[^ ]会跨元素搜索到下一个元素的不为空格的字符,所以可以用/https?:\/\/[^\s]+/来替代

谢谢大佬指点。

再请教一个自定义分隔符的问题,根据提示:

自定义分隔符:$c 加分隔符,例如 $c| search | jumper,默认空格作为分隔符

我输入以下文本:

$c| search test| jumper

但似乎空格仍然作为分隔符将 search 和 test 分隔开了。

如果开启了单词模式,空格会作为第二分隔符。点击一下A关闭单词模式就行