111 lines
5.7 KiB
Markdown
111 lines
5.7 KiB
Markdown
# API 端点
|
||
|
||
## 视频下载与搜索
|
||
- `GET /api/search` - 在线搜索视频 (YouTube)
|
||
- 查询参数: `query` (必需), `limit` (可选, 默认: 8), `offset` (可选, 默认: 1)
|
||
- `POST /api/download` - 从支持的平台下载视频
|
||
- 请求体: `{ url: 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` - 获取活动下载的状态
|
||
- 返回: `{ active: [], queued: [] }`
|
||
|
||
## 视频管理
|
||
- `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 }`
|
||
- 首先检查数据库,如果未找到则从 YouTube/Bilibili API 获取
|
||
|
||
## 下载管理
|
||
- `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` - 创建新的播放列表下载任务
|
||
- Body: `{ 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 }` - 设置对象
|
||
- 支持: `visitorMode`, `cloudDriveEnabled`, `openListApiUrl`, `openListToken`, `openListPublicUrl`, `cloudDrivePath` 及其他设置
|
||
- `GET /api/settings/cloudflared/status` - 获取 Cloudflare Tunnel 状态
|
||
- `GET /api/settings/password-enabled` - 检查是否启用了密码保护
|
||
- `POST /api/settings/verify-password` - 验证登录密码
|
||
- 请求体: `{ password: string }`
|
||
- `POST /api/settings/reset-password` - 重置登录密码
|
||
- 请求体: `{ oldPassword: string, newPassword: string }`
|
||
- `POST /api/settings/migrate` - 从 JSON 迁移数据到 SQLite
|
||
- `POST /api/settings/delete-legacy` - 删除旧的 JSON 数据文件
|
||
- `POST /api/settings/format-filenames` - 根据设置格式化视频文件名
|
||
- `POST /api/settings/upload-cookies` - 上传 cookies.txt 以供 yt-dlp 使用
|
||
- 多部分表单数据: `file` (cookies.txt)
|
||
- `POST /api/settings/delete-cookies` - 删除 cookies.txt
|
||
- `GET /api/settings/check-cookies` - 检查 cookies.txt 是否存在
|
||
- `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 /cloud/videos/:filename` - 代理端点,用于从云存储(OpenList/Alist)流式传输视频
|
||
- `GET /cloud/images/:filename` - 代理端点,用于从云存储(OpenList/Alist)提供图像
|
||
- 注意:这些端点需要在设置中配置云存储
|