InstagramAPIでハマった、ちょっとしたこと

こんにちわ。

先日、
Instagramの画像を部分一括ダウンロードするWEBアプリ
というものを公開してますが、
この中でページネーションに関してちょっとハマッタので備忘録。
InstagramAPIに投げるとjsonで戻ってくるのですが、
この中で、Instagramではやさしいのかやさしくないのか、
Pagenation用の項目も用意されています。

たとえば、こんな感じ。

["pagination"]=>
  array(2) {
    ["next_url"]=>
    string(157) "https://api.instagram.com/v1/users/********/media/recent?access_token=**********&count=16&max_id=11111111_1111111"
    ["next_max_id"]=>
    string(25) "11111111_1111111"

このnext_max_idというのが、APIをたたいたときの
画像のIDの最後のものになるのですが、
なぜ、次はあって前が無いのかと…

そこで色々と調べていくと、
確かにInstagramのPCサイトは、ページロールによる
次へというものしかなく、前に戻るという概念が無いのです。

それなら仕方ないと、前のページのIDをセッションにもって
出来るだろうなぁと甘く考えていましたら…

InstagramAPIに投げる際には、
max_idやmin_idというものがあるのですが、

max_id:投げたIDより過去のものを取得する
min_id:投げたIDより未来のものを取得する

という役割になっています。

このmin_idが曲者です。
未来は未来でも、投げたIDの近くから未来ではなく、
投げたIDより未来で、かつ、一番新しいものからソートする
という考えのようです。

これだと、通常のページネーションに使う
「前へ」「次へ」
というものが簡単ではなくなります。

なので、私のところも、前への概念はなくそうと…

Pocket