能否通过YouTube v3 API获取其他用户直播的actualStartTime值?
问题根源与解决方案
核心问题:参数误用
你调用liveBroadcasts.list时传入的是视频ID,但该接口的id参数要求的是直播广播的专属ID(而非直播结束后生成的回放视频ID),这直接导致接口返回空数组。
正确获取流程
要获取其他频道直播的snippet.actualStartTime,需按以下步骤操作:
定位目标频道的直播广播ID
先通过search.list接口找到目标频道正在直播的视频,再通过videos.list接口获取该视频关联的广播ID:// 第一步:搜索目标频道的直播视频 const searchRes = await Axios.get(`https://youtube.googleapis.com/youtube/v3/search`, { params: { channelId: "目标频道ID", type: "video", eventType: "live", part: "id", key: "你的API密钥" // 公开直播用API密钥即可,无需OAuth } }); const liveVideoId = searchRes.data.items[0]?.id.videoId; // 第二步:通过视频ID获取广播ID const videoRes = await Axios.get(`https://youtube.googleapis.com/youtube/v3/videos`, { params: { id: liveVideoId, part: "contentDetails", key: "你的API密钥" } }); const broadcastId = videoRes.data.items[0]?.contentDetails.broadcastId;调用liveBroadcasts.list获取actualStartTime
使用拿到的广播ID发起请求,指定part包含snippet:const broadcastRes = await Axios.get(`https://youtube.googleapis.com/youtube/v3/liveBroadcasts`, { params: { id: broadcastId, part: "snippet,status", // 公开直播用API密钥即可,若需访问受限内容则用OAuth令牌 key: "你的API密钥" // Authorization: `Bearer ${token}` // 如需OAuth授权则替换key参数 } }); const actualStartTime = broadcastRes.data.items[0]?.snippet.actualStartTime;
额外说明
- 公开直播的
actualStartTime属于公开数据,使用API密钥即可访问,无需OAuth令牌;仅当目标直播为未公开/私人权限时,才需要对应权限的OAuth令牌。 - 若目标频道当前无正在进行的直播,
search.list会返回空数组,需做好空值判断。
内容的提问来源于stack exchange,提问作者michjens
相关产品推荐
相关产品推荐

