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:
@@ -340,6 +340,11 @@
|
||||
host: /migu\.cn/,
|
||||
name: '咪咕音乐分享'
|
||||
},
|
||||
kdocs: {
|
||||
reg: /https:\/\/www\.kdocs\.cn\/l\/.+/,
|
||||
host: /www\.kdocs\.cn/,
|
||||
name: 'WPS云文档'
|
||||
},
|
||||
other: {
|
||||
reg: /https:\/\/([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\.)+[a-zA-Z]{2,}\/s\/.+/,
|
||||
host: /.*/,
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
</div>
|
||||
<div class="file-meta-row">
|
||||
<span class="file-meta-label">文件预览:</span>
|
||||
<a :href="previewBaseUrl + encodeURIComponent(downloadUrl)" target="_blank" class="file-meta-link">点击预览</a>
|
||||
<a :href="getPreviewLink()" target="_blank" class="file-meta-link">点击预览</a>
|
||||
</div>
|
||||
<div class="file-meta-row">
|
||||
<span class="file-meta-label">文件名:</span>{{ extractFileNameAndExt(downloadUrl).name }}
|
||||
@@ -299,6 +299,18 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 生成预览链接(WPS 云文档特殊处理)
|
||||
getPreviewLink() {
|
||||
// 判断 shareKey 是否以 pwps: 开头(WPS 云文档)
|
||||
const shareKey = this.parseResult?.data?.shareKey
|
||||
if (shareKey && shareKey.startsWith('pwps:')) {
|
||||
// WPS 云文档直接使用原始分享链接
|
||||
return this.link
|
||||
}
|
||||
// 其他类型使用默认预览服务
|
||||
return this.previewBaseUrl + encodeURIComponent(this.downloadUrl)
|
||||
},
|
||||
|
||||
// 主题切换
|
||||
handleThemeChange(isDark) {
|
||||
this.isDarkMode = isDark
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
</div>
|
||||
<div class="file-meta-row">
|
||||
<span class="file-meta-label">在线预览:</span>
|
||||
<a :href="previewBaseUrl + encodeURIComponent(downloadUrl)" target="_blank" class="preview-btn">点击在线预览</a>
|
||||
<a :href="getPreviewLink()" target="_blank" class="preview-btn">点击在线预览</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -42,11 +42,24 @@ export default {
|
||||
error: '',
|
||||
parseResult: {},
|
||||
downloadUrl: '',
|
||||
shareUrl: '', // 添加原始分享链接
|
||||
fileTypeUtils,
|
||||
previewBaseUrl
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 生成预览链接(WPS 云文档特殊处理)
|
||||
getPreviewLink() {
|
||||
// 判断 shareKey 是否以 pwps: 开头(WPS 云文档)
|
||||
const shareKey = this.parseResult?.data?.shareKey
|
||||
if (shareKey && shareKey.startsWith('pwps:')) {
|
||||
// WPS 云文档直接使用原始分享链接
|
||||
return this.shareUrl
|
||||
}
|
||||
// 其他类型使用默认预览服务
|
||||
return this.previewBaseUrl + encodeURIComponent(this.downloadUrl)
|
||||
},
|
||||
|
||||
async fetchFile() {
|
||||
const url = this.$route.query.url
|
||||
if (!url) {
|
||||
@@ -54,6 +67,7 @@ export default {
|
||||
this.loading = false
|
||||
return
|
||||
}
|
||||
this.shareUrl = url // 保存原始分享链接
|
||||
try {
|
||||
const res = await axios.get('/json/parser', { params: { url } })
|
||||
this.parseResult = res.data
|
||||
|
||||
Reference in New Issue
Block a user