【问题标题】:YouTube IFrame Player API getVideoData is removed: how to get title?YouTube IFrame Player API getVideoData 已删除:如何获取标题?
【发布时间】:2018-04-27 04:33:58
【问题描述】:

11 月 13 日,我接到一位客户的电话,报告说 YouTube 播放器不再工作。快速浏览了一下开发工具,发现有错误:

Uncaught TypeError: a.getVideoData is not a function

查看播放器对象所包含的内容,我了解到 getVideoData 不再存在函数。

getVideoData 函数提供了一种获取视频标题的方法。现在,我怎样才能获得标题?

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

【问题讨论】:

  • 只是为了确保您使用的是 iFrame Player API,而不是 Flash API 和 JavaScript API?
  • 为什么这个方法被删除了? Youtube 通过删除此方法破坏了许多集成,并且在他们的文档中没有涵盖或标记为弃用。
  • 任何人都可以链接到他们的文档以显示此功能存在的位置吗?我查看了他们的reference page(并检查了它的以前版本),根本找不到那里列出的getVideoData() 函数。这可能是从未官方支持的功能吗?无论如何,我同意你的看法,如果提前知道它正在被删除,那就太好了。我整天都在修复这个 API 的实时实现。
  • @funrob 我希望我能得到关于同一个问题的遮阳篷。
  • @GreatBlakes 这个函数从来都不是文档,我想我为什么要删除它。我认为人们从来没有打算使用它,以获取与 googleapis.com 可以提供的相同数据,videodata 功能现在可以免费使用,如果您有一个高流量网站,他们可以让您为使用 api 付费- 这是我基于理论的

标签: youtube-api youtube-iframe-api


【解决方案1】:

要获取视频的标题,可以查询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 源代码/html 代码中公开它,而其他人无法代表您进行查询。确保也在控制台中启用 YouTube Data API v3,否则您的查询将返回错误。

上述查询将返回您感兴趣的视频信息的 JSON 表示形式(snippet 部分)。假设您将 JSON 解析为一个名为 result 的对象。然后你可以通过

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

【讨论】:

  • 从 Youtube Iframe API 中删除 getVideoData() 后,无法检索视频 ID 来执行此查找。
  • @GreatBlakes 我同意我遇到了同样的问题,幸运的是客户插入了视频,所以可以在自定义数据-att 中获得它
  • 好吧,我认为可以假设知道视频 ID,因为您已经插入了需要 ID 的播放器。
  • 幸运的是,在我的情况下,我首先使用 Data API 填充 iframe,因此我可以将 ID 和标题作为 HTML 属性传递,但这对于很多人来说不是一个选项 - 我希望 Google 提供比要求额外出站请求更好的方法。
  • @paolo 我的想法是用户当前可能没有查看原始视频 ID(可能通过相关视频或播放列表导航),因此可能会假定第一个 ID,但用户可能不会实际上不再看那个视频了。在更多“外部”场景中,用户(或脚本)可以即时更改 iframe src。我想解决这个问题的唯一方法是使用 API 中的 getVideoUrl() 解析 v 查询参数的 URL。
【解决方案2】:

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

【讨论】:

  • 是的,我知道它已经回归一段时间了,如果 youtube 将来要删除它,并且它不是文档中的文档,那么我将不再指望这个功能,我已经标记了我现在使用的解决方案,并且在未来,我认为人们应该考虑使用,
  • @user3173634 你会发布你的解决方案作为答案吗?在 jQuer Ajax 的帮助下,我有相同的 php 代码。但是,您可以发布您的解决方案。
  • 这个函数仍然存在,并且仍然——据我所知——没有记录。这非常令人困惑。
  • 20201 年 10 月功能还在,无证,谁知道什么时候会被移除
【解决方案3】:

从今天(2020 年 10 月 1 日)开始,我正在从 YouTube 的 API 对象中检索视频的标题:

// 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();

【讨论】:

    猜你喜欢
    • 2012-10-28
    • 2017-03-25
    • 2015-10-23
    • 2015-11-27
    • 2019-10-11
    • 2013-10-24
    • 2023-04-08
    • 2019-03-28
    • 2016-03-13
    相关资源
    最近更新 更多