web-dev-qa-db-fra.com

Instagram? __ a = 1 & max_id = <end_cursor> ne fonctionne pas pour les flux d'utilisateurs publics

J'utilise l'API non documentée d'Instagram https://www.instagram.com/<user>/?__a=1 pour obtenir un flux utilisateur public.

J'ai également pu obtenir plusieurs pages via leur max_id paramètre de requête comme ceci: 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

(oui, "has_next_page" est vrai)

Ils ont récemment modifié leur format JSON et je pense qu'ils ont peut-être cassé d'autres fonctionnalités.

Le "end_cursor" est toujours là mais quand je l'utilise je récupère juste les mêmes messages Instagram comme si je ne l'utilisais pas.

Juste pour m'assurer que je suis clair, mon problème est que le max_id=<end_cursor> ne semble plus fonctionner pour un flux utilisateur public. Je peux toujours obtenir les 12 premiers messages, mais pas plus après cela.

Quelqu'un d'autre voit ce problème?

voici un exemple JSFiddle de ce que je veux dire: https://jsfiddle.net/LLsg91ja/33/

8
Francisc0

14-04-2018 - PLUS DE TRAVAIL - INSTAGRAMME A DÉPRÉCIÉ LE '? __ a = 1' & '? Query_id = 17888483320059182' - CE PLUS DE TRAVAUX!

Jetez un oeil à ceci pour la pagination des médias:

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

Cela renvoie:

['données'] ['utilisateur'] ['Edge_owner_to_timeline_media'] ['page_info'] ['end_cursor']

Et les médias:

['données'] ['utilisateur'] ['Edge_owner_to_timeline_media'] ['bords']

le 'query_id' est maintenant statique donc utilisez simplement: 17888483320059182

'id' est "l'identifiant utilisateur instagram", vous devez donc utiliser ?__a=1 pour récupérer ['graphql'] ['utilisateur'] ['id']

"premier" est le nombre de photos que vous souhaitez renvoyer. Utilisez simplement 12 pour garder le même retour de support.

'après' est le nouveau 'max_id' à utiliser ['data'] ['user'] ['Edge_owner_to_timeline_media'] ['page_info'] ['end_cursor']

Je testerai plus et répondrai plus tard.

Répondre plus tard:

On pense que la "pagination" utilise ?__a=1 est obsolète. Si vrai, aucune réponse ne peut résoudre la question directe de l'op en utilisant ?__a=1 pour la pagination Instagram.

Mais le code fourni dans cette réponse fournira la pagination des médias Instagram qui fournissent les résultats recherchés par l'op.

La réponse incorpore le 'instagram graphql api' qui est l'api actuel (et non le json ?__a=1 hack) donc cette réponse devrait apporter une certaine stabilité pour l'instant.

Tel qu'utilisé sur mon site en direct:

Prenez le id=<instagram_user_id> avant la demande des médias Instagram:

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