mirror of
https://github.com/qaiu/netdisk-fast-download.git
synced 2025-12-16 20:33:03 +00:00
- 新增 PwpsTool 解析器,支持 WPS 云文档直链获取 - 调用 WPS API: https://www.kdocs.cn/api/office/file/{shareKey}/download - 前端添加 kdocs.cn 链接识别规则 - 前端预览功能优化:WPS 云文档直接使用原分享链接预览 - 后端预览接口特殊处理:判断 shareKey 以 pwps: 开头自动重定向 - 支持提取文件名和有效期信息 - 更新 README 文档,添加 WPS 云文档支持说明 Parser 模块设计: - 遵循开放封闭原则,易于扩展新网盘 - 只需实现 IPanTool 接口和注册枚举即可 - 支持自定义域名解析和责任链模式 技术特性: - 免登录获取下载直链 - 支持在线预览(利用 WPS 原生功能) - 文件大小限制:10M(免费版)/2G(会员版) - 初始空间:5G(免费版)
97 lines
2.7 KiB
Markdown
97 lines
2.7 KiB
Markdown
# 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
|
||
Vertx vx = Vertx.vertx();
|
||
WebClientVertxInit.init(vx);
|
||
IPanTool tool = ParserCreate.fromShareUrl("https://www.lanzoui.com/xxx").createTool();
|
||
List<FileInfo> list = tool.parseFileList().toCompletionStage().toCompletableFuture().join();
|
||
```
|
||
完整示例与调试脚本见 parser/doc/README.md。
|
||
|
||
## 快速开始
|
||
- 环境:JDK >= 17,Maven >= 3.9
|
||
- 构建/安装:
|
||
```
|
||
mvn -pl parser -am clean package
|
||
mvn -pl parser -am install
|
||
```
|
||
- 测试:
|
||
```
|
||
mvn -pl parser test
|
||
```
|
||
|
||
## 自定义解析器扩展
|
||
本模块支持用户自定义解析器扩展。通过简单的配置和注册,你可以添加自己的网盘解析实现:
|
||
|
||
```java
|
||
// 1. 实现 IPanTool 接口
|
||
public class MyPanTool implements IPanTool {
|
||
public MyPanTool(ShareLinkInfo info) { /* 必须提供此构造器 */ }
|
||
@Override
|
||
public Future<String> parse() { /* 实现解析逻辑 */ }
|
||
}
|
||
|
||
// 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/CUSTOM_PARSER_GUIDE.md:自定义解析器扩展完整指南**
|
||
|
||
## 目录
|
||
- src/main/java/cn/qaiu/entity:通用实体(如 FileInfo)
|
||
- src/main/java/cn/qaiu/parser:解析框架 & 各站点实现(impl)
|
||
- src/test/java:单测与示例
|
||
|
||
## 许可证
|
||
MIT License
|