Я не знаю почему, но чтобы использовать обновление API для обновления описания видео в вашей библиотеке, вы должны предоставить больше, чем просто идентификатор, вы должны предоставить: название, идентификатор и идентификатор категории. Почему мне нужно больше, чем просто уникальный идентификатор видео, я не знаю.
Когда я запрашиваю список видео, используя следующие параметры:
$queryParams = [
'forMine' => true,
'q' => $q,
// 'fields' => 'items(id,snippet/title,snippet/description)', <- would like to specify categoryId here
'type' => 'video',
'maxResults' => 50
];
$response = $service->search->listSearch('snippet', $queryParams);
В возвращаемом списке указаны заголовок и идентификатор но не идентификатор категории. На самом деле я не знаю ни одного способа получения идентификатора категории, кроме открытия видео на панели инструментов YouTube, просмотра категории и сравнения ее со списком, подобным этому
Итак, это их способ обновить описание видео без использования идентификатора категории или есть способ получить этот идентификатор категории с помощью API?
Вот как я пытаюсь обновить описание.
// Auth the client
$service = new Google_Service_YouTube($client);
// Define the $video object, which will be uploaded as the request body.
$video = new Google_Service_YouTube_Video();
// Set the ID
$video->setId($video_id);
// Add 'snippet' object to the $video object.
$videoSnippet = new Google_Service_YouTube_VideoSnippet();
$videoSnippet->setCategoryId('<HOW TO GET THIS?>');
$videoSnippet->setDescription('Test Description');
$videoSnippet->setTitle($video_title);
$video->setSnippet($videoSnippet);
$response = $service->videos->update('snippet', $video);
PS, может кто-то, у кого есть право, добавить тэг youtube- php -api?
ОБНОВЛЕНИЕ: Вы не можете получить ID категории с помощью API SEARCH, вы должны использовать API LIST. Это означает, что если вы хотите обновить описание видео, которое вы искали, вам нужно использовать 3 отдельных API. Вот как я использовал API LIST для получения идентификатора категории:
$client = google_authenticate();
$service = new Google_Service_YouTube($client);
$queryParams = [
'id' => $video_id,
'fields'=>'items(snippet/categoryId)'
];
$response = $service->videos->listVideos('snippet', $queryParams);
return $response['items'][0]['snippet']['categoryId'];