Получение продолжительности видео не работает в YouTube API v3

Я использую приведенный ниже код для получения продолжительности видео ($vid_dur) с помощью YouTube API v3 с марта 2016 года и без каких-либо проблем, пока он не перестал работать сегодня без какого-либо вмешательства с моей стороны. Какие-либо предложения?

<?php
    $vidkey = "xxxxxxxxx" ; 
    $apikey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ;

    $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'];
    }
    // convert duration from ISO to M:S
    $date = new DateTime('2000-01-01');
    $date->add(new DateInterval($VidDuration));

    $vid_durH= $date->format('H') ; 
        if ($vid_durH=="00") {
            $vid_dur= $date->format('i:s') ;
        }
        else { 
            $vid_dur= $date->format('H:i:s') ;  
        } 
?>

Вот часть сообщения об ошибке

Неустранимая ошибка: необработанное исключение «Исключение» с сообщением «DateInterval::__construct() [dateinterval.--construct]: неизвестный или неверный формат ()»


person Alaa Sadik    schedule 11.01.2017    source источник
comment
повторите VidDuration, чтобы увидеть, о чем DateInterval выдает ошибку.   -  person johnh10    schedule 12.01.2017
comment
{ ошибка: { ошибки: [ { домен: UsageLimits, причина: keyInvalid, сообщение: неверный запрос } ], код: 400, сообщение: неверный запрос } }   -  person Alaa Sadik    schedule 13.01.2017
comment
Что ж, в сообщении об ошибке говорится, что keyInvalid так что посмотрите на это.   -  person johnh10    schedule 13.01.2017


Ответы (1)


Я проверил ваш код, он работает. Я думаю, что у вас возникли проблемы с file_get_contents, вы можете использовать клиентскую библиотеку Google API. для PHP, так как он предлагает простой, гибкий и мощный доступ ко многим API Google.

Используя ваш запрос: Где я установил $videokey=UqyT8IEBkvY (24K Magic)

"https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=$vidkey&key=$apikey"

Ответ:

 "items": [
  {
   "kind": "youtube#video",
   "etag": "\"GM4ZnRh2gk1X1BLWgHklTm-3cgQ/tokAeZifZMO865fU_ytDkWOyIQ0\"",
   "id": "UqyT8IEBkvY",
   "contentDetails": {
    "duration": "PT3M47S",
    "dimension": "2d",
    "definition": "hd",
    "caption": "false",
    "licensedContent": true,
    "projection": "rectangular"
   }
  }
 ]

Ваш код :

$VidDuration= "PT3M47S";
$date = new DateTime('2000-01-01');
$date->add(new DateInterval($VidDuration));

$vid_durH= $date->format('H') ; 

if ($vid_durH=="00") {
            $vid_dur= $date->format('i:s') ;
        }
        else { 
            $vid_dur= $date->format('H:i:s') ;  
        } 

echo $vid_dur;

введите здесь описание изображения

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

person Mr.Rebot    schedule 12.01.2017