rank_backend/docs/API接口文档.md
2025-10-17 11:28:39 +08:00

289 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 小程序抖音播放量数据API文档
## 概述
抖音短剧播放量数据API专为小程序优化支持分页、搜索、增长分析等功能。
**服务地址**: `http://localhost:5001`
**启动命令**: `cd backend && python miniprogram_api_server.py`
## 接口列表
### 1. 健康检查
`GET /api/health`
- 检查服务器和数据库状态
### 2. 视频列表
`GET /api/videos`
**参数**:
- `page`: 页码默认1
- `limit`: 每页数量默认20最大50
- `sort`: 排序方式
- `playcount`: 按总播放量排序
- `growth`: 按增长排序
- `time`: 按时间排序
- `start_date`: 开始日期增长排序用格式2025-10-16
- `end_date`: 结束日期增长排序用格式2025-10-17
**示例**:
```
# 总播放量排序
/api/videos?page=1&limit=10&sort=playcount
# 增长排序(昨天到今天)
/api/videos?page=1&limit=10&sort=growth
# 自定义日期增长排序
/api/videos?page=1&limit=10&sort=growth&start_date=2025-10-16&end_date=2025-10-17
```
### 3. 热门榜单
`GET /api/top`
- `limit`: 返回数量默认10最大50
### 4. 搜索视频
`GET /api/search`
- `q`: 搜索关键词
- `page`: 页码
- `limit`: 每页数量
### 5. 视频详情
`GET /api/detail`
- `id`: 视频ID
## 数据字段说明
### 视频数据字段
- `_id`: 视频唯一ID
- `mix_name`: 短剧名称
- `playcount`: 播放量文本(如"2.1亿"
- `play_vv`: 播放量数值
- `video_url`: 抖音合集链接
- `rank`: 排名
- `batch_time`: 数据采集时间
- `aweme_ids`: 视频ID数组
- `cover_image_url`: 封面图片
- `cover_backup_urls`: 备用封面图片
- `request_id`: 请求ID
### 增长排序特有字段
- `growth`: 播放量增长值
- `start_date`: 开始日期
- `end_date`: 结束日期
## 响应格式
所有接口返回格式:
```json
{
"success": true/false,
"data": [...],
"message": "错误信息仅当success为false时"
}
```
视频列表接口额外包含:
- `pagination`: 分页信息
- `sort_by`: 排序方式
- `date_range`: 日期范围(仅增长排序)
- `update_time`: 更新时间
## 📱 小程序集成示例
### 微信小程序示例
```javascript
// 获取视频列表
wx.request({
url: 'http://localhost:5001/api/videos',
data: {
page: 1,
limit: 10,
sort: 'playcount'
},
success: function(res) {
if (res.data.success) {
const videos = res.data.data;
videos.forEach(video => {
console.log(`${video.mix_name}: ${video.playcount}`);
console.log(`封面: ${video.cover_image_url}`);
console.log(`链接: ${video.video_url}`);
console.log(`视频数量: ${video.aweme_ids.length}`);
});
console.log('分页信息:', res.data.pagination);
}
}
});
// 搜索视频
wx.request({
url: 'http://localhost:5001/api/search',
data: {
q: '奶团',
page: 1,
limit: 5
},
success: function(res) {
if (res.data.success) {
const results = res.data.data;
results.forEach(video => {
console.log(`找到: ${video.mix_name}`);
console.log(`播放量: ${video.playcount}`);
console.log(`数值播放量: ${video.play_vv}`);
});
}
}
});
// 获取热门榜单
wx.request({
url: 'http://localhost:5001/api/top',
data: {
limit: 10
},
success: function(res) {
if (res.data.success) {
console.log('热门榜单:', res.data.data);
}
}
});
```
### uni-app示例
```javascript
// 封装API请求
const API_BASE = 'http://localhost:5001';
// 获取视频列表
export function getVideoList(page = 1, limit = 20, sort = 'playcount') {
return uni.request({
url: `${API_BASE}/api/videos`,
data: { page, limit, sort }
});
}
// 搜索视频
export function searchVideos(keyword, page = 1, limit = 10) {
return uni.request({
url: `${API_BASE}/api/search`,
data: { q: keyword, page, limit }
});
}
// 获取视频详情
export function getVideoDetail(id) {
return uni.request({
url: `${API_BASE}/api/detail`,
data: { id }
});
}
// 使用示例
getVideoList(1, 10).then(([err, res]) => {
if (!err && res.data.success) {
console.log('视频列表:', res.data.data);
}
});
```
## 🎯 数据字段说明
### 视频合集字段
- `_id`: 合集唯一标识符MongoDB ObjectId
- `mix_name`: 合集名称
- `playcount`: 播放量文本(如"2.1亿"
- `play_vv`: 播放量数值
- `video_url`: 合集链接
- `rank`: 排名
- `batch_time`: 批次时间
- `aweme_ids`: 视频ID数组
- `cover_image_url`: 封面图片URL
- `cover_backup_urls`: 备用封面图片URL数组
- `request_id`: 请求ID
### 分页信息字段
- `page`: 当前页码
- `limit`: 每页数量
- `total`: 总记录数
- `pages`: 总页数
- `has_next`: 是否有下一页
- `has_prev`: 是否有上一页
## 🔧 技术特性
### 1. 小程序优化
- **轻量级响应**: 精简数据结构,减少传输量
- **分页支持**: 避免一次性加载大量数据
- **搜索功能**: 支持关键词模糊搜索
- **错误处理**: 统一的错误响应格式
### 2. 性能优化
- **数据缓存**: MongoDB查询优化
- **分页限制**: 防止过大的数据请求
- **连接池**: 数据库连接复用
- **日志记录**: 完整的请求日志
### 3. 安全特性
- **参数验证**: 输入参数安全检查
- **CORS支持**: 跨域请求支持
- **错误隐藏**: 不暴露内部错误信息
## 📊 测试结果
最新测试结果100%通过率):
- ✅ API首页: 正常
- ✅ 健康检查: 数据库连接正常35条记录
- ✅ 视频列表: 分页功能正常
- ✅ 热门榜单: 排序功能正常
- ✅ 搜索功能: 关键词搜索正常
- ✅ 视频详情: 详情获取正常
- ✅ 统计信息: 数据统计正常
## 🚀 部署建议
### 开发环境
```bash
# 启动API服务器
python scripts/miniprogram_api_server.py
# 运行测试
python scripts/test_miniprogram_api.py
```
### 生产环境
```bash
# 使用Gunicorn部署
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5001 scripts.miniprogram_api_server:app
# 使用Nginx反向代理
# 配置SSL证书支持HTTPS
```
## 📝 更新日志
### v2.0 (2025-10-16)
- 🎉 全新的小程序优化API
- ✨ 添加分页和搜索功能
- 🔧 优化数据结构和响应格式
- 📊 增加统计信息接口
- 🧪 完整的测试覆盖
### 与v1.0的主要区别
- **更好的分页**: 支持灵活的分页参数
- **搜索功能**: 关键词模糊搜索
- **详情接口**: 单独的视频详情查看
- **统计分析**: 数据统计和分类
- **小程序优化**: 专为小程序设计的数据格式
## 🤝 技术支持
如有问题,请检查:
1. MongoDB服务是否正常运行
2. API服务器是否启动成功
3. 网络连接是否正常
4. 参数格式是否正确
测试工具会自动生成详细的测试报告,保存在 `api_test_report.json` 文件中。