日常使用最多的软件,一个是Emacs,另一个是浏览器-Chrome。目前能通过 Web 服务的来访问的,已经很少下载单独的软件了。
日常使用浏览器时,还是有一些不太方便的地方:
- 没有 Emacs 快捷键方便
- 一些功能例如词典、翻译,在 Emacs 里已经有了,不想在 Chrome 里用 js 再来一遍。
因此想到通过 Emacs 来控制日常的浏览器,访问其中的 Web 页面。
因此有了这个
它依赖
- Chrome
- python
- websocket-bridge
- drissionpage 一个控制 Chrome 的 Python 库,优点是代码简单,缺点是不像其他的库支持的浏览器那么多。
目前,实现了简单的语法来,异步的和 Chrome 通信,因此不会卡住 Emacs, 能够比较简单的实现支持访问某个页面 例如:
(auto-browser-run-linearly
`((auto-browser-get-tab ,url)
(auto-browser-anki-play-audio)
(auto-browser-rewrite-image-to-base64)
(auto-browser-locate-element ,selector)
(auto-browser-get-element "html")
(auto-browser-anki-show)))
auto-browser-run-linearly 通过链式回调来运行若干方法,对 Emacs 而言都是异步的:
- 跳转到 URL
- 播放页面的 audio 元素
- 把页面的图片转为base64
- 定位到 selector 指定的元素
- 获得该元素的 html
- 展示 anki 页面
优点是:
- 不需要考虑登录、cookie, 等等一系列的问题,这些全是你自己在日常的 Chrome 里自己登录。
- 不会开启多余的 Chrome 实例,直接复用现有的日常 Chrome (ps: 启动时需要指定 remote-debugging-port)
缺点:
- 强依赖 Python.
- 虽然不卡Emacs,但性能目前还不是特别好(页面加载出来了,不一定会立即反应到 Emacs 上)。
当前我实现了一些我常用的 web 页面:
- anki-web 用来复习 anki, 效果感觉不错。不过,日常还是在手机上复习的频率更高。
- miniflux 一个 web 的 RSS 阅读器。这样就可以在手机、pc、Emacs 上同步看文章了。
- web-ai 之前低价买的一个国产套皮 ai 聚合网站,效果凑合,好在自称终生有效。它没有提供 API。这样就可以在 Emacs 内访问了。
目前代码、文档都还比较粗糙。后续在日常使用中在继续打磨。感兴趣的小伙伴可以看看。
并且,还有哪些大家日常使用的 web 服务,觉得不错,但是希望能够通过 Emacs 访问的,大家可以提提意见。