概要
YouTube Data APIで動画の長さを取得する場合、動画(Videos)リソースのlistメソッドを使います。ミリ秒単位で取得するには、fileDetailsプロパティを利用します。ただし、動画をアップロードした本人しか使えません。
そこで、contentDetailsプロパティのduraionを使います。ISO 8601によって定められた形式で返ってきますが、ミリ秒に変換する方法を紹介します。
まずは、下準備として
をごらんください。
ISO 8601による長さの表現について
YouTube Data APIのページにもリンクがありますが、詳しくはWikipediaで解説されています。
継続時間(ISO 8601 - Wikipedia)
具体的には、動画時間が例えば1時間30分55秒だとしたら、「PT1H30M55S」になるということです。
これをミリ秒に変換します。
ソースコード
<?php
//APIを呼んで返ってきた値
$duration = $res['contentDetails']['duration'];
$interval = new DateInterval($duration);
//秒単位に
$durationS = $interval->h * 3600 + $interval->i * 60 + $interval->s;
//ミリ秒に
$durationMS = $durationS * 1000;
まず、DateIntervalオブジェクトに変換します。
$intervalをvar_dump()すると分かるのですが、時・分・秒などがそれぞれ分かれて格納されます。
詳しくはPHPマニュアルの「プロパティ」の欄をごらんください。
PHP: DateInterval - Manual
時・分を秒単位に変換してそれぞれ足し算します。
最後の行でミリ秒に変換していますが、秒単位のままでよければ不要です。
サンプルコード
その他、サンプルコードやGoogle APIに関するTIPSなどの一覧ページはこちら
Google APIに関する記事一覧