こんにちわ。
先日、
Instagramの画像を部分一括ダウンロードするWEBアプリ
というものを公開してますが、
この中でページネーションに関してちょっとハマッタので備忘録。
InstagramAPIに投げるとjsonで戻ってくるのですが、
この中で、Instagramではやさしいのかやさしくないのか、
Pagenation用の項目も用意されています。
たとえば、こんな感じ。
1 2 3 4 5 6 | [ "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より未来で、かつ、一番新しいものからソートする」
という考えのようです。
これだと、通常のページネーションに使う
「前へ」「次へ」
というものが簡単ではなくなります。
なので、私のところも、前への概念はなくそうと…