Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python

Nous créons et exploitons Twitter BOT sur la plate-forme de Google App Engine (GAE) qui peut être utilisé gratuitement pour étudier Python. BOT utilise les alertes Google pour murmurer régulièrement des nouvelles en direct. Compte: @ll_news_bot Source: GitHub

Notez la procédure de fonctionnement de BOT avec le SDK GAE pour Python.

Spécifications du BOT

Les spécifications finales du BOT créé cette fois sont les suivantes.

Préparation préalable

Alerte Google

Créez de nouvelles actualités à partir des Alertes Google. À ce stade, définissez la destination de livraison sur ** Flux **.

environnement

J'utilise l'environnement suivant pour le développement local.

Twitter

GoogleAppEngine Créez une nouvelle application pour BOT à partir de appengine.google.com. L '* Application Identifier * saisi à ce moment sera utilisé comme * Application ID * lors de la création d'une nouvelle application avec le lanceur GAEL.

Module externe

Nous avons utilisé les modules tiers suivants pour le développement du BOT. Il existe deux types de modules: le wrapper Python de l'API Twitter et l'analyseur de flux RSS.

Étant donné que le module ci-dessus doit être déployé sur GAE avec l'application Web, Après avoir installé ou construit le module, j'ai dû le copier dans le projet.

Implémentation BOT

Les fonctions du BOT créé sont en grande partie "Marmonner à partir du flux RSS" et "Fonctionnement de l'API Twitter", nous allons donc créer des modules pour chacun de ces processus.

module d'alimentation

Ce module utilise le module * feedparser * pour analyser les flux RSS et créer du contenu marmonnant. Nous vérifions régulièrement les nouvelles entrées, nous utilisons donc * DataStore * pour éviter les doublons.

class FeedFetcher(object):
    '''Classe d'analyse des flux RSS pour les alertes Google'''

  	def fetch_new_entries(self):
    '''Obtenez de nouvelles entrées à partir du flux RSS Google Alert.'''
	#réduction
	return new_entory

class Entry(object):
    '''Classe pour stocker les informations d'entrée analysées'''
    
 	def make_tweets(self):
	'''Créer du contenu marmonnant'''
	return #Marmonnant

#Comment utiliser
fetcher = FeedFetcher()
new_entries = fetcher. fetch_new_entries()
for entry in new_entries:
	print entry.make_tweet()

module de bot

Dans ce module, nous enveloppons le module python-twitter afin que vous puissiez facilement accéder à l'API requise. De plus, les informations d'authentification Twitter obtenues au moment de la préparation sont transmises à l'API python-twitter. Il s'agit de Reference, et lors de l'utilisation de python-twitter avec GAE, il n'est pas mis en cache. ..

class TwitterBot(object):
    '''Classes pour marmonner sur Twitter, refouler et désabonner les utilisateurs'''

	def tweet(self, message):
	'''Mumble le contenu cible sur Twitter'''
	#réduction

	def get_not_follow_users(self):
	'''Obtenez la liste des identifiants des utilisateurs non suivis'''
	return #Liste des ID utilisateur non suivis

	def refollow(self, not_follow_id):
	'''Suivez l'utilisateur cible'''
	#réduction

	# ...réduction

#Comment utiliser
bot = TwitterBot()
fetcher = FeedFetcher()
bot.tweet(fetcher. fetch_new_entries[0].make_tweet)
bot.refollow(bot. get_not_follow_users()[0])

Gestionnaire de demande

Tout d'abord, créez un fichier * app.yaml * pour le mappage d'URL. Si la connexion est admin, même si vous cliquez sur l'URL du navigateur, la demande ne sera pas envoyée à moins que vous n'authentifiiez votre compte. Dans le script, écrivez le nom d'objet * WSGIApplication * qui mappe le nom du module et l'URL.

application: ll-news-bot
version: 8
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  script: tweet.app
  login: admin

- url: /tweet
  script: tweet.app
  

Du côté python, créez une classe qui hérite de * RequestHandler * et écrivez le traitement du handle de la méthode get ou post. Je n'appelle pas l'API Twitter en grand nombre à la fois, mais j'utilise des files d'attente de tâches pour étudier. Lorsque la tâche est exécutée, une demande de méthode POST est envoyée à l'URL spécifiée.

tweet.py


class MainHandler(webapp2.RequestHandler):    
    def get(self):
		 taskqueue.add(queue_name='tweet', url='/tweet', params={'message': u'tester'})

