私は Real-time Photo Updates APIを使用して、特定のタグが付けられたすべての写真を取得しようとしています。このAPIからの更新は、実際にはthat新しいコンテンツが存在します(ただし、whatは存在しません)、いつでもタグで最近のメディアを照会しています何かが変更されたという通知を受け取ります。
私が抱えている問題は、そのクエリによって常に重複したメディアが返されることです。ドキュメントには、このAPIがページネーションを行うと書かれていますが、まったく機能しません。
ドキュメント here は、クエリ文字列でmin_id
およびmax_id
を使用して改ページ調整を制御することを述べていますが、次のように述べています。
MIN_ID-このmin_idの前のメディアを返します。
MAX_ID-このmax_idの後にメディアを返します。
これは逆のように見えます(通常、minは最小値より上の項目を返し、maxは最大値より下の項目を返すため、両方を指定すると範囲が制限されます)。
クエリから返される実際のJSONには、次のようなページネーションオブジェクトが含まれています。
"pagination": {
"next_max_tag_id": "1387272337517",
"deprecation_warning": "next_max_id and min_id are deprecated for this endpoint; use min_tag_id and max_tag_id instead",
"next_max_id": "1387272337517",
"next_min_id": "1387272345517",
"min_tag_id": "1387272345517",
"next_url": "https://api.instagram.com/v1/tags/cats/media/recent?access_token=xxx&max_tag_id=1387272337517"
}
next_url
プロパティで指定されているパラメータはmax_tag_id
であり、ドキュメントにあるようなmax_id
ではありません。
next_max_id
とmin_id
が非推奨であることを示す非推奨の警告もありますが、そのような名前のページネーションオブジェクトにはプロパティがあるため、クエリパラメータとオブジェクトプロパティのどちらが非推奨であるかがわかりません。
クエリ文字列がnext_max_id
のパラメーターを使用したことがないため、これはプロパティを意味すると思いますが、非推奨メッセージでは、min_tag_id
とmax_tag_id
を使用するように指示され、ページネーションオブジェクトにmax_tag_id
プロパティがありません(next_max_tag_id
のみ)。
この矛盾するドキュメントのすべてに関係なく、クエリ文字列で何を渡しても問題はないようです。後続のクエリで繰り返しメディアを取得し続けます。誰かがこのAPIを理解するのを手伝ってくれる?私が本当に望んでいるのは、最後のクエリ以降に新しいタグ付きメディアを取得することだけです。
特定のタグの最新のグラムのセットを取得するには、これを使用します。
https://api.instagram.com/v1/tags/latergram/media/recent?access_token=TOKEN
その応答から、(ページネーションの下で)応答からmin_tag_id
を取得して次のようなURLを作成することにより、同じタグから新しいグラムを取得できます。
https://api.instagram.com/v1/tags/latergram/media/recent?access_token=TOKEN&min_tag_id=1387332980547
または、次のような(元の応答からの)元の応答のnext_urlパラメータを使用して、次の(古い)グラムのセットを取得できます。
https://api.instagram.com/v1/tags/latergram/media/recent?access_token=TOKEN&max_tag_id=1387332905573
後続のクエリ(特定のタグの新しいグラム)が、最新の応答によって返されたmin_tag_id
を使用していることを確認してください。いくつかのテストを行ったところ、重複は見られませんでしたが、#latergramを使用しており、その投稿には大量の投稿があります
@zachalliaはスポットに答えましたが、スケッチで傷つけないと思います:
Instagram APIによると :MIN_TAG_ID Return media before this min_tag_id. MAX_TAG_ID Return media after this max_tag_id.
これは直感に反し、少しナッツのような風味です。しかし、それでも、それを理解することは可能です。
/tags/MYTAG/media/recent
エンドポイントは、MYTAGでタグ付けされた場所を新しい順に並べたグラムを提供します。もちろん、Instagramが設定した上限までは、すべてのグラムを取得することはできません。
|yesteryear ------------------ <---- LIMIT ----> now|
min_tag_id
を/tags/MYTAG/media/recent?min_tag_id=X
のように使用すると、X以前のグラムが取得されます(別名:古い)。
|yesteryear ------- <---- LIMIT ---> min ------- now|
max_tag_id
を/tags/MYTAG/media/recent?max_tag_id=Y
のように使用すると、Y以降のグラムが得られます(別名:新しい)。
|yesteryear ------- max <---- LIMIT ---> ------- now|
このようにして、「最大」は「新しい」を意味し、「最小」は「古い」を意味します。