Kindle 阅读统计工具:量化你的阅读生活,每一分钟都算数

技术交流天穹何以高 发布于 23 小时前 7 次阅读 2062 字 预计阅读时间: 9 分钟


引言

我用Kindle已经有相当一段时间了,但是一直有个遗憾就是Kindle并不能详细记录你的阅读时长,于是就一直想要开发一个Kindle上的阅读插件。

在百度贴吧中找到有人做过原型插件: https://github.com/KangbingZhao/kykky

但是这个插件只实现了查看今天,昨天,本周和当月的阅读时长,感觉功能有些过于简陋:

1767965125 Be03947Ca89Eae8675F173D5B976634C

于是下定决心自己做一个功能更强大,数据更全面的阅读时长统计插件:

原生性能:基于 GTK 编写,C 语言驱动,无后台常驻,零额外功耗。

深度数据:支持日历视图、时段详情,精准记录每一本电子书的陪伴时间。

极小占用:支持日志压缩算法,数年的阅读数据仅占几 KB 空间。

一键分享:支持生成精美统计图表,让你的阅读成果跃然屏上。

仓库链接如下:

https://github.com/TQHYG/kykky

https://github.com/TQHYG/kindle-reading-gtk

安装教程与功能介绍

首先你需要给你的Kindle越狱,参见 https://bookfere.com/post/406.html

本插件依赖于KUAL插件启动器,你需要安装KUAL:https://bookfere.com/post/311.html#p_2

下载插件目录基本文件:https://github.com/TQHYG/kykky/releases/latest

把这些文件解压到Kindle插件目录中,看起来像这样:

1767967128 Image

下载插件主程序文件:https://github.com/TQHYG/kindle-reading-gtk/releases

  • 固件版本低于 5.16.3 请下载 kindle-reading-gtk_kindlepw2
  • 固件版本高于 5.16.3 请下载 kindle-reading-gtk_kindlehf

下载完毕后把文件重命名为 kindle-reading-gtk 并放到插件目录的bin子目录中,看起来像这样:

1767967285 Image

随后从电脑上弹出Kindle,打开KUAL后应该能看到阅读统计插件的按钮,点击后会打开主界面,先点击更多,启用阅读统计:

1767967468 Image

可能需要重启一次Kindle才能使更改完全生效。启用后插件是利用系统的日志功能记录阅读数据,不会驻留在后台运行,因此不用担心资源占用与耗电的问题。

大部分功能都是所见即所得,附上几张截图:

1767967697 Efcd5Adbc2Aea5D370134D14D626A65E 720
1767967714 Cbfee1A47B6Cde68A7C4D9677Afece59 720
1767967728 F7Aca68A9B94C47B3Abe370A04153E71 720
1767967767 Aac449Cec4F1Af15De645E85120544Cd
1767967804 4Cc363E30Ecba3D85Ca9982D04Cdf1E2

另外,点击右上角的X就能退出应用,在日历界面点击日期就可以跳转到那一天的时段详情。

数据备份的话只需要备份插件目录下的log文件夹就可以完整备份你的阅读数据了。

同时也提供了一个网站允许你更方便的分享数据:

https://reading.tqhyg.net

在插件的分享功能里扫码也是打开这个网站,方便你迅速的分享最近的阅读数据。

如果使用中遇到什么Bug或者想要加什么新功能都可以提issue:https://github.com/TQHYG/kindle-reading-gtk/issues

插件开发小记

基本原理

Kindle系统的窗口管理器会记录每个时间点打开的是什么窗口,打开了多少时间,通过修改系统的 syslog-ng 设置将阅读窗口打开的相关日志记录到插件目录下,这些日志看起来像这样:

1767968454 Image

我们从里面提取出时间戳和持续时间就能知道阅读时长了。

关于开发环境的搭建

这部分是参考Kindle Modding Community上的信息搭建的,其实出乎预料的简单:
https://kindlemodding.org/kindle-dev/gtk-tutorial/prerequisites.html

以下是中文复述:


环境准备 (Prerequisites)

操作系统要求
  • 您需要运行 Linux 操作系统(或 Windows 下的 WSL/msys2)。
  • MacOS 未经测试,但理论上可能可行。
设备要求
  • 您需要一台已越狱的 Kindle。
  • 您需要明确了解 Kindle 当前运行的固件版本。
