baijiahao-refresh-api.md 3.7 KB

百家号刷新功能 - 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 个)
  • 某页获取失败

解决

  • 如果作品很多,这是正常的
  • 如果作品很少但显示不完整,可以再次刷新