2013年10月9日水曜日

GData APIで、YouTubeのプレイリスト一覧の取得によく失敗する

hitoisでは、マイYouTubeという機能があり、自分の公開プレイリストや、お気に入り、自分がアップした動画を一覧表示するようになっています。

この機能、Google App Engine向けのGData APIのPythonクライアントライブラリを使っているのですが、公開プレイリストの取得によく失敗します。

このライブラリが叩いているURLは、http://gdata.youtube.com/feeds/api/users/{username}/playlists なのですが(usernameのところがYouTubeユーザIDで、hitoisユーザに入力してもらっています)、フィードが帰ってこず、リストが得られないことが多々あるのです。

ちなみに別の仕事で、プレイリストのIDを指定して動画の一覧フィードを取得するWebアプリをPHPで作ったのですが、こちらは一度も失敗しません。どうもプレイリスト一覧の取得だけが問題を持っているようです。

仕方がないので、フィードが取れるまで繰り返しチャレンジするようにしたのですが、タイムオーバーになってしまうことも。。。

チャレンジ回数を指定するしか無いですね。しかし、リストの取得に失敗すると、当然マイYouTubeにリストが表示されないので、ユーザさんにとっては困った仕様です。

いっそのこと、フィード取得をAjaxにして、際限なくチャレンジするようにしようかとも考えています。

追記:
先述したPHPでの指定プレイリスト内の動画一覧の取得は、http://gdata.youtube.com/feeds/api/playlists/{playlistId}?v=2で出来ます。playlistIdのところに、そのプレイリストのID(プレイリストを表示した際にURLに含まれます)を指定することで出来ます。?v=2はAPIのバージョンに2を指定しています。実は今年の春にバージョン3が公開されたのですが、まだ資料が少ないため、敢えてバージョン2を選びました。