Files
netdisk-fast-download/parser/README.md
2025-11-28 19:48:19 +08:00

109 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# parser
NFD 解析器模块:聚合各类网盘/分享页解析,统一输出文件列表与下载信息,供上层下载器使用。
- 语言Java 17
- 构建Maven
- 模块版本10.1.17
## 依赖Maven Central
```xml
<dependency>
<groupId>cn.qaiu</groupId>
<artifactId>parser</artifactId>
<version>10.1.17</version>
</dependency>
```
- Gradle Groovy DSL
```groovy
dependencies {
implementation 'cn.qaiu:parser:10.1.17'
}
```
- Gradle Kotlin DSL
```kotlin
dependencies {
implementation("cn.qaiu:parser:10.1.17")
}
```
## 核心 API 速览
- WebClientVertxInit注入/获取 Vert.x 实例(内部 HTTP 客户端依赖)。
- ParserCreate从分享链接或类型构建解析器生成短链 path。
- IPanTool统一解析接口parse、parseFileList、parseById
- **CustomParserRegistry**:自定义解析器注册中心(支持扩展)。
- **CustomParserConfig**:自定义解析器配置类(支持扩展)。
## 使用示例(极简)
```java
List<FileInfo> list = ParserCreate
.fromShareUrl("https://share.feijipan.com/s/3pMsofZd")
.createTool()
.parseFileList()
.toCompletionStage().toCompletableFuture().join();
```
完整示例与调试脚本见 parser/doc/README.md。
## 快速开始
- 环境JDK >= 17Maven >= 3.9
- 构建/安装:
```
mvn -pl parser -am clean package -DskipTests
mvn -pl parser -am install
```
- 测试:
```
mvn -pl parser test
```
## 自定义解析器扩展
本模块支持用户自定义解析器扩展。通过简单的配置和注册,你可以添加自己的网盘解析实现:
```java
// 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();
```
**详细文档:** [自定义解析器扩展指南](doc/CUSTOM_PARSER_GUIDE.md)
## 文档
- parser/doc/README.md解析约定、示例、IDEA `.http` 调试
- **parser/doc/JAVASCRIPT_PARSER_GUIDE.mdJavaScript解析器开发完整指南** - 使用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