instagram-private-api 中 ReelsTrayFeedResponseStoryPollsItem 接口详解:解析快拍故事里的投票贴纸数据

发布时间:2026/10/16 5:43:23
instagram-private-api 中 ReelsTrayFeedResponseStoryPollsItem 接口详解:解析快拍故事里的投票贴纸数据 后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载ReelsTrayFeedResponseStoryPollsItem是 instagram-private-api 用来描述「Reels 故事托盘Reels Tray响应中单条故事上投票贴纸poll sticker布局与内容」的 TypeScript 接口。本篇以该接口为骨架完整讲解其全部属性、在响应层级中的挂载位置、配套的poll_sticker子结构以及如何基于这些数据完成读取、渲染和投票等实战操作。读完本文你可以准确解析feed/reels_tray/接口返回的投票贴纸数据并与投票、拉取投票人列表等仓库内能力串起完整链路。接口定位它描述的是故事里的一个投票贴纸该接口定义在 src/responses/reels-tray.feed.response.ts是ReelsTrayFeed响应类型族中的一员。从源码结构看整个响应按「托盘 → 用户 → 故事项 → 贴纸」的层级组织根对象 ReelsTrayFeedResponseRootObject 包含tray各用户的托盘、broadcasts直播等字段每个 ReelsTrayFeedResponseTrayItem 下挂可选的items?: ReelsTrayFeedResponseItemsItem[]代表该用户的每条快拍故事每条故事项 ReelsTrayFeedResponseItemsItem 携带多种可选贴纸数组其中story_polls?: ReelsTrayFeedResponseStoryPollsItem[]就是投票贴纸数组定义位置。因此ReelsTrayFeedResponseStoryPollsItem表示的是一条故事中「一个投票贴纸」的完整描述既包含贴纸在画布上的几何摆放坐标、尺寸、旋转、层级也包含贴纸自身的业务数据问题文案、各选项票数等。属性全解几何字段与贴纸内容原文档列出的全部属性如下均已在源码中逐一确认。注意两个值得留意的类型细节y和height声明为string而非number这是接口对服务端真实返回值的如实映射取值形如0.51562500客户端使用前需自行Number()转换。属性类型含义xnumber贴纸左上角横坐标画布相对坐标ystring贴纸左上角纵坐标字符串形式的浮点数znumber贴纸的层级序号决定多个贴纸叠放时的遮挡顺序widthnumber贴纸宽度相对画布的比例值heightstring贴纸高度字符串形式的浮点数rotationnumber贴纸旋转角度is_pinnednumber是否被置顶/固定以 0/1 数值表示布尔is_hiddennumber是否隐藏以 0/1 数值表示布尔is_stickernumber是否为贴纸以 0/1 数值表示布尔poll_stickerReelsTrayFeedResponsePoll_sticker投票贴纸的业务内容见下节这些字段在源码中的逐行定义见 src/responses/reels-tray.feed.response.ts#L207-L218。is_pinned/is_hidden/is_sticker采用「数值表示布尔」的写法并非疏漏——同一文件里的其他贴纸接口如 ReelsTrayFeedResponseStoryQuizsItem、ReelsTrayFeedResponseStoryLocationsItem、ReelsTrayFeedResponseStoryQuestionsItem使用了完全相同的 9 字段布局x, y, z, width, height, rotation, is_pinned, is_hidden, is_sticker加一个专属贴纸对象。可以推断这是 Instagram 私有协议对所有「贴纸画布元素」的统一编码方式几何字段只描述贴纸如何摆放业务字段则由各自的*_sticker对象承载。poll_sticker 子结构问题与票数统计poll_sticker的类型是 ReelsTrayFeedResponsePoll_sticker它承载投票贴纸的实际内容export interface ReelsTrayFeedResponsePoll_sticker { id: string; // 贴纸实例 id poll_id: string; // 投票 id投票与拉取投票人时作为 stickerId 使用 question: string; // 投票问题文案 tallies: ReelsTrayFeedResponseTalliesItem[]; // 各选项的统计 promotion_tallies: null; viewer_can_vote: boolean; // 当前登录用户是否还能投票 is_shared_result: boolean; // 是否已分享结果 finished: boolean; // 投票是否已结束 }其中tallies的每一项是 ReelsTrayFeedResponseTalliesItemtext选项文案、count得票数、可选的font_size。投票贴纸通常为两项选项因此解析时可直接按下标访问tallies[0]、tallies[1]做进度条渲染。对照仓库内其他故事响应同一协议字段在 MediaUpdatedMediaResponseStoryPollsItem投票操作后的返回中也存在且其poll_sticker额外多了viewer_vote: number字段用于回显当前用户投的是第几项——这为「投票后确认自己选项」提供了直接依据。数据获取路径从 Feed 到投票贴纸要拿到该接口的实例调用链如下通过 FeedFactory 创建ReelsTrayFeed。src/core/feed.factory.ts#L161-L163 中的reelsTray(reason)接受pull_to_refresh | cold_start两个取值默认cold_startReelsTrayFeed以 POST 方式请求/api/v1/feed/reels_tray/表单携带supported_capabilities_new、reason、_csrftoken、_uuid实现在 src/feeds/reels-tray.feed.ts#L17-L30items()只返回tray数组不含 broadcasts随后沿trayItem.items[]→story_polls[]即可定位到所有投票贴纸import { IgApiClient } from instagram-private-api; const ig new IgApiClient(); ig.state.generateDevice(username, password); await ig.account.login(username, password); const tray await ig.feed.reelsTray().items(); // ReelsTrayFeedResponseTrayItem[] for (const userTray of tray) { for (const storyItem of userTray.items ?? []) { for (const poll of storyItem.story_polls ?? []) { // poll: ReelsTrayFeedResponseStoryPollsItem console.log(poll.poll_sticker.question, poll.poll_sticker.tallies); // 几何信息画布相对坐标y/height 为字符串需转换 console.log({ x: poll.x, y: Number(poll.y), z: poll.z, w: poll.width, h: Number(poll.height), rotation: poll.rotation, }); } } }需要说明的是story_polls是可选字段?只有故事里确实添加了投票贴纸时才会出现同层可选的story_quizs、story_questions、story_locations、reel_mentions等字段遵循相同的「有内容才返回」模式健壮的消费代码应统一做空值判断。周边能力投票与投票人列表拿到poll_sticker后仓库提供了与之配套的读、写、查三类能力可以作为该接口数据的直接消费场景投票写MediaRepository.storyPollVote 向/api/v1/media/{mediaId}/{pollId}/story_poll_vote/发起 POST参数为vote: 0 | 1对应 tallies 的两个选项下标返回 MediaUpdatedMediaResponseRootObject。这里mediaId取故事项的pkpollId正是poll_sticker.poll_id——两个字段恰好由本接口及其子结构提供。拉取投票人查src/core/feed.factory.ts#L256-L267 的storyPollVoters(mediaId, stickerId)构造了一个MediaStickerResponsesFeedstickerId同样使用poll_id其响应类型为 StoryPollVotersFeedResponseRootObject用于查看各选项的投票人明细。创建投票发布侧若关心这些字段的写入形态可以看仓库的 sticker-builder。StickerBuilder.poll 创建 PollSticker其keygetter 返回story_polls与响应侧数组字段名严格对应talliessetter 会为每个选项补默认fontSize: 28.0width/height默认值为0.49934897 / 0.1266892——这解释了为什么读侧几何值多为小数比例贴纸尺寸本身就是「相对故事画布的宽高比」与 StoryPoll 类型注释 中 “width height have an aspect-ratio” 的说法一致。发布时 PublishService 会把options.poll塞进configureOptions.story_polls并附带internal_features: polling_sticker最终由 stringifyStoryStickers 序列化为 JSON 随media/configure/提交——也就是说读接口中story_polls数组的每一项其结构与发布侧写入的贴纸对象同源。使用注意点与小结y、height为string类型是接口真实映射做数值计算如画布布局、进度动画前先转换width在该接口中却是number这种混合类型在同类贴纸接口中同样存在如 ReelsTrayFeedResponseStoryQuizsItem 的x为string跨贴纸类型处理几何数据时应统一做类型归一tallies的font_size为可选字段缺省时不应假设固定值viewer_can_vote与finished决定了贴纸的交互状态配合storyPollVote的返回值含viewer_vote可以完整覆盖「可投 → 已投 → 结束」的状态机该接口属于响应类型层仅描述服务端返回结构不依赖具体客户端版本逻辑但私有协议可能随 Instagram 端更新变化使用时应以当前仓库 src/responses/reels-tray.feed.response.ts 的定义为准。一句话总结ReelsTrayFeedResponseStoryPollsItem 贴纸画布几何布局9 个通用字段poll_sticker业务内容它是reels_tray响应中投票贴纸的完整数据契约并直接为投票接口story_poll_vote和story_poll_voters查询提供了所需的mediaId与poll_id。赞分享后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载相关推荐instagram-private-api 中 ReelsMediaFeedResponseStoryPollsItem 接口详解解析 Reels/Story 投票贴纸的响应结构instagram private api 中 ReelsMediaFeedResponseStoryPollsItem 接口详解解析 Reels/Story后端instagram-private-api 中 ReelsMediaFeedResponseStoryQuestionsItem 接口详解解析 Story快拍问答贴纸的响应结构instagram private api 中 ReelsMediaFeedResponseStoryQuestionsItem 接口详解解析 Story快后端instagram-private-api 中 ReelsMediaFeedResponseTalliesItem 接口解析Reels 投票与问答贴纸的计票项结构instagram private api 中 ReelsMediaFeedResponseTalliesItem 接口解析Reels 投票与问答贴纸的计票项后端上一篇构建私有AI聊天平台的终极指南Open WebUI完全离线部署方案下一篇百聆语音助手深度解析如何在800ms内构建你的专属AI语音伙伴创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询