こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Yotubeの動画再生回数を自分のサイトで表示

自分のサイトにYoutubeの特定の動画を掲載し、その際にその動画の再生回数も表示したいのです。

YouTube Data APIや動画のXML(http://gdata.youtube.com/feeds/api/videos/【VIDEO-ID】)などを使って、データを取得する方法をご存知の方、ご教示お願いいたします。

投稿日時 - 2011-05-12 18:28:07

QNo.6732786

困ってます

質問者が選んだベストアンサー

YouTube動画の個別データは、以下のリンクにアクセスする事で取得出来ます。

http://gdata.youtube.com/feeds/api/videos?q=【動画のID】&alt=【ファイル形式】

YouTubeのDataAPIから吐き出される情報は、用途に応じてファイル形式も選べます。
&alt=【ファイル形式】~の書式で適当にURLの末尾にくっ付けて使用します。
選べるファイル形式は3種類で、それぞれ “atom” と “rss” と “json” です(現在の所、XML形式には対応してません)。

http://gdata.youtube.com/feeds/api/videos?q=【動画のID】&alt=rss

~上記の様にして指定し、PHPやJavaScript(jQuery)などで読み込みます。

で、ご質問の「再生数」ですが。
Atom形式とRSS形式の場合は、
<yt:statistics favoriteCount='64' viewCount='125'/>
~の部分に。

JSON形式の場合は、
"yt$statistics":{"favoriteCount":"64","viewCount":"125"}
~の部分に格納されている “viewCount” の値(例文の125)が再生数です。

PHP(RSS形式)で読み込むか、JavaScript(JSON形式)で読み込むかで、データ取得方法が異なりますが。要は連想配列化したデータを展開させるだけですので、そうは難しい処理ではありません。

jQueryなら $.getJSON() で、PHPなら simplexml_load_file() などでデータを取得させます。

P.S.
試しに自分でやってみた所、RSS形式をPHPで読み込ませると、名前空間部分にある要素はうまく取得出来ない様です?ですので可能な環境であれば、とりあえずはjQueryを用いて、データを取得する方法が簡単だと思います。

◆参考になりそうなwebサイト
http://pugiemonn.blog6.fc2.com/blog-entry-1184.html
http://phpjavascriptroom.com/?t=strm&p=youtubeapi_feedtype

投稿日時 - 2011-05-13 04:13:37

お礼

お返事ありがとうございます。
jQueryで情報を取得して、表示することができました。
助かりました♪

投稿日時 - 2011-05-13 10:52:40

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

PHPで再生数を取得する方法を考えてみました。

━ ここから ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<?php

$yt_id = 'XXX'; // XXX には【動画のID】を代入
$url = 'http://gdata.youtube.com/feeds/api/videos/'. $yt_id .'?alt=rss';
$rss = file_get_contents( $url );

if ( preg_match_all("/viewCount='([0-9]+)'/", $rss, $matches, PREG_SET_ORDER) ) {
$view = $matches[0][1];
}
else {
$view = '0';
}

echo "<div>再生数:". $view ."</div>\n";

?>
━ ここまで ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

これで一応、特定のYouTube動画の再生数を取れます。かなり無理矢理な感じですが…。

P.S.
PHP5から導入された simplexml_load_file() だと、再生数を格納している部分が取得出来ないので。RSSファイルを丸ごと一つの文字列として読み込み、preg_match_all関数で文字列検索をかけて、ヒットした部分を表示させてます(笑)。

DOMDocumentt と getElementsByTagName とかを組み合わせれば、何かそれっぽい感じでスマートに抜き出せそうな気もしますが…。自分には良く分かりませんでした。

投稿日時 - 2011-05-13 10:44:24

お礼

詳しく説明いただき、恐縮です。
jQueryの方で無事取得できましたが、勉強になりました。
ありがとうございました。

投稿日時 - 2011-05-13 10:51:25

あなたにオススメの質問