如何使用YouTube API(v3)获取视频URL

7
我正在服务器上使用Node,并尝试使用YouTube API获取视频URL。 特定的URL并不重要,这只是一个练习。据我所知,根据文档,找到特定视频的最佳方法是它是否与频道或用户相关联。例如:
  1. 使用用户名(例如GoogleDevelopers)查询API
  2. 获得其频道ID
  3. 再次查询以获取该频道的播放列表
  4. 搜索特定播放列表以获取播放列表项
  5. 给定播放列表ID,使用该ID搜索项目(每个项目都应代表一个视频)
  6. 项目ID具有“videoId”字段,请使用该字段进行搜索
  7. 获取视频信息,但没有URL?
然而,在到达那一点时,我觉得应该有一个指向该视频的URL。思路是将此URL发送回前端,以允许它使用某个库来呈现视频。
问题:是否有更好的方法?如果没有,我错过了哪个视频URL?

这是用于数据 API 的吗?当您在请求中设置 part=snippet 时,返回的内容中是否还包括其他内容? - DMcCallum83
是的,还有一些其他字段(取决于我正在运行哪个查询),例如 kindetagnextPageToken 等。 - discodane
很好,你还应该有带有videoIdid对象,这样我的回答才有意义。 - DMcCallum83
2个回答

23

在返回结果中,您应该得到一个videoId

"id": { "kind": "youtube#video", "videoId": "BsLvIF5c7NU" }

编辑:实际上返回的只有id

"id": "BsLvIF5c7NU"

您需要做的就是将它附加到标准URL后面吗?:

var url = `https://www.youtube.com/watch?v=${result.id.videoId}`;

这样说通俗易懂吗?

编辑:您还可以在part=contentDetails中使用,在这种情况下,id位于:

result.items.id

根据您在part参数中使用的内容,返回的布局会有所不同。

希望这能帮助您,朋友。


0

@dmccallum83的答案是正确的。

如果由于某种原因您无法(不想)连接字符串 -

const youtube = require("googleapis").youtube('v3');

async function getVideoUrl(videoId) {
  const res = await youtube.videos.list({
    part: "snippet,contentDetails",
    id: videoId,
  });

  const video = res.data.items[0];

  return video.snippet.resourceId.url;
}

const videoId = "YOUR_VIDEO_ID";

const videoUrl = await getVideoUrl(videoId);

从上传请求的响应中获取视频ID,并使用videos.list方法获取视频详细信息,该方法将返回包括视频URL在内的视频列表。

无论是文档还是类型定义,都没有将url作为resourceId的属性显示出来。 - Braelyn B
无论是文档还是类型定义,都没有将url作为resourceId的属性显示出来。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接