后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载导读SavedFeedResponseUser是 instagram-private-apiNodeJS 版 Instagram 私有 API SDKTypeScript 编写中描述被收藏帖子Saved Feed发布者用户信息的数据结构。当你通过 SDK 拉取当前账号收藏的帖子列表时每条媒体Media内嵌的user字段就是一个SavedFeedResponseUser。本文以该接口为骨架完整解读其 15 个字段的含义、可选性与来源并结合 saved.feed.response.ts、saved.feed.ts 等仓库源码说明它在收藏 Feed 数据链路中的位置、如何读取、如何结合friendship_status判断与收藏作者的关注关系以及如何配合ProfileEntity发起关注/取关操作。一、接口概览它在收藏 Feed 数据模型中的位置在 instagram-private-api 中收藏 FeedSaved Feed的响应数据由一组 TypeScript 接口严格建模。整条数据链路如下SavedFeedResponseRootObject/api/v1/feed/saved/接口的根响应包含items、num_results、more_available、next_max_id、status等分页与状态字段SavedFeedResponseItemsItem分页中的单条记录仅包含一个media字段SavedFeedResponseMedia被收藏的媒体对象图片、视频或轮播其中user字段的类型正是本主题的SavedFeedResponseUserSavedFeedResponseUser该媒体的发布者用户信息即本接口。从源码 saved.feed.response.ts 可以看到根对象中items是SavedFeedResponseItemsItem[]而 saved.feed.ts 的items()方法会把每条记录解包为mediaasync items(): PromiseSavedFeedResponseMedia[] { const { items } await this.request(); return items.map(i i.media); }因此业务上拿到SavedFeedResponseMedia后通过media.user即可访问到SavedFeedResponseUser结构。该接口定义在 src/responses/saved.feed.response.ts源码原文如下export interface SavedFeedResponseUser { pk: number; username: string; full_name: string; is_private: boolean; profile_pic_url: string; friendship_status?: SavedFeedResponseFriendship_status; is_verified: boolean; has_anonymous_profile_picture?: boolean; is_unpublished?: boolean; is_favorite?: boolean; show_shoppable_feed?: boolean; shoppable_posts_count?: number; can_be_reported_as_fraud?: boolean; latest_reel_media?: number; profile_pic_id?: string; }二、必填字段识别用户身份的基石接口中 5 个字段不带Optional标记意味着 Instagram 在返回收藏 Feed 时通常都会提供这些值是识别与展示用户的基本信息。字段类型含义与使用建议pknumber用户的数值型 IDPrimary Key是跨接口识别用户的唯一标识。Instagram 全站接口好友关系、用户信息、媒体接口都以此作为参数是后续业务操作关注、取关、拉取主页的入口。注意SavedFeedResponseMedia.pk是string而用户pk是number两者类型不同。usernamestring用户唯一用户名如example用于展示、去重与搜索关联。full_namestring用户显示名称可重复、可随时修改适合界面展示不适合作为唯一标识。is_privateboolean是否为私密账号。私密账号发布的内容仅粉丝可见会影响后续互动操作的可行性判断。profile_pic_urlstring用户头像的 CDN URL可直接用于前端img展示。is_verifiedboolean是否官方认证蓝 V。用于内容筛选或展示徽标。其中pk、username、is_private是实际业务中最常用的三个字段pk用于调用 SDK 的其他接口is_private决定是否需要发送关注请求才能查看其主页内容。三、可选字段细粒度画像与平台状态其余 9 个字段均为Optional?标记表示 Instagram 会根据账号属性、接口版本或请求上下文决定是否返回。业务代码必须做好空值防护?.或! undefined判断。字段类型含义friendship_statusSavedFeedResponseFriendship_status当前登录账号与该用户的关注关系快照见下文专节。has_anonymous_profile_pictureboolean是否使用系统默认匿名头像未自定义头像。is_unpublishedboolean账号是否处于未发布/不可见状态通常与违规或限制相关。is_favoriteboolean是否被当前账号标记为常看的好友Favorite。show_shoppable_feedboolean是否展示可购物内容流与电商功能相关。shoppable_posts_countnumber可购物帖子的数量购物功能账号才有。can_be_reported_as_fraudboolean是否可被举报为欺诈账号。latest_reel_medianumber最新一条快拍Reel/Story的媒体时间戳或 ID可用于判断用户近期是否活跃。profile_pic_idstring头像图片自身的 ID可用于头像缓存/版本追踪profile_pic_url通常已经带签名参数。从源码类型定义看latest_reel_media为number可据此推断它倾向于存储最近一条 Story 的时间戳如taken_at适合用于该收藏作者最近是否发过 Story的活跃度判断。该类字段的判定仅来自 saved.feed.response.ts 的类型标注与 Instagram 数据字段命名惯例具体取值需以实际响应为准。四、friendship_status关注关系快照的深入解析friendship_status是本接口中最有业务价值的嵌套对象其类型为SavedFeedResponseFriendship_status定义于 saved.feed.response.tsexport interface SavedFeedResponseFriendship_status { following: boolean; outgoing_request: boolean; is_bestie: boolean; is_restricted: boolean; }四个字段全部为必填无?标记following当前登录账号是否已经关注该用户outgoing_request当前账号是否已发出但尚未被接受的关注请求——通常对应私密账号is_bestie该用户是否为当前账号的挚友/常看好友Bestieis_restricted该用户是否已被当前账号限制Restricted被限制用户的评论对自己不可见。典型业务逻辑遍历收藏列表时若friendship_status.following false friendship_status.outgoing_request false可提示未关注该作者若is_private true !following则需要先发送关注请求才能进一步互动。该快照由接口直接下发无需额外请求能显著减少好友关系接口的调用次数。五、实战从收藏 Feed 中读取用户信息SavedFeed类通过ig.feed.saved()创建工厂方法定义在 src/core/feed.factory.tspublic saved(): SavedFeed { return new SavedFeed(this.client); }基础读取示例TypeScriptimport { IgApiClient } from instagram-private-api; async function listSavedMediaUsers(ig: IgApiClient) { const savedFeed ig.feed.saved(); const medias await savedFeed.items(); for (const media of medias) { const user media.user; // SavedFeedResponseUser console.log({ id: user.pk, username: user.username, fullName: user.full_name, isPrivate: user.is_private, isVerified: user.is_verified, following: user.friendship_status?.following, }); } }分页要点SavedFeed的请求实现见 src/feeds/saved.feed.ts每次请求/api/v1/feed/saved/携带max_id上一页的next_max_id与include_igtv_preview: false参数async request(): PromiseSavedFeedResponseRootObject { const { body } await this.client.request.send({ url: /api/v1/feed/saved/, qs: { max_id: this.nextMaxId, include_igtv_preview: false, }, }); this.state body; return body; }statesettersaved.feed.ts会把响应的more_available与next_max_id写入内部状态。若想遍历全部收藏内容可以循环判断feed.isMoreAvailable()或直接订阅feed.items$流式拉取该 Observable 由基类 src/core/feed.ts 提供内置基于lifeomic/attempt的重试机制遇到 400/429/500/502 等限流状态码会自动等待重试。更稳健的做法是使用feed.items$结合last()一次性收集所有分页的媒体import { lastValueFrom } from rxjs; async function collectAllSaved(ig: IgApiClient) { const feed ig.feed.saved(); const allMedia await lastValueFrom(feed.items$); // 自动翻页直至 more_availablefalse return allMedia.map(m m.user); }注意items$依赖 RxJS Observable使用前需确保项目已安装rxjs依赖。六、进阶结合 ProfileEntity 对收藏作者执行关注/取关saved.feed.response.ts中的用户接口与实体类ProfileEntity在语义上互补接口负责描述用户实体负责操作该用户。ProfileEntity定义于 src/entities/profile.entity.ts核心方法是checkFollow()与checkUnfollow()它们会先查询friendship.show(pk)判断当前状态再决定是否真正发送关注/取关请求避免重复调用export class ProfileEntity extends Entity { pk: string | number; public async checkFollow() { const friendshipStatus await this.client.friendship.show(this.pk); if (friendshipStatus.following true) return friendshipStatus; return await this.client.friendship.create(this.pk); } public async checkUnfollow() { const friendshipStatus await this.client.friendship.show(this.pk); if (friendshipStatus.following false) return friendshipStatus; return await this.client.friendship.destroy(this.pk); } }实体由ig.entity.profile(pk)创建见 src/core/entity.factory.ts。一个完整的关注所有未关注的收藏作者示例async function followUnfollowedAuthors(ig: IgApiClient) { const savedFeed ig.feed.saved(); const medias await savedFeed.items(); for (const media of medias) { const user media.user; if (user.friendship_status?.following false) { const profile ig.entity.profile(String(user.pk)); const result await profile.checkFollow(); console.log(已关注 ${user.username}:, result.following); } } }这里需要注意两点ProfileEntity.pk的类型是string | number而SavedFeedResponseUser.pk是number直接传入即可String()仅为显式规范同时批量关注涉及高频写操作务必控制频率并遵守平台限流仓库的Feed基类重试逻辑只覆盖读操作分页不会替写操作兜底。七、相关接口与数据类型的完整索引SavedFeedResponseUser不是孤立存在的它与收藏 Feed 响应模型中的其他接口互相嵌套。仓库 docs/interfaces/responses 下保存了全部相关类型文档常用关联如下媒体对象 SavedFeedResponseMediauser字段即本接口单条分页记录 SavedFeedResponseItemsItem仅含media根响应 SavedFeedResponseRootObject分页与状态关注关系快照 SavedFeedResponseFriendship_status本接口的嵌套对象评论区用户结构 SavedFeedResponsePreviewCommentsItem 与 SavedFeedResponseCaption其中的user字段同样复用SavedFeedResponseUser类型。从源码结构看saved.feed.response.tsSavedFeedResponseUser在PreviewCommentsItem.user与Caption.user两处也被复用说明它是收藏场景下通用用户描述的单一数据源理解它即可同时掌握评论预览与正文作者两类数据。八、小结SavedFeedResponseUser是 instagram-private-api 收藏 Feed 功能中描述发布者信息的核心接口5 个必填字段pk、username、full_name、is_private、profile_pic_url、is_verified构成用户识别的基本盘9 个可选字段含friendship_status提供关注关系、私密状态、购物属性、活跃度等增强画像。实际开发中将它配合ig.feed.saved()的自动分页与ProfileEntity.checkFollow/checkUnfollow实体方法即可低成本构建收藏作者管理关注关系梳理等完整功能。建议在项目内为Optional字段统一编写空值保护工具函数并依据 src/responses/saved.feed.response.ts 与 src/feeds/saved.feed.ts 保持数据模型与 SDK 版本同步防止字段增减导致运行时数据缺失。赞分享后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载相关推荐instagram-private-api 收藏内容解析SavedFeedResponseMedia 接口数据结构完全指南instagram private api 收藏内容解析SavedFeedResponseMedia 接口数据结构完全指南 本篇指南围绕 Node.js 开源后端instagram-private-api 响应接口解析SavedFeedResponseItemsItem 与收藏夹数据模型详解instagram private api 响应接口解析SavedFeedResponseItemsItem 与收藏夹数据模型详解 本篇技术指南以 Saved后端instagram-private-api 通知收件箱解析NewsRepositoryInboxResponseNewStoriesItem 接口字段全解instagram private api 通知收件箱解析NewsRepositoryInboxResponseNewStoriesItem 接口字段全解 本后端上一篇BetterGenshinImpact自动化工具如何用智能AI解放你的原神游戏时间下一篇如何快速下载Iwara视频完整Iwara下载工具使用指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考