Skip to content

tweets(评论 / 转发 / 点赞者) ​

方法返回分页访客
comments(mblogId, options?)TweetCommentsPageResultmaxId可用
replies(mblogId, rootCommentId, options?)TweetCommentsPageResultmaxId可用
streamComments(mblogId, options?)ITweetComment 流maxId可用
streamReplies(mblogId, rootCommentId, options?)ITweetComment 流maxId可用
getReposts(mblogId, options?)TweetRepostsPageResultpage可用
streamReposts(mblogId, options?)ITweet 流page可用
fetchRawComments(mblogId, options?)BuildCommentsResponsemaxId可用
fetchRawReplies(mblogId, rootCommentId, options?)BuildCommentsResponsemaxId可用
fetchRawReposts(mblogId, options?)RepostTimelineResponsepage可用
likers(mblogId, options?)TweetLikersPageResultpage可用
streamLikers(mblogId, options?)TweetLiker 流page可用

访客可读取评论、转发与点赞者,边界见 访客限制。

comments(mblogId, options?) ​

返回归一化评论页。请求固定补齐 is_reload=1 / is_show_bulletin=2 / is_mix=0 / fetch_level=0。

  • 传 type=feed 时上游只返回 3 条,调用时省略该参数。
  • 上游忽略 count,每页固定 20 条。
  • flow=1(时间序)要求数字 mid,传 mblogId / URL 时方法内部自动解析。
  • 翻页取响应顶层的 max_id。
选项类型说明
maxIdnumber上一页的顶层 max_id
countnumber上游忽略
flow0 | 10=热度,1=时间
uidstring读取视角
isReplynumber1 = 二级评论(第一个参数传一级评论 id)
rootIdstring | number可选透传
fetchLevelnumber0=一级,1=二级
ts
interface TweetCommentsPageResult {
  comments: ITweetComment[]
  cursor: number     // 上游顶层 max_id;0 = 到底
  hasMore: boolean
  total?: number     // 含楼中楼,仅作参考
  notice?: string    // 上游提示(防火墙 / tip)
}

comments 保持上游顺序,楼中楼在 comment.replies。需要上游原始响应时用 fetchRawComments。

replies(mblogId, rootCommentId, options?) ​

读取一条一级评论下的二级评论。请求的 id 是一级评论 id;mblogId 只用于上下文。等价于 comments(rootCommentId, { isReply: 1, fetchLevel: 1 })。

选项:maxId、count、flow、uid。

streamComments(mblogId, options?) ​

ts
for await (const comment of sdk.tweets.streamComments('QqsYymYOS', {
  maxPages: 3,
  flow: 0,
  maxItems: 100,
})) {
  console.log(comment.id, comment.text, comment.replies)
}

只产出顶层评论;楼中楼在 comment.replies。选项:maxId、count、flow、uid、maxPages、maxItems、onProgress。

停止条件:空页、整页重复、max_id 缺失 / 为 0 / 不前进、maxPages / maxItems。total_number 包含楼中楼和不可见评论,停止条件按页与游标判断。

streamReplies(mblogId, rootCommentId, options?) ​

ts
for await (const reply of sdk.tweets.streamReplies('QqsYymYOS', rootCommentId)) {
  console.log(reply.id, reply.text)
}

与 streamComments 共享分页、去重、停止语义,固定 fetchLevel: 1。

getReposts(mblogId, options?) ​

返回归一化转发页。分页用 page,next_cursor 参数不生效。

选项类型说明
pagenumber页码
countnumber每页条数
ts
interface TweetRepostsPageResult {
  reposts: ITweet[]
  page: number
  hasMore: boolean
  total?: number
  maxPage?: number
}

需要上游原始响应时用 fetchRawReposts。

streamReposts(mblogId, options?) ​

ts
for await (const repost of sdk.tweets.streamReposts('QqsYymYOS', { maxPages: 2 })) {
  console.log(repost.mblogId, repost.user.name)
}

选项:page、count、maxPages、maxItems、since、until、onProgress。

停止条件:空页、整页重复(mblogId)、达到 total_number、日期边界、上限。

likers(mblogId, options?) ​

读取点赞者(m.weibo.cn/api/attitudes/show):

ts
const page = await sdk.tweets.likers('5355873276528697', { page: 1 })
page.likers
page.hasMore
page.total
  • 上游只接受数字 mid;传 mblogId / URL 时方法先用 statuses/show 解析一次。
  • 网页端 likeShow 恒返回空数组,该能力在能力清单里标记为 degraded。
  • hasMore 按空页与 total 估算。
  • 还没有人点赞时上游返回 { ok: 0, msg: "还没有人赞过" },方法返回空页(likers: []、hasMore: false),不抛错误。

streamLikers(mblogId, options?) ​

ts
for await (const liker of sdk.tweets.streamLikers('5355873276528697', { maxPages: 2 })) {
  console.log(liker.id, liker.name)
}

选项:page、maxPages、maxItems、onProgress。停止条件:空页、整页重复、达到 total、上限。

CLI ​

bash
weibo-cli tweet comments QqsYymYOS
weibo-cli tweet comments-stream QqsYymYOS --max-pages 3
weibo-cli tweet replies QqsYymYOS <rootCommentId>
weibo-cli tweet replies-stream QqsYymYOS <rootCommentId>
weibo-cli tweet reposts QqsYymYOS
weibo-cli tweet reposts-stream QqsYymYOS --max-pages 2
weibo-cli tweet likers 5355873276528697
weibo-cli tweet likers-stream 5355873276528697 --max-pages 2

只读公开数据;请遵守微博服务条款与隐私边界。