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

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

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

Оба OAuth а также Доступ к публичному 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?

1

Решение

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

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

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

https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername ={0}&key = {1} — где {0} — ИМЯ ПОЛЬЗОВАТЕЛЯ, а ключ — ваш ключ API

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

https://www.googleapis.com/youtube/v3/search?order=date&часть = фрагмент&channelId ={0}&ключ = {1}

Шаг 3:

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

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

2

Другие решения

Это на самом деле двухэтапный процесс.

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

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

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

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

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
По вопросам рекламы [email protected]