PHP get a Youtube video duration

To make this work you need to go to Google Developers Console, create a project, enable the YouTube Data API v3, and get a key in authentication key in credentials. This is pretty much the difficult part.

Now the easy part, so easy and keystroke economic to do this in PHP… just a couple of lines, and it’s done:

01
02
03
04
05
06
07
08
09
10
11
12
13
define("API_KEY", ""); // Fill in your Google API Key
function getYoutubeDurationV3($id) {
  $json = json_decode(
            file_get_contents('https://www.googleapis.com/youtube/v3/videos'.
                              '?part=contentDetails&d='.$id.'&key='.API_KEY)
          );
 
  $start   = new DateTime('@0');
  $youtube = new DateTime('@0');
  $youtube->add(new DateInterval($json->items[0]->contentDetails->duration));
     
  return $youtube->getTimestamp() - $start->getTimestamp();
}

This point downwards is for archive only, the v2 API has been shut down since April 2015

1
2
3
4
5
6
7
function getYoutubeDuration($id) {
    $xml = simplexml_load_file('https://gdata.youtube.com/feeds/api/videos/'.$id.'?v=2);
    $result = $xml->xpath('//yt:duration[@seconds]');
    $total_seconds = (int) $result[0]->attributes()->seconds;
 
    return total_seconds;
}

There, done, solved. Next…

6 thoughts on “PHP get a Youtube video duration”

Leave a Reply to MarcoCancel reply