こんにちわ。
先日、
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より未来で、かつ、一番新しいものからソートする」
という考えのようです。
これだと、通常のページネーションに使う
「前へ」「次へ」
というものが簡単ではなくなります。
なので、私のところも、前への概念はなくそうと…