后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载MediaRepositoryCommentResponse是 instagram-private-apiNodeJS Instagram 私有 API SDKTypeScript 编写中描述“发布评论”这一接口返回数据的核心响应类型。它定义了评论提交成功后服务器返回的完整 JSON 结构包括顶层状态字段与详细的评论对象、评论者用户信息。读完本篇你将掌握该响应的全部字段含义与类型约束理解它如何与ig.media.comment()请求方法相互配合并能在自己的自动化脚本中正确解析评论数据、结合评论流feed做二次开发。响应类型在项目中的定位在 instagram-private-api 中所有仓库方法Repository执行的都是一次 API 请求对应一个方法的低层操作。当客户端调用ig.media.comment(...)向 Instagram 私信评论接口/api/v1/media/{mediaId}/comment/提交评论时服务器返回的响应体会被类型化为MediaRepositoryCommentResponse。该接口定义于 src/responses/media.repository.comment.response.ts与其余响应类型一样由 src/responses/index.ts 统一导出同时被 docs/modules/responses.md 收录为公开 API 文档。响应接口的正式文档位于 docs/interfaces/responses/MediaRepositoryCommentResponse.md对应的方法文档位于 docs/classes/repositories/MediaRepository.md。顶层接口结构MediaRepositoryCommentResponse只包含两个属性是典型的 Instagram 响应包装层结构属性类型说明commentMediaRepositoryCommentResponseComment服务器创建的完整评论对象是本次响应的主体数据statusstring接口调用状态正常时返回ok对应的 TypeScript 定义src/responses/media.repository.comment.response.tsexport interface MediaRepositoryCommentResponse { comment: MediaRepositoryCommentResponseComment; status: string; }值得强调的是虽然接口名叫MediaRepositoryCommentResponse但comment()方法实际向调用方返回的是body.comment即内层评论对象而不是这个包装层。这一点在 src/repositories/media.repository.ts 中可以看到const { body } await this.client.request.sendMediaRepositoryCommentResponse({ url: /api/v1/media/${mediaId}/comment/, method: POST, form: this.client.request.sign({ ... }), }); return body.comment;方法签名对应的文档声明为PromiseMediaRepositoryCommentResponseComment见 docs/classes/repositories/MediaRepository.md 中comment方法的 Returns 部分因此上层业务代码拿到的是评论对象本身。评论对象 MediaRepositoryCommentResponseComment评论对象是响应中最有分析价值的部分其完整定义见 docs/interfaces/responses/MediaRepositoryCommentResponseComment.md源码位于 src/responses/media.repository.comment.response.ts。字段类型含义content_typestring内容类型标识评论通常为commentuserMediaRepositoryCommentResponseUser发表评论的用户对象pkstring评论的唯一主键 IDtextstring评论正文内容typenumber评论类型标记created_atnumber评论创建时间戳秒级created_at_utcnumberUTC 时间下的创建时间戳秒级media_idstring被评论媒体帖子的 IDstatusstring评论自身状态标记share_enabledboolean是否允许该评论被分享/转发到动态等场景其中pk是评论 ID 的重要来源。在后续需要针对某条评论做操作如点赞、回复、批量删除时通常要从这里取出pk。created_at与created_at_utc为 Unix 秒级时间戳可用于按时间排序或展示相对时间。评论者用户对象 MediaRepositoryCommentResponseUserMediaRepositoryCommentResponseUser描述了发表评论的用户字段定义见 docs/interfaces/responses/MediaRepositoryCommentResponseUser.md源码位于 src/responses/media.repository.comment.response.ts。字段类型含义pknumber用户的数字 IDuser-pk注意此处为number与评论pk的string不同usernamestring用户名full_namestring用户展示名is_privateboolean是否私密账号profile_pic_urlstring头像 URLprofile_pic_idstring头像图片 IDis_verifiedboolean是否蓝 V 认证has_anonymous_profile_pictureboolean是否使用匿名默认头像reel_auto_archivestring快拍自动归档设置allowed_commenter_typestring允许评论者的类型配置这个用户对象与评论流、帖子详情等其他响应中的用户对象字段高度相似便于在多个模块间复用相同的解析逻辑。profile_pic_url可直接用于头像展示is_private、is_verified可用于判断评论者账号性质。调用链路评论如何被发送与解析comment()方法src/repositories/media.repository.ts的完整参数如下public async comment({ mediaId, text, replyToCommentId, module self_comments_v2, }: { mediaId: string; text: string; replyToCommentId?: string; module?: string; }) { ... }mediaId目标媒体的 ID必填即帖子或快拍的media_idtext评论正文必填replyToCommentId可选用于回复指定评论此时会携带replied_to_comment_id字段module可选模块标识默认self_comments_v2对应表单中的containermodule字段。请求体经过this.client.request.sign(...)签名见 src/core/request.ts签名逻辑会把表单对象 JSON 序列化后用 HMAC-SHA256 生成signed_body与ig_sig_key_version模拟 Instagram Android 客户端的请求特征。请求中还包含几个值得注意的反垃圾字段user_breadcrumb由 src/core/request.ts 中的userBreadcrumb(text.length)生成它根据文本长度、随机项与当前时间构造 HMAC 签名片段用于模拟真实用户的输入行为降低被判定为机器人的概率idempotence_token每次调用生成一个新的 GUID基于chance库用于请求幂等去重_csrftoken、_uid、_uuid、device_id、radio_type来自ig.state的会话令牌、用户 ID、UUID、设备 ID 与 radio 类型是每次签名请求的标准载荷。import { IgApiClient } from instagram-private-api; const ig new IgApiClient(); ig.state.generateDevice(process.env.IG_USERNAME); ig.state.proxyUrl process.env.IG_PROXY; (async () { await ig.simulate.preLoginFlow(); const loggedInUser await ig.account.login(process.env.IG_USERNAME, process.env.IG_PASSWORD); process.nextTick(async () await ig.simulate.postLoginFlow()); // 发送一条普通评论返回内层评论对象 const comment await ig.media.comment({ mediaId: 1234567890123456789_1234567890, text: Hello from instagram-private-api, }); console.log(comment.pk); // 新评论 ID console.log(comment.text); // 评论正文 console.log(comment.user.username); // 评论者用户名 console.log(comment.status); // 评论状态 // 回复指定评论传入被回复评论的 pk const reply await ig.media.comment({ mediaId: 1234567890123456789_1234567890, text: Nice post!, replyToCommentId: comment.pk, }); })();响应解析在实战中的典型用法1. 解析返回的评论对象comment()的返回值类型为MediaRepositoryCommentResponseComment即响应包装层中的comment字段。你可以直接访问pk、text、created_at、user.username等属性做后续处理例如写入数据库、记录日志或触发回复逻辑。2. 读取已有评论MediaCommentsFeed若需要获取某条媒体的评论列表而不是发送评论可使用ig.feed.mediaComments(mediaId)其实现位于 src/feeds/media-comments.feed.ts请求端点为/api/v1/media/{id}/comments/。该 feed 支持can_support_threading、max_id、min_id分页参数返回的列表元素接口见 src/responses/media-comments.feed.response.ts其中的text、user、pk、created_at等字段与本文的评论对象结构基本一致便于统一处理。const commentsFeed ig.feed.mediaComments(1234567890123456789_1234567890); const comments await commentsFeed.items(); // 自动分页取第一页 for (const c of comments) { console.log(${c.user.username}: ${c.text}); }3. 结合同仓库其他评论方法围绕评论MediaRepository还提供了一系列配套操作均可对照 docs/classes/repositories/MediaRepository.md 查阅checkOffensiveComment(commentText, mediaId?)发送正式评论前预检文本是否为垃圾/仇恨内容端点/api/v1/media/comment/check_offensive_comment/见 src/repositories/media.repository.tscommentsBulkDelete(mediaId, commentIds)批量删除评论/api/v1/media/{mediaId}/comment/bulk_delete/commentIds 以逗号拼接见 src/repositories/media.repository.tslikeComment(commentId)/unlikeComment(commentId)对评论点赞/取消点赞src/repositories/media.repository.tscommentsDisable(mediaId)/commentsEnable(mediaId)关闭/开启某条媒体的评论功能src/repositories/media.repository.ts。其中commentsBulkDelete需要的评论 ID 列表正是来自评论对象或评论 feed的pk字段形成了“读取评论 → 筛选 → 批量删除”的完整链路。使用注意事项与限制请求签名与状态依赖发送评论依赖ig.state中完整的登录态cookieCsrfToken、cookieUserId、uuid、deviceId等。请先调用ig.account.login(...)完成登录必要时执行ig.simulate.preLoginFlow()/ig.simulate.postLoginFlow()模拟真实客户端行为参见 README.md 的基本概念与示例部分。频率与风控评论接口属于高频风控敏感接口。项目内部已通过user_breadcrumb、idempotence_token模拟人类行为但实际使用中仍应控制请求频率避免触发IgActionSpamError等频率限制类错误见 src/errors/ig-action-spam.error.ts。字段类型差异评论pk为string而用户pk为number。在将 ID 传入likeComment、commentsBulkDelete等需要评论 ID 的方法时请使用评论对象上的pk字符串并保持原样传递避免类型转换错误。接口契约的时效性本文描述的字段与端点基于当前仓库快照src/responses/media.repository.comment.response.ts。Instagram 服务端可能调整字段解析代码应具备对缺失字段的容错能力。小结MediaRepositoryCommentResponse是 instagram-private-api 评论体系中“写评论”一侧的响应契约顶层comment字段承载完整的评论对象含时间戳、媒体 ID、分享开关status标识调用结果评论对象内嵌的用户信息则可直接用于身份识别与展示。理解该接口的结构、comment()方法的参数与签名机制并搭配MediaCommentsFeed、checkOffensiveComment、commentsBulkDelete等配套能力即可在合规的自动化场景中完成评论的发送、读取、筛选与治理的完整闭环。赞分享后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载相关推荐instagram-private-api 评论响应用户结构体 MediaRepositoryCommentResponseUser 全字段解析与实战指南instagram private api 评论响应用户结构体 MediaRepositoryCommentResponseUser 全字段解析与实战指南 本篇后端instagram-private-api 响应结构解析DirectThreadFeedResponseLast_permanent_item 接口字段与使用指南instagram private api 响应结构解析DirectThreadFeedResponseLast_permanent_item 接口字段与使用后端instagram-private-api 数据响应接口解析StoriesInsightsFeedResponseInline_insights_node 的结构、字段与用途instagram private api 数据响应接口解析StoriesInsightsFeedResponseInline_insights_node 的后端上一篇Databasement快速开始一条Docker命令5分钟部署你的第一个自托管数据库备份系统下一篇用Oil Motion打造苹果风一镜到底滚动转场6种隐藏接缝的实战技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?