Skip to content

Commit

Permalink
🎉 Release v1.7.6
Browse files Browse the repository at this point in the history
  • Loading branch information
freeok committed Jan 29, 2025
1 parent 4e3bfcf commit ba1a23c
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 62 deletions.
3 changes: 1 addition & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
### ✨ 新特性

- 支持繁体中文(台湾) 、简体中文互转

- 新增书源6:[全本小说网](https://github.com/freeok/so-novel/issues/82)
- 新增书源 6:[全本小说网](https://quanben5.com/) (https://github.com/freeok/so-novel/issues/82)

### 🐛 Bug 修复

Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@ APP。其实这些方案足够很多人用了,但总会有众口难调的情
### 🍨 Scoop 安装

```bash
# 若搜不到 so-novel,请先执行下面这一行命令
scoop bucket add spc https://ghp.ci/https://github.com/lzwme/scoop-proxy-cn
scoop bucket add spc https://gh.idayer.com/github.com/lzwme/scoop-proxy-cn
scoop install so-novel
```

Expand Down
2 changes: 1 addition & 1 deletion bin/jpackage-linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jpackage \
--input "target/jpackage" \
--dest dist \
--icon assets/logo-1.ico \
--app-version 1.7.5 \
--app-version 1.7.6 \
--copyright "Copyright (C) 2025 SoNovel. All rights reserved." \
--description "开源搜书神器" \
--vendor "FreeOK" \
Expand Down
2 changes: 1 addition & 1 deletion bin/jpackage-windows-dev.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jpackage \
--input "target/jpackage" \
--dest dist \
--icon assets/logo-1.ico \
--app-version 1.7.5 \
--app-version 1.7.6 \
--copyright "Copyright (C) 2025 SoNovel. All rights reserved." \
--description "开源搜书神器" \
--vendor "FreeOK" \
Expand Down
2 changes: 1 addition & 1 deletion bin/jpackage-windows.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jpackage \
--input "nobug/jpackage" \
--dest dist \
--icon assets/logo-1.ico \
--app-version 1.7.5 \
--app-version 1.7.6 \
--copyright "Copyright (C) 2025 SoNovel. All rights reserved." \
--description "开源搜书神器" \
--vendor "FreeOK" \
Expand Down
12 changes: 6 additions & 6 deletions config.ini
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[base]
# 语言 (可选值:zh_CN, zh_TW, zh_Hant)
# 书籍内容的语言 (可选值:zh_CN, zh_TW, zh_Hant)
language = zh_CN
# 启用书源 (只能选一个,可选值:1、2、3、4、5,不指定则随机使用)
# 启用书源 (只能选一个,可选值:1, 2, 3, 4, 5, 6,不指定则随机使用)
source-id =
# 下载路径,绝对相对均可 (Windows 路径分隔符不要用 \ ,用 \\ 或 /)
download-path = downloads
Expand All @@ -14,19 +14,19 @@ interactive-mode = 1

[crawl]
# 爬取最小间隔 (毫秒)
min = 200
min = 400
# 爬取最大间隔 (毫秒)
max = 500
max = 1000
# 爬取线程数,-1 表示自动设置
threads = -1

[retry]
# 最大重试次数 (针对首次下载失败的章节)
max-attempts = 3
# 重试爬取最小间隔 (毫秒)
min = 1000
min = 2000
# 重试爬取最大间隔 (毫秒)
max = 2500
max = 5000

[proxy]
# 是否启用 HTTP 代理 (1 开,0 关)
Expand Down
4 changes: 2 additions & 2 deletions input/readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Linux 用户
运行 linux-run.sh


使用方法
交互模式 2 (interactive-mode = 2) 使用方法
1. 先按 Tab 键显示选项
2. 再按 Tab 键切换选项
3. 然后按 Enter 键选中
Expand All @@ -30,7 +30,7 @@ Linux 用户
- 希望增加某个书源
- 希望增加某个新功能
上述情况请在此反馈:https://github.com/freeok/so-novel/issues/new/choose
非上述情况在此反馈:https://github.com/freeok/so-novel/issues/new
非上述情况在此反馈:https://github.com/freeok/so-novel/discussions/new/choose


项目主页:https://github.com/freeok/so-novel
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.pcdd</groupId>
<artifactId>so-novel</artifactId>
<version>1.7.5</version>
<version>1.7.6</version>
<packaging>jar</packaging>

<name>so-novel</name>
Expand Down
34 changes: 21 additions & 13 deletions src/main/java/com/pcdd/sonovel/parse/SearchResultParser6.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.pcdd.sonovel.parse;

import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.lang.Console;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.text.UnicodeUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HtmlUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONUtil;
import cn.hutool.script.ScriptUtil;
import com.pcdd.sonovel.convert.ChineseConverter;
Expand All @@ -23,6 +25,7 @@
import org.jsoup.select.Elements;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -56,21 +59,26 @@ public List<SearchResult> parse(String keyword) {
if (config.getProxyEnabled() == 1)
req.setHttpProxy(config.getProxyHost(), config.getProxyPort());

String body = req.execute().body();
String s = UnicodeUtil.toString(body);
String s2 = HtmlUtil.unescape(s)
.replace("\\r", "")
.replace("\\n", "")
.replace("\\t", "")
.replace("\\/", "/")
.replace("\\\"", "'");
String s3 = ReUtil.getGroup0("\\{(.*?)\\}", s2);
try (HttpResponse resp = req.execute()) {
String body = resp.body();
String s = UnicodeUtil.toString(body);
String s2 = HtmlUtil.unescape(s)
.replace("\\r", "")
.replace("\\n", "")
.replace("\\t", "")
.replace("\\/", "/")
.replace("\\\"", "'");
String s3 = ReUtil.getGroup0("\\{(.*?)\\}", s2);

String beginIndex = "\"content\":";
String ans = s3.substring(s3.indexOf(beginIndex) + beginIndex.length(), s3.lastIndexOf("}"));
List<SearchResult> firstPageResults = getSearchResults(Jsoup.parse(ans));
String beginIndex = "\"content\":";
String ans = s3.substring(s3.indexOf(beginIndex) + beginIndex.length(), s3.lastIndexOf("}"));
List<SearchResult> firstPageResults = getSearchResults(Jsoup.parse(ans));
return SearchResultsHandler.handle(firstPageResults);

return SearchResultsHandler.handle(firstPageResults);
} catch (Exception e) {
Console.error(e.getMessage());
return Collections.emptyList();
}
}

@SneakyThrows
Expand Down
67 changes: 34 additions & 33 deletions src/test/java/com/pcdd/sonovel/NewSourceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,39 +33,6 @@ class NewSourceTest {
config.setSourceId(6);
}

@Test
void crackSearch() {
String kw = "我吃西红柿";
String js = ResourceUtil.readUtf8Str("js/rule-6.js");
Object key = ScriptUtil.invoke(js, "getParamB", kw);

Source source = new Source(6);
Rule.Search ruleSearch = source.rule.getSearch();
String param = ruleSearch.getData().formatted(key, kw);
/* JSONObject obj = JSONUtil.parseObj(param);
System.out.println(JSONUtil.toJsonPrettyStr(obj)); */

Map<String, String> map = JSONUtil.toBean(param, Map.class);
HttpRequest req = HttpRequest
.get(ruleSearch.getUrl())
.header("Referer", ruleSearch.getUrl() + "search.html")
.formStr(map);

System.out.println(req.form());
String body = req.execute().body();
String s = UnicodeUtil.toString(body);
String s2 = HtmlUtil.unescape(s)
.replace("\\r", "")
.replace("\\n", "")
.replace("\\t", "")
.replace("\\/", "/")
.replace("\\\"", "'");
String s4 = ReUtil.getGroup0("\\{(.*?)\\}", s2);
JSONObject jsonObject = JSONUtil.parseObj(s4);
String html = jsonObject.getStr("content");
System.out.println(Jsoup.parse(html));
}

@Test
void searchParse() {
SearchResultParser sr = new SearchResultParser(config);
Expand Down Expand Up @@ -97,4 +64,38 @@ void chapterParse() {
System.out.println(chapterParser.parse(chapter));
}


@Test
void crackSearch6() {
String kw = "我吃西红柿";
String js = ResourceUtil.readUtf8Str("js/rule-6.js");
Object key = ScriptUtil.invoke(js, "getParamB", kw);

Source source = new Source(config);
Rule.Search ruleSearch = source.rule.getSearch();
String param = ruleSearch.getData().formatted(kw, key);
JSONObject obj = JSONUtil.parseObj(param);
System.out.println(JSONUtil.toJsonPrettyStr(obj));

Map<String, String> map = JSONUtil.toBean(param, Map.class);
HttpRequest req = HttpRequest
.get(ruleSearch.getUrl())
.header("Referer", ruleSearch.getUrl() + "search.html")
.formStr(map);

System.out.println(req.form());
String body = req.execute().body();
String s = UnicodeUtil.toString(body);
String s2 = HtmlUtil.unescape(s)
.replace("\\r", "")
.replace("\\n", "")
.replace("\\t", "")
.replace("\\/", "/")
.replace("\\\"", "'");
String s4 = ReUtil.getGroup0("\\{(.*?)\\}", s2);
JSONObject jsonObject = JSONUtil.parseObj(s4);
String html = jsonObject.getStr("content");
System.out.println(Jsoup.parse(html));
}

}

0 comments on commit ba1a23c

Please sign in to comment.