2010年5月27日木曜日

YouTube Data APIで取得できる最新の「再生回数」はユーザーページの「動画」にある!

昨日書いた記事でYouTube Data APIで取得できるビデオの「再生回数」はクエリによって差があることがわかったけど、結局最新の再生回数を得る方法はわからなかった。
琴線探査: YouTube Data APIで取得できるビデオの「再生回数」はクエリによって差がある

しかし見つけた!

最新の再生回数の情報はYouTubeのサイト上ではユーザーの「動画」ページにあるようだ。そして、このページの情報ソースにあたるクエリはこれだ。
http://gdata.youtube.com/feeds/api/users/username/uploads

このクエリで得られる再生回数は、YouTubeサイト上での検索結果はもちろん、プレイリストやビデオ再生画面の再生回数よりも新しい。


追記10.05.28
http://gdata.youtube.com/feeds/api/users/username/uploads/videoid
のクエリでも、あるユーザーがアップロードした特定のビデオの情報を得られることがわかったが、上のクエリの再生回数とは異なる。プレイリストの再生回数と同じだ。


追記10.06.24:
琴線探査: YouTube Data APIで最新の再生回数を取得するには? PART2 たぶんこれで決定打


このクエリはドキュメントには載っていない。ではどこで判ったかというと、
http://gdata.youtube.com/feeds/api/users/username
で得られるXMLの中身を読んで判った。
リファレンス ガイド: Data API プロトコル ユーザー プロフィール エントリ

結果はデフォルトでは25件ごとになるけど、クエリパラメーターには「Standard Google Data API parameters」が使える。つまり、start-indexやmax-resultsを使ってその先のデータも取得できる。
リファレンス ガイド: Data API プロトコル Standard Google Data API parameters

一度に取得できるのは50件が最大なので、場合によっては一気には取得できないだろう。しかし、このあたりはプログラムでナントカなる。そして、このリストから再生しようとするビデオの再生回数を抽出すればいい。

残念なのは、やはり一発では取れそうにないということ。


追記10.06.04:一発で取る方法発見!
琴線探査: YouTube Data APIで最新の再生回数を取得するには?


APIを実際に使ってみて思うのは、情報の整合性がない場合や重複する情報が多いということ。YouTubeは急速に発展してきたので、あまり考えずにどんどんデータを追加していった結果なのかもしれない。

しかし、どこかの時点でデータ構造の最適化をしないと、どんどんデータがネストしていって欲しい情報をすぐに得られなくなると思う。そうなれば開発者もその面倒さに困るだけでなく、Googleだってクエリが無駄に増えて困るだろうに・・・

データ構造の設計がいかに重要かを改めて認識させられる。