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.
Les spécifications finales du BOT créé cette fois sont les suivantes.
Marmonner une nouvelle entrée pour Google Alert tous les 30m (* 1) (9: 00 ~ 23: 59)
Murmure suivez-moi (18h30)
Suivez en arrière tous les 30m (* 1) (6: 00 ~ 23: 59)
Si vous ne suivez que toutes les 1h, supprimez (0: 00 ~ 5: 59)
1 GAE a une durée d'instance et ne prend pas de temps uniquement pendant la période de traitement de la demande. Il sera inactif afin de pouvoir répondre immédiatement après la fin de la demande, mais il prend également du temps pendant ce temps. Par conséquent, nous essayons de ne pas perdre le temps d'inactivité en marmonnant et en répétant en même temps.
Créez de nouvelles actualités à partir des Alertes Google. À ce stade, définissez la destination de livraison sur ** Flux **.
J'utilise l'environnement suivant pour le développement local.
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.
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.
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.
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()
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])
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
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.
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