web-dev-qa-db-ja.com

Instagram?__ a = 1&max_id = <end_cursor>はパブリックユーザーフィードでは機能しません

Instagramの文書化されていないAPIを使用していますhttps://www.instagram.com/<user>/?__a=1パブリックユーザーフィードを取得します。

また、max_id次のようなクエリパラメータ:https://www.instagram.com/<user>/?__a=1&max_id=<end_cursor>

end_cursor = json_response.graphql.user.Edge_owner_to_timeline_media.page_info.end_cursor

(はい、「has_next_page」はtrueです)

彼らは最近JSON形式を変更しましたが、他の機能が壊れている可能性があると思います。

「end_cursor」はまだありますが、使用すると、使用していないかのように同じInstagramの投稿が返されます。

明確にするために、私の問題はmax_id=<end_cursor>は、パブリックユーザーフィードではもう機能しないようです。まだ最初の12件の投稿を取得できますが、それ以降は取得できません。

この問題を見ている人はいますか?

ここに私が意味することのJSFiddleの例があります: https://jsfiddle.net/LLsg91ja/33/

8
Francisc0

04-14-2018-廃止-INSTAGRAMは「?__ a = 1」と「?query_id = 17888483320059182」を廃止-これはもう機能しません!

メディアのページネーションについては、これを見てください。

https://instagram.com/graphql/query/?query_id=17888483320059182&id=<user_id>&first=12&after=<end_cursor>

これは返します:

['data'] ['user'] ['Edge_owner_to_timeline_media'] ['page_info'] ['end_cursor']

およびメディア:

['data'] ['user'] ['Edge_owner_to_timeline_media'] ['edges']

「query_id」は現在静的なので、17888483320059182を使用します。

「id」は「instagramユーザーID」なので、?__a=1を使用して['graphql'] ['user'] ['id']を取得する必要があります

「最初」は、返される写真の数です。 12を使用して、メディアが同じものを返すようにします。

'after'は、使用するための新しい 'max_id'です['data'] ['user'] ['Edge_owner_to_timeline_media'] ['page_info'] ['end_cursor']

さらにテストし、後で対応します。

後で応答する:

?__a=1を使用した「ページネーション」は廃止されたと考えられています。 trueの場合、Instagramのページネーションに?__a=1を使用してopの直接の質問を解決できる答えはありません。

しかし、この回答で提供されるコードは、インスタグラムのメディアのページネーションを提供し、それは、オペが求めていた結果を提供します。

回答には、現在のAPI(json ?__a=1ハックではなく)である 'instagram graphql api'が組み込まれているため、この回答は今のところある程度の安定性を提供するはずです。

私のライブサイトで使用されているように:

Instagramメディアリクエストの前にid=<instagram_user_id>を取得します。

profile = https://www.instagram.com/<instagram_username>/?__a=1

media = https://instagram.com/graphql/query/?query_id=17888483320059182&id=<profile['graphql']['user']['id']>&first=12&after=<end_cursor>

14
Mark