浏览器功能定制4:qutebrowser userscipts机制及自带readability

userscipts

qutebrowser 浏览支持用户编写脚本进行扩展,即 userscipts 机制。

基于 userscipts,用户可以为浏览器添加新功能,比如:

如何理解 userscipts 呢?

首先它就是普通的 Linux 脚本,以 shebang 作为脚本的开头,由操作系统来执行。因此脚本可以是任何语言,比如 Shell、Python、JavaScript……主要看你的操作系统都装了啥,与 qutebrowser 无关。

用户需要事先将 userscipts 放入家目录下的指定目录中。在 qutebrowser 中,通过 :spawn --userscript 进行调用。

在调用时,qutebrowser 会将网页相关信息存储到一系列环境变量中,脚本在执行的时候,通过环境变量访问到网页上下文,比如 URL、HTML 代码。

当脚本执行完成后,可以通过 QUTE_FIFO 环境变量向 qutebrowser 回发命令,命令的格式与 qutebrowser 的命令系统一致,后者会按照命令进行执行。

readability userscipts

这里以 readability 为例,详细介绍 userscipts,并介绍如何在 qutebrowser,基于 readability userscipts 实现阅读模式。

qutebrowser 的源码仓库中自带一些 userscipts,readability 便是其中之一,位于 misc\userscripts\ 目录下。

准确来说,有两个脚本:

其中,涉及到 3 个 readability 库:

综合来看,mozilla/readability 是最香的,能获得 Firefox 同款。python-readability 看起来是 JavaScript 向 Python 的一个 Port。

不论是 Python 版,还是 JavaScript 版,readability userscipts 的实现思路都是一样的:

首先会预置一段 HTML 模板,用于最最精简的网页结构。

脚本通过 QUTE_HTML 环境变量获取到 HTML 代码,将 HTML 传入 Readability 库。

调用 Readability 的解析方法,它将根据其内部算法,执行正文提取工作。

之后,将提取后的正文,拼入 HTML 模板中,得到一篇阅读模式文章,写入到一个临时文件中。

最后,通过 QUTE_FIFO 命令回传一个 open 命令,告诉 qutebrowser 打开这个本地文件即可。

其中,还有一个 qutejs Node 库,方便调用 qutebrowser 命令。

网络资源


本文作者:Maeiee

本文链接:浏览器功能定制4:qutebrowser userscipts机制及自带readability

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!