wustho/epy
GitHub: wustho/epy
epy 是一个基于终端的多格式电子书阅读器,让用户无需图形界面即可在命令行中阅读 EPUB、MOBI 等格式的电子书。
Stars: 1198 | Forks: 71
# `$ epy`

CLI 电子书阅读器。
这只是 [epr](https://github.com/wustho/epr) 的一个分支,包含以下额外功能:
- 支持的格式:
- Epub (.epub, .epub3)
- FictionBook (.fb2)
- Mobi (.mobi)
- AZW3 (.azw, .azw3)
- [URL](#url-support)
- 阅读进度百分比
- 书签
- 外部词典集成(`sdcv`、`dict` 或 `wkdict`)
- 行内格式:**粗体**和 _斜体_(取决于终端和字体支持。斜体仅在 python>=3.7 中受支持)
- Text-to-Speech(需要额外设置,请阅读[下方](#text-to-speech))
- [双页显示](#double-spread)
- 无缝阅读(默认禁用,请阅读[下方](#reading-tips-using-epy))
## 安装
- 通过 PyPI(Linux 和 Mac OS)
pip3 install epy-reader
- 通过 Pip+Git
pip3 install git+https://github.com/wustho/epy
- 通过 AUR
yay -S epy-ereader-git
- Windows 可执行文件
Windows 的独立可执行文件可在[发布页面](https://github.com/wustho/epy/releases)获取。
## 使用方法
- `epy /path/to/your/book/book.epub`(请确保您的书名不包含任何空格)
- **c** 切换颜色配置
- **Shift + h** 上一章
- **Shift + l** 下一章
- **Shift + g** 跳至章节末尾
- **g** 跳至章节开头
- **Shift + m** 显示书籍元数据
- **t** 目录
- **/** 搜索
- **b** 添加书签
- **Shift + b** 显示书签
- **q** 退出
- **-** 缩小文字
- **+** 放大文字
- **o** 打开图片
- **s** 显示或隐藏进度
## 颜色配置
在配置文件中,您会看到以下部分。
```
"DarkColorFG": 47,
"DarkColorBG": 235,
"LightColorFG": 238,
"LightColorBG": 253,
```
使用此图片更改值。(请务必忽略开头的零,否则将无法启动。)

## 使用 Epy 的阅读提示
使用 `epy` 阅读时,您偶尔可能会发现三个星号 `***`。
这意味着您到达了电子书中某个部分的结尾,
而下一行(紧接着这三个星号,位于新的部分中)
将从页面顶部开始。
这可能会令人感到困惑,因此获得无缝阅读体验的最佳方式
是使用下一页控制(`space`、`l` 或 `Right`)
而不是下一行控制(`j` 或 `Down`)。
如果您确实希望获得无缝阅读体验,可以在配置文件中将 `SeamlessBetweenChapters`
设置为 `true`。但它的缺点是会消耗更多内存,这也就是它
默认被禁用的原因。
## 配置文件
配置文件以 JSON 格式提供,位于:
- Linux 和 Mac OS:`~/.config/epy/configuration.json` 或 `~/.epy/configuration.json`
- Windows:`%USERPROFILE%\.epy\configuration.json`
## URL 支持
您可以通过将 URL 作为 CLI 参数传递给 `epy`,来阅读在线书籍,例如:短篇小说、同人小说等。
当您想减少干扰进行阅读时,这非常有用。
`epy` 还会记住您的在线阅读进度。
例如,您可以直接通过以下命令阅读[来自 gutenberg 的 Moby Dick](https://www.gutenberg.org/files/2701/2701-h/2701-h.htm):
```
$ epy https://www.gutenberg.org/files/2701/2701-h/2701-h.htm
```
但请注意,`epy` 永远不会成为一个网络浏览器,它仅仅是一个 TUI 程序,让您能在终端的舒适环境中阅读
您最喜欢的虚构故事。
因此,请不要期望在 `epy` 中实现网络浏览器的功能。
## 使用鼠标
尽管在 Android 上的 Termux 中运行 `epy` 时,鼠标支持非常有用,但它默认是禁用的,
因为大多数人在桌面端使用 `epy` 时会觉得它有干扰。
但您可以通过在配置文件中将 `MouseSupport` 设置为 `true` 来启用它。
| 按键 | 动作 |
| --- | --- |
| `左键单击`(屏幕右侧) | 下一页 |
| `左键单击`(屏幕左侧) | 上一页 |
| `右键单击` | 目录 |
| `向上滚动` | 向上滚动 |
| `向下滚动` | 向下滚动 |
| `Ctrl` + `向上滚动` | 增加文本宽度 |
| `Ctrl` + `向下滚动` | 减小文本宽度 |
## 文本转语音
要获得 Text-to-Speech (TTS) 支持,必须使用外部 TTS 引擎。
支持的引擎列表:
- `mimic`
- `pico2wave`
- `gtts-mpv`(需要同时安装 [gTTS](https://pypi.org/project/gTTS) 和 [MPV](https://www.mpv.io))
## 词典
要使用“查词”功能,您必须安装一个外部的词典 CLI 程序(`sdcv`、`dict` 或 `wkdict`)。完成后,建议手动修改 configuration.json 文件,并在其中设置您想要的词典,以确保一切正常运行。
之后,您就可以按 `d` 键来查找单词的定义,此时会出现一个提示框,让您输入要查询的单词。
## 双页显示
双页显示旨在模拟真实书籍的行为,
因此行滚动导航将作为页面滚动,并且无法调整文本宽度。
## 更新日志
- `v2021.10.23`:主要重构,利用了 `python>=3.7` 中的许多新特性,
并且 `epy` 将不再向后兼容旧版本的 Python 和旧的配置。
- `v2022.1.8`:配置和阅读状态模式 (schema) 的变更,不向后兼容。
因此,如果遇到错误,删除配置和状态文件可能会解决该问题。
- `v2022.1.15`:初步实现 URL 支持,目前尚不支持目录功能。
- `v2022.1.23`:书库实现:能够在 epy 内部从阅读历史中切换电子书
(默认按键:`R`)。
- `v2022.2.5`:修复了未启动进程的 process.join() 问题。
- `v2022.10.2`:将 `epy.py` 模块大规模拆分为包结构,以便于开发。
标签:Homebrew安装, Python, 文档解析, 无后门, 电子书阅读器, 逆向工具