【问题标题】:PHP to get the video id (or video url if possible) in certain playlistPHP 在某些播放列表中获取视频 ID(或视频 url,如果可能)
【发布时间】:2021-11-29 09:41:48
【问题描述】:

我在网上找到了这样的代码:

<?php
$api_key = "MY_API_KEY";
$playlist_id = "MY_PLAYLIST_ID";
$api_url = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=25&playlistId='. $playlist_id . '&key=' . $api_key;
      
$playlist = json_decode(file_get_contents($api_url));
?>

<ul>
<?php foreach($playlist->items AS $item): ?>
  <li><img src="<?php echo $item->snippet->thumbnails->default->url; ?>"> <h4><?php echo $item->snippet->title;  ?></h4></li>
<?php endforeach; ?>
</ul>

代码运行良好,结果显示图像列表及其标题。

由于我希望列表也包含视频 ID(或视频 URL,如果可能),
到目前为止我已经尝试过,在&lt;li&gt;&lt;/li&gt; 标签之间,我添加了如下一行:

<h4><?php echo $item->id->videoId;  ?></h4>

但它不起作用,因为页面结果没有拍摄视频ID。当我检查页面时,添加的&lt;h4&gt;&lt;/h4&gt; 标记之间没有任何内容。

如何编码才能获取视频 ID? (或者如果可能的话,可能是视频的网址)?

【问题讨论】:

  • 你检查过json结构吗?它甚至有一个名为id 的对象吗?
  • 不会是$item-&gt;snippet-&gt;videoId吗?
  • @mulquin,我试过了,但没有显示 id。还是谢谢你。
  • @Gil,很抱歉,我不知道如何查看 json 结构。无论如何,目前我的解决方案是使用缩略图 URL,因为它包含视频 ID。像这样$id = $item-&gt;snippet-&gt;thumbnails-&gt;default-&gt;url; $id = str_replace('https://i.ytimg.com/vi/', '', $id);。谢谢你,吉尔。

标签: php youtube-api


【解决方案1】:

根据PlaylistItems.list API端点的规范,调用它时提供的JSON responsePlaylistItem objects的数组组成:

{
  "kind": "youtube#playlistItem",
  "etag": etag,
  "id": string,
  "snippet": {
    "publishedAt": datetime,
    "channelId": string,
    "title": string,
    "description": string,
    "thumbnails": {
      (key): {
        "url": string,
        "width": unsigned integer,
        "height": unsigned integer
      }
    },
    "channelTitle": string,
    "videoOwnerChannelTitle": string,
    "videoOwnerChannelId": string,
    "playlistId": string,
    "position": unsigned integer,
    "resourceId": {
      "kind": string,
      "videoId": string,
    }
  },
  "contentDetails": {
    "videoId": string,
    "startAt": string,
    "endAt": string,
    "note": string,
    "videoPublishedAt": datetime
  },
  "status": {
    "privacyStatus": string
  }
}

现在,应该清楚视频ID的路径是:

items[].snippet.resourceId.videoId

翻译成PHP应该是:

$item->snippet->resourceId->videoId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 2017-06-09
    • 2017-07-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多