You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP更新YouTube视频:如何获取Google_Service_YouTube_Video对象?

解决YouTube API中从VideoListResponse获取单个Video对象的问题

嘿,这个问题我太熟悉了!YouTube Data API的videos.list接口设计就是返回列表响应,哪怕你只查询单个视频ID,它也会把结果包装在Google_Service_YouTube_VideoListResponse对象里,而你需要的Video对象就藏在这个响应的items数组里。

具体解决步骤

你只需要从返回的响应对象中提取items数组的第一个元素就行——因为你查询的是单个视频ID,这个数组里只会有一个元素。修改你的代码片段如下:

$youtube = new Google_Service_YouTube($client);
$videoid = "******Video ID********";
$new = "******* TEXT *********";

// 调用listVideos获取列表响应
$videoListResponse = $youtube->videos->listVideos('snippet', array(
    'id' => $videoid
));

// 从items数组中提取单个Video对象
if (!empty($videoListResponse->getItems())) {
    $video = $videoListResponse->getItems()[0];
    // 现在$video就是你需要的Google_Service_YouTube_Video对象了
    // 接下来可以修改它的snippet内容,比如更新标题或描述
    $snippet = $video->getSnippet();
    $snippet->setTitle($new); // 假设你要更新标题
    // ... 其他修改操作

    // 最后调用update方法提交修改
    $updatedVideo = $youtube->videos->update('snippet', $video);
} else {
    // 处理视频不存在/权限不足的情况
    echo "指定的视频无法获取,请检查ID或权限";
}

关键说明

  • getItems()方法会返回包含视频对象的数组,即使只查一个ID,数组长度也是1。
  • 一定要加非空检查,避免因为视频ID无效、权限不足等情况导致数组为空,进而引发PHP报错。
  • 拿到Video对象后,你就可以调用它的各种get/set方法修改snippet内容,然后用update方法提交更新啦。

内容的提问来源于stack exchange,提问作者DavidsProTv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:36:32