YouTubeビデオのURLのリストがあります。YouTube APIを使用して、それぞれのユーザー評価と評価数を見つけたいと思います。APIは、URLを使用してこの情報を検索する方法を提供しますが、単一のビデオのみを対象としています:https ://developers.google.com/youtube/2.0/developers_guide_protocol_video_entries 。
たくさんの同期AJAXリクエストを送信できましたが、それは遅すぎます。私はそれらを非同期で送信し、すべてが次のように終了するのを待ってみました:
MyObj.prototype.getYTData = function (urls) {
var self = this,
requests = 0,
vids = [];
$.each(urls, function (i, vidUrl) {
var id = self.getURLParameter(vidUrl, 'v');
requests += 1;
$.ajax({
type: 'GET',
url: 'https://gdata.youtube.com/feeds/api/videos/' + id + '?v=2',
data: { alt: 'jsonc' },
success: function (data) {
self.isGood(data.data) && vids.push(data.data);
},
complete: function () {
requests -= 1;
}
});
});
while (requests) {};
};
関数が永久にハングするようです。私の推測では、サーバーにリクエストが多すぎるためです。リクエストの間に少し遅延を設定することもできますが、これを行うにはもっと良い方法があるはずです。
すべてのURLの評価情報を取得するための良い方法は何ですか?