YouTube IFrame Player API getVideoData 已删除:如何获取标题?

YouTube IFrame Player API getVideoData is removed: how to get title?

11 月 13 日,我接到一位客户的电话,报告说 YouTube 播放器不再工作了。在dev tool中快速查看了一下,发现报错了:

Uncaught TypeError: a.getVideoData is not a function

查看播放器 object 包含的内容,我了解到不再有功能 getVideoData

函数getVideoData提供了一种获取视频标题的方法。现在,如何获得标题?

Google 是否有关于此更改的文章?

要获取视频的标题,您可以查询 YouTube Data API v3:

GET https://www.googleapis.com/youtube/v3/videos
    ?part=snippet
    &id=VIDEO_ID
    &key=YOUR_API_KEY

为此,您需要在 Google Cloud Console 上注册并创建一个 API 密钥(免费)。您可以将 API 键限制为仅在您的网站上使用,这样您就可以在您的 JS 源 code/html 代码中安全地将其设置为 public,而其他人无法代表您进行查询.确保同时在控制台中启用 YouTube 数据 API v3,否则您的查询将 return 错误。

以上查询将 return JSON 表示您感兴趣的视频信息(snippet 部分)。假设您将 JSON 解析为名为 result 的 object。然后你可以通过

获取视频标题
result.items[0].snippet.title

getVideoData() 似乎回来了(2017 年 12 月)。所以,再试一次!

从今天(2020 年 10 月 1 日)开始,我正在从 YouTube API object:

中检索视频的标题
// Assigning YouTube's ID to your ID variable
const playerID = "xxxxxxx";

// Creating an object for the video using YouTube's API.
const yPlayer = new YT.Player(playerID, {
    events: {
        'onReady': onPlayerReady(),
        'onStateChange': onPlayerStateChange()
    }
});

function onPlayerReady() {
}

function onPlayerStateChange() {
    // Title retrieved here
    let videoTitle = yPlayer.j.videoData.title;
}

onYouTubeIframeAPIReady();