最近将YouTube API更改为将多个视频嵌入动态播放列表中?

问题描述

去年,我一直在使用PHP脚本从一小部分视频中构建播放列表。 它将为所选视频构建自定义播放列表,并通过API呈现一组播放列表控件。截至昨天这个时候,它正在工作,现在却没有。

以下是已损坏的代码段:

$result = "<iframe width=\"720\" height=\"405\" src=\"https://www.youtube.com/embed/?playlist=";
$last = count($playlist) -1;
for ($k=0; $k < count($playlist); $k++){
  if ($k < $last){
    $result = $result . $playlist[$k]['videoid'] . ",";
  } else {
    $result = $result . $playlist[$k]['videoid'] . "&controls=1\" frameborder=\"0\" allowfullscreen></iframe>";
  }

我得到以下错误,而不是嵌入播放选择列表:

发生错误。请稍后再试。 (播放ID:jBLBkfJOl8-X0sct)

到2020年8月31日,API中发生了什么变化? 我找不到任何专门关于在API中构建自定义播放列表的文档或信息。我不想搜索现有的播放列表,而是想基于为观看而培养的视频链接来构建播放列表。

我从this stackoverflow answer修改了我的解决方案

解决方法

我悬赏这个问题,因为我遇到了同样的问题,我忙于其他事情,并且没有时间尝试在使用此问题的个人项目上调试此问题。

仍不完全确定是什么导致了此突然中断,因为我仍然没有看到youtube更改其api的任何通知,但这在使用Google产品api时并不罕见。

这个问题的简短答案是,您现在需要在播放列表查询字符串之前插入一个初始视频ID。

因此,嵌入代码现在需要如下所示:

<iframe id="ytplayer" type="text/html" width="720" height="405"
            src="https://www.youtube.com/embed/Yc4VO8yzYcU?playlist=Y8R4Wvw7wlg,hz2HIKsQfIw,0UbCOpRye5c&playsinline=1"
            frameborder="0" allowfullscreen>
,

仅供参考:Google似乎已经更新了如何显示频道播放列表,以显示最新的视频:https://support.google.com/youtube/answer/171780?hl=en

示例嵌入代码现在需要在“ embed /”之后和“?list”之前包含“ videoseries”:

<iframe width="560" height="315" src="https://www.youtube.com/embed/videoseries?list=PLx0sYbCqOb8TBPRdmBHs5Iftvv9TPboYG" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...