mirror of
https://github.com/qaiu/netdisk-fast-download.git
synced 2026-08-27 03:52:02 +00:00
675d930f86
- 前端: getCurrentPanType() 补全123网盘域名匹配正则(share.123pan.cn等子域名) - 前端: 临时认证弹窗补充123云盘(YE)选项及提示文案 - 前端: submitDonateAccount() 按当前authType只提交相关字段,避免切换认证方式后 残留的用户名/密码脏数据被一并提交 - 后端: URLParamUtil.addParam() 不再无条件用静态yml配置覆盖已生效的临时认证/ 自动捐赠账号回退(增加 __TEMP_AUTH_ADDED 判断) - 后端: CacheServiceImpl 新增 applyDonatedAccountFallback(),请求未带auth参数 且无静态配置时自动从捐赠账号池随机取一个可用账号使用,并在解析失败时记录/ 自动禁用失败账号 - 后端: DbServiceImpl.getRandomDonatedAccount() 对非password类型账号强制丢弃 历史遗留的username/password字段,避免被误当账号密码登录 - 解析器: Ye2Tool 清理token/authorization前缀中的"Bearer ",避免拼接成 'Bearer Bearer xxx' 导致123接口返回 tokenstring should not contain bearer 已通过本地实测验证: 捐赠123账号后,不带auth参数直接请求 /json/parser?url=https://1815268665.share.123pan.cn/123pan/iaKtVv-r4aCd 可正常返回200及直链
parser
NFD 解析器模块:聚合各类网盘/分享页解析,统一输出文件列表与下载信息,供上层下载器使用。
- 语言:Java 17
- 构建:Maven
- 模块版本:10.2.5
依赖(Maven Central)
<dependency>
<groupId>cn.qaiu</groupId>
<artifactId>parser</artifactId>
<version>10.2.5</version>
</dependency>
- Gradle Groovy DSL:
dependencies {
implementation 'cn.qaiu:parser:10.2.5'
}
- Gradle Kotlin DSL:
dependencies {
implementation("cn.qaiu:parser:10.2.5")
}
核心 API 速览
- WebClientVertxInit:注入/获取 Vert.x 实例(内部 HTTP 客户端依赖)。
- ParserCreate:从分享链接或类型构建解析器;生成短链 path。
- IPanTool:统一解析接口(parse、parseFileList、parseById)。
- CustomParserRegistry:自定义解析器注册中心(支持扩展)。
- CustomParserConfig:自定义解析器配置类(支持扩展)。
使用示例(极简)
List<FileInfo> list = ParserCreate
.fromShareUrl("https://share.feijipan.com/s/3pMsofZd")
.createTool()
.parseFileList()
.toCompletionStage().toCompletableFuture().join();
完整示例与调试脚本见 parser/doc/README.md。
快速开始
- 环境:JDK >= 17,Maven >= 3.9
- 构建/安装:
mvn -pl parser -am clean package -DskipTests
mvn -pl parser -am install
- 测试:
mvn -pl parser test
自定义解析器扩展
本模块支持用户自定义解析器扩展。通过简单的配置和注册,你可以添加自己的网盘解析实现:
// 1. 继承 PanBase 抽象类(推荐)
public class MyPanTool extends PanBase {
public MyPanTool(ShareLinkInfo info) {
super(info);
}
@Override
public Future<String> parse() {
// 使用 PanBase 提供的 HTTP 客户端
client.getAbs("https://api.example.com")
.send()
.onSuccess(res -> complete(asJson(res).getString("url")))
.onFailure(handleFail("请求失败"));
return future();
}
}
// 2. 注册到系统
CustomParserConfig config = CustomParserConfig.builder()
.type("mypan")
.displayName("我的网盘")
.toolClass(MyPanTool.class)
.build();
CustomParserRegistry.register(config);
// 3. 使用自定义解析器(仅支持 fromType 方式)
IPanTool tool = ParserCreate.fromType("mypan")
.shareKey("abc123")
.createTool();
String url = tool.parseSync();
详细文档: 自定义解析器扩展指南
文档
- parser/doc/README.md:解析约定、示例、IDEA
.http调试 - parser/doc/JAVASCRIPT_PARSER_GUIDE.md:JavaScript解析器开发完整指南 - 使用JavaScript编写自定义解析器
- parser/doc/CUSTOM_PARSER_GUIDE.md:自定义解析器扩展完整指南 - Java自定义解析器扩展
- parser/doc/CUSTOM_PARSER_QUICKSTART.md:自定义解析器快速开始 - 快速上手指南
目录
- src/main/java/cn/qaiu/entity:通用实体(如 FileInfo)
- src/main/java/cn/qaiu/parser:解析框架 & 各站点实现(impl)
- src/test/java:单测与示例
许可证
MIT License