YouTube API 3 ПОЛУЧИТЕ последние видео от конкретного пользователя

1

Мне нужна помощь в получении видео YouTube от конкретного пользователя с новой версией API.

Я создал API данных YouTube на console.developers.google.com.

Оба доступа OAuth и Public API для браузера.

Прежде чем я использовал этот код для получения последнего 6 видео:

$feedURL = 'http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?max-results=6';
$sxml = simplexml_load_file($feedURL);
foreach ($sxml->entry as $entry) {
    $watch = (string)$media->group->player->attributes()->url;
}

Как я могу обновить этот код с помощью API 3?

Теги:
youtube
youtube-api
youtube-data-api
youtube-api-v3

3 ответа

2
Лучший ответ

Я работал над аналогичной вещью в.net и ее не так просто, как раньше.

Теперь требуется несколько дополнительных шагов:

Шаг 1: вам нужно получить channelId для пользователя через:

https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername= {0} & key = {1} - где {0} - USERNAME, а ключ - это ключ API

Шаг 2: из этого вы можете получить список видеороликов через:

https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId= {0} & key = {1}

Шаг 3:

https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails,player&id= {0} & key = {1} - где id - это videoId, возвращенный с шага 2.

Надеюсь, это поможет.

  • 0
    Здравствуй! Я не могу понять, если 3 шага должны быть 3 отдельных запроса, или я могу поместить все в один запрос URL. Ведь я получаю ошибку на первом шаге. ИМЯ ПОЛЬЗОВАТЕЛЯ - это имя профиля, верно? А ключ API относится к Публичному ключу доступа API, сгенерированному для браузера? Спасибо за помощь.
  • 0
    Привет, да, это многоэтапный процесс, как Ибрагим Улукая говорит ниже, вы могли бы справиться с этим в 2 этапа, я знаю, что мне было нужно, потому что мне нужно было сделать три этапа.
Показать ещё 1 комментарий
0

Обновленный ответ - 2018

<?php
/**
 * Gets the latest YouTube channel video.
 */
class Youtube
{
    /**
     * Channel ID or Channel User.
     *
     * @access private
     * @var string
     */
    private $channel = "";

    /**
     * Class constructor.
     *
     * @param string $channel Channel ID or Channel User.
     * @access public
     */
    public function __construct($channel)
    {
        $this->channel = $channel;
    }

    /**
     * Gets the video.
     *
     * @access public
     * @return array
     */
    public function video() : array
    {
        return array( 'title' => $this->getVideo('title'), 'id' => $this->getVideo('id') );
    }

    /**
     * Gets the last video.
     *
     * @param string $property 'title' or 'id'
     * @access private
     * @return string
     */
    private function getVideo($property) : string
    {
        $xml = null;

        if ( @fopen('https://www.youtube.com/feeds/videos.xml?user=' . $this->channel, 'r') !== false ) {
            $xml = simplexml_load_file('https://www.youtube.com/feeds/videos.xml?user=' . $this->channel); // Channel User
        } elseif ( @fopen('https://www.youtube.com/feeds/videos.xml?channel_id=' . $this->channel, 'r') !== false ) {
            $xml = simplexml_load_file('https://www.youtube.com/feeds/videos.xml?channel_id=' . $this->channel); // Channel ID
        }

        if ($xml !== null) {

            $namespaces = $xml->getNamespaces(true);
            $video = $xml->entry[0]->children($namespaces['yt']);

            if ($property === 'title') {
                return $xml->entry[0]->title;
            } elseif ($property === 'id') {
                return $video->videoId;
            }

        } else {
            return "";
        }
    }
}

$channel = 'UChsXToK8E4U8lqXaabPwlBw'; // Channel ID or Channel User.
$Youtube = new Youtube($channel);
$video   = $Youtube->video();
?>

<h1><?php echo $video['title']; ?></h1>
<iframe width="560" height="315" src="https://www.youtube.com/embed/<?php echo $video['id']; ?>?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
0

Это фактически двухэтапный процесс.

https://developers.google.com/youtube/v3/guides/implementation/videos#videos-retrieve-uploads

Шаг 1: Получить идентификатор списка воспроизведения для загруженных каналов

Шаг 2: Получить список загруженных видеороликов.

Вы можете связать эти запросы. Таким образом, вторым запросом может быть функция обратного вызова 1.requests.

  • 0
    Спасибо, но не могли бы вы привести пример? Это правильный URL? $feedURL = 'https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername=USERNAME&key={API-KEY}';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню