资讯动态

instagram-private-api 媒体点赞者响应解析:MediaRepositoryLikersResponseRootObject 接口全解

发布时间:2026/10/16 3:16:05 来源:尧图企业网站定制
后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载导读本文围绕 instagram-private-apiNodeJS Instagram 私有 API SDKTypeScript 编写中MediaRepositoryLikersResponseRootObject这一核心响应接口展开它承载着ig.media.likers()获取某条媒体点赞用户列表的完整返回值。读完本文你将掌握该接口的字段语义、嵌套的MediaRepositoryLikersResponseUsersItem用户结构、底层请求链路含大整数精度处理并能写出可直接运行的查询某条帖子点赞者实战代码。一、接口在 SDK 中的位置与调用入口MediaRepositoryLikersResponseRootObject是MediaRepository中likers()方法的返回值类型。该方法定义在 src/repositories/media.repository.ts实现极为精简public async likers(id: string): PromiseMediaRepositoryLikersResponseRootObject { const { body } await this.client.request.sendMediaRepositoryLikersResponseRootObject({ url: /api/v1/media/${id}/likers/, }); return body; }从中可以确认的关键事实入参id为string类型即媒体 ID例如ig.feed.user()或TimelineFeed返回的帖子items[].id实际请求为对https://i.instagram.com/api/v1/media/{id}/likers/的GET请求返回值直接由request.sendT()泛型断言为MediaRepositoryLikersResponseRootObjectSDK 不会做二次转换因此接口定义与线上 JSON 字段一一对应。在客户端对象上通过ig.media即MediaRepository实例命名规则为去掉Repository后缀的 camelCase 形式参见 README.md即可调用该方法。完整的接口方法签名可查阅 docs/classes/repositories/MediaRepository.md。二、响应根对象的三字段结构接口定义位于 src/responses/media.repository.likers.response.ts并通过 src/responses/index.ts 统一导出export interface MediaRepositoryLikersResponseRootObject { users: MediaRepositoryLikersResponseUsersItem[]; user_count: number; status: string; }字段类型语义usersMediaRepositoryLikersResponseUsersItem[]本次响应携带的点赞用户数组是主要业务数据user_countnumber点赞用户数量统计详见下方说明statusstring请求状态标识成功时为ok其中status字段与请求层强相关在 src/core/request.ts 中SDK 通过response.body.status ok判断请求是否成功若不为ok则会进入错误处理链路并抛出对应的IgClientError子类如IgNotFoundError、IgLoginRequiredError、IgPrivateUserError等。因此在正常返回的响应对象中status基本恒为ok但它仍然被保留在接口中供上层自行校验。关于user_count从字段命名和该接口的语义可以推断它表示该媒体点赞用户的总量。值得注意的是Instagram 服务端返回的点赞者列表通常只是部分用户类似分页截断因此user_count的数值可能大于users数组的实际长度适合用于展示共 X 人点赞之类的统计信息而非逐项遍历时的循环上限。三、users 数组MediaRepositoryLikersResponseUsersItem 逐字段详解users数组的元素类型MediaRepositoryLikersResponseUsersItem与根接口定义在同一个源文件中src/responses/media.repository.likers.response.ts其完整定义如下export interface MediaRepositoryLikersResponseUsersItem { pk: number; username: string; full_name: string; is_private: boolean; profile_pic_url: string; profile_pic_id?: string; is_verified: boolean; latest_reel_media?: number; }逐字段说明字段类型必填含义与典型用途pknumber是用户的唯一数字 ID主键。可用于后续ig.user.info()、关注/取关等操作usernamestring是用户名如cristianofull_namestring是用户显示名昵称可为空字符串is_privateboolean是是否为私密账号常用于展示与关注策略判断profile_pic_urlstring是头像图片 URL可直接用于下载头像profile_pic_idstring否头像图片的唯一 ID通常存在于新版 API 响应中is_verifiedboolean是是否通过官方认证蓝 V适合做身份标注latest_reel_medianumber否该用户最新一条快拍Reel/Story的媒体时间戳或 ID可用于判断其是否有活跃快拍其中profile_pic_id、latest_reel_media为可选字段文档中以Optional标注参见 docs/interfaces/responses/MediaRepositoryLikersResponseUsersItem.md在实际响应中可能缺失访问前建议做判空处理。大整数精度提示pk 的实际运行时形态这是一个值得特别留意的坑Instagram 的用户pk通常是 19 位左右的超长整数超出了Number.MAX_SAFE_INTEGER。SDK 在 src/core/request.ts 中通过JSONbigStringjson-bigint且storeAsString: true解析响应体其注释明确说明Sometimes we have numbers greater than Number.MAX_SAFE_INTEGER in json response. To handle it we just wrap numbers with length 15 it double quotes to get strings instead.也就是说长度超过 15 位的数字在运行时会被解析成字符串。接口声明pk: number属于 TypeScript 静态类型层面的约定而实际拿到的pk值可能是string形态。因此将pk传入其它接口如ig.user.info(pk)或做字符串拼接、去重比较时建议统一先转成字符串再使用避免精度丢失或类型不一致引发的问题。四、底层请求链路一次 likers 调用发生了什么从调用ig.media.likers(mediaId)到拿到响应核心链路如下MediaRepository.likers()构造 URL/api/v1/media/${id}/likers/并调用request.sendT()request.send()src/core/request.ts以https://i.instagram.com/为baseUrl发起 GET 请求默认携带 Cookiejar: this.client.state.cookieJar、启用gzip并附带 SDK 生成的默认请求头响应体经JSONbigString解析后若body.status ok则直接返回否则抛出对应错误类型每次请求完成后request.end$流会触发见 examples/session.example.ts可用于会话状态的自动序列化保存。这一机制决定了调用likers()前必须先完成登录态初始化ig.state.generateDevice()ig.account.login()或通过ig.state.deserialize()恢复已保存的会话否则请求会被服务端判定为未授权抛出IgLoginRequiredError。五、完整实战示例查询一条媒体的点赞者结合 README.md 的登录流程一个可复制运行的完整示例如下import { IgApiClient } from instagram-private-api; async function getLikers() { const ig new IgApiClient(); // 必须先基于种子生成设备信息同一用户名生成的设备 ID 一致 ig.state.generateDevice(process.env.IG_USERNAME); // 可选设置代理 ig.state.proxyUrl process.env.IG_PROXY; await ig.account.login(process.env.IG_USERNAME, process.env.IG_PASSWORD); // 获取媒体 ID这里以当前登录用户的时间线第一页第一条帖子为例 const timeline ig.feed.timeline(); const items await timeline.items(); const mediaId items[0].id; // 帖子的 .id 即 likers() 所需参数 // 调用 likers()获得 MediaRepositoryLikersResponseRootObject const likersResponse await ig.media.likers(mediaId); console.log(点赞总数:, likersResponse.user_count); console.log(本次返回条数:, likersResponse.users.length); console.log(状态:, likersResponse.status); for (const user of likersResponse.users) { console.log( - ${user.username}${user.full_name || 无昵称}, ID${String(user.pk)}, // 大整数建议转字符串处理 user.is_verified ? [蓝V] : , user.is_private ? [私密] : , ); // 后续可按需调用await ig.user.info(user.pk) 等 } } getLikers().catch(err console.error(获取点赞者失败:, err.message));使用要点若想获取指定用户的帖子 ID可改用ig.feed.user(userPk)参见 docs/classes/feeds/UserFeed.md取得其媒体后传入私有媒体的点赞者列表只能由关注了该账号的用户获取否则可能触发IgPrivateUserError会话复用场景下建议仿照 examples/session.example.ts 在ig.request.end$中保存ig.state.serialize()的结果避免频繁登录。六、常见边界与注意事项汇总场景说明未登录调用抛出IgLoginRequiredError需要先完成generateDevice 登录/反序列化会话媒体 ID 不存在抛出IgNotFoundError注意媒体 ID 必须为字符串形式私有媒体/账号权限不足时可能抛出IgPrivateUserError需要关注该账号或使用有权限的账号大整数pk运行时会以字符串形态出现数字位数 15 会被json-bigint转为字符串跨接口传参时统一转字符串响应被截断users数组通常不是全量点赞者user_count才代表总数如业务需要完整列表可考虑结合时间线/用户页点赞信息多次聚合请求频率高频调用可能触发IgActionSpamError/IgRequestsLimitError建议控制并发并做好退避七、延伸阅读接口完整文档docs/interfaces/responses/MediaRepositoryLikersResponseRootObject.md、docs/interfaces/responses/MediaRepositoryLikersResponseUsersItem.md所属模块索引docs/modules/responses.md调用方实现src/repositories/media.repository.ts响应类型定义src/responses/media.repository.likers.response.ts请求层实现与 JSON 大整数处理src/core/request.ts登录与会话持久化示例examples/session.example.ts赞分享后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载相关推荐instagram-private-api 私信媒体响应接口解析DirectThreadRepositoryApproveParticipantRequestResponseMedia 全字段指南instagram private api 私信媒体响应接口解析DirectThreadRepositoryApproveParticipantRequest后端通吃九大网盘LinkSwift 网盘直链解析脚本完整指南通吃九大网盘LinkSwift 网盘直链解析脚本完整指南 LinkSwift 是一款 网盘直链解析 油猴脚本全程在浏览器本地运行只调用网盘官方接口不经过后端instagram-private-api 响应类型解析HighlightsRepositoryHighlightsTrayResponseCropped_image_version 接口全解instagram private api 响应类型解析HighlightsRepositoryHighlightsTrayResponseCropped_i后端上一篇可视化编程免费工具大全10个低代码平台让开发更简单下一篇LangChain对话系统构建智能AI助手的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