web-dev-qa-db-fra.com

Existe-t-il un moyen de récupérer une liste des électeurs du sondage à partir des histoires Instagram?

Je sais qu'il y a un point de terminaison ici pour récupérer une liste d'identifiants d'histoire, mais je me demandais s'il était possible d'obtenir une liste des utilisateurs qui ont voté sur un sondage d'histoire spécifique?

Il semble y avoir très peu de données sur les histoires (même lorsque vous exportez des données de compte personnel) et ce serait génial si cela était accessible via l'API.

Je ne veux pas non plus faire de mon compte un compte professionnel.

Les réponses ne doivent pas être limitées à l'utilisation de l'API, j'ai manuellement filtré la liste et joint les captures d'écran et utilisé la reconnaissance de texte pour obtenir les poignées, donc toute solution sophistiquée plus rapide que la saisie de données est la bienvenue.

Merci d'avance!

9
Samir Chahine

Pour être honnête, je ne connais pas l'API Instagram,

J'ai essayé de trouver la demande AJAX sur mon histoire, et j'ai découvert que c'était comme suit:

https://www.instagram.com/graphql/query/?query_hash= <_QUERY_HASH_> & variables =% 7B% 22reel_ids% 22% 3A% 5B% 22 <_USER_ID_>% 22% 5D% 2C % 22tag_names% 22% 3A% 5B% 5D% 2C% 22location_ids% 22% 3A% 5B% 5D% 2C% 22highlight_reel_ids% 22% 3A% 5B% 5D% 2C% 22precomposed_overlay% 22% 3Afalse% 2C% 22show_story_viewer_viewer % 2C% 22story_viewer_fetch_count% 22% 3A50% 2C% 22story_viewer_cursor% 22% 3A% 22% 22% 7D

'variables' n'est qu'un encodage URL de:

{"reel_ids": ["<_USER_ID_>"], "tag_names": [], "location_ids": [], "highlight_reel_ids": [], "precomposed_overlay": false, "show_story_viewer_list": true, "story_viewer_fetch_count": 50, "story_viewer_cursor": ""}

Remarque, vous devez remplacer <_USER_ID_> par votre ID utilisateur, et pour moi <_QUERY_HASH_> était une chaîne constante,

Ensuite, la réponse JSON peut être analysée à l'aide d'un petit programme Python:

import json

def parse_instagram_json(json_as_str):
    data = json.loads(json_as_str)
    if ("data" not in data) or ("reels_media" not in data["data"]):
        print "Invalid JSON"
        return
    for media in data["data"]["reels_media"]:
        for media_item in media["items"]:
            print "You have {} views".format(media_item["Edge_story_media_viewers"]["count"])
            viewer = []
            for v in media_item["Edge_story_media_viewers"]["edges"]:
                viewer.append("{} ({})".format(v["node"]["username"], v["node"]["id"]))
            if 0 < len(viewer):
                print ", ".join(viewer)

Je ne sais pas si je reçois la liste des téléspectateurs ou la liste des électeurs,

Les champs JSON suggèrent que c'est le premier mais vous pouvez l'essayer et peut-être que ce sera ce que vous cherchiez ...

1
Yogev Neumann