tweets(评论 / 转发 / 点赞者)
| 方法 | 返回 | 分页 | 访客 |
|---|---|---|---|
comments(mblogId, options?) | TweetCommentsPageResult | maxId | 可用 |
replies(mblogId, rootCommentId, options?) | TweetCommentsPageResult | maxId | 可用 |
streamComments(mblogId, options?) | ITweetComment 流 | maxId | 可用 |
streamReplies(mblogId, rootCommentId, options?) | ITweetComment 流 | maxId | 可用 |
getReposts(mblogId, options?) | TweetRepostsPageResult | page | 可用 |
streamReposts(mblogId, options?) | ITweet 流 | page | 可用 |
fetchRawComments(mblogId, options?) | BuildCommentsResponse | maxId | 可用 |
fetchRawReplies(mblogId, rootCommentId, options?) | BuildCommentsResponse | maxId | 可用 |
fetchRawReposts(mblogId, options?) | RepostTimelineResponse | page | 可用 |
likers(mblogId, options?) | TweetLikersPageResult | page | 可用 |
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。
| 选项 | 类型 | 说明 |
|---|---|---|
maxId | number | 上一页的顶层 max_id |
count | number | 上游忽略 |
flow | 0 | 1 | 0=热度,1=时间 |
uid | string | 读取视角 |
isReply | number | 1 = 二级评论(第一个参数传一级评论 id) |
rootId | string | number | 可选透传 |
fetchLevel | number | 0=一级,1=二级 |
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?)
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?)
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 参数不生效。
| 选项 | 类型 | 说明 |
|---|---|---|
page | number | 页码 |
count | number | 每页条数 |
interface TweetRepostsPageResult {
reposts: ITweet[]
page: number
hasMore: boolean
total?: number
maxPage?: number
}需要上游原始响应时用 fetchRawReposts。
streamReposts(mblogId, options?)
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):
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?)
for await (const liker of sdk.tweets.streamLikers('5355873276528697', { maxPages: 2 })) {
console.log(liker.id, liker.name)
}选项:page、maxPages、maxItems、onProgress。停止条件:空页、整页重复、达到 total、上限。
CLI
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