Как перечислить все видео, размещенные на канале YouTube? - PullRequest
0 голосов
/ 02 июня 2019

Я создаю веб-сайт, чтобы сопровождать мой канал на YouTube, и я хочу, чтобы список всех последних видео, опубликованных на моем канале, был на странице на сайте, аналогичной этому сайту: http://hermitcraft.com/ но только для одного конкретного канала.

Я новичок в системе Google Apis и нахожу ее полностью подавляющей.

Мой веб-сервер apache и запускает php 7, но, поскольку это веб-хостинг, у меня нет доступа к какой-либо консоли.

Как мне подойти к решению этой проблемы?

1 Ответ

0 голосов
/ 02 июня 2019

Предполагая, что вы умеете программировать на PHP, я советую начать с малого и постепенно переходить от Обзор API данных YouTube , PHP Quickstart и Клиентская библиотека PHP : Начало работы . В любом случае, справочная документация ваш лучший друг - только то, что вы должны с ним познакомиться.

Вы будете использовать клиентскую библиотеку PHP код , тем самым клонируя ее локально на ваш компьютер.

В настоящее время не беспокоитесь об аутентификации OAuth, получите только из консоли разработчика Google ключ API , чтобы использовать его с конечной точкой API PlaylistItems , запрашивается для списка загрузок данного канала .

На Github есть пример кода для получения списка загрузок пользователя, но этот код довольно старый и, скорее всего, имеет проблемы (он также использует авторизацию OAuth, которую я уже рекомендовал вам не беспокоить) ). Вот основная часть этого кода (я немного его изменил: заменил 'mine' => 'true' на 'id' => $YOUR_CHANNEL_ID; вам нужно протестировать этот код):

  try {
    // Call the channels.list method to retrieve information about the
    // currently authenticated user's channel.
    $channelsResponse = $youtube->channels->listChannels('contentDetails', array(
      'id' => $YOUR_CHANNEL_ID,
    ));

    $htmlBody = '';
    foreach ($channelsResponse['items'] as $channel) {
      // Extract the unique playlist ID that identifies the list of videos
      // uploaded to the channel, and then call the playlistItems.list method
      // to retrieve that list.
      $uploadsListId = $channel['contentDetails']['relatedPlaylists']['uploads'];

      $playlistItemsResponse = $youtube->playlistItems->listPlaylistItems('snippet', array(
        'playlistId' => $uploadsListId,
        'maxResults' => 50
      ));

      $htmlBody .= "<h3>Videos in list $uploadsListId</h3><ul>";
      foreach ($playlistItemsResponse['items'] as $playlistItem) {
        $htmlBody .= sprintf('<li>%s (%s)</li>', $playlistItem['snippet']['title'],
          $playlistItem['snippet']['resourceId']['videoId']);
      }
      $htmlBody .= '</ul>';
    }
  } catch (Google_Service_Exception $e) {
    $htmlBody = sprintf('<p>A service error occurred: <code>%s</code></p>',
      htmlspecialchars($e->getMessage()));
  } catch (Google_Exception $e) {
    $htmlBody = sprintf('<p>An client error occurred: <code>%s</code></p>',
      htmlspecialchars($e->getMessage()));
  }

С самого начала вы должны знать систему квот , которую реализует API. В зависимости от моделей использования квоты могут устанавливать довольно жесткие ограничения на количество вызовов, которые пользователь может совершать в различных конечных точках API. В любое время консоль разработчиков Google отображает ваши текущие квоты.

Наконец, полезный инструмент для отладки вашего приложения: APIs Explorer . Он позволяет вам совершать вызовы к конечным точкам API и просматривать соответствующие тексты ответов JSON.

...