Skip to content

feat(youtube): channel / video 透出频道头像,feed / search 透出 channel_avatar / video_id - #2465

Open
huanghe wants to merge 2 commits into
jackwener:mainfrom
huanghe:upstream/youtube-avatar-metadata
Open

feat(youtube): channel / video 透出频道头像,feed / search 透出 channel_avatar / video_id#2465
huanghe wants to merge 2 commits into
jackwener:mainfrom
huanghe:upstream/youtube-avatar-metadata

Conversation

@huanghe

@huanghe huanghe commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

动机

YouTube 列表类命令的底层 InnerTube 响应里本来就带着频道头像与视频 id,只是没往外传。渲染频道卡片 / 视频卡片的下游只能在召回后再为一张头像多打一轮请求。这批改动零新请求、零新登录态,老列的名字和格式全部保持不变,只做追加。

改动

commit 1 — channel / video 透出频道头像

  • channel:返回对象加 avatarchannelMetadataRenderer.avatar 最后一张 = 最大)
  • video:取 videoOwnerRenderer.thumbnail,返回 channelAvatar

commit 2 — feed / search 透出 channel_avatar / video_id,video 补兜底

  • feed / searchchannel_avatar(lockup 与 videoRenderer 两种版式都覆盖),searchvideo_id;playlist lockup 这类没有头像 / 视频的结果两列为空
  • video 的 owner 节点改为在主列递归查找(不会串到推荐位);仍缺失时按 videoDetails.channelId 打一次 InnerTube browse 兜底 channel_avatar / subscribers —— 只在 watch 页没带 videoOwnerRenderer 时才多这一次请求

验证

  • clis/youtube 8 个测试文件 102 个用例通过(新增 feed / search / video 的头像与 video_id 断言)
  • cli-manifest.json 已重新生成,check:silent-column-drop 无新增违规
  • docs/adapters/browser/youtube.md 补充说明

InnerTube 的 channelMetadataRenderer.avatar 与 videoOwnerRenderer.thumbnail
一直都在原始 JSON 里,只是没往外传。渲染频道卡片 / 视频卡片的下游不用再为
一张圆头像多打一次请求。

- channel.js:返回对象加 `avatar`(thumbnails 最后一张 = 最大)
- video.js:subscribers 那个循环顺手取 owner 的 thumbnail,返回 `channelAvatar`

两个都是追加键,KV 序列化走 Object.entries,老消费者不受影响。
列表类命令的底层 InnerTube 响应里本来就带着频道头像与视频 id,只是没进
columns,下游只能在召回后再打一轮请求补抓。这批改动零新请求、零新登录态,
老列的名字和格式全部保持不变。

- feed / search 补 channel_avatar(lockup 与 videoRenderer 两种版式都覆盖),
  search 补 video_id;playlist lockup 这类没有头像 / 视频的结果两列为空
- video 的 owner 节点改为在主列递归查找(不会串到推荐位),仍缺失时按
  videoDetails.channelId 打一次 InnerTube browse 兜底 channel_avatar /
  subscribers —— 只在 watch 页没带 videoOwnerRenderer 时才多这一次请求

已重新生成 cli-manifest.json。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant