2013-12-17 4 views
23

このAPIからの更新は本当に唯一の(しかしないそれが何であるか)新しいコンテンツが存在していることをあなたにを言うので、私は、彼らが来るように、特定のタグを持つすべての画像を取得するためにReal-time Photo Updates APIを使用しようとしています何かが変更されたという通知を受けるたびに、最近のメディアをタグで照会しています。InstagramのGET /タグ/ <tag>/media /最近のページネーションは実際に動作しますか?

私が抱えている問題は、常にそのクエリによって返された重複メディアを取得していることです。ドキュメンテーションによると、このAPIはページネーションを行いますが、私はそれをまったく動作させることはできません。

ドキュメントhereは、改ページを制御するためのクエリ文字列にmin_idmax_idを使用することを言います、しかし、それは言う:

  • MIN_ID - このmin_id前にメディアを返します。

  • MAX_ID - このmax_idの後のメディアを返します。

これは、(通常、minは最小値以上のアイテムを返す必要があり、両方を指定するときは、有界範囲を得るように、最大​​が最大以下の項目を返す必要があります)後方ようです。

私は戻って私のクエリから取得する実際の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_idmin_idが推奨されていませんが、名前が付けられたページネーションオブジェクトにプロパティがあるため、クエリパラメータまたはオブジェクトプロパティのいずれかが使用されているかどうかわかりません非推奨..

私は、クエリ文字列がnext_max_idのパラメータを使用することはありませんが、その後、非推奨のメッセージがmin_tag_idmax_tag_idを使用するように言うと、ページネーションオブジェクトにはmax_tag_idプロパティが(ちょうどありませんので、それは、プロパティの意味と思うだろうnext_max_tag_id)。

この矛盾するドキュメントのすべてにかかわらず、私がクエリ文字列に渡すものは問題ではないようです。後続のクエリで繰り返しメディアを取得し続けます。誰かが私にこのAPIを理解させるのに役立つことができますか?私が本当に欲しいのは、最後の質問以来、新しいタグ付きメディアを入手することだけです。

答えて

22

この使い、特定のタグのためのグラムの最新のセットを取得するには:その応答から

https://api.instagram.com/v1/tags/latergram/media/recent?access_token=TOKEN 

を、あなたは(改ページの下)応答からmin_tag_idを取ることによって、同じタグから新しいグラムを得ることができます

https://api.instagram.com/v1/tags/latergram/media/recent?access_token=TOKEN&min_tag_id=1387332980547 

それとも、のように見える元の応答(また、改ページの下)、からnext_urlパラメータを使用することによりグラムの次の(古い)のセットを取得することができます::とそうのようなURLを構築

https://api.instagram.com/v1/tags/latergram/media/recent?access_token=TOKEN&max_tag_id=1387332905573 

最新の応答で返されたmin_tag_idを使用していることを確認してください(特定のタグの新しいグラムについて)。私はいくつかのテストを行い、重複は見られませんでしたが、#latergramを使っていましたが、投稿に大量の投稿がありました。

+0

#latergramに切り替えると、私の問題がわかりました。 #selfie(消防ホースのようなもの)を使用していたので、同じmin_idで複数のリクエストを発行していることがはっきりとわかりませんでした。 –

+1

私が発行した最後の 'GET'コマンドからの応答を待っている間に、Instagramから' POST'が来ていました。 'GET'が返るまで' min_id'を更新できないので、それらの 'POST'の全てが重複した' GET'要求を引き起こしていました。 –

+1

@zachallia非常に大量のタグを更新するという問題をどうやって解決しますか?私は同様の問題に直面しています。私はタグ付けされた写真を見逃したくありませんが、戻ってくる「GET」リクエストを待つことは、同じmin-idを複数回使用することを意味します。 – Startec

7

@zachalliaが回答しましたが、スケッチで傷つけることはできません。 Instagram API saysとして

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| 

あなたはXからグラムを取得し、(古い別名)前よそう/tags/MYTAG/media/recent?min_tag_id=Xようmin_tag_idを使用する場合:

|yesteryear ------- <---- LIMIT ---> min ------- now| 

あなたがそう/tags/MYTAG/media/recent?max_tag_id=Yようmax_tag_idを使用する場合は、Yからグラムを取得し、(別名以降)の後でしょう:

|yesteryear ------- max <---- LIMIT ---> ------- now| 

「最大」は「新しい」を意味する取得する方法だと、 "min"は "older"を意味します。

+0

こんにちは。 'min_tag_id'と' max_tag_id'をどうすればいいですか?リクエストにどのような価値がありますか?私はそれらに '23423423'のようなランダムな値を与えようとしましたが、' min_idはメディアidであってはいけません。 ' – Ionut

+0

@Ionut min/max_tag_idは、実際のメディアID(Instagramの既存のメディア投稿のID)でなければなりません。だから、実際のメディアIDであれば、 '23423423'を使うことができます。 – thomax

関連する問題