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
相关产品推荐
相关产品推荐

