7.2 KiB
7.2 KiB
API 端点
除特殊说明外,所有 API 路由均挂载在 /api 下。
视频下载与搜索
GET /api/search- 在线搜索视频 (YouTube)- 查询参数:
query(必需),limit(可选, 默认: 8),offset(可选, 默认: 1)
- 查询参数:
POST /api/download- 从支持的平台下载视频- 请求体:
{ youtubeUrl: string, ...options } - 支持: YouTube、Bilibili、MissAV 以及所有 yt-dlp 支持的网站
- 请求体:
GET /api/check-video-download- 检查视频是否已下载- 查询参数:
url(必需) - 返回:
{ found: boolean, status: 'exists' | 'deleted', videoId?: string, ... }
- 查询参数:
GET /api/check-bilibili-parts- 检查 Bilibili 视频是否包含多个分P- 查询参数:
url(必需)
- 查询参数:
GET /api/check-bilibili-collection- 检查 Bilibili URL 是否为合集/系列- 查询参数:
url(必需)
- 查询参数:
GET /api/check-playlist- 检查 URL 是否为受支持的播放列表- 查询参数:
url(必需)
- 查询参数:
GET /api/download-status- 获取下载状态- 返回:
{ activeDownloads: DownloadInfo[], queuedDownloads: DownloadInfo[] }
- 返回:
视频管理
POST /api/upload- 上传本地视频文件- 多部分表单数据:
video(文件) - 自动生成缩略图
- 多部分表单数据:
GET /api/videos- 获取所有已下载的视频- 查询参数:
page(可选),limit(可选),sortBy(可选),order(可选),search(可选),author(可选),tags(可选)
- 查询参数:
GET /api/videos/:id- 通过 ID 获取特定视频PUT /api/videos/:id- 更新视频详情- 请求体:
{ title?, author?, tags?, rating?, ... }
- 请求体:
DELETE /api/videos/:id- 删除视频及其文件GET /api/videos/:id/comments- 获取视频评论 (如果可用)POST /api/videos/:id/rate- 评价视频 (1-5 星)- 请求体:
{ rating: number }
- 请求体:
POST /api/videos/:id/refresh-thumbnail- 刷新视频缩略图POST /api/videos/:id/view- 增加观看次数PUT /api/videos/:id/progress- 更新播放进度- 请求体:
{ progress: number }(秒)
- 请求体:
GET /api/videos/author-channel-url- 获取视频的作者频道 URL- 查询参数:
sourceUrl(必需) - 返回:
{ success: boolean, channelUrl: string | null }
- 查询参数:
下载管理
POST /api/downloads/cancel/:id- 取消活动下载DELETE /api/downloads/queue/:id- 从队列中移除下载DELETE /api/downloads/queue- 清空整个下载队列GET /api/downloads/history- 获取下载历史- 查询参数:
page(可选),limit(可选)
- 查询参数:
DELETE /api/downloads/history/:id- 从下载历史中移除项目DELETE /api/downloads/history- 清空整个下载历史
收藏夹
GET /api/collections- 获取所有收藏夹POST /api/collections- 创建新收藏夹- 请求体:
{ name: string, videoIds?: string[] }
- 请求体:
PUT /api/collections/:id- 更新收藏夹 (添加/移除视频)- 请求体:
{ name?: string, videoIds?: string[], action?: 'add' | 'remove' }
- 请求体:
DELETE /api/collections/:id- 删除收藏夹
订阅
GET /api/subscriptions- 获取所有订阅POST /api/subscriptions- 创建新订阅- 请求体:
{ authorUrl: string, interval: number, platform?: string } interval: 检查间隔(分钟)platform: 'YouTube' (默认) 或 'Bilibili'
- 请求体:
DELETE /api/subscriptions/:id- 删除订阅
持续下载任务 (订阅)
GET /api/subscriptions/tasks- 获取所有持续下载任务- 查询参数:
page(可选),limit(可选)
- 查询参数:
POST /api/subscriptions/tasks/playlist- 创建新的播放列表下载任务- 请求体:
{ url: string, ...options }
- 请求体:
DELETE /api/subscriptions/tasks/:id- 取消持续下载任务DELETE /api/subscriptions/tasks/:id/delete- 删除任务记录DELETE /api/subscriptions/tasks/clear-finished- 清除所有已完成的任务
设置与密码
GET /api/settings- 获取应用设置POST /api/settings- 更新应用设置- 请求体:
{ [key: string]: any }- 设置对象
- 请求体:
GET /api/settings/cloudflared/status- 获取 Cloudflare Tunnel 状态POST /api/settings/migrate- 从 JSON 迁移数据到 SQLitePOST /api/settings/delete-legacy- 删除旧的 JSON 数据文件POST /api/settings/format-filenames- 根据设置格式化视频文件名GET /api/settings/password-enabled- 检查是否启用了密码保护GET /api/settings/reset-password-cooldown- 获取密码重置冷却时间POST /api/settings/verify-admin-password- 验证管理员密码- 请求体:
{ password: string }
- 请求体:
POST /api/settings/verify-visitor-password- 验证访客密码- 请求体:
{ password: string }
- 请求体:
POST /api/settings/verify-password- 验证登录密码 (已废弃)- 请求体:
{ password: string }
- 请求体:
POST /api/settings/reset-password- 重置登录密码- 请求体:
{ oldPassword: string, newPassword: string }
- 请求体:
POST /api/settings/logout- 退出当前会话
通行密钥管理
GET /api/settings/passkeys- 获取所有注册的通行密钥GET /api/settings/passkeys/exists- 检查是否已注册任何通行密钥POST /api/settings/passkeys/register- 开始通行密钥注册POST /api/settings/passkeys/register/verify- 验证通行密钥注册POST /api/settings/passkeys/authenticate- 开始通行密钥认证POST /api/settings/passkeys/authenticate/verify- 验证通行密钥认证DELETE /api/settings/passkeys- 删除所有通行密钥
Cookies
POST /api/settings/upload-cookies- 上传 cookies.txt 以供 yt-dlp 使用- 多部分表单数据:
file(cookies.txt)
- 多部分表单数据:
POST /api/settings/delete-cookies- 删除 cookies.txtGET /api/settings/check-cookies- 检查 cookies.txt 是否存在
任务钩子
GET /api/settings/hooks/status- 获取所有钩子的状态POST /api/settings/hooks/:name- 上传钩子脚本- 多部分表单数据:
file(脚本文件) - 参数:
name(钩子名称, 例如task_success)
- 多部分表单数据:
DELETE /api/settings/hooks/:name- 删除钩子脚本
数据库备份
GET /api/settings/export-database- 导出数据库备份文件POST /api/settings/import-database- 从备份文件导入数据库- 多部分表单数据:
file(数据库备份文件)
- 多部分表单数据:
GET /api/settings/last-backup-info- 获取最后一个数据库备份的信息POST /api/settings/restore-from-last-backup- 从最后一个备份恢复数据库POST /api/settings/cleanup-backup-databases- 清理旧的备份数据库文件
文件管理
POST /api/scan-files- 扫描上传目录中的现有视频文件POST /api/cleanup-temp-files- 清理临时下载文件
云存储
GET /api/cloud/signed-url- 获取云存储签名 URL- 查询参数:
filename(必需),type(可选:video或thumbnail)
- 查询参数:
POST /api/cloud/sync- 同步本地视频到云存储 (以 JSON 行流式返回进度)DELETE /api/cloud/thumbnail-cache- 清空缩略图缓存GET /api/cloud/thumbnail-cache/:filename- 访问缓存的云端缩略图GET /cloud/videos/:filename- 重定向到云端视频签名 URLGET /cloud/images/:filename- 重定向到云端缩略图签名 URL(或本地缓存)
系统
GET /api/system/version- 获取当前版本与最新版本信息- 返回:
{ currentVersion, latestVersion, releaseUrl, hasUpdate }
- 返回: