mirror of
https://github.com/qaiu/netdisk-fast-download.git
synced 2025-12-16 12:23:03 +00:00
feat: 添加 WPS 云文档/WPS 云盘解析支持 (closes #133)
- 新增 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(免费版)
This commit is contained in:
@@ -160,6 +160,21 @@ public class ParserApi {
|
||||
*/
|
||||
@RouteMapping(value = "/view/:type/:key", method = RouteMethod.GET, order = 2)
|
||||
public void view(HttpServerRequest request, HttpServerResponse response, String type, String key) {
|
||||
// WPS 网盘类型特殊处理:直接使用原分享链接(WPS 支持在线预览)
|
||||
if ("pwps".equalsIgnoreCase(type)) {
|
||||
try {
|
||||
// 重建原分享链接
|
||||
ParserCreate parserCreate = ParserCreate.fromType(type).shareKey(key);
|
||||
String originalUrl = parserCreate.getShareLinkInfo().getStandardUrl();
|
||||
if (StringUtils.isNotBlank(originalUrl)) {
|
||||
ResponseUtil.redirect(response, originalUrl);
|
||||
return;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.warn("PWPS 预览链接构建失败: {}", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
String previewURL = SharedDataUtil.getJsonStringForServerConfig("previewURL");
|
||||
serverApi.parseKeyJson(request, type, key).onSuccess(res -> {
|
||||
redirect(response, previewURL, res);
|
||||
@@ -178,6 +193,24 @@ public class ParserApi {
|
||||
*/
|
||||
@RouteMapping(value = "/preview", method = RouteMethod.GET, order = 9)
|
||||
public void viewURL(HttpServerRequest request, HttpServerResponse response, String pwd) {
|
||||
// WPS 网盘类型特殊处理:直接使用原分享链接(WPS 支持在线预览)
|
||||
try {
|
||||
String url = URLParamUtil.parserParams(request);
|
||||
ParserCreate parserCreate = ParserCreate.fromShareUrl(url);
|
||||
ShareLinkInfo shareLinkInfo = parserCreate.getShareLinkInfo();
|
||||
|
||||
// 如果是 PWPS 类型,直接重定向到原分享链接
|
||||
if ("pwps".equalsIgnoreCase(shareLinkInfo.getType())) {
|
||||
String originalUrl = shareLinkInfo.getStandardUrl();
|
||||
if (StringUtils.isNotBlank(originalUrl)) {
|
||||
ResponseUtil.redirect(response, originalUrl);
|
||||
return;
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.warn("解析预览链接失败: {}", e.getMessage());
|
||||
}
|
||||
|
||||
String previewURL = SharedDataUtil.getJsonStringForServerConfig("previewURL");
|
||||
new ServerApi().parseJson(request, pwd).onSuccess(res -> {
|
||||
redirect(response, previewURL, res);
|
||||
|
||||
Reference in New Issue
Block a user