• ベストアンサー

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

自分のサイトにYoutubeの特定の動画を掲載し、その際にその動画の再生回数も表示したいのです。 YouTube Data APIや動画のXML(http://gdata.youtube.com/feeds/api/videos/【VIDEO-ID】)などを使って、データを取得する方法をご存知の方、ご教示お願いいたします。

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

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1336/1814)
回答No.1

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.htmlhttp://phpjavascriptroom.com/?t=strm&p=youtubeapi_feedtype

usakaburi
質問者

お礼

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

その他の回答 (1)

  • 4017B
  • ベストアンサー率73% (1336/1814)
回答No.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 とかを組み合わせれば、何かそれっぽい感じでスマートに抜き出せそうな気もしますが…。自分には良く分かりませんでした。

usakaburi
質問者

お礼

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