UP | HOME

▼ 本文更新于 [2025-08-30 六 21:10]

在电纸书上稍后阅读长文

可能出于对自己阅读兴趣的自信,又或者真的需要大量读小说/专业书籍/盗版or正版电子书,总之你购买了一个电纸书(E-Ink阅读器)。

问题在于,日常生活、网上冲浪时,大量信息并不是一份独立、完善的「书籍」,而是一篇篇网页文章,散落在互联网上。电纸书针对「书籍阅读」开发,难以应对这种松散场景。因此,我们需要一些开源软件的帮助:稍后阅读软件「Readeck」和一个阅读软件「KOReader」。

1. 搭建Readeck

首先,我们需要把散落的文章收集汇总到一处。

为了方便手机收集文章,最好是在一个有公网IP/域名的设备上运行Readeck。

假设现在已经有了一个IP地址为 114.514.191.180 的Linux服务器,只需要按官方手册指南下载二进制安装即可:

首先创建文件夹:

mkdir -p readeck-install

cd readeck-install

从这里下载最新的分发文件,记得把链接替换一下:

wget -O readeck https://codeberg.org/readeck/readeck/releases/download/0.19.2/readeck-0.19.2-linux-amd64

chmod a+x readeck

由于readeck默认不是后台模式,用 screen 新建一个进程页面:

screen -S readeck

./readeck serve

然后可以按 Ctrl+c 数次退出,并编辑 config.toml ,修改下面部分:

[server]
host = 127.0.0.1
port = 8000


[server]
host = 0.0.0.0
port = 8000

并把服务器防火墙的 8000 端口放行。

2. 配置readeck

访问服务器对应端口(这里是 http://114.514.191.180:8000 ),会要求你进行初次用户注册。

注册之后,我们可以参考少数派的这篇文章设置浏览器扩展、iOS快捷方式。

对应的OPDS域名应为 http://114.514.191.180:8000/opds

如果想一次性把所有收藏的网页下载为一份电子书,需要创建收藏集。具体路径为 http://114.514.191.180:8000/bookmarks/collections ,在里面输入筛选条件。

3. 配置KOReader

由于我用的安卓电纸书,直接从GitHub下载apk安装就行。

为了通过OPDS浏览Readeck,请参考KOReader Wiki的这个章节

注意,根据这个commit,Readeck已经移除了「应用密码」功能。所以在通过KOReader访问Readeck的OPDS时,下方的密码需要填入Readeck生成的API密钥。

附:Readeck对API密钥的说明

作为密码
或者,您可以将此令牌用作 HTTP 基本身份验证的密码。

例如,如果应用程序仅接受用户名和密码,您可以将此令牌作为密码提供。 用户名被忽略,可以是任何值,包括空值。

可以一条条查看,也可以通过收藏集合并下载为一个文件。

4. 一键清空书签的elisp代码

Readeck并未提供批量选择功能,因此写了一段小elisp代码来执行相关功能,需要安装 plz 包:

(defun my/delete-all-readeck ()
  (interactive)
  (let* ((api-token "用生成的API替换这里")
         (server-url "用readeck服务器链接替换这里,带http、端口,不带斜杠,如http://114.514.191.98:8000")
         (bookmarks (plz 'get (concat server-url "/api/bookmarks")
                     :headers `(("User-Agent" . "tomoemami/emacs")
                                ("Authorization" . (concat "Bearer " api-token))
                                ("Accept" . "application/json"))
                     :as #'json-read)))
    (dolist (bookmark (seq-into bookmarks 'list))
      (when-let* ((id (alist-get 'id bookmark)))
        (call-process-shell-command (concat "curl -X DELETE '" server-url "/api/bookmarks/" id "' -H 'accept: application/json' -H 'Authorization: Bearer " api-token "' -H 'User-Agent: tomoemami/emacs'") nil 0)))
    (message "Readeck bookmarks DELETED")))

© Published by Emacs 31.0.50 (Org mode 9.8-pre) | RSS 评论