mirror of
https://github.com/qaiu/netdisk-fast-download.git
synced 2025-12-18 21:33:03 +00:00
feat: 新增客户端协议生成系统,支持8种主流下载工具
🚀 核心功能 - 新增完整的客户端下载链接生成器系统 - 支持ARIA2、Motrix、比特彗星、迅雷、wget、cURL、IDM、FDM、PowerShell等8种客户端 - 自动处理防盗链参数(User-Agent、Referer、Cookie等) - 提供可扩展的生成器架构,支持自定义客户端 🔧 技术实现 - ClientLinkGeneratorFactory: 工厂模式管理生成器 - DownloadLinkMeta: 元数据存储下载信息 - ClientLinkUtils: 便捷工具类 - 线程安全的ConcurrentHashMap设计 🌐 前端集成 - 新增ClientLinks.vue界面,支持客户端链接展示 - Element Plus图标系统,混合图标显示 - 客户端检测逻辑优化,避免自动打开外部应用 - 移动端和PC端环境判断 📚 文档完善 - 完整的CLIENT_LINK_GENERATOR_GUIDE.md使用指南 - API文档和测试用例 - 输出示例和最佳实践 从单纯的网盘解析工具升级为完整的下载解决方案生态
This commit is contained in:
@@ -91,6 +91,7 @@
|
||||
<el-button style="margin-left: 20px" @click="generateMarkdown">生成Markdown</el-button>
|
||||
<el-button style="margin-left: 20px" @click="generateQRCode">扫码下载</el-button>
|
||||
<el-button style="margin-left: 20px" @click="getStatistics">分享统计</el-button>
|
||||
<el-button style="margin-left: 20px" @click="goToClientLinks" type="primary">客户端链接(实验)</el-button>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -589,6 +590,55 @@ export default {
|
||||
}).catch(() => {
|
||||
this.$message.error('复制失败');
|
||||
});
|
||||
},
|
||||
|
||||
// 跳转到客户端链接页面
|
||||
async goToClientLinks() {
|
||||
// 验证输入
|
||||
if (!this.link.trim()) {
|
||||
this.$message.warning('请先输入分享链接')
|
||||
return
|
||||
}
|
||||
|
||||
if (!this.link.startsWith("https://") && !this.link.startsWith("http://")) {
|
||||
this.$message.error("请输入有效链接!")
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
// 显示加载状态
|
||||
this.isLoading = true
|
||||
|
||||
// 直接使用 axios 请求客户端链接 API,因为它的响应格式与其他 API 不同
|
||||
const params = { url: this.link }
|
||||
if (this.password) params.pwd = this.password
|
||||
|
||||
const response = await axios.get(`${this.baseAPI}/v2/clientLinks`, { params })
|
||||
const result = response.data
|
||||
|
||||
// 处理包装格式的响应
|
||||
const clientData = result.data || result
|
||||
|
||||
if (clientData.success) {
|
||||
// 将数据存储到 sessionStorage,供客户端链接页面使用
|
||||
sessionStorage.setItem('clientLinksData', JSON.stringify(clientData))
|
||||
sessionStorage.setItem('clientLinksForm', JSON.stringify({
|
||||
shareUrl: this.link,
|
||||
password: this.password
|
||||
}))
|
||||
|
||||
// 跳转到客户端链接页面
|
||||
this.$router.push('/clientLinks')
|
||||
this.$message.success('客户端链接生成成功,正在跳转...')
|
||||
} else {
|
||||
this.$message.error(clientData.error || '生成客户端链接失败')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('生成客户端链接失败:', error)
|
||||
this.$message.error('生成客户端链接失败')
|
||||
} finally {
|
||||
this.isLoading = false
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user