Ceci est le premier message.
Cela fait deux mois que j'ai rencontré python. Il était tard pour se rencontrer. Et je suis un débutant en programmation, donc je suis faible! Code. S'il vous plaît, pardonnez-moi. Je l'ai fait parce que je voulais faire une prédiction avant l'annonce officielle, comme les informations de retard de chaque ligne de chemin de fer. Juste auto-satisfaction!
L'environnement utilise la série python 2.
Si vous n'activez pas d'abord les tweets avec python, rien ne démarrera. Veuillez définir depuis Application Twitter et obtenir la clé.
#Réglez la clé
CONSUMER_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXX"
CONSUMER_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_TOKEN_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
#Créer une instance d'API
api = tweepy.API(auth)
C'est la préparation.
Vous devez d'abord obtenir le tweet. J'ai évoqué d'autres articles.
Un programme fragmenté qui récupère les tweets et les génère dans un fichier. Il n'est pas nécessaire de générer une sortie dans un fichier, mais je voulais juste faire une entrée / sortie de fichier. Essayez, sauf pour qu'il n'y ait pas d'erreur lorsque les caractères sont déformés. C'est comme un débutant.
for tweet in api.search(q=query, count=100):
try:
f.write(tweet.text.encode("utf-8"))
f.write("\n")
except:
pass
Je vous laisse entrer ce qui a été produit ici.
#Codecs ouverts pour éviter les fichiers déformés
f_in = codecs.open('XXXXXXX.txt','r','utf-8')
lines = f_in.readlines()
keywords =[u'retard', u'retard']
query = ' OR '.join(keywords)
Obtenez des tweets de choses qui ont été capturées dans la recherche OU pour «retard» et «retard» comme mots clés.
J'aimerais un tweet comme celui-ci si possible.
** Quelle? De plus, Tato est en retard, mais w delay est la valeur par défaut w **
** D'une manière ou d'une autre, le retard de Toyoko est en quelque sorte **
C'est un tweet merveilleusement inutile et bon. De tels tweets n'élimineront pas le retard, mais ils peuvent être utilisés pour obtenir des informations.
Dans mon cas, Tokyu est réputé pour ses retards, je vais donc enquêter. Nous avons également créé un dictionnaire pour chaque itinéraire, y compris les itinéraires qui fonctionnent directement les uns par rapport aux autres.
train = {
u"Tato" : { "count" : 0 , "flag" : 0},
u"Toyoko" : { "count" : 0 , "flag" : 0},
u"Oi" : { "count" : 0 , "flag" : 0},
u"Meguro" : { "count" : 0 , "flag" : 0},
u"Hanzomon" : { "count" : 0 , "flag" : 0},
u"Tobu Sky Tree" : { "count" : 0 , "flag" : 0},
u"Sous-centre" : { "count" : 0 , "flag" : 0},
u"Tojo" : { "count" : 0 , "flag" : 0},
u"Seibu Ikebukuro" : { "count" : 0 , "flag" : 0},
u"Mita" : { "count" : 0 , "flag" : 0}
}
count est le nombre de hits de nom de route à partir de 100 tweets. Pour le drapeau, saisissez 1 lorsque vous tweetez. (= Pour éviter les tweets continus)
Comme tous ceux qui le comprennent, la ligne Nanboku, qui est directement connectée à la ligne Meguro, et le chemin de fer à grande vitesse Saitama ont disparu pour une raison quelconque. ~~ Je l'ai omis. Je pensais que je ne serais pas si tard.
Recherchez et prévoyez ces derniers.
J'ai créé une fonction de comptage et de tweet. count C'est une fonction qui compte le nombre de hits d'itinéraire à partir de tweets.
def count_tweet(lines, word):
count = 0
for line in lines:
if line.find(word) > -1:
count = count + 1
return count
lines est l'entrée du fichier.
train[u"Tato"]["count"] = count_tweet(lines, u"Tato")
Utilisez-le comme ça. tweet C'est une fonction de tweeter.
def tweet(count, word, flag):
if count > 10 and flag == 0:
api.update_status(status=str(now.hour)+u"Temps"+str(now.minute)+u"Obtenez des informations minutieuses"+word+u"Possibilité de retard")
flag = 1
else:
flag = 0
return flag
Dans cette fonction, on estime qu'il existe une possibilité de retard lorsque 11 comptes ou plus.
Si je tweet, je mets un drapeau pour que la prochaine fois que je me réfère à cette fonction, je passe toujours à else. Cela empêchera les tweets consécutifs. Je pense qu'il y a en fait une manière différente ...
train[u"Tato"]["flag"] = tweet(train[u"Tato"]["count"], u'Tato', train[u"Tato"]["flag"])
Utilisez-le comme ça.
L'affichage sera également affiché sur la console.
()
La Tobu Sky Tree Line est longue, j'ai donc choisi la ligne Isezaki. Les tweets seront créés sur la Tobu Sky Tree Line.
Ce sera comme ça.
Utilisez le mode veille dans la boucle while, arrêtez-vous pendant 300 secondes (= 5 minutes), puis retournez-le.
En mettant du temps dans le tweet, nous essayons d'empêcher le même tweet.
J'écrirai le code ici.
# -*- coding:utf-8 -*-
#!/usr/bin/env python
import tweepy
import codecs
import datetime
from time import sleep
#Définir diverses clés
CONSUMER_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXX"
CONSUMER_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_TOKEN_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
#Créer une instance d'API
api = tweepy.API(auth)
#Rechercher du contenu
keywords =[u'retard', u'retard']
query = ' OR '.join(keywords)
#Nombre de contenu de recherche
def count_tweet(lines, word):
count = 0
for line in lines:
if line.find(word) > -1:
count = count + 1
return count
#Jugement du Tweet
def tweet(count, word, flag):
if count > 5 and flag == 0:
api.update_status(status=str(now.hour)+u"Temps"+str(now.minute)+u"Obtenez des informations minutieuses"+word+u"Possibilité de retard")
flag = 1
else:
flag = 0
return flag
train = {
u"Tato" : { "count" : 0 , "flag" : 0},
u"Toyoko" : { "count" : 0 , "flag" : 0},
u"Oi" : { "count" : 0 , "flag" : 0},
u"Meguro" : { "count" : 0 , "flag" : 0},
u"Hanzomon" : { "count" : 0 , "flag" : 0},
u"Tobu Sky Tree" : { "count" : 0 , "flag" : 0},
u"Sous-centre" : { "count" : 0 , "flag" : 0},
u"Tojo" : { "count" : 0 , "flag" : 0},
u"Seibu Ikebukuro" : { "count" : 0 , "flag" : 0},
u"Mita" : { "count" : 0 , "flag" : 0}
}
while 1:
f = open('XXXXXX.txt','w')
print "--------------------------------------------------------------------------------"
#Obtenir l'heure actuelle
now = datetime.datetime.today()
#Affichage de l'heure actuelle
print(str(now.hour)+u'Temps'+str(now.minute)+u'Minutes'+str(now.second)+u'Obtenez une seconde information')
#Entrez 100 tweets sur la dernière recherche de requête
for tweet in api.search(q=query, count=100):
try:
f.write(tweet.text.encode("utf-8"))
f.write("\n")
except:
pass
f.close()
#Codecs ouverts pour éviter les fichiers déformés
f_in = codecs.open('XXXXXX.txt','r','utf-8')
#Obtenir ligne par ligne
lines = f_in.readlines()
train[u"Tato"]["count"] = count_tweet(lines, u"Tato")
train[u"Toyoko"]["count"] = count_tweet(lines, u"Toyoko")
train[u"Oi"]["count"] = count_tweet(lines, u"Oi")
train[u"Meguro"]["count"] = count_tweet(lines, u"Meguro")
train[u"Hanzomon"]["count"] = count_tweet(lines, u"Hanzomon")
train[u"Tobu Sky Tree"]["count"] = count_tweet(lines, u"Tobu Sky Tree")
train[u"Sous-centre"]["count"] = count_tweet(lines, u"Sous-centre")
train[u"Tojo"]["count"] = count_tweet(lines, u"Tojo")
train[u"Seibu Ikebukuro"]["count"] = count_tweet(lines, u"Seibu Ikebukuro")
train[u"Mita"]["count"] = count_tweet(lines, u"Mita")
print(u'Ligne ville rurale:'+ str(train[u"Tato"]["count"]) +' counts')
print(u'Ligne Toyoko:'+ str(train[u"Toyoko"]["count"]) +' counts')
print(u'Ligne Oimachi:'+ str(train[u"Oi"]["count"]) +' counts')
print(u'Ligne Meguro:'+ str(train[u"Meguro"]["count"]) +' counts')
print(u'Ligne Hanzomon:'+ str(train[u"Hanzomon"]["count"]) +' counts')
print(u'Ligne Tobu Isezaki:'+ str(train[u"Tobu Sky Tree"]["count"])+' counts')
print(u'Ligne Fukutoshin:'+ str(train[u"Sous-centre"]["count"]) +' counts')
print(u'Ligne Tobu Tojo:'+ str(train[u"Tojo"]["count"]) +' counts')
print(u'Ligne Seibu Ikebukuro:'+ str(train[u"Seibu Ikebukuro"]["count"]) +' counts')
print(u'Ligne Toei Mita:'+ str(train[u"Mita"]["count"]) +' counts')
train[u"Tato"]["flag"] = tweet(train[u"Tato"]["count"], u'Tato', train[u"Tato"]["flag"])
train[u"Tato"]["flag"] = tweet(train[u"Toyoko"]["count"], u'Toyoko', train[u"Toyoko"]["flag"])
train[u"Tato"]["flag"] = tweet(train[u"Oi"]["count"], u'Oi町', train[u"Oi"]["flag"])
train[u"Tato"]["flag"] = tweet(train[u"Meguro"]["count"], u'Meguro線', train[u"Meguro"]["flag"])
train[u"Tato"]["flag"] = tweet(train[u"Hanzomon"]["count"], u'Hanzomon', train[u"Hanzomon"]["flag"])
train[u"Tato"]["flag"] = tweet(train[u"Tobu Sky Tree"]["count"], u'Tobu Sky Treeライン', train[u"Tobu Sky Tree"]["flag"])
train[u"Tato"]["flag"] = tweet(train[u"Sous-centre"]["count"], u'Vice-capital', train[u"Sous-centre"]["flag"])
train[u"Tato"]["flag"] = tweet(train[u"Tojo"]["count"], u'Tojo', train[u"Tojo"]["flag"])
train[u"Tato"]["flag"] = tweet(train[u"Seibu Ikebukuro"]["count"], u'Seibu Ikebukuro', train[u"Meguro"]["flag"])
train[u"Tato"]["flag"] = tweet(train[u"Mita"]["count"], u'Mita', train[u"Meguro"]["flag"])
print "--------------------------------------------------------------------------------"
f_in.close()
sleep(300)
print("finish.")
Il existe divers facteurs qui causent des retards ferroviaires. Si vous suspendez la conduite en raison de blessures, d'un problème de signal, d'une catastrophe naturelle, etc., il faudra beaucoup de temps pour que l'horaire soit perturbé. Je n'y pense pas.
Il est fort possible que vous soyez 10 minutes en retard aux heures de pointe du matin, et si vous le remarquez chez vous plutôt qu'après votre arrivée à la gare, votre marge de manœuvre sera assez différente. Il nous est absolument impossible de revenir à l'horaire normal que le train soit en retard. Ce que vous pouvez faire, c'est ce que vous faites. Vérité universelle.
J'ai ce programme en cours d'exécution tout le temps sur mon Raspberry Pi 2 à la maison.
Je l'ai écrit pendant longtemps, mais c'est la fin. Si vous avez des erreurs ou des suggestions, veuillez laisser un commentaire.
Recommended Posts