开发工具要求
  • 您需要为您的设备编译专门的交叉编译工具链 (Toolchain),具体细节见下文。
  • 您的系统中需要安装以下软件包以支持工具链编译:
    • git, ncurses, gperf, help2man, bison, texinfo, flex, gawk, unzip, wget
  • 安装 SDK 需要:curlsed
  • 针对本项目(Kindle Reading GTK)额外需要:
    • meson, gtk2 (包含开发头文件), 基础编译工具链。

安装必要软件包

对于 Arch Linux
# 用于工具链编译
sudo pacman -S base-devel curl git gperf help2man unzip wget

# 用于 SDK 安装
sudo pacman -S curl sed libarchive nettle

# 用于本项目开发
sudo pacman -S meson gtk2
对于 Debian/Ubuntu
# 用于工具链编译
sudo apt-get install build-essential autoconf automake bison flex gawk libtool libtool-bin libncurses-dev curl file git gperf help2man texinfo unzip wget

# 用于 SDK 安装
sudo apt-get install curl sed libarchive-dev nettle-dev

# 用于本项目开发
sudo apt-get install meson gtk2.0 libgtk2.0-dev

编译工具链 (Building The Toolchain)

提示: 如果您不想自己手动编译工具链,或者在编译过程中遇到困难,可以使用现成的预编译版本 (Pre-built Release)

克隆工具链仓库:

git clone --recursive --depth=1 https://github.com/koreader/koxtoolchain.git

为您的设备编译工具链:

cd koxtoolchain
chmod +x ./gen-tc.sh
./gen-tc.sh <target>

请根据下表将 <target> 替换为对应的目标:

代号支持的Kindle型号目标
kindleKindle 2, DX, DXg, 3[not supported by this tutorial]
kindle5Kindle 4, Touch, PW1[not supported by this tutorial]
kindlepw2Kindle PW2 & everything since on FW <5.16.3kindlepw2
kindlehfAny Kindle on FW >= 5.16.3kindlehf

如果您想支持多种 Kindle,可以多次运行 ./gen-tc.sh <other_target>,新的工具链将自动添加到您的 ~/x-tools 目录下。

在大多数 PC 上,每个目标的编译通常需要约 30 分钟。


配置 SDK (Setting up the SDK)

KMC Kindle SDK 通过提供 Kindle 使用的头文件和库文件,对已安装的 koxtoolchain 进行增强。

克隆 SDK 仓库:

git clone --recursive --depth=1 https://github.com/KindleModding/kindle-sdk.git

为目标设备安装 SDK:

cd kindle-sdk
chmod +x ./gen-sdk.sh
./gen-sdk.sh <target>

这里的 <target> 必须与您之前安装的工具链目标保持一致。

重要提示:当 SDK 安装完成后,请务必记录下它返回的 meson-crosscompile.txt 文件的路径,这在后续的编译步骤中至关重要!

开发环境设置完毕后使用这里的说明设置meson项目环境,基本上就像正常使用meson开发C/C++项目那样: https://kindlemodding.org/kindle-dev/gtk-tutorial/setting-up.html

其他需要注意的点就是Kindle上开发的应用窗口标题需要遵循一定的格式,否则可能窗口无法显示或者不符合预期:

https://kindlemodding.org/kindle-dev/awesome-window-manager

其他

很多时候也是在使用的时候才发现问题并优化,例如说日志中有大量文本,随着使用时间的增加,占用的空间也是越来越多,不过这些日志的显著特征是拥有大量重复文本,因此我设计以月份为单位,合并和压缩日志文件,最终效果是这样:

1767970621 Image

压缩效果还是很好的,并且也不会因为压缩而丢失数据。

结语

开发这个插件的初衷,是为了弥补 Kindle 原生系统在数据统计上的缺失。但在开发过程中,我发现这件事的意义远不止于“记录数字”。

Kindle 是一款神奇的设备,在快节奏的今天,它强迫我们静下心来。而通过这些直观的阅读曲线和热力图,我能清晰地看到自己为了对抗信息碎片化所付出的努力。每一份压缩后的日志,都是一段沉静时光的证明。

目前插件已经实现了核心的统计与分享功能,但它仍有很大的想象空间。作为一个开源项目,我非常欢迎各路极客朋友来提 Issue 甚至贡献代码。如果你在使用过程中发现了 Bug,或者有更棒的想法,请务必告诉我。

希望这款插件能陪你读完更多的好书。毕竟,量化阅读不是目的,保持阅读的习惯才是。

除非注明,否则均为天远日记原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.tqhyg.net/post673.html