[PYTHON] J'ai créé un robot Twitter qui marmonne le Pokémon capturé par #PokemonGO

préface

Pokemon GO est enfin lancé au Japon: tada:

Étranger [Ingénierie inverse] pokemongo-android-re, [Pétrir l'API interne] pokemongo-map, Semble jouer

Peut-être à cause de cela, GitHub dispose d'un référentiel lié à Pokemon GO.

... je n'ai pas d'autre choix que de jouer avec!

Bien ** Faisons un robot Twitter qui marmonne Pokemon attrapé par Pokemon GO: exclamation :: exclamation: **

Je l'ai fait avec mes pensées

** Veuillez essayer à vos risques et périls **

3846masa/Tweet-PokemonGO-Journal

Je mettrai le code que j'ai écrit sur GitHub

https://github.com/3846masa/Tweet-PokemonGO-Journal

Quand tu le bouges, ça ressemble à ça

https://twitter.com/EBAGmasa_pokego

tejado/pgoapi

Il y avait diverses choses semblables à des bibliothèques qui pouvaient atteindre l'API, D'une manière ou d'une autre, j'ai choisi [tejado / pgoapi]

Même Dockerfile est préparé, vous pouvez donc jouer facilement

politique

Lorsque vous attrapez un Pokémon, il sera enregistré dans le Bouken Note (nom anglais: Journal). En d'autres termes, il semble que vous n'ayez besoin que des données de ** Boken Note **

Note de Boken

Malheureusement, il n'y avait pas d'exemple de journal dans tejado / pgoapi

Lorsque j'ai recherché une fonction, je l'ai trouvée dans [pgoapi.py # L107-L127].

def __getattr__(self, func):
    def function(**kwargs):
    
        if not self._req_method_list:
            self.log.info('Create new request...')
    
        name = func.upper()
        if kwargs:
            self._req_method_list.append( { RequestType.Value(name): kwargs } )
            self.log.info("Adding '%s' to RPC request including arguments", name)
            self.log.debug("Arguments of '%s': \n\r%s", name, kwargs)
        else:
            self._req_method_list.append( RequestType.Value(name) )
            self.log.info("Adding '%s' to RPC request", name)

        return self

    if func.upper() in RequestType.keys():
        return function
    else:
        raise AttributeError

Si vous suivez `` RequestType.Value '', Vous atteindrez [AeonLucid / POGOProtos --RequestType.proto]

La communication Pokemon GO semble utiliser Protocol Buffers

Capturons un paquet pour voir quel type de données circule réellement

Capture de paquets

Pour la capture de paquets Android, je me suis référé à [here] android-packet

Quand je l'ai capturé, ça ressemblait à ça

Si vous le regardez d'une manière ou d'une autre, vous serez intéressé par le nombre `` 801 ''.

Si vous recherchez par [AeonLucid / POGOProtos --RequestType.proto], Cela semble être `` SFIDA_ACTION_LOG ''

Si vous le comparez avec le code de tejado / pgoapi, Je pense que je peux obtenir quelque chose avec ʻapi.sfida_action_log () `

(Au fait, POGOProtos dans tejado / pgoapi pour le moment est vieux, alors remplaçons-le.)

api.sfida_action_log()

Le résultat de l'exécution ressemble à ceci

{
  'api_url': ...,
  'auth_ticket': { ... },
  'request_id': ...,
  'responses': {
    'SFIDA_ACTION_LOG': {
      'log_entries': [{
        'catch_pokemon': {
          'combat_points': 156,
          'pokemon_id': 114,
          'result': 1
        },
        'timestamp_ms': 1469169999498
      }, {
        'fort_search': {
          'items': [{
            'count': 3,
            'item_id': 1
          }],
          'result': 1
        },
        'timestamp_ms': 1469233607913
      }],
      'result': 1
    }
  },
  'status_code': 2
}

Fort_search '' est probablement l'information d'arrêt de poche, catch_pokemon`` est probablement l'information capturée sur Pokemon

Tout ce que vous avez à faire est de créer un bot Twitter avec Zackri: muscle:

en conclusion

Ces API privées ont une forte impression de falsification du jeu, Je sens que je peux faire quelque chose d'intéressant dans le domaine de l'exploitation forestière.

Bien sûr, ** Ne mettez pas de charge sur le serveur: no_entry_sign: Mais ** N'est-il pas préférable de jouer avec?

Recommended Posts

J'ai créé un robot Twitter qui marmonne le Pokémon capturé par #PokemonGO
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
J'ai fait un robot discord
J'ai fait un wikipedia gacha bot
J'ai créé un bot Twitter avec Go x Qiita API x Lambda
J'ai fait un bot mou qui m'informe de la température
J'ai créé un bot de lecture de chat Discord en imitant l'apparence
Créez un bot qui stimule les tendances Twitter
J'ai créé un bot Discord en Python qui se traduit quand il réagit
J'ai créé un robot pour publier sur Twitter en grattant sur le Web un site dynamique avec AWS Lambda (suite)
J'ai fait un robot de remplacement de tampon avec une ligne
J'ai essayé de créer un bloqueur de filles pourries sur Twitter avec Python ①
J'ai créé un Bot LINE avec Serverless Framework!
Made Mattermost Bot avec Python (+ Flask)
J'ai créé un LINE BOT qui renvoie une image de riz terroriste en utilisant l'API Flickr
Un mémo sur lequel je suis tombé par hasard en faisant une citation RT sur Twitter Bot
J'ai créé un Line Bot qui utilise Python pour récupérer les e-mails non lus de Gmail!
J'ai créé un robot LINE qui envoie des images recommandées tous les jours à l'heure
[Python] J'ai créé un LINE Bot qui détecte les visages et effectue le traitement de la mosaïque.
[Discode Bot] J'ai essayé de créer un Bot qui me dit la valeur de race de Pokemon
En Python, j'ai créé un LINE Bot qui envoie des informations sur le pollen à partir des informations de localisation.
J'ai créé une application Twitter qui décrypte les caractères de pré-connexion avec heroku (échec)
[AWS] J'ai créé un BOT de rappel avec LINE WORKS
J'ai essayé de faire LINE BOT avec Python et Heroku
J'ai créé un système qui vous permet de tweeter simplement en passant un appel téléphonique
Une histoire qui a trébuché lorsque j'ai créé un bot de chat avec Transformer
J'ai fait une putain d'application qui ne te laisse pas sauter
J'ai fait une minuterie pomodoro dure qui fonctionne avec CUI
Quand j'ai créé un Discord Bot, mes camarades de classe ont détruit mon ordinateur
J'ai créé un plug-in qui peut faire "Daruma-san tombé" avec Minecraft
J'ai fait un générateur de réseau neuronal qui fonctionne sur FPGA
[AWS] J'ai créé un BOT de rappel avec LINE WORKS (implémentation)
J'ai fait un texte Python
J'ai créé un robot Line qui devine le sexe et l'âge d'une personne à partir de l'image
J'ai créé une caméra réseau simple en combinant ESP32-CAM et RTSP.
J'ai créé un programme qui résout la recherche d'erreur en quelques secondes
J'ai fait un shuffle qui peut être réinitialisé (inversé) avec Python
J'ai fait une commande lo qui est plus utile que ls
J'ai créé un bot LINE qui me dit le type et la force de Pokémon dans la région de Garal avec Heroku + Flask + PostgreSQL (Heroku Postgres)
J'ai fait un programme qui calcule automatiquement le zodiaque avec tkinter
[python] J'ai créé une classe qui peut écrire rapidement une arborescence de fichiers
Depuis que j'ai commencé à travailler à des moments différents, j'ai créé un Bot qui me dit l'heure de quitter le travail
[Python] J'ai créé un robot qui me dit la température actuelle lorsque j'entre un nom de lieu sur LINE
J'ai créé un site d'apprentissage C ++
J'ai fait un Line-bot avec Python!
J'ai créé un script de traduction basé sur CUI (2)
J'ai fait une loterie avec Python.
J'ai créé un démon avec Python
J'ai fait un calendrier qui met à jour automatiquement le calendrier de distribution de Vtuber
[Python] J'ai fait un décorateur qui ne semble pas avoir d'utilité.
J'ai créé une application Web en Python qui convertit Markdown en HTML
[Python] J'ai créé un bot Twitter qui génère des tweets semblables à des amis avec des règles de chaîne de Markov.
J'ai créé un plug-in "EZPrinter" qui génère facilement des PDF cartographiques avec QGIS.
[Python] J'ai créé un utilitaire qui peut accéder au type dict comme un chemin
J'ai créé un programme pour vous avertir par LINE lorsque les commutateurs arrivent
J'ai créé une extension Chrome qui affiche un graphique sur la page Amedas
J'ai fait une simple minuterie qui peut être démarrée depuis le terminal