# 百家号刷新功能 - API 接口实现

## 概述

百家号的账号刷新功能已完全使用 API 接口实现，不再依赖无头浏览器，提高了刷新速度和稳定性。

## API 接口

### 1. 账号基本信息接口

**接口地址**：`https://baijiahao.baidu.com/builder/app/appinfo`

**返回数据**：
- `data.user.name` - 账号名称
- `data.user.app_id` - 百家号 ID
- `data.user.avatar` - 头像 URL
- `data.user.userid` - 用户 ID
- `data.user.status` - 账号状态

### 2. 粉丝数接口

**接口地址**：`https://baijiahao.baidu.com/cms-ui/rights/growth/get_info`

**返回数据**：
- `data.total_fans` - 粉丝总数

### 3. 作品列表接口

**接口地址**：`https://baijiahao.baidu.com/pcui/article/lists`

**查询参数**：
- `currentPage` - 当前页码
- `pageSize` - 每页数量（默认 20）
- `search` - 搜索关键词（可选）
- `type` - 作品类型（可选）

**返回数据**：
- `data.list` - 作品列表
- `data.total` - 作品总数

## 实现逻辑

### 刷新流程

1. **获取账号基本信息**
   - 调用 appinfo 接口
   - 获取账号名称、ID、头像
   - 如果失败，抛出错误

2. **获取粉丝数**（非关键）
   - 调用 growth info 接口
   - 获取粉丝总数
   - 如果失败，记录警告但继续

3. **获取作品列表**（分页）
   - 从第 1 页开始
   - 每页 20 个作品
   - 最多获取 10 页（200 个作品）
   - 如果某页失败，停止获取

### 错误处理

- **appinfo 失败**：抛出错误，刷新失败
- **growth info 失败**：记录警告，粉丝数为 0
- **作品列表失败**：停止分页，使用已获取的数据

## 改进内容

### 1. 更详细的日志

```
[Baijiahao API] Step 1: Fetching appinfo...
[Baijiahao API] appinfo response: errno=0, errmsg=success
[Baijiahao API] Got account info: name=xxx, id=bjh_xxx, avatar=https://...
[Baijiahao API] Step 2: Fetching growth info...
[Baijiahao API] Got fans count: 1234
[Baijiahao API] Step 3: Fetching works list...
[Baijiahao API] Fetching works page 1...
[Baijiahao API] Got 20 works on page 1, total: 45
[Baijiahao API] Successfully fetched account info: name=xxx, fans=1234, works=45
```

### 2. 更好的错误处理

- 检查 HTTP 状态码
- 检查 API 返回的 errno
- 区分关键错误和非关键错误
- 保留已获取的部分数据

### 3. 头像 URL 处理

- 自动补全相对路径（`//pic.xxx` -> `https://pic.xxx`）
- 支持完整 URL

### 4. 分页优化

- 记录总作品数
- 智能停止（当前页少于 pageSize）
- 防止无限循环（最多 10 页）

## 使用方法

刷新功能会自动使用 API 接口，无需额外配置。

### 手动刷新

在账号管理页面点击"刷新"按钮即可。

### 批量刷新

点击"刷新所有"按钮可以批量刷新所有账号。

## 性能对比

| 方式 | 速度 | 稳定性 | 资源消耗 |
|------|------|--------|---------|
| 无头浏览器 | 慢（10-30秒） | 中等 | 高 |
| API 接口 | 快（1-3秒） | 高 | 低 |

## 注意事项

1. **Cookie 有效性**：确保 Cookie 未过期
2. **网络稳定性**：API 请求需要稳定的网络
3. **作品数量**：最多获取 200 个作品（10 页）
4. **错误重试**：如果失败，可以再次点击刷新

## 故障排除

### 问题：刷新失败，提示"appinfo API error"

**原因**：Cookie 可能已过期或无效

**解决**：重新登录该账号

### 问题：粉丝数为 0

**原因**：growth info 接口获取失败（非关键）

**解决**：可以忽略，或稍后再次刷新

### 问题：作品数不完整

**原因**：
- 作品总数超过 200 个（只获取前 200 个）
- 某页获取失败

**解决**：
- 如果作品很多，这是正常的
- 如果作品很少但显示不完整，可以再次刷新
