Офис НП AMWAY в Ярославле
→ На карте Офис AMWAY в ЯрославлеПрием и выдача заказов, презентация продукции Амвей, мастер–классы, вопросы по бизнесу Amway:
●Адрес: улица Валентины Терешковой, дом 1 (Вход со двора)
●Телефон: +7 (920) 112-00-91
●Email: matyxho@mail.ru
●Сайт: https://www.amway.ru/user/lebedem
●Визитка: http://yar.meweb.ru
Иерархия статей
Статьи » Программирование » PHP: Вывод информации о видео с сервиса YouTube, используя YouTube Data API v3
Сниппет
YouTube прекратило поддержку Data API v2, поэтому множество приложений (в том числе и PHP) просто перестали работать. В статье мы будем использовать YouTube Data API v3 для получения информации о видео
PHP: Вывод информации о видео с сервиса YouTube, используя YouTube Data API v3
В одной из статей я уже рассказывал о том, как вывести информацию о видео с YouTube. Однако, в той статье мы использовали YouTube Data API второй версии, а вот на днях я узнал, что YouTube прекратил поддержку Data API v2, полностью перейдя на третью версию. Что ж, раз уж так вышло — переделываем наш скрипт под YouTube Data API v3.
Что мы будем выводить из информации:
Вот, в общем, подготовительные работы закончились. Далее — парсим файл с информацией о видео с сервиса YouTube, преобразовываем все, что нам нужно в удобочитаемый вид и выводим. По ходу кода буду давать комментарии. Работать будем с объектом, поэтому частично в коде присутствует ООП. Поехали:
Собственно, практически все мы уже сделали. Осталось только вывести информацию в браузер, чем мы сейчас и займемся:
Вот и все на этом. Вывод информации о видео с сервиса YouTube при помощи YouTube Data API v3 готов. Последний штрих (но не в последнюю очередь) — это генерация персонального ключа где–то здесь: https://console.developers.google.com/.
Ну и пример того, что мы сделали (только здесь это встроенный мод, поэтому есть некоторые отличия. Всем всех благ и удачи в сайтостроении! Видео YouTube:
З.Ы. Ну а если вам нужно больше информации, больше возможностей при использовании YouTube Data API v3, и вы при этом для веб–разработки своего проекта (проектов) используете язык программирования PHP, то вам вот сюда, правда перед этим рекомендую вспомнить основы буржуинского языка.
Что мы будем выводить из информации:
- Заголовок (Title)
- Описание (Description)
- Дата добавления
- Продолжительность
- Количество просмотров видео
- Рейтинг (средняя оценка, понравилось/не понравилось, общее количество голосов)
- Превью видео
Код: PHP
// соединение и парсинг
function get_ydata($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
// преобразование окончаний слов
function getWord($number, $suffix) {
$keys = array(2, 0, 1, 1, 1, 2);
$modern = $number % 100;
$suffix_key = ($modern > 7 && $modern < 20) ? 2 : $keys[min($modern % 10, 5)];
return $suffix[$suffix_key];
}
// преобразование продолжительности ролика в секунды
function ctime($ytime) {
$start = new DateTime("@0");
$start->add(new DateInterval($ytime));
$stime = $start->format("H:i:s");
$sc = explode(":", $stime);
return $sc[0]*3600+$sc[1]*60+$sc[2];
}
// Сразу создадим массивы для последующей работы
$arraymin = array("минута", "минуты", "минут");
$arraysec = array"'секунда", "секунды", "секунд");
$arraygolos = array("голос", "голоса", "голосов");
Вот, в общем, подготовительные работы закончились. Далее — парсим файл с информацией о видео с сервиса YouTube, преобразовываем все, что нам нужно в удобочитаемый вид и выводим. По ходу кода буду давать комментарии. Работать будем с объектом, поэтому частично в коде присутствует ООП. Поехали:
Код: PHP
$yprev = false; // настройка превью: если false (default) - 120px x 90px; если true (medium) - 320px x 180px
$ykey = "Ваш персональный ключ api";
$yurl = "ID видео";
$api = get_ydata("https://www.googleapis.com/youtube/v3/videos?id=".$yurl."&part=snippet%2Cstatistics%2CcontentDetails&key=".$ykey); // спарсили файл с информацией о видео
$youtube = json_decode($api); // преобразовали JSON-строку в объект PHP
if ($youtube && $youtube != NULL && $youtube->items) { // проверяем ответ, если ключ верен, видео существует и массив с информацией не пуст
foreach ($youtube->items as $item) { // проходимся по массиву, задавая переменные
$published = $item->snippet->publishedAt; // дата публикации
$title = $item->snippet->title; // заголовок
$description = $item->snippet->description; // описание
$thumb = $item->snippet->thumbnails; // превью
$author = $item->snippet->channelTitle; // автор видео
$duration = ctime($item->contentDetails->duration); // продолжительность (переводим в секунды)
$viewCount = $item->statistics->viewCount; // количество просмотров
$likes = $item->statistics->likeCount; // понравилось
$dislikes = $item->statistics->dislikeCount; // не понравилось
}
$thumb = $yprev ? $thumb->medium->url : $thumb->default->url; // задали урл для превью видео согласно настройкам выше
$length_min = floor($duration / 60); // сколько целых минут
$length_sec = $duration % 60; // сколько секунд
$min = getWord($length_min, $arraymin); // удобочитаемые минуты
$sec = getWord($length_sec, $arraysec); // удобочитаемые секунды
if ($likes == 0 && $dislikes > 0) { // делаем рейтинг. Если лайков 0, а дислаков больше 0, то
$rating = 0; // средний рейтинг 0
$numRaters = $dislikes; // всего голосов
} elseif ($likes > 0 && $dislikes == 0) { // если лайки есть, а дислайков нет
$rating = 5; // средний рейтинг равен 5 (высший)
$numRaters = $likes; // всего голосов
} elseif ($likes > 0 && $dislikes > 0) { // если есть и лайки, и дислайки
$numRaters = $likes + $dislikes; // всего голосов
$rating = $likes * 5 / $numRaters; // вычисляем средний рейтинг
} else { // если нет ни лайков, ни дислайков
$rating = 0;
$numRaters = 0; // все по нолям
}
$golos = getWord($numRaters, $arraygolos); // удобочитаемое общее количество голосов
$title = htmlspecialchars(trim((string)$title)); // подготовили заголовок
$description = !empty($description) ? htmlspecialchars(trim((string)$description)) : "Нет описания видео"; // подготовили описание, проверив на пустоту
$author = htmlspecialchars(trim((string)$author)); // автор видео
$published = date("d M Y H:i:s", strtotime($published)); // дата и время добавления
// далее подготовка к выводу информации
$yinfo = "<strong>Заголовок: </strong>".$title."<br />";
$yinfo .= "<strong>Описание: </strong>".$description."<br />";
$yinfo .= "<strong>Автор: </strong>".$author." — ".$published."<br />";
$yinfo .= "<strong>Просмотров: </strong>".number_format($viewCount, 0, ".", " ")."<br />";
$yinfo .= "<strong>Продолжительность: </strong>".$length_min.$min.$length_sec.$sec."<br />";
$yinfo .= "<strong>Рейтинг: </strong>".($rating == 0 ? "0" : number_format($rating, 2, ",", " "))." (".$numRaters.$golos.") <span style='color:green'>".$likes."</span> | <span style='color:red'>".$dislikes."</span>";
$yimg = "<a href='http://www.youtube.com/embed/".$yurl."?rel=0&wmode=transparent' title='".$title."'><img src='".$thumb."' alt='".$title."' title='".$title."' /></a>";
} else { // иначе, если произошла ошибка при парсинге
$yinfo = "<strong>Нет данных для отображения</strong>";
$yimg = "<img src='https://www.youtube.com/yt/brand/media/image/yt-brand-strike-3.png' alt='Нет превью' style='border:0' />";
}
Собственно, практически все мы уже сделали. Осталось только вывести информацию в браузер, чем мы сейчас и займемся:
Код: PHP
$window = "<div style='margin:3px; display:table'>".$yimg."<div style='display:table-cell; padding-left:20px; vertical-align:top'>".$yinfo."</div></div>";
echo $window;
Вот и все на этом. Вывод информации о видео с сервиса YouTube при помощи YouTube Data API v3 готов. Последний штрих (но не в последнюю очередь) — это генерация персонального ключа где–то здесь: https://console.developers.google.com/.
Ну и пример того, что мы сделали (только здесь это встроенный мод, поэтому есть некоторые отличия. Всем всех благ и удачи в сайтостроении! Видео YouTube:
Ошибка: невозможно отобразить содержимое
З.Ы. Ну а если вам нужно больше информации, больше возможностей при использовании YouTube Data API v3, и вы при этом для веб–разработки своего проекта (проектов) используете язык программирования PHP, то вам вот сюда, правда перед этим рекомендую вспомнить основы буржуинского языка.
Понравилась статья?
Метки для данной статьи
Похожие статьи
Поделиться:
Последние активные темы форума
Темы | Просмотров | Ответов | Последние сообщения | |
Вопрос по переделке bb-кода PHP, MySQL |
22841 | 5 | Pisatel 26. мая 2017 |
|
Вопросы по Ajax форме обратной связи CMS PHP Fusion |
71872 | 48 | Ditrin 19. февраля 2017 |
|
BBCode YouTube Video Colorbox mod CMS PHP Fusion |
15717 | 2 | Pisatel 10. декабря 2016 |
|
Как лучше создать собственную страницу? CMS PHP Fusion |
18393 | 17 | Pisatel 11. мая 2016 |
|
Небольшие вопросы по скриптам магазина и катало... PHP, MySQL |
150147 | 80 | Pisatel 11. января 2016 |
|
BBCode Code mod CMS PHP Fusion |
14888 | 0 | Pisatel 31. августа 2015 |
|
Ajax Like Dislike Article Panel CMS PHP Fusion |
23188 | 16 | Pisatel 07. июля 2015 |
|
Хлебные крошки / BreadCrumbs SEO Panel CMS PHP Fusion |
26988 | 17 | Pisatel 04. июля 2015 |
|
Abbr Description BBCode CMS PHP Fusion |
7830 | 0 | Pisatel 15. июня 2015 |
|
Плагин Email рассылки Mail To All by Pisatel CMS PHP Fusion |
38100 | 32 | Pisatel 26. апреля 2015 |
|
Подозрительный трафик и прочие страшилки Всякая хрень |
12018 | 2 | Ditrin 23. апреля 2015 |
|
Мод Newsletter - рассылка писем пользователям с... CMS PHP Fusion |
31455 | 13 | Pisatel 10. апреля 2015 |
|
Мод отправки писем PHPMailer для PHP-Fusion CMS PHP Fusion |
133339 | 113 | Ditrin 06. апреля 2015 |
|
Появление неизвестного файла subscriptions.php CMS PHP Fusion |
8996 | 2 | Pisatel 06. апреля 2015 |
|
Autoban on IP CMS PHP Fusion |
23507 | 13 | Pisatel 03. апреля 2015 |