class TweetHandler(webapp2.RequestHandler):    
    def post(self):
		#Traitement des tweets
		bot = TwitterBot()
		bot.tweet(self.request.get('message')

app = webapp2.WSGIApplication([('/', MainHandler), ('/tweet', TweetHandler)], true) 

Créez * queue.yaml * pour utiliser la file d'attente des tâches. Le site suivant a été très utile pour l'explication de la file d'attente des tâches.

app.yaml


queue:
- name: tweet
  rate: 1/s
  bucket_size: 1 
  retry_parameters:
    task_retry_limit: 0

Enfin, créez un fichier * cron.yaml * pour que ce processus s'exécute régulièrement. Utilisez * schedule * pour définir la fréquence d'exécution.

cron.yaml


cron:
- description: tweet task
  url: /
  schedule: every 30 minutes from 9:00 to 23:59
  timezone: Asia/Tokyo

Exécution locale

Utilisez l'application GAELaucher pour vérifier le fonctionnement de l'application dans votre environnement local. Vous pouvez le créer à partir de l'application Launcher. À ce moment-là, utilisez l '* Application Identifier * de l'application créée à l'avance pour l'ID d'application.

Vous devez exécuter * Make Symlink * à partir du menu avant de démarrer. De plus, si le numéro de port utilisé par GAE est utilisé par une autre application, vous devez modifier l'un ou l'autre des numéros de port.

Déployer

Enfin, utilisez GAE Launcher pour déployer l'application sur les serveurs de Google. À ce moment-là, il vous sera demandé de saisir un compte, alors saisissez le compte Google correspondant à l'application créée au préalable.

Je vois parfois * Vérifier si le déploiement a réussi. * Sans cesse pendant le déploiement, ce qui semble être un problème côté serveur. Enfin, il vous sera demandé de mettre à niveau et de redéployer ou de revenir en arrière, donc cette fois j'ai mis à niveau et redéployé et cela a fonctionné.    Ce qui précède est le flux du développement de Twitter BOT à son fonctionnement.

Recommended Posts

Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Créer un LINE BOT avec Minette pour Python
Étapes pour créer un bot Twitter avec Python
Faisons un bot Twitter avec Python!
Créez un sélecteur de couleurs pour la roue chromatique avec Python + Qt (PySide)
Créer un bot Twitter Trend avec heroku + Python
Créer un répertoire avec python
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
Créer une couche pour AWS Lambda Python dans Docker
Une note sur l'utilisation de l'API Facebook avec le SDK Python
Créez un bot Mastodon avec une fonction pour répondre automatiquement avec Python
Probablement le moyen le plus simple de créer un pdf avec Python 3
Essayez une recherche similaire de recherche d'images à l'aide du SDK Python [Recherche]
Créez un robot de réponse automatique en temps réel à l'aide de l'API Twitter Streaming
[Python] Créer un écran pour le code d'état HTTP 403/404/500 avec Django
J'ai écrit un script pour créer rapidement un environnement de développement pour Twitter Bot avec AWS Lambda + Python 2.7
Créer un environnement d'exécution Windows Python avec VScode + Remote WSL
Créez une illusion rayée avec correction gamma pour Python3 et openCV3
L'histoire de la création d'un pilote standard pour db avec python.
[LINE Messaging API] Créez un BOT qui se connecte à quelqu'un avec Python
Créer un Ubuntu de démarrage USB avec un environnement Python pour l'analyse des données
Créez un programme de jugement de compatibilité avec le module aléatoire de python.
Tweet la météo avec bot
Créer un décorateur de fonction Python avec Class
Créez une image factice avec Python + PIL.
Créons un environnement virtuel pour Python
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Rechercher le labyrinthe avec l'algorithme python A *
Travailler avec OpenStack à l'aide du SDK Python
[Python] [LINE Bot] Créer un robot LINE de retour de perroquet
Créer un compteur de fréquence de mots avec Python 3.4
Créez un bot qui stimule les tendances Twitter
Créez un service Twitter BOT avec GAE / P + Tweepy + RIOT API! (Partie 1)
L'histoire de la création d'un robot LINE pour le petit-déjeuner d'une université de 100 yens avec Python
[Introduction à Udemy Python3 + Application] 47. Traitez le dictionnaire avec une instruction for
Créer un enregistrement avec des pièces jointes dans KINTONE à l'aide du module de requêtes Python
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
[Python] Récupérez les fichiers dans le dossier avec Python
Tweet les prévisions météo avec le bot Partie 2
Création d'un wrapper Python pour l'API Qiita
Obtenez un billet pour un parc à thème avec python
J'ai essayé de créer un bloqueur de filles pourries sur Twitter avec Python ①
Utilisez Logger avec Python pour le moment
Procédure de création d'un LineBot réalisé avec Python
Créer un environnement virtuel avec conda avec Python
Créer une page qui se charge indéfiniment avec python
[Note] Créez une classe de fuseau horaire sur une ligne avec python
Vous pouvez facilement créer une interface graphique même avec Python
Créer un environnement de construction python3 avec Sublime Text3
Créez un tableau de bord pour les appareils réseau avec Django!
Python: préparez un sérialiseur pour l'instance de classe:
Créer une barre de couleurs avec Python + Qt (PySide)
Commandes pour créer un environnement python3 avec virtualenv
Créer un arbre de décision à partir de 0 avec Python (1. Présentation)
Créer une nouvelle page en confluence avec Python
Créer un widget avec une couleur spécifiée avec Python + Qt (PySide)