Intereting Posts
Что означают эти два параметра для WScript? Список разделенных запятой MYSQL, можно добавлять и удалять значения? Принятие «скриншота» java-апплета как реализовать прикованный выбор с использованием Mysql Php и запроса как остановить множественный вход пользователя с тем же адресом электронной почты и паролем, как только пользователь уже зарегистрировался Yii2: Использование виджета Kartik Depdrop? Что такое хорошая PHP CMS? Как отправить письмо с контентом из представления в codeigniter Обновление woocommerce Способ доставки через ajax Как форматировать дату и время, которое получено из базы данных Плохой фильтр регулярных выражений слов не работает В PHP при отправке строк в базу данных следует позаботиться о незаконных символах с помощью htmlspecialchars () или использовать регулярное выражение? Использование SQlite3 в PHP, как подсчитать количество строк в наборе результатов? Проблема маршрутизации имени модуля Zend Framework 2 удалите mongodb php драйвер и установите другую версию

Как получить продолжительность видео с помощью API YouTube?

Я хочу получить продолжительность видео Youtube. Вот код, который я пробовал:

$vidID="voNEBqRZmBc"; //http://www.youtube.com/watch?v=voNEBqRZmBc $url = "http://gdata.youtube.com/feeds/api/videos/". $vidID; $doc = new DOMDocument; $doc->load($url); $title = $doc->getElementsByTagName("title")->item(0)->nodeValue; 

Проверьте файл XML. Я получил название этого видео. Я хочу получить продолжительность от <yt:duration seconds='29'/> .

Как получить атрибут seconds этого <yt> ?

В связи с предстоящим устареванием API Youtube v2, это обновленное решение.

  1. Начните с клонирования Google API PHP здесь.
  2. Затем вы захотите зарегистрировать приложение с Google здесь , создав новый проект, включив API данных Youtube в разделе «API и auth> API» и
  3. Создайте новый идентификатор клиента OAuth в разделе «API и auth> Credentials» и добавьте полный путь к вашему списку перенаправления перенаправления. (например, http://example.com/get_youtube_duration.php )
  4. Используйте этот код (который был адаптирован из этого примера кода), при этом вы должны заполнить переменные $ OAUTH2_CLIENT_ID и $ OAUTH2_CLIENT_SECRET своими собственными значениями с шага 3.
  5. Hardcode значение для переменной $ videoId или установить его с помощью параметра video_id get (т. Е. http://example.com/get_youtube_duration.php?video_id=XXXXXXX)
  6. Посетите свой скрипт, щелкните по ссылке, чтобы авторизовать приложение, и используйте свою учетную запись google, чтобы получить токен, который перенаправляет вас обратно на ваш код и отображает продолжительность.

Вот ваш вывод:

 Video Duration 0 mins 29 secs 

Дополнительные ресурсы: https://developers.google.com/youtube/v3/docs/videos#contentDetails.duration https://developers.google.com/youtube/v3/docs/videos/list

Следующие работы предназначены только для V2 API.

Это сработало для меня, исходя из предположения, что в фиде есть только один элемент продолжительности.

 <?php $vidID="voNEBqRZmBc"; //http://www.youtube.com/watch?v=voNEBqRZmBc $url = "http://gdata.youtube.com/feeds/api/videos/". $vidID; $doc = new DOMDocument; $doc->load($url); $title = $doc->getElementsByTagName("title")->item(0)->nodeValue; $duration = $doc->getElementsByTagName('duration')->item(0)->getAttribute('seconds'); print "TITLE: ".$title."<br />"; print "Duration: ".$duration ."<br />"; 

Вывод:

 TITLE: Introducing iTime Duration: 29 

Здесь YouTube API V3, пример получения продолжительности видео, но не забудьте создать свой ключ API на странице https://console.developers.google.com/project

  $vidkey = "cHPMH2sa2Q" ; video key for example $apikey = "xxxxxxxxxxxxxxxxxxxxx" ; $dur = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=$vidkey&key=$apikey"); $VidDuration =json_decode($dur, true); foreach ($VidDuration['items'] as $vidTime) { $VidDuration= $vidTime['contentDetails']['duration']; } 

Краткое и простое решение с использованием SimpleXML:

 function getYouTubeVideoDuration($id) { $xml = simplexml_load_file('http://gdata.youtube.com/feeds/api/videos/'.$id); return strval($xml->xpath('//yt:duration[@seconds]')[0]->attributes()->seconds); } 

все приведенные выше ответы предоставляют продолжительность в текстовом формате:

это решение даст вам часы / минуты / секунды для преобразования в любой формат, который вам нужен:

 function getDurationInSeconds($talkId){ $vidkey = $talkId ; $apikey = "xxxxx"; $dur = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=$vidkey&key=$apikey"); $VidDuration =json_decode($dur, true); foreach ($VidDuration['items'] as $vidTime) { $VidDuration= $vidTime['contentDetails']['duration']; } preg_match_all('/(\d+)/',$VidDuration,$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; //this is the example in seconds return $totalSec; } 

Очень просто

 function getYoutubeDuration($videoid) { $xml = simplexml_load_file('https://gdata.youtube.com/feeds/api/videos/' . $videoid . '?v=2'); $result = $xml->xpath('//yt:duration[@seconds]'); $total_seconds = (int) $result[0]->attributes()->seconds; return $total_seconds; } //now call this pretty function. As parameter I gave a video id to my function and bam! echo getYoutubeDuration("y5nKxHn4yVA"); 

Вы также можете получить продолжительность в JSON

  $video_id = "<VIDEO_ID>"; http://gdata.youtube.com/feeds/api/videos/$video_id?v=2&alt=jsonc 

Ой! Извините, вы можете получить его:

 $duration = $xml->getElementsByTagName('duration')->item(0)->getAttribute('seconds');