Skip to content

Commit 50245cb

Browse files
committed
🎉 Release v1.7.9
1 parent 5f84d39 commit 50245cb

File tree

10 files changed

+41
-60
lines changed

10 files changed

+41
-60
lines changed

CHANGELOG.md

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,19 @@
1-
## v1.7.8 (2025-02-09)
1+
## v1.7.9 (2025-02-22)
22

33
### ✨ 新特性
44

5-
- 新增书源 8:大熊猫文学 (https://github.com/freeok/so-novel/issues/86)
6-
- 新增书源 9:369小说网 (https://github.com/freeok/so-novel/issues/90)
7-
- 新增书源 10:天天看小说
8-
- 新增封面获取途径:纵横中文网
9-
- 书源规则支持 JS
10-
- rule.json 新增 limitPage 和 needProxy 属性
5+
- 新增书源 11:笔尖中文
6+
- 新增书源 12:零点小说 [#96](https://github.com/freeok/so-novel/issues/96)
7+
- 新增批量下载功能 [#76](https://github.com/freeok/so-novel/issues/76)
118

129
### 🐛 Bug 修复
1310

14-
- 更新书源 1 域名
15-
- 修复 BookSourceTest.java
16-
- 修复非全本下载时,生成的目录文件内容错误
17-
- 修复正文 html 标签含有属性时引发的错误
18-
- 修复搜索结果为空时报错
11+
- 修复 [#97](https://github.com/freeok/so-novel/issues/97)
12+
- 修复 [#91](https://github.com/freeok/so-novel/issues/91)
13+
- 修复分页搜索单页异常
14+
- 修复 NPE 错误
1915

2016
### ♻️ 重构优化
2117

22-
- 更新起点榜单
23-
- 优化 rule.json
24-
- 重构 CoverUpdater#matchBook
25-
- 重构 CrawlUtils.java 解耦
26-
- 重构 Source#jsoup
27-
- 重构 FileUtils.java
28-
- 重构 BookSourceQualityTest.java
29-
- 重构 rule.json 书籍详情与封面规则
30-
- 重构 BookSourceTest.java
31-
- 解耦 BookParser.java
32-
- 清理 rule.js
33-
- 目录重命名为 TOC
34-
35-
> [!NOTE]
36-
>
37-
> 最新书源信息见:https://github.com/freeok/so-novel/issues/50
18+
- 更新书源规则
19+
- 更新书源测试

README.md

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# So Novel
22

33
<div align="center">
4-
<img src="assets/logo-1.ico" alt="logo" style="width: 128px; border-radius: 25px">
4+
<img src="assets/logo.png" alt="logo" style="width: 128px;">
55
</div>
66

77
## 前言
88

9-
适合用户:既想免费看正版付费新书,又追求更佳阅读体验的网络文学爱好者
9+
适合用户:既想免费看正版新书,又想追求绝佳阅读体验的网络文学爱好者
1010

11-
适用场景:国内网上 98% 的 TXT 、EPUB 等格式的小说都是完本。如果想看新书,要么去起点等一类的正版平台付费阅读,要么去笔趣阁等一类网站,要么用“阅读”(仅限安卓)等一类
11+
适用场景:国内网上 98% 的 TXT、EPUB 格式的小说都是完本。如果想看新书,要么去起点等一类的正版平台付费阅读,要么去笔趣阁等一类网站,要么用“阅读”等一类有平台限制的
1212
APP。其实这些方案足够很多人用了,但总会有众口难调的情况:嫌弃 UI
1313
难看的、吐槽功能的、受限于平台的。这时阅读器的优势便显现出来了——DIY。这个工具最大的意义就是能把连载的新书免费下载为 EPUB
1414
等电子书格式,从而导入自己喜爱的阅读器。
@@ -19,23 +19,25 @@ APP。其实这些方案足够很多人用了,但总会有众口难调的情
1919

2020
交互式小说下载器,Windows、macOS、Linux 解压即用
2121

22-
可根据书名、作者搜索并下载小说
23-
24-
支持导出格式:EPUB、TXT、HTML(支持翻页)
22+
- 可根据书名、作者搜索并下载小说
23+
- 支持导出格式:EPUB、TXT、HTML(支持翻页)
24+
- [高质量书源](https://github.com/freeok/so-novel/blob/main/BOOK_SOURCES.md)
25+
- 支持批量下载
2526

2627
结合以下电子书阅读器使用更佳
2728

28-
- 电脑:[Readest](https://github.com/readest/readest)[Koodo Reader](https://www.koodoreader.com/zh)
29-
- 手机:[Apple Books](https://www.apple.com/apple-books/)[Moon+ Reader](https://moondownload.com/chinese.html)、<del>
30-
微信读书</del>(2024.4 更新后非付费会员每月最多导 3 本书)
29+
- 电脑:[Koodo Reader](https://www.koodoreader.com/zh)[Readest](https://github.com/readest/readest)
30+
-
31+
手机:[Kindle](https://apps.apple.com/us/app/amazon-kindle/id302584613)[Apple Books](https://www.apple.com/apple-books/)[Moon+ Reader](https://moondownload.com/chinese.html)、<del>
32+
微信读书</del>(2024.4 更新后,非付费会员每月最多导 3 本书)
3133

3234
> [!WARNING]
3335
>
34-
> iOS 16 Apple Books 目录不能定位到当前章节,如果看到很多章了,就需要从上一直向下划,十分不便
36+
> iOS 16 Apple Books 目录不能定位到当前章节,如果看到很多章了,就需要从上一直向下划,十分不便(iOS 17 修复了此 Bug)
3537
>
36-
> iOS 17 修复了此 Bug
38+
> Apple Books 不建议开启 iCloud,因为每次打开都要从 iCloud 重新下载
3739
38-
## 效果
40+
## 预览
3941

4042
保留部分下载日志
4143

assets/logo-1.ico

50.7 KB
Binary file not shown.

assets/logo.png

82.7 KB
Loading

bin/jpackage-linux.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jpackage \
1919
--input "target/jpackage" \
2020
--dest dist \
2121
--icon assets/logo-1.ico \
22-
--app-version 1.7.8 \
22+
--app-version 1.7.9 \
2323
--copyright "Copyright (C) 2025 SoNovel. All rights reserved." \
2424
--description "开源搜书神器" \
2525
--vendor "FreeOK" \

bin/jpackage-windows-dev.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jpackage \
2727
--input "target/jpackage" \
2828
--dest dist \
2929
--icon assets/logo-1.ico \
30-
--app-version 1.7.8 \
30+
--app-version 1.7.9 \
3131
--copyright "Copyright (C) 2025 SoNovel. All rights reserved." \
3232
--description "开源搜书神器" \
3333
--vendor "FreeOK" \

bin/jpackage-windows.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jpackage \
2020
--input "nobug/jpackage" \
2121
--dest dist \
2222
--icon assets/logo-1.ico \
23-
--app-version 1.7.8 \
23+
--app-version 1.7.9 \
2424
--copyright "Copyright (C) 2025 SoNovel. All rights reserved." \
2525
--description "开源搜书神器" \
2626
--vendor "FreeOK" \

input/readme.txt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,15 @@ macOS 用户
77
Linux 用户
88
运行 linux-run.sh
99

10-
11-
交互模式 2 (interactive-mode = 2) 使用方法
12-
1. 先按 Tab 键显示选项
13-
2. 再按 Tab 键切换选项
14-
3. 然后按 Enter 键选中
15-
4. 最后按 Enter 键执行
16-
17-
1810
温馨提示
1911
- 为获得更好的使用体验,请将终端窗口最大化。
2012
- config.ini 是配置文件,您可以在其中修改书源和下载格式。修改后无需重启应用(非 Windows 系统的兼容性未完全保证)。
2113
- 如何选择适合自己的书源,请参考:https://github.com/freeok/so-novel/issues/50(必读)
2214
- 如果搜索失败,建议多次尝试,稍后再试,并检查您的网络连接。
2315
- 若章节下载失败,您可以尝试增大爬取间隔,直到找到合适的设置。
2416
- 如果认为下载速度较慢,适当减小爬取间隔可能有助于提高速度,直到达到合适的平衡。
25-
- 请注意,设置过小的爬取间隔可能会导致部分书源对您的 IP 限流,从而无法正常使用。
17+
- 请注意,设置过小的爬取间隔会导致部分书源封禁 IP,从而无法使用。
18+
- 如果书名搜不到,建议用作者名搜索
2619

2720

2821
问题反馈
@@ -31,8 +24,15 @@ Linux 用户
3124
- 希望增加某个新功能
3225
上述情况请在此反馈:https://github.com/freeok/so-novel/issues/new/choose
3326
非上述情况在此反馈:https://github.com/freeok/so-novel/discussions/new/choose
34-
反馈前请先查看常见问题:https://github.com/freeok/so-novel/issues?q=is:issue state:closed label:"user error"
35-
如果都没有,欢迎反馈!
27+
反馈前请务必查看常见问题:https://github.com/freeok/so-novel/issues?q=is:issue state:closed label:"user error"
28+
如果都没有,再进行反馈!
29+
30+
31+
交互模式 2 (interactive-mode = 2) 使用方法
32+
1. 先按 Tab 键显示选项
33+
2. 再按 Tab 键切换选项
34+
3. 然后按 Enter 键选中
35+
4. 最后按 Enter 键执行
3636

3737

3838
项目主页:https://github.com/freeok/so-novel

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.pcdd</groupId>
88
<artifactId>so-novel</artifactId>
9-
<version>1.7.8</version>
9+
<version>1.7.9</version>
1010
<packaging>jar</packaging>
1111

1212
<name>so-novel</name>

src/main/java/com/pcdd/sonovel/action/BatchDownloadAction.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,13 @@
66
import cn.hutool.core.lang.Console;
77
import cn.hutool.core.util.NumberUtil;
88
import cn.hutool.core.util.StrUtil;
9-
import cn.hutool.json.JSONUtil;
109
import com.pcdd.sonovel.core.Crawler;
1110
import com.pcdd.sonovel.model.AppConfig;
1211
import com.pcdd.sonovel.model.Chapter;
1312
import com.pcdd.sonovel.model.SearchResult;
1413
import com.pcdd.sonovel.parse.SearchResultParser;
1514
import com.pcdd.sonovel.parse.TocParser;
1615
import lombok.AllArgsConstructor;
17-
import lombok.SneakyThrows;
1816

1917
import java.io.File;
2018
import java.util.ArrayList;
@@ -33,7 +31,6 @@ public class BatchDownloadAction {
3331
private final AppConfig config;
3432
public static final String DIVIDER = "=".repeat(50);
3533

36-
@SneakyThrows
3734
public void execute() {
3835
Scanner sc = Console.scanner();
3936
List<String> lines = new ArrayList<>();
@@ -61,7 +58,7 @@ public void execute() {
6158
.filter(sr -> bookName.equals(sr.getBookName()) && author.equals(sr.getAuthor()))
6259
.findFirst()
6360
.ifPresentOrElse(sr -> {
64-
Console.log("<== 已找到:{}", JSONUtil.toJsonPrettyStr(sr));
61+
Console.log("<== 已找到:《{}》({}) {}", sr.getBookName(), sr.getAuthor(), sr.getUrl());
6562
downloadList.add(sr);
6663
}, () -> {
6764
Console.log("<== 未找到:《{}》({})", bookName, author);
@@ -82,7 +79,7 @@ public void execute() {
8279
System.getProperty("user.dir") + File.separator + "批量下载 - 书源 %s 未搜到的书.log".formatted(config.getSourceId()));
8380
}
8481
Console.print("==> 输入 Y 以确认下载:");
85-
if ("Y".equalsIgnoreCase(sc.nextLine().strip())) {
82+
if ("Y".equalsIgnoreCase(sc.next().strip())) {
8683
double totalTime = 0;
8784
TocParser tocParser = new TocParser(config);
8885

0 commit comments

Comments
 (0)