2017-01-11 3 views
0

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

<?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') ; 
     } 
?> 

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

Fatal error: Uncaught exception 'Exception' with message 'DateInterval::__construct() [dateinterval.--construct]: Unknown or bad format()'

+0

эхо VidDuration, чтобы увидеть, что DateInterval вызывает ошибку. – johnh10

+0

{"error": {"errors": [{"domain": "usageLimits", "reason": "keyInvalid", "message": "Bad Request"}], "code": 400, "message": «Плохой запрос»}} –

+0

В сообщении об ошибке говорится, что keyInvalid так заглядывает в это. – johnh10

ответ

2

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

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

"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; 

enter image description here

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

Смежные вопросы