GitHub Hot Board

GitHub Hot Board · 저장소 아카이브

hadc188/reader

「阅读3.0」(Legado)的桌面版,支持 Windows、macOS 和 Linux,使用 Rust、Tauri v2 与 Vue 3 构建。 (소개는 저장소 자체 문서에서 왔습니다.)

데이터 기준 October 24hadc188

최고 순위

#120

과소평가 · 활발한데 무명

100

누적 스타

17

포크 수

2

최근 30일 기록 일수

README에 뱃지를 붙여보세요 · hadc188/reader[![README에 뱃지를 붙여보세요](https://git.vaiox.xyz/api/badge/hadc188/reader.svg)](https://git.vaiox.xyz/ko/repo/hadc188/reader)

프로젝트 문서

Reader

Release Build License

一个面向桌面端的本地阅读器:管理自己的书源与书架,也能阅读本地书籍、订阅 RSS,并按喜欢的方式定制阅读界面。

Reader 是「阅读3.0」(Legado)的跨平台桌面移植版,支持 Windows、macOS 和 Linux,使用 Rust、Tauri v2 与 Vue 3 构建。

项目采用纯单机设计,不需要部署服务端、数据库容器或注册账号。界面与本地核心运行在同一个桌面进程中,书架、阅读进度、缓存和配置由用户自己保存和管理。

项目源自 reader,并参考 reader-rust 进行重构。

Important

本项目不内置书源,也不提供任何书籍内容。首次启动后可导入自己拥有合法使用权的书源、本地 TXT、EPUB 或 PDF 文件。

界面预览

书架与阅读

书架

阅读页面

书源与发现

书源管理 发现书海

统计与 RSS

阅读数据统计 RSS 阅读

项目亮点

  • 本地优先:不依赖常驻服务端,数据保存在自己的设备中。
  • 兼容阅读生态:支持 Legado 书源、RSS 源及备份数据的导入与恢复。
  • 完整书源工具:从导入、编辑、测试到登录调试都可以在桌面应用内完成。
  • 可定制阅读体验:阅读主题、字体、排版、翻页方式、背景图片与透明度均可调整。
  • 多种听书方式:支持系统语音及多种第三方语音接口格式。
  • 跨平台发布:自动构建 Windows、macOS 和 Linux 桌面安装包或便携包。

功能一览

书源、搜索与缓存

  • 导入、导出、新增、编辑和批量测试 JSON 书源
  • 书源列表支持批量删除,测试过程中可随时中止
  • 远程书源订阅与一键同步更新
  • 支持 CSS 选择器、JSONPath、XPath、正则表达式及 JavaScript 解析规则
  • 多书源并行搜索,按书名和作者合并结果并显示来源数量,结果较多时分页展示
  • 书籍详情、目录获取、换源、章节缓存与离线阅读
  • 书源可视化编辑器、原始响应查看和分步骤规则调试
  • 书源登录预览及 Cookie 登录状态支持
  • 支持书源自定义登录表单、按钮操作与登录状态保存

阅读体验

  • 书架分组、最近阅读、书签和阅读进度记录
  • 本地 TXT、EPUB、PDF 与网络书籍阅读
  • 日间、夜间及多种阅读主题,可跟随应用外观切换
  • 字体、字号、字重、行高、段距、缩进和页面宽度调节,支持导入自定义字体
  • 滚动、左右翻页、点击翻页与自动阅读
  • 简繁转换、文字选择、内容净化与自定义替换规则
  • 阅读页右键菜单,可搜索、添加书签、换源、自动翻页和刷新
  • 自定义桌面背景,可选择是否应用到阅读页并调节透明度
  • 阅读页点击正文即可呼出上下工具栏与左右悬浮按钮,不占用正文空间
  • 迷你模式:一键缩成小窗并自动置顶,只保留上一章、下一章与目录,可直接调节字号和字重

阅读数据与订阅

  • 统计累计阅读时长、阅读字数和活跃天数
  • 按时间范围查看每日阅读趋势及每本书的阅读时长
  • RSS 源的本地导入、远程导入、编辑、订阅与文章阅读
  • RSS 文章与普通书籍统一出现在最近阅读记录中

数据管理

  • 本地备份、恢复及备份文件管理
  • 与 Legado 互通书架、书源、RSS、书签、净化规则和阅读进度
  • 通过 WebDAV 与 Legado 手机端双向同步当前阅读章节和位置
  • 支持旧版 JSON 备份以及新版 ZIP 备份
  • 应用关闭时可选择直接退出或隐藏到系统托盘
  • 可配置全局老板键,在其他窗口中快速隐藏或恢复应用
  • 自动记住窗口尺寸与位置;拔掉外接显示器后会自动校正,不会出现窗口跑到屏幕外

Web 访问(手机阅读)

  • 在桌面端「设置 → 应用 → Web 访问」开启后,手机/平板浏览器打开显示的地址即可读书架与正文
  • 默认只监听 127.0.0.1:1122;打开「允许局域网访问」后绑定全部网卡,供同一 WiFi 下的设备访问
  • 没有账号密码(与 Legado 手机端一致):放开局域网等于同网段的任何人都能读你的书架,请只在可信网络里开启
  • 提供书架、目录、正文、进度、书签、替换规则与 WiFi 传书;搜索、换源、备份、缓存整本等只在桌面端提供

详见 docs/web-reader.md。

快速开始

  1. 前往 Releases 下载适合当前系统的版本。
  2. 启动应用后,导入合法书源或自己的 TXT、EPUB、PDF 文件。
  3. 使用顶部搜索框查找书籍,将结果加入书架后开始阅读。
  4. 在主页设置中调整外观、背景和关闭行为,在阅读设置中调整排版、主题、缓存与听书。
  5. 需要小窗阅读时,点击标题栏的迷你按钮即可切换;也可在设置中配置老板键,随时隐藏或恢复窗口。

下载与平台

自动构建目前包含以下目标:

系统 架构 安装包 便携包
Windows x64 NSIS ZIP
macOS Intel + Apple Silicon DMG APP 压缩包
Linux x64 DEB AppImage

macOS 构建目前未使用苹果开发者证书签名,系统可能提示“无法验证开发者”,需要用户在系统安全设置中手动允许。Linux 桌面环境较多,如 AppImage 无法正常启动,可以尝试 DEB 包并检查系统 WebKitGTK 运行库。

Windows 便携版解压后可直接运行 Reader.exe。正式版本会优先在程序同级创建 data/ 数据目录;如果安装位置不可写,则自动使用当前系统的用户数据目录。移动或卸载应用前,建议先在设置中创建备份。

每个 data/ 目录是一份独立的数据:书库、设置、浏览器存储(含背景图等界面偏好)都放在里面。因此可以把便携包解压到多个文件夹同时运行,彼此互不影响;整个文件夹拷到别的机器上也能带走全部状态。

从旧版本升级时,第一次启动会把旧的界面偏好自动搬到新的 data/webview/ 下,旧的共享缓存目录会原样保留(可以手动删除)。如果升级时还开着另一个旧版窗口,会跳过迁移并提示你手动处理。

听书设置

在小说阅读页打开右侧「阅读设置」,在「朗读引擎」中选择系统语音或 API 语音:

  • 系统语音:使用系统中已经安装的语音,可设置音色、语速、语调和定时停止。
  • API 语音:请求由桌面端直接发出,支持 OpenAI、Fish、ElevenLabs、Azure 兼容格式,可设置语速、音频格式和定时停止。

API 语音需要填写对应服务商提供的配置:

接口格式 服务地址示例 模型或语言代码 语音音色
OpenAI 兼容格式 https://api.openai.com 服务商提供的 TTS 模型 音色名称
Fish 兼容格式 https://api.fish.audio 服务商提供的 TTS 模型 音色 ID
ElevenLabs 兼容格式 https://api.elevenlabs.io 服务商提供的 TTS 模型 Voice ID
Azure 兼容格式 Azure 语音资源地址 语言代码,如 zh-CN 音色名称

服务地址既可以填写 API 根地址,也可以填写完整的语音接口地址。HTTP 代理只作用于 API 语音请求,可在无法直连服务时填写。

「少字多请求」能更及时地切换当前朗读段落;「多字少请求」可以减少请求次数,并根据音频播放进度估算高亮段落。

Warning

访问密钥保存在本机阅读配置中,备份阅读配置时也会进入备份文件。请勿公开分享包含访问密钥的备份。

备份与恢复

在「设置 → 数据 → 备份与恢复」中可以手动创建、上传和恢复备份。新版备份使用 ZIP 格式,本应用也会继续识别旧版 JSON 备份。

备份窗口支持配置 WebDAV(网盘协议)服务地址、账号、应用密码和子目录。保存配置并测试连接后,可按需手动上传、刷新远端列表、下载、恢复或删除备份;不会自动上传或恢复。远端备份放在配置子目录根目录,文件名以 backup 开头,与 Legado(阅读)备份目录兼容,手机端可直接识别。

“同步阅读进度”默认开启,可在同一窗口关闭。开启后,进入、退出阅读页以及阅读过程中会与 Legado(阅读)的 bookProgress(阅读进度目录)同步当前章节和位置。

本应用可以恢复 Legado 生成的 ZIP 备份;Legado 也可以读取本应用备份中的书架、书源、RSS、书签、净化规则与阅读进度。

恢复时若备份中存在个别无效条目(例如名称为空的残缺书源),会跳过这些条目并提示跳过数量,不会因此中断整份备份的恢复。若某类数据全部无效,恢复会清空该类且不写回,因此会先弹窗确认,避免误清空现有数据。

由于不同设备及应用的本地文件路径不通用,跨应用恢复时只迁移网络书籍。本地书籍文件、Legado 专属界面配置、登录状态和缓存不会迁移;Reader 自己的阅读配置仅在 Reader 恢复时使用。

数据与隐私

  • 应用没有集中式账号系统,书架、配置、缓存与阅读记录默认保存在本机。
  • 书源搜索、正文加载和 RSS 订阅等网络请求会自动读取本机系统代理,未启用时直接连接。
  • 搜索、正文加载和 RSS 订阅需要访问用户配置的来源网站。
  • 使用 API 语音时,待朗读文字会发送给用户自己配置的语音服务商。
  • 应用不会提供、维护或推荐任何第三方书源,用户应自行判断来源的安全性与合法性。

开发与构建

环境要求:Node.js 22、Rust stable,以及 Tauri v2 对应平台的系统依赖。

# 前端
cd frontend
npm install
npm run dev
npm run build
npm test

# 桌面应用
cd desktop
npm install
npm run dev
npm run build

开发模式由 npm run dev 同时启动 Vite 热更新和 Tauri 桌面窗口,数据保存在 desktop/.dev-data/。Windows 本地执行 npm run build 后,安装包和便携包位于 desktop/dist/。

Rust 库测试:

cargo test -j 4

推送 v* 标签后,GitHub Actions 会分别在 Windows、macOS 和 Linux 环境中构建,创建草稿 Release 并在全部平台成功后自动转为正式发布。

也可以在 Actions 页面手动触发(workflow_dispatch):此时构建目标取当前最新的 Release,用于重新构建或补齐某个平台的产物(要求仓库中已存在至少一个 Release)。构建前会校验标签与各处版本号是否一致,不一致会直接失败。

技术架构

  • 桌面层:Tauri v2,使用各系统自带的 WebView。
  • 前端:Vue 3、Vite、TypeScript、Pinia、Vue Router、ECharts。
  • 本地核心:Rust、Tokio、Reqwest、SQLx、SQLite、rquickjs。
  • 通信方式:前端通过 Tauri IPC 调用本地命令,封面与 EPUB 资源通过应用自定义协议加载。
  • Web 访问:可选的进程内 axum 服务,与桌面端共用同一套 *_core 业务实现,只做协议适配。
  • 数据存储:SQLite 保存业务数据,文件目录保存封面、章节缓存、本地书籍和备份。

主要目录:

目录 说明
frontend/ Vue 3 桌面界面、状态管理与前端测试
src/api/ Tauri 命令、自定义协议与桌面接口
src/server/ Web 访问:axum 路由、静态资源、配置与启停
src/app/ 应用配置、启动流程与窗口状态持久化
src/service/ 书籍、书源、用户数据等业务逻辑
src/parser/ CSS、XPath、JSONPath、正则和 JavaScript 解析引擎
src/crawler/ 网络请求、请求头规则和 URL 分析
src/storage/ SQLite、数据库迁移、文件缓存与数据目录
desktop/src-tauri/ 桌面窗口、托盘、单实例、平台适配与打包配置
scripts/ 发布元数据校验、产物收集与打包辅助脚本
vendor/ 本地补丁过的第三方依赖(如 pdf-extract)

书源格式

书源使用 JSON 对象描述,常用字段包括 bookSourceUrl、bookSourceName、searchUrl、exploreUrl,以及 ruleSearch、ruleBookInfo、ruleToc、ruleContent 等规则组。

规则支持 @css:、@json:、@xpath:、@regex: 与 js: 前缀。JavaScript 规则由本地 rquickjs 引擎执行,导入不可信书源前仍应检查其中的请求地址与脚本内容。

在书源管理的「登录」页,可以使用书源提供的网页或自定义表单,也可以手动导入 Cookie。登录信息和 Cookie 按书源保存在本机,重启后仍可使用;可在登录窗口清除 Cookie。书源自带的设置网页支持确认和取消:调整后点击右上角「确认」保存,「取消」会保留原设置。

旧版本导入时如果已将书源脚本中的花括号改成尖括号,需要重新导入原始书源文件来恢复规则。更新后的版本会保留现代书源中的脚本和请求参数,并重新生成目录缓存。

参与项目

  • 遇到问题时,请在 Issues 中说明系统版本、应用版本、复现步骤和错误提示。
  • 功能建议请尽量描述使用场景,以及希望解决的实际问题。
  • 欢迎提交 Pull Request;提交前请运行前端测试、前端生产构建和 Rust 测试。
  • 请勿在问题、日志或提交中上传访问密钥、Cookie、私人书源和包含个人数据的备份文件。

免责声明

本项目仅提供书源管理、内容解析、阅读与缓存等技术能力,不内置、存储、分发或提供任何受版权保护的书籍内容。用户应确保自行添加的书源、上传的本地文件以及通过本应用访问的内容均已获得合法授权,并自行承担由此产生的版权与合规责任。

如任何权利人认为本项目相关内容或使用方式侵犯了其合法权益,请通过项目 Issues 联系维护者,我们将在核实后及时处理。

开源许可

本项目基于 MIT License 开源。

致谢

感谢 Legado、reader 和 reader-rust 等开源项目提供的思路与基础。

特别感谢:LinuxDO。

현재 순위

  • 120

    과소평가 · 활발한데 무명

    100 스타 · 17 fork · 총 스타 수(오름차순)

    과소평가 →

최근 30일 추이

누적 스타 추이

순위 추이

← 랭킹으로