[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73348":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},73348,"Tomato-Novel-Downloader","zhongbai2333\u002FTomato-Novel-Downloader","zhongbai2333","番茄小说下载器不精简版","",null,"Rust",2815,277,7,1,0,50,153,567,150,109.33,"MIT License",false,"main",true,[],"2026-06-12 04:01:09","# 番茄小说下载器~~精简版~~\n\n> 小小推广位：[RustEpubReader](https:\u002F\u002Fgithub.com\u002Fzhongbai2333\u002FRustEpubReader) \u003C- 自研Epub阅读器，轻量快速  声明：阅读器项目不会添加下载器功能\n\n番茄小说下载器*不精简*版本，由于项目[fanqienovel-downloader](https:\u002F\u002Fgithub.com\u002Fying-ck\u002Ffanqienovel-downloader)一直不更新，于是我根据Dimily的项目Fork并重构\n\n目前完全使用`Rust`重写了整个项目，与原Fork项目几乎没有关系了（~~虽说原本的Python版本也没几行是原项目的了~~）\n\n我对其进行重构 + 优化，添加更多功能，包括：EPUB 下载支持、更好的断点续传、更好的错误管理、书本搜索、Web UI 等特性。\n\n本项目支持两种构建模式：\n\n- 默认模式（`official-api`）：保留 Official-API 能力（搜索\u002F目录\u002F段评等），同时也兼容第三方正文模式。\n- No-Official-API 模式（`no-official-api`）：**不依赖 Official-API crate**；目录\u002F书信息走网页解析；**正文强制使用第三方 API 地址池**。\n\n为了保证第三方API安全，部分第三方接口相关代码并不开源，包括地址和token，敬请谅解，谢谢！\n\n为方便视障人士使用，我保留了老的CLI界面，接下来是启用方法：\n\n在第一次打开程序时 按三下 `o` 并回车 或者 按一下下方向键并按三下 `o` 都可以启用老版本CLI界面\n\n注意：切换成功应该会发出 `灯` 的一声\n\n---\n\n## 我该如何使用？\n\n根据自己的系统版本在[Releases](https:\u002F\u002Fgithub.com\u002Fzhongbai2333\u002FTomato-Novel-Downloader\u002Freleases)列表下载可执行文件，并运行\n首次下载新书请优先使用 TUI 或 Web UI；CLI 仅保留更新本地已有小说的能力\n\n### 命令行模式（非交互）\n\n如果你需要在自动化脚本中使用下载器（例如为 Kindle 自动更新番茄小说），可以使用命令行参数更新**本地已经下载过**的书籍：\n\n- 更新指定书籍：\n\n    ```sh\n    Tomato-Novel-Downloader.exe --update \u003Cbook_id>\n    ```\n\n    示例：\n\n    ```sh\n    Tomato-Novel-Downloader.exe --update 7318247498772674083\n    ```\n\n注意：\n\n- 命令行模式为非交互模式，会直接开始更新，无需手动输入\n- 使用配置文件（`config.yml`）中的默认保存路径和下载设置\n- **CLI 已禁用 `--download` 新建下载能力**，以降低脚本批量滥用风险\n- `--update` 只允许更新默认保存目录下**已经存在本地下载记录**的书籍\n- 如果书籍不存在本地记录，CLI 会拒绝执行，并提示改用 Web UI \u002F TUI 完成首次下载\n- 只接受 book_id，不支持搜索功能\n\n### 老版 CLI（无 UI）说明\n\n- 老版 CLI 现已**禁用新建下载\u002F搜索下载**\n- 仅保留以下能力：更新本地已有小说、查看下载历史、修改配置、检查程序更新\n- 如果需要首次下载新书，请使用默认 TUI 或 Web UI（`--server`）\n\n### Web UI 服务器模式（--server）\n\n如果你希望在局域网用浏览器操作（搜索、发起下载、查看任务、下载文件\u002F打包下载文件夹），可以启用 Web UI：\n\n- 启动 Web UI：\n\n    ```sh\n    Tomato-Novel-Downloader.exe --server\n    ```\n\n- 监听地址（默认 `127.0.0.1:18423`）：\n\n    通过环境变量修改监听地址，例如局域网访问：\n\n    ```sh\n    TOMATO_WEB_ADDR=0.0.0.0:18423\n    ```\n\n    IPv6 监听示例（注意 IPv6 需要方括号）：\n\n    ```sh\n    TOMATO_WEB_ADDR=[::]:18423\n    ```\n\n    同时监听多个地址（用逗号或分号分隔），例如同时监听 IPv4 + IPv6：\n\n    ```sh\n    TOMATO_WEB_ADDR=0.0.0.0:18423,[::]:18423\n    ```\n\n- 密码锁模式（防止陌生人使用）：\n\n    ```sh\n    Tomato-Novel-Downloader.exe --server --password 你的密码\n    ```\n\n    或者使用环境变量：\n\n    ```sh\n    TOMATO_WEB_PASSWORD=你的密码\n    ```\n\n- 数据目录（用于 Docker 部署或集中管理配置\u002F日志）：\n\n    通过 `--data-dir` 参数指定数据目录，程序会将 `config.yml` 和 `logs` 文件夹放在该目录下：\n\n    ```sh\n    Tomato-Novel-Downloader.exe --server --data-dir \u002Fdata\n    ```\n\n    Docker 使用示例：\n\n    ```sh\n    docker run -v \u002Fhost\u002Fdata:\u002Fdata my-tomato-image --server --data-dir \u002Fdata\n    ```\n\n    这样可以方便地挂载数据目录，实现配置和日志的持久化。\n\nWeb UI 提供的功能（纯 HTML，无需额外前端构建）：\n\n- 搜索书籍并创建下载任务\n- 任务列表\u002F进度刷新\u002F取消任务\n- 下载库按目录浏览（不再把所有文件递归平铺）\n- 文件直接下载\n- 文件夹一键打包为 zip 下载（保持目录结构，适配音频等“文件夹内包含文件夹”的情况）\n- 配置页面：可在线修改部分下载输出相关配置（会写回 `config.yml`）\n\n注意：Web UI 主要面向自建\u002F局域网使用；如果要暴露到公网，建议放在反向代理\u002FHTTPS 后面，并务必开启密码锁。\n\n---\n\n## Docker 镜像\n\n已提供 Web UI 版本的 Docker 镜像：\n\n- 镜像地址：[DockerHub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fzhongbai233\u002Ftomato-novel-downloader-webui)\n- Tags 说明：\n  - `latest`：默认 **glibc** 版本（常规服务器\u002F桌面环境）\n  - `latest-musl`：**musl** 版本，适用于 **软路由 \u002F NAS** 等轻量系统\n\n示例（映射端口与持久化数据目录，使用 glibc 版本）：\n\n```sh\ndocker run -d \\\n    --name tomato-novel-webui \\\n    -p 18423:18423 \\\n    -v \u002Fhost\u002Fdata:\u002Fdata \\\n    -e TOMATO_WEB_ADDR=0.0.0.0:18423 \\\n    -e TOMATO_WEB_PASSWORD=你的密码 \\\n    zhongbai233\u002Ftomato-novel-downloader-webui:latest --server --data-dir \u002Fdata\n```\n\n如果你使用软路由或 NAS 系统，请使用 musl 版本：\n\n```sh\ndocker run -d \\\n    --name tomato-novel-webui \\\n    -p 18423:18423 \\\n    -v \u002Fhost\u002Fdata:\u002Fdata \\\n    -e TOMATO_WEB_ADDR=0.0.0.0:18423 \\\n    -e TOMATO_WEB_PASSWORD=你的密码 \\\n    zhongbai233\u002Ftomato-novel-downloader-webui:latest-musl --server --data-dir \u002Fdata\n```\n\n可通过 `TOMATO_WEB_ADDR`、`TOMATO_WEB_PASSWORD` 与 `--data-dir` 控制监听地址、密码与数据目录（见上文 Web UI 说明）。\n\n---\n\n## 构建模式（Cargo Features）\n\n本项目提供两个互斥的 feature：`official-api` 与 `no-official-api`（两者不能同时启用）。\n\n### 默认模式：official-api（默认启用）\n\n- 构建（默认就会启用）：\n\n```sh\ncargo build --release\n```\n\n- 行为：\n  - 搜索功能可用（TUI \u002F Web UI \u002F 老 CLI 的搜索入口）。\n  - 段评（EPUB 段评页\u002F资源抓取）可用（取决于配置项）。\n  - 正文获取可通过配置在“官方\u002F第三方”之间切换（`use_official_api`）。\n\n### No-Official-API 模式：no-official-api（Issue #187）\n\n- 构建：\n\n```sh\ncargo build --release --no-default-features --features no-official-api\n```\n\n- 行为差异（重点）：\n  - **不依赖** `tomato-novel-official-api` crate，可在缺少 Official-API 环境时编译。\n  - 目录与书本信息：使用网页解析（`FanqieWebNetwork`）。\n  - **正文获取：强制第三方模式**（忽略\u002F不使用 `use_official_api=true` 的官方分支）。\n  - 搜索功能：不可用（会返回提示\u002F报错）。\n  - 段评：不可用（会被强制关闭）。\n\n---\n\n## Edge TTS 有声小说生成\n\n从当前版本开始，程序内置了 [msedge-tts](https:\u002F\u002Fgithub.com\u002Fhs-cn\u002Fmsedge-tts) 语音合成功能，可在下载文本后自动生成对应的有声小说：\n\n- 在配置菜单（新 UI 或老 CLI 均可）中启用 `是否生成有声小说`，即可在每次下载完成后生成音频文件。\n- 默认发音人是 `zh-CN-XiaoxiaoNeural`，可以通过配置项自定义语速、音量、音调以及输出格式（`mp3` 或 `wav`）。音调值请使用 `+2Hz`、`-1st` 这类带单位的写法，若留空或填写 0 将忽略音调调整。\n- 可在“有声小说并发数”中调整 Edge TTS 并发任务数量（默认 2），生成时会显示进度条；请根据网络状况和机器性能选择适当的并发度。\n- 音频会存放在输出目录下的 `{书名}_audio` 文件夹中，并按章节顺序命名，例如 `0001-第一章.mp3`。\n- msedge-tts 需要联网调用微软的在线服务，请确保运行环境可正常访问外网。\n\n如遇到生成失败，可在日志中查看详细错误信息。\n\n---\n\n## 常见问题\n\n1. 之前就已经有了一个下载器，为什么还要再做一个？\n\n    ~~本程序的初衷就是极致简化番茄小说下载器的代码，使程序更加易于操作与运行，并且更加稳定和快速！~~\n    本程序由于重构导致文件体积较大，无法做到原项目的简易，但是此项目胜在傻瓜式操作，无需多余配置，立即使用\n\n2. 手机端可以正常运行吗？\n\n    **仅限安卓设备（Termux）**可以运行。\n    但由于 **TUI\u002FCLI 界面对小屏幕不太友好**，手机端更推荐使用 **Web UI 模式（--server）**：在 Termux 里启动服务，然后用手机浏览器操作（或让同一局域网的其它设备访问）。\n\n    Release 里提供 Android arm64 构建产物：`TomatoNovelDownloader-Android_arm64-[当前版本号]`，可直接在 Termux 中运行。\n\n    另外：如果你希望在 TUI 中使用 `Ctrl+V` 从系统剪贴板粘贴，需要安装 Termux API：\n\n    - 安装 App：Termux:API\n    - 安装命令：`pkg install termux-api`\n    - 验证：`termux-clipboard-get` 可正常输出内容\n\n    为了防止有些零基础的小白下载到了此程序，我们为您准备了一些教程：\n\n    下载termux(链接:(\u003Chttps:\u002F\u002Fgithub.com\u002Ftermux\u002Ftermux-app\u002Freleases>) 并安装，然后运行部署脚本：\n\n    ```sh\n    bash \u003C(curl -sL https:\u002F\u002Fraw.githubusercontent.com\u002Fzhongbai2333\u002FTomato-Novel-Downloader\u002Fmain\u002Finstaller.sh)\n    ```\n\n    国内用户可使用：\n\n    ```sh\n    bash \u003C(curl -sL https:\u002F\u002Fdl.zhongbai233.com\u002Finstaller.sh)\n    ```\n\n    安装完成后，推荐用 Web UI 启动（示例）：\n\n    ```sh\n    TOMATO_WEB_ADDR=0.0.0.0:18423 TOMATO_WEB_PASSWORD=你的密码 tomato-novel-downloader --server\n    ```\n\n    然后在浏览器打开：\n\n    - 本机：`http:\u002F\u002F127.0.0.1:18423\u002F`\n    - 局域网其它设备：`http:\u002F\u002F\u003C手机的局域网IP>:18423\u002F`\n\n3. 电脑端该如何运行？\n\n    `Windows` 双击运行`TomatoNovelDownloader-Win64-[当前版本号].exe`\n\n    `Linux` 和 `MacOS` 使用终端运行，可以使用一键部署脚本：\n\n    ```sh\n    bash \u003C(curl -sL https:\u002F\u002Fraw.githubusercontent.com\u002Fzhongbai2333\u002FTomato-Novel-Downloader\u002Fmain\u002Finstaller.sh)\n    ```\n\n    国内用户可使用：\n\n    ```sh\n    bash \u003C(curl -sL https:\u002F\u002Fdl.zhongbai233.com\u002Finstaller.sh)\n    ```\n\n4. 小说id是什么？在哪里获取？\n\n    推荐两种方式：\n\n    - 直接使用 Web UI 的“搜索书籍”，不需要手动找 ID。\n    - 如果你已经有分享链接\u002F书籍信息，通常会包含一段很长的数字（Book ID）。复制该数字即可。\n\n5. 我是纯小白，程序在哪里下载啊\n\n    直接点击此链接(\u003Chttps:\u002F\u002Fgithub.com\u002Fzhongbai2333\u002FTomato-Novel-Downloader\u002Freleases>)先找到最新版本，然后在最新版本中找到”Assets”并点击来展开内容(如果已展开就不必进行此操作)。在展开的内容中找到对应程序，点击下载即可\n\n## 注意事项（必看）\n\n由于使用的是api，所以未来不知道有哪一天突然失效，如果真的出现了，请立即在“Issues”页面中回复！\n\n如果您在使用本程序的时候出现了下载章节失败的情况，也许并不是api失效了，可能是因为调用api人数过多，导致api暂时关闭，如果遇到了这种情况，请稍后再试，另外，您需要下载的小说api可能会因没有更新所以下载失败。\n\n千万不要想着耍小聪明：“欸，我改一下线程数不就能快速下载了吗？”请打消这种念头！因为这样会加大服务器压力！！！\n\n另外，在使用本程序时，请不要使用任何vpn或网络代理等一切影响网络正常使用的程序！\n\n如果您也没有遇到以上的这种情况，请检查要下载的小说章节数量有多少，不建议大于1500章！(保守估计)\n\n>划重点：切记！不能将此程序用于违法用途，例如将下载到的小说进行转载、给不良人员分享此程序使用等。本开发者严禁不支持这样做！！！并且请不要将api进行转载使用，除非您已经与开发者协商过，否则后果自负！下载到的小说仅供自行阅读，看完之后请立即删除文件，以免造成侵权，如果您还是偷尝禁果，需自行承担由此引发的任何法律责任和风险。程序的作者及项目贡献者不对因使用本程序所造成的任何损失、损害或法律后果负责！\n\n## 免责声明\n\n  本程序仅供 Rust 网络爬虫技术、网页数据处理及相关研究的学习用途。请勿将其用于任何违反法律法规或侵犯他人权益的活动。\n  \n  使用本程序的用户需自行承担由此引发的任何法律责任和风险。程序的作者及项目贡献者不对因使用本程序所造成的任何损失、损害或法律后果负责。\n  \n  在使用本程序之前，请确保您遵守适用的法律法规以及目标网站的使用政策。如有任何疑问或顾虑，请咨询专业法律顾问。\n\n## 感谢\n\n感谢用户选择此程序，如果喜欢可以加star，如果有什么对本程序的建议，请在“Issues”页面提出。您的喜欢就是我更新的最大动力❤️\n\n项目前期 · 感谢原作者Dimily的基础项目\n\n项目前期 · 感谢来自Github用户@helloplhm-qwq的api！\n\n项目前期 · 感谢来自QQ用户@终忆的api！\n\n项目前期 · 感谢来自Github用户@jingluopro的api！！\n","番茄小说下载器是一个用于下载番茄小说的工具，完全使用Rust语言重写。其核心功能包括EPUB格式支持、断点续传、错误管理、书本搜索以及Web UI等特性。项目提供了两种构建模式：默认模式和No-Official-API模式，后者不依赖官方API进行数据获取。该工具适用于需要将网络小说离线保存到本地设备的用户，特别适合视障人士或希望通过局域网浏览器界面操作的用户。此外，通过命令行参数和Docker镜像的支持，它也能很好地融入自动化脚本和容器化部署场景中。",2,"2026-06-11 03:45:06","high_star"]