InstagramのAPIでcountを指定した際の挙動が気に入らない件

InstagramのAPIでcountを指定した際の挙動が気に入らない件

ラノベっぽいタイトルですがたまたまです(挨拶)

Instagramで特定のタグの付いた画像を検索するには
http://instagram.com/developer/endpoints/tags/#get_tags_media_recent
で指定されているAPIを使用します。

パラメータにcountを指定することで指定した件数のデータを取得することができ、APIの返り値としてnext_max_tag_id、next_min_idが取得できますので、パラメータとしてmax_tag_id、min_tag_idを追加することで「次のn件」「前のn件」を取得することができます。

が。

どうもこのcount周りがおかしい感じです。
client_idや実際に検索に使ったタグなどは公開できないので一部ボカしながら紹介してみます。

実験につかったスクリプトはこんな感じです。

$(function() {
	var tag = "[なんかあれ]";
	var clientId = "[あれなそれ]";
	var url = "https://api.instagram.com/v1/tags/" + tag + "/media/recent?callback=?";
	
	var table = $("<table />").appendTo("body");
	
	for(var i=1; i<=10; i++) {
		(function(count) {
			$.getJSON(url, {
				client_id: clientId,
				count: count
			}).done(function(json) {
				var tr = $("<tr />").appendTo(table);
				
				$("<th />").append(count).appendTo(tr);
				$("<td />").append(json.data.length).appendTo(tr);
			});
			
		})(i);
	}
});

実験として総数が10件の「とあるタグ」についてcountに1~10を指定して呼び、実際に返ってきた件数が以下の通りです。

※ 順番は見やすく入れ替えてあります

count 返却数
1 1
2 2
3 10
4 10
5 10
6 10
7 10
8 8
9 10
10 10

なんじゃこりゃあっ!!

もう何がなんだか分かりません。
ある程度のところからは残りの全件返すのかな?と思いきやそんなこともありません。
これ、特定のタグだけではないので総数が少なそうなタグで是非実験してみてもらいたいです。
(総数が多くてもきっと現象は出るんじゃないかとは思っていますが、面倒すぎて検証できてません)

これの回避方法をご紹介・・・したいのですが、結局諦めました。
多く返ってきた場合に予定した件数に切り詰めることは当然可能なんですが、じゃぁその次を取得したい場合に必要なmax_idというのが取れないんですね。
取得できたデータの前後のIDはAPIが通知してくれますが、取得できたデータのn件目がなんというIDなのかは分かりません。
いっそ全部を諦めてcount=1だけを何回も繰り返して呼んでやろうかとも思いましたが、ダメです。
count=1でもいきなり途中で7件くらい返してくれて詰みます。

これ、こっちの使い方等の問題で、回避可能なら誰か教えてください・・・

TAG

  • このエントリーをはてなブックマークに追加
やまま
スペシャリスト やまま yamama

マンガとアニメとゲームから錬成された宇宙大好きエンジニア。 軌道エレベーターで行ける静止軌道上のコロニーに住まいを移し、ゲームやってマンガ読んでアニメ見て爆睡、ゲームやってマンガ読んでアニメ見て爆睡、という生活を夢見ながら今日もコードを書き続けるのだった。