Можно ли вернуть идентификатор категории видео при использовании функции listSearch () в API YouTube PHP? - PullRequest
0 голосов
/ 28 января 2020

Я не знаю почему, но чтобы использовать обновление 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'];

1 Ответ

1 голос
/ 28 января 2020

Согласно документам , действительно, вы должны установить categoryId для каждого видео, которое вы намереваетесь обновить для snippet части.

Использовать Конечная точка VideoCategories для получения списка категорий (вместе с соответствующими идентификаторами), доступных для вашего региона.

Обновление:

Если необходимо получить категорию Идентификатор данного (уже существующего) видео, используйте конечную точку Видео и найдите свойство items[].snippet.categoryId.

...