ブルーシュ

IT技術の勉強記録

ホーム > Tips > Google API

ISO 8601の時間の長さをミリ秒に変換する – PHPでYouTube Data API

, ,

概要

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オブジェクトに変換します。
$intervalvar_dump()すると分かるのですが、時・分・秒などがそれぞれ分かれて格納されます。
詳しくはPHPマニュアルの「プロパティ」の欄をごらんください。
PHP: DateInterval - Manual

時・分を秒単位に変換してそれぞれ足し算します。

最後の行でミリ秒に変換していますが、秒単位のままでよければ不要です。

サンプルコード

その他、サンプルコードやGoogle APIに関するTIPSなどの一覧ページはこちら
Google APIに関する記事一覧

ISO 8601の時間の長さをミリ秒に変換する – PHPでYouTube Data API #Google API #ウェブデザイン #ウェブ制作 #WEBデザイン #WEB制作 #PHP #時間 #DateInterval

作者の似顔絵

秋田市在住のプログラマーです。
プログラミングを始めて18年、まだまだ日々勉強。調べたことをブログにまとめていきます。
記事の感想・質問・間違い指摘などはツイッター ( @blooshcompany ) へお願いします。