Генератор устойчивых к взлому паролей   •   Online-инструменты
752 просм
6 комм
Поделиться:

Как получить продолжительность ролика YouTube на PHP+API?

Итак, мы с вами уже научились получать API KEY сервиса YouTube для получения данных о ролике, и сегодня мы рассмотрим первый и простой способ получения информации об указанном ролике, а именно – его продолжительность.

Напишем небольшую функцию, которая и будет возвращать нам данные.

Функция будет выглядеть так:

function get_time_youtube($id_video) {

	$api_key = "AIzaSyC-tRTwkGhKL4eegGg6utVtsN4lklTs8oU";
	$get_data = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails,statistics&id=".$id_video."&key=".$api_key);
	$get_data = json_decode($get_data, true);

	$result_time = $get_data["items"]["0"]["contentDetails"]["duration"];

	preg_match_all("/(d+)/", $result_time, $parts);
	$hours = intval(floor($parts[0][0] / 60) * 60 * 60);
	$minutes = intval($parts[0][0] % 60 * 60);
	$seconds = intval($parts[0][1]);
	$totalSec = $hours + $minutes + $seconds;

	return date("H:i:s", mktime(0, 0, $totalSec));

}

И, соответственно, ее использование:

echo "Длительность ролика: ".get_time_youtube("bhXZiG4bsjA");

На что тут стоит обратить внимание?

  1. $api_key – это ваш персональный ключ доступа. О том, как его получить, написано здесь.
  2. bhXZiG4bsjA – ID видео, узнать его можно по ссылке.

Например, в ссылке на видео https://www.youtube.com/watch?v=bhXZiG4bsjA – часть bhXZiG4bsjA и есть ваш ID.

Если что-то вам показалось непонятным – пишите об этом в комментариях.

6
комментарий
Scorp
8.04 в 15:39
Странный у меня вопрос.. но как использовать эту функцию в dle? Что только не придумывал, не получается у меня вставить её в шаблон. Чувствую что это просто, и явно я просто вставляю echo как то не так. Артём, помогите пожалуйста))
  • 1
Scorp, исключительно для Вас.

1. В шаблон полной или краткой новости вставляете:

[xfgiven_xxx]
{include file="engine/modules/get_time_youtube.php?video_id=[xfvalue_xxx]"}
[/xfgiven_xxx]

xxx - название вашего поля, в котором храниться ID видео.

2. Создаете файл get_time_youtube.php со следующим содержимым:

<?php

function get_time_youtube($id_video) {

$api_key = "AIzaSyC-tRTwkGhKL4eegGg6utVtsN4lklTs8oU";
$get_data = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails,statistics&id=".$
id_video."&key=".$api_key);
$get_data = json_decode($get_data, true);

$result_time = $get_data["items"]["0"]["contentDetails"]["duration"];

preg_match_all("/(\d+)/", $result_time, $parts);
$hours = intval(floor($parts[0][0] / 60) * 60 * 60);
$minutes = intval($parts[0][0] % 60 * 60);
$seconds = intval($parts[0][1]);
$totalSec = $hours + $minutes + $seconds;

return date("H:i:s", mktime(0, 0, $totalSec));

}

echo "Длительность ролика: ".get_time_youtube($video_id);

?>

Его Вы загружаете в /engine/modules/

3. Чистите кэш сайта. На этом должно быть все.
  • 5
Scorp
8.04 в 21:23
Я благодарю Вас Артём за помощь! Но ничего не выходит.
Если делать в точности как Вы написали, то выдаётся ошибка: File engine/modules/get_time_yottube.php not found.
Если же предположить что Вы опечатались и указали название файла в 1 пункте не верное и исправить его на engine/modules/get_time_youtube.php, то на сайте появляется такая ошибка: Parse error: syntax error, unexpected 'id_video' (T_STRING), expecting variable (T_VARIABLE) or '$' in /var/www/user7841/data/www/мой сайт/engine/modules/get_time_youtube.php on line 7
Что не так я сделал? Спасибо!
  • 0
Scorp, ошибки нет. Просто код разбился на части.

Эту часть

$get_data = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails,statistics&id=".$
id_video."&key=".$api_key);

сделайте в одну строку + сразу после <?php добавьте:

if(!defined('DATALIFEENGINE')) {
die("Hacking attempt!");
}

И не забудьте создать свой API KEY.
  • 5
Scorp
8.04 в 22:05
Артём, ещё раз от души огромное спасибо!!! Теперь всё работает.
  • 0
Scorp
8.04 в 23:47
Хм.. не всё так просто. Когда вставляешь в полную новость, то всё норм, но когда вставляешь в краткую новость, то ошибка в строке function get_time_youtube($id_video) {

Далее я поставил я в краткую новость, но для раздела закладок и если 1 закладка, то работает, а если две и более закладки, то нет. В этом сумеете помочь? angel
  • 0
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Ваше Имя
Ваш E-mail
Текст комментария