- 改善批量下载体验
- 修复下载异常
- 修复无法使用全本小说网进行批量下载
- 修复 #294
- 更新 WebUI
- 更新 Web 服务启动日志
- 更新默认并发数
- 更新 config.ini 注释
- 改善独立搜索体验
- 解析器支持自动检测文本编码
- 自动获取分辨率最高的封面
- 提高封面获取性能
- 修复全本小说网无法使用
- 重构
SourceUtils.java - 优化正文开头重复章节标题的过滤正则 #57
- 增强 CLI 代码健壮性
- 规范 D1 Worker URL 的 Base64 编码
- 将「大熊猫文学」规则迁移至
proxy-rules.json - 悠久小说网新增封面规则
- 更新
flowlimit-rules.json
- 新增
SPONSORS.md - 更新
readme.txt - 更新
feedback.yml
- 新增配置项:是否过滤低相似度搜索结果 #283
- 适配 ARM64 发行版的自动更新
- WebUI 显示版本号
- TUI 增加赞助选项
- 修复 Linux 版无法启用 Web 模式 #281
- 解决某些阅读器无法识别 txt 中的章节名 #282
- 重构 ChapterFilter、ChapterConverter
- 配置项 threads 重命名为 concurrency
- 优化构建脚本,从 Adoptium 下载 JRE
- 纠正 readme.txt 错别字 #278
- 升级依赖
- 修复聚合搜索结果异常
- 移除 ConfigWatcher,避免产生不可预料的错误
- 重构 AppConfigLoader
- 支持设置 TXT 编码以兼容旧设备 #231
- 支持 ARM64 架构 (Docker 镜像通过方式 4 构建) #267
- 修复 #270
- 修复 #271
- 修复配置文件热加载失效
- 重构 TxtMergeHandler.java
- 更新构建脚本
- 修复镜像构建
- 更新 Dockerfile
- 更新 README.md
- 规则文件
language属性默认从系统获取 - 支持 native 打包方式
- 复活书源「速读谷」 #262
- 修复
search-limit未指定时不为全部 - 修复裁剪 JRE 引发的问题 #266
- 优化 Linux、macOS 启动脚本
- 使用 JDK 21 Virtual Threads
- 使用 JDK 21
collection.getFirst() - 重构
OkHttpClientFactory.java - 重构
Main.java - 重构
BookSourceQualityTest.java
- 添加启动参数说明 (JVM Options)
- 添加从源码构建 Docker 镜像 #257
- 更新
BOOK_SOURCES.md - 移除
qidian_rank
- JRE 升级到 21
- 添加
fetch-github-releases.sh - 添加
VirtualThreadTest.java - 整理
resources文件
- WebUI 增加源站链接 #243
- 新增七猫封面获取
- 自动填充
sourceId - 可选是否从 qidian 获取最新封面
- 修复 CLI 模式无法触发
- 移除 fonts 目录,从系统字体获取,优化体积
- 更新章节重试策略
- 重构
CoverUpdater.java
- 升级 JRE 并优化体积(Windows, Linux)
- 支持 Docker Compose 部署 #252
- 补充 Docker 版安装说明 #253
- 取消包装 jar,降低误报概率
- 重命名 exe 文件
- 增加输入详情页 URL 下载方式的可选项
- 新增 JVM 参数 mode 以设置启动模式
- 修复 Javet libatomic Linux 的链接问题 #207
- 重构
Crawler.java、SingleSearchAction.java - 下载进度推送改用 SSE 实现
- Docker 默认以 Web 模式启动 #239
- 优化 Docker 部署
- 禁用书源「69书吧」#250
- 升级依赖
- 支持 web 功能 #226
- 章节下载出错时中断下载 #220
- 新增书源「老幺小说网」
- 支持配置 github 代理加速地址,用于获取更新
- 修复下载时遇到
"this.jna" is null#233 - 修复「全本小说网」聚合搜索失效
- 修复过滤正则误删正文
- 修复顶点小说正文未解密
- 修复某些书源获取的章节链接不正确
- 修复
docker-install.sh启动容器调用错误
- 优化 web 包代码
- 重构
config.ini、ConfigUtils - 重构
Crawler.java、ChapterParser.java、BookSourceTest.java、JsoupUtils#clearAllAttributes、ChapterParser#fetchSinglePageContent、Parser#httpClient - 改进代码结构
- 更新、清理书源
- 增加规则模板注释
- 改进 webui 并适配移动端
- 改进 webui 下载体验
- 更新
feedback.yml - 更新
BOOK_SOURCES.md - 更新
README.md
- 支持 CLI #104
- 新增章节下载进度条功能
- 支持
active-rules绝对路径 #203
- 修复分页章节内容包含多余的
<p>#195 - 修复 HTML 文件名前导零导致无法翻页
- 优化 Docker 安装脚本 #206
- 优化 HTML 目录文件内容格式
- 改进指定搜索, 批量下载体验
- 解耦 Main.java
- 更新 GHP 链接
- 更新
proxy-rules.json - 更新
BookSourceTest.java - 更新
README.md - 优化
CHANGELOG_ALL.md - 移除无效的系统属性
Note
CLI 用法
# Windows
.\sonovel.exe -h
# Linux
./runtime/bin/java -jar app.jar -h
# macOS
./runtime/Contents/Home/bin/java -jar app.jar -h
# Docker
docker run -it --rm -v /sonovel/config.ini:/sonovel/config.ini -v /sonovel/downloads:/sonovel/downloads -v /sonovel/rules:/sonovel/rules sonovel:v1.8.5 -h- 开放自定义书源功能
- 搜索支持多书连续下载 #192
- 新增书源: 黄易天地 #187
- 新增配置项:
active-rules,show_download_log - 新增规则字段:
crawl - 新增 Linux 一键安装脚本
- 修复失效书源:全本小说网
- 修复封面下载失败时触发
ansi - 渲染参数异常 #198
- 修复合并产物文件名包含系统非法字符时大小为零且名称被截断 #190
- 修复
docker-install.sh在 WSL Ubuntu 安装失败
- 拆分书源规则
- 优化目录爬取规则
- 升级依赖
- 更新 CI 脚本
- 添加
D1Workers - 添加
DISCLAIMER.md - 优化
feedback.yml - 优化
docker-install.sh - 移除
jline
- 新增书源: 书林文学 #166
- 新增书源: 小说虎
- 新增章节缓存目录保留配置项 #172
- 临时章节文件名添加前导零 #165
- 修复模糊文本的聚合搜索结果为空(相似度过低被忽略)
- 修复分页章节标签解析错误
- 修复非全本下载后,文件名下划线前的序号错误
- 修复自定义下载路径时,封面下载出错 #177
- 修复书源 20 封面下载失败
- 修复 epub 空封面页
- 替换章节文件名中的非法字符 #179
- 重构
BookSourceQualityTest.java - 更新 timeout 默认值
- 移除书源: 新笔趣阁 #148
- 移除书源: 96读书(章节页 CF)
- 优化书源 20 过滤规则
- 更新发布脚本
- 更新起点榜单
- 更新推荐书源模板
🚑 修复 macOS 和 Linux 运行出错 🐛 fix watchConfig NoResourceException #170
Note
若 Linux 版运行报错:libjavet-v8-linux-x86_64.v.4.1.3.so: libatomic.so.1: cannot open shared object file: No such file or directory
请尝试执行以下命令解决
sudo apt update
sudo apt install libatomic1 -y- 💥 重构
HttpURLConnection为OkHttp - 💥
JS Runtime由Nashorn升级为Javet(V8 嵌入) - ✨ 新增书源:阅读库 #155
- ✨ 新增书源:顶点小说(JS 逆向、反爬破解)
- ✨ 自动设置
language配置项 - ✨ 过滤正文不可见字符
- ✨ 封装环境判断工具类
EnvUtils - 🚸 提高批量下载健壮性
- 💬 修改聚合搜索日志文字
- ⚡ 优化
OkHttp配置 - 🚑 更新书源 18 域名
- 🐛 修复书源 10 目录链接错误
- 🐛 修复书源 11 正文过滤正则错误
- 🐛 修复书源 20 目录乱序、正文随机乱码
- 🐛 修复
nashorn线程不安全导致JS执行结果错误 - 🐛 修复
txt、html格式下载封面失败导致的中断 - 🐛 修复
config.ini配置项为空串时,hutool Setting#getStr不能触发默认值 - ♻️ 下载完毕后删除临时目录
- ♻️ 移除
CrawlUtils#normalizeUrl - ♻️ 修改
windows非法文件名替换 - ♻️ 优化
Crawler.java、ChapterParser.java - ♻️ 优化
BookSourceTest.java - ♻️ 修改配置文件默认值
- ⬆️
hutool升级至5.8.37 - 📝 更新书源 5、6、12、13 信息
- 📝 更新起点榜单
- 支持导出 PDF 格式
- 修复书源 3 搜索失效(更换域名)
- 暂时禁用书源 13 #148
- 更新初始界面 UI
- 优化书源延迟测试
- 优化日志格式
- 更新书源 5 规则
- 修复问题反馈 issue 模板中的错误链接
- 更新推荐书源 issue 模板
- add donation methods to README
- 新增书源:八一中文网 #140
- 新增书源:悠久小说网 #154
- 新增 Docker 安装脚本 #144
- 修复封面获取 NPE
- 修复 #157
- corrected full-width period in chapter filenames #158
- 修改 epub 文件名格式
- 更新
README.md - 更新
BOOK_SOURCES.md - 更新
qidian_rank
- 新增聚合搜索功能(显著提升用户体验) #106
- 新增书源 16:96读书 #102
- 新增书源 17:速读谷 #115
- 书源 5 替换为:新天禧小说 #112
- 书源 9 替换为笔趣阁 #129
- 新增配置项 search-limit
- 书籍详情抓取更多信息
- 修复失效书源
- 修复正文内容包含 <br>
- 修复搜索结果列错位
- 修复部分书源目录章节链接错误
- 修复部分书源分页目录仅获取首页
- 重构
SourceUtils.java - 重构
BookSourceQualityTest.java - 重构
SearchResultParser并重命名为SearchParser - 重命名
SearchResultsHandler#handle - 新增属性
SearchResult#sourceId - 新增重载
SearchResultParser#parse
- 修改 ANSI 样式
- 修改功能选项文本
- 精简
BOOK_SOURCES.md - 修复
ISSUE_TEMPLATE无效链接 - 更新
qidian_rank
- 修复 #116
- 修复书源一览显示过长
- 修复非小写扩展名导致下载失败
- 改进搜索结果为空时的后续操作体验
- 优化书源 9 目录解析速度
- 优化书源 1、9 规则
- 重构
ChapterFilter.java - 重构
ChapterParser.java
- 更新 Scoop 安装命令 #117
- 更新 ISSUE_TEMPLATE
- 升级依赖
- 新增书源 13:得奇小说网 #98
- 新增书源 14:新笔趣阁
- 新增书源 15:略更网 #100
- 修复 #101
- 修复短目录范围下载失败
- 修复部分书源封面下载失败
- 修复分页正则
- 优化书源规则
- 优化 JS 规则
- 优化搜索结果列显示
- 下载格式不分大小写
- 重构
JsoupUtils#select - 重构
SearchResultParser - 重构
TocParser#extractPaginationUrls
- 为项目添加
Dockerfile
- 新增书源 11:笔尖中文
- 新增书源 12:零点小说 #96
- 新增批量下载功能 #76
- 修复 #97
- 修复 #91
- 修复分页搜索单页异常
- 修复 NPE 错误
- 更新书源规则
- 更新书源测试
- 新增书源 8:大熊猫文学 #86
- 新增书源 9:369小说网 #90
- 新增书源 10:天天看小说
- 新增封面获取途径:纵横中文网
- 书源规则支持 JS
- rule.json 新增 limitPage 和 needProxy 属性
- 更新书源 1 域名
- 修复 BookSourceTest.java
- 修复非全本下载时,生成的目录文件内容错误
- 修复正文 html 标签含有属性时引发的错误
- 修复搜索结果为空时报错
- 更新起点榜单
- 优化 rule.json
- 重构 CoverUpdater#matchBook
- 重构 CrawlUtils.java 解耦
- 重构 Source#jsoup
- 重构 FileUtils.java
- 重构 BookSourceQualityTest.java
- 重构 rule.json 书籍详情与封面规则
- 重构 BookSourceTest.java
- 解耦 BookParser.java
- 清理 rule.js
- 目录重命名为 TOC
Note
最新书源信息见:#50
- 新增书源 7: 69书吧(官方) #40
- 支持详情页 URL 下载 #78
- rule.json 新增 timeout 属性
- 优化源站搜索结果 (根据每个作者对应的书籍数量降序)
- 起点榜单移动到 qidian_rank 目录
- 更新 rule-6.json
- 清理 rule.json 冗余属性
- 优化 BookSourceQualityTest.java
- 优化 ChapterParser.java
- 优化 Source#jsoupConn
- 优化 ChapterConverter#convert
- 重构 ChapterParser#parse
- 重构 NewSourceTest.java
- 重构 rule.json 排序属性
Note
温馨提示:
这一版新增的 69书吧(官方) 有限流,使用前必须修改默认配置,否则会被该网站封禁 IP(至少几个小时无法使用)
且搜索页有 CF,故暂不支持搜索,只能通过输入书籍详情页网址下载
- 支持繁体中文(台湾) 、简体中文互转
- 新增书源 6:全本小说网 #82
- 修复下载指定章节起始章错误
- 修复章节解析逻辑错误
- 修复语言不为 zh_CN 时无法从起点获取最新封面
- 修复在 String#replaceFirst 中标题包含括号时的 PatternSyntaxException
- txt、html 格式增加下载封面日志
- 书源 1 ~ 4 规则增加 language 属性
- 更新 rule-5.json
- 规范 language 值命名
- 重构 ChineseConverter.java
- 重构 SearchResultParser#parse
- String#trim 替换为 String#strip (JDK 11)
- 新增下载最新章节功能 #77
- 重复标题 2 次修复 #83
- 修复书源 5 搜素结果异常
- 优化书源 2 规则
- 优化源站搜索结果
- 过滤正文空标签
- auto-update 默认值改为 0
- 修改自动更新进度条样式
- 更新 launch4j 脚本
- 更新 jpackage 脚本
- 支持两种交互模式 (见 config.ini)
- 兼容目录分页的书源
- 新增书源一览功能 #52
- 修复代理配置问题 #69
- 修复进度条显示异常
- 修复下载失败日志文件编码问题
- Pretty output config.ini
- 重构 proxy 配置项
- 清理冗余代码
- 更新 GHP 地址
- 更新 ISSUE_TEMPLATE
- 关闭配置文件加载日志
- 新增书源:69書吧 #65, #61, #41, #40, #13
- 不指定配置项
source-id时,使用随机书源
- 修复爬取间隔设置失效
- 修复部分书源搜索结果唯一时,搜索结果为空的问题
- 重构
Source.java - 优化重复代码
- 更新起点榜单
- 更新
README.md、readme.txt - 新增 ISSUE_TEMPLATE:
问题反馈、功能请求
Tip
69書吧限流较为严重,下载速度明显慢于其他书源。
建议先使用以下配置,之后根据需要进行微调。
# config.ini
[crawl]
# 爬取最小间隔 (毫秒)
min = 1000
# 爬取最大间隔 (毫秒)
max = 2000
# 爬取线程数,-1 表示自动设置
threads = 1
[retry]
# 最大重试次数
max-attempts = 5
# 重试爬取最小间隔 (毫秒)
min = 2000
# 重试爬取最大间隔 (毫秒)
max = 5000还需要指定书源 ID, 大陆用户可能需要设置代理
[base]
# 启用69書吧
source-id = 5
# 网络代理
proxy-host = 127.0.0.1
proxy-port = your port更新内容
✨ 新增书源 4
✨ 更新书源 1、3 过滤规则
✨ epub 内容首页增加封面;txt、html 目录增加封面
🐛 修复正文包含重复标题 #57
🚸 默认不启用自动更新 #53
♻️ 重构 txt 合并代码
更新内容:
✨ 新增书源 3 (http://www.mcmssc.la/)
✨ TXT 开头添加书籍信息
✨ 新增书源质量检测 #50
🚸 改善交互体验 #46
🚸 启动时校验 source-id 合法性
💄 优化 EPUB、HTML、TXT 正文排版
⚡ EPUB 生成后删除临时目录
🐛 修复部分书源封面 URL 获取异常
🐛 修复某些情况下搜索失败
📝 更新使用说明 readme.txt
更新内容:
🚸 支持动态加载配置文件,修改配置文件后无需重启
✨ 新增配置项 auto-update(启动时是否自动更新)
🐛 修复封面下载失败会中断 epub 生成
🐛 修复自动更新时预览版本号比较问题
📝 新增 Homebrew 安装方法,感谢 Weizhao
更新内容
- 🐛 修复 txt 格式首行多余文本
- 📝 更新使用须知
- 🔧 更新配置文件默认值
- ⚡ 提高下载成功率
- 🚸 优化自动更新体验
更新内容
- ✨ 新增书源 #33
- 🐛 修复下载章数即使不为 0,epub 也不生成的问题
- 🚸 优化交互体验,可重选下载序号
更新内容
- ✨ 新增重选下载序号功能
- ✨ 新增章节爬取失败重试功能
- ✨ 新增config.ini下载重试参数,并设置其它参数的默认值
更新内容
🐛 修复部分用户 macOS、Linux 启动报错
更新内容
- ✨ 更改交互方式,改为按 Tab 键选择功能
- ✨ 新增软件更新功能
- ✨ 新增查看配置文件功能
- 🐛 修复最新封面替换失效
⬆️ 依赖升级
| dependency | before | after |
|---|---|---|
| jsoup | 1.17.2 | 1.18.1 |
| hutool | 5.8.28 | 5.8.33 |
| lombok | 1.18.32 | 1.18.34 |
| junit-jupiter-api | 5.10.2 | 5.11.3 |
| launch4j-maven-plugin | 2.5.1 | 2.5.2 |
更新内容
- 适配 Linux
- Windows 版统一包含 JRE,不再区分有无 JRE 版本
- 更新 CI 构建脚本
Warning
致 Scoop 用户:v1.6.0 开始,so-novel-with-jre 已弃用,请卸载并重装 so-novel
scoop uninstall so-novel-with-jre
scoop bucket add freeok https://github.com/freeok/scoop-bucket
scoop install freeok/so-novel
scoop install so-novel更新内容
- 章节下载失败会生成日志
- 无下载章节时不生成 epub
- 新增推荐书源 issue template
- 修复输入提示信息重复
- 重构书源爬取规则,XPath 替换为 CSS selectors
更新内容
- 移除 epub 默认样式 #11
更新内容
- 新增章节下载失败时提示原因
- 修复 Apple Books 部分章节报错
- 修复 Apple Books 无法使用中文字体 #9
更新内容
- 修复合并 epub 时 NPE
- 修改 windows release 文件名
更新内容
- 新增 macOS 发布自动化
- JRE 升级至 17.0.11+9
- 依赖升级
更新内容
- 更新书源 url
更新内容
- html 导出格式新增翻页功能(支持左右键)
- html 导出格式新增目录文件
- 优化 epub 体积
下载选择
- 如果已安装 JDK 17 或 JRE 17:sonovel-windows.tar.gz
- 否则:sonovel-windows-with-jre.tar.gz
- sonovel-macos_x64.tar.gz
- sonovel-macos_arm64.tar.gz
更新内容
- 修复 txt 章节名识别错误
更新内容
- 配置文件格式改为 ini
- 封面优先从起点获取
更新内容
- 新增 Windows 免安装版,解压即用
更新内容
- 支持导出格式:epub、txt、html
更新内容
- 更新书源 url
- 修改爬取间隔
- 新增全本下载功能
- 依赖升级
- 新增配置项 threads
- 去除正文无关内容
- txt 格式增加章节标题
更新内容
- 优化、重构代码
更新内容
- 优化、重构代码
书源已失效,勿用