Dies ist der erste Beitrag.
Es ist zwei Monate her, seit ich Python getroffen habe. Es war spät sich zu treffen. Und ich bin ein Anfänger in der Programmierung, also bin ich schwach! Code. Bitte verzeih mir. Ich habe es gemacht, weil ich vor der offiziellen Ankündigung eine Vorhersage machen wollte, wie zum Beispiel Verspätungsinformationen für jede Eisenbahnlinie. Nur Selbstzufriedenheit!
Die Umgebung verwendet die Python 2-Serie.
Wenn Sie das Twittern nicht zuerst mit Python aktivieren, wird nichts gestartet. Bitte stellen Sie über Twitter-Anwendung ein und holen Sie sich den Schlüssel.
#Stellen Sie den Schlüssel ein
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)
#API-Instanz erstellen
api = tweepy.API(auth)
Dies ist die Vorbereitung.
Zuerst musst du den Tweet bekommen. Ich habe auf andere Beiträge verwiesen.
Ein Fragmentprogramm, das Tweets abruft und in eine Datei ausgibt. Es ist nicht erforderlich, in eine Datei auszugeben, aber ich wollte nur die Datei eingeben / ausgeben. Versuchen Sie es, außer damit kein Fehler auftritt, wenn die Zeichen verstümmelt sind. Es fühlt sich an wie ein Anfänger.
for tweet in api.search(q=query, count=100):
try:
f.write(tweet.text.encode("utf-8"))
f.write("\n")
except:
pass
Ich lasse Sie eingeben, was hier ausgegeben wurde.
#Codecs werden geöffnet, um verstümmelte Dateien zu verhindern
f_in = codecs.open('XXXXXXX.txt','r','utf-8')
lines = f_in.readlines()
keywords =[u'verzögern', u'verzögern']
query = ' OR '.join(keywords)
Holen Sie sich Tweets von Dingen, die im OP abgefangen wurden, und suchen Sie nach "Verzögerung" und "Verzögerung" als Schlüsselwörter.
Ich hätte gerne einen solchen Tweet, wenn möglich.
** Was? Außerdem ist Tato zu spät, aber w Verzögerung ist die Standardeinstellung w **
** Irgendwie ist die Verzögerung von Toyoko irgendwie **
Es ist ein wunderbar nutzloser und guter Tweet. Solche Tweets beseitigen die Verzögerung nicht, können jedoch zum Abrufen von Informationen verwendet werden.
In meinem Fall ist Tokyu berühmt für Verzögerungen, deshalb werde ich es untersuchen. Wir haben auch ein Wörterbuch für jede Route erstellt, einschließlich Routen, die direkt durcheinander verlaufen.
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 Himmelsbaum" : { "count" : 0 , "flag" : 0},
u"Subcenter" : { "count" : 0 , "flag" : 0},
u"Tojo" : { "count" : 0 , "flag" : 0},
u"Seibu Ikebukuro" : { "count" : 0 , "flag" : 0},
u"Mita" : { "count" : 0 , "flag" : 0}
}
count ist die Anzahl der Routennamen-Treffer aus 100 Tweets. Geben Sie als Flag beim Tweeten 1 ein. (= Um kontinuierliche Tweets zu vermeiden)
Wie jeder, der es versteht, sind die Nanboku-Linie, die direkt mit der Meguro-Linie verbunden ist, und die Saitama-Hochgeschwindigkeitsbahn aus irgendeinem Grund verschwunden. ~~ Ich habe es weggelassen. Ich dachte, ich würde nicht so spät kommen.
Suchen und prognostizieren Sie diese.
Ich habe eine Zähl- und Tweet-Funktion erstellt. count Diese Funktion zählt die Anzahl der Routentreffer von Tweets.
def count_tweet(lines, word):
count = 0
for line in lines:
if line.find(word) > -1:
count = count + 1
return count
Zeilen ist die Dateieingabe.
train[u"Tato"]["count"] = count_tweet(lines, u"Tato")
Verwenden Sie es so. tweet Es ist eine Funktion zum Twittern.
def tweet(count, word, flag):
if count > 10 and flag == 0:
api.update_status(status=str(now.hour)+u"Zeit"+str(now.minute)+u"Holen Sie sich winzige Informationen"+word+u"Möglichkeit der Verzögerung")
flag = 1
else:
flag = 0
return flag
In dieser Funktion wird beurteilt, dass die Möglichkeit einer Verzögerung besteht, wenn 11 oder mehr zählen.
Wenn ich twittere, setze ich ein Flag, damit ich beim nächsten Verweis auf diese Funktion immer zu einem anderen springe. Dies verhindert aufeinanderfolgende Tweets. Ich denke, es gibt tatsächlich einen anderen Weg ...
train[u"Tato"]["flag"] = tweet(train[u"Tato"]["count"], u'Tato', train[u"Tato"]["flag"])
Verwenden Sie es so.
Das Display wird auch auf der Konsole angezeigt.
()
Die Tobu Sky Tree Line ist lang, deshalb habe ich mich für die Isezaki Line entschieden. Tweets werden auf der Tobu Sky Tree Line gemacht.
Es wird so sein.
Verwenden Sie den Schlaf in der while-Schleife, halten Sie für 300 Sekunden (= 5 Minuten) an und drehen Sie ihn dann erneut.
Indem wir Zeit in den Tweet stecken, versuchen wir, denselben Tweet zu verhindern.
Ich werde den Code hier schreiben.
# -*- coding:utf-8 -*-
#!/usr/bin/env python
import tweepy
import codecs
import datetime
from time import sleep
#Stellen Sie verschiedene Schlüssel ein
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)
#API-Instanz erstellen
api = tweepy.API(auth)
#Inhalt suchen
keywords =[u'verzögern', u'verzögern']
query = ' OR '.join(keywords)
#Anzahl der Suchinhalte
def count_tweet(lines, word):
count = 0
for line in lines:
if line.find(word) > -1:
count = count + 1
return count
#Tweet Urteil
def tweet(count, word, flag):
if count > 5 and flag == 0:
api.update_status(status=str(now.hour)+u"Zeit"+str(now.minute)+u"Holen Sie sich winzige Informationen"+word+u"Möglichkeit der Verzögerung")
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 Himmelsbaum" : { "count" : 0 , "flag" : 0},
u"Subcenter" : { "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 "--------------------------------------------------------------------------------"
#Aktuelle Zeit abrufen
now = datetime.datetime.today()
#Anzeige der aktuellen Uhrzeit
print(str(now.hour)+u'Zeit'+str(now.minute)+u'Protokoll'+str(now.second)+u'Holen Sie sich zweite Informationen')
#Geben Sie 100 Tweets zur letzten Abfragesuche ein
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 werden geöffnet, um verstümmelte Dateien zu verhindern
f_in = codecs.open('XXXXXX.txt','r','utf-8')
#Holen Sie sich Zeile für Zeile
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 Himmelsbaum"]["count"] = count_tweet(lines, u"Tobu Himmelsbaum")
train[u"Subcenter"]["count"] = count_tweet(lines, u"Subcenter")
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'Ländliche Stadtgrenze:'+ str(train[u"Tato"]["count"]) +' counts')
print(u'Toyoko Line:'+ str(train[u"Toyoko"]["count"]) +' counts')
print(u'Oimachi Line:'+ str(train[u"Oi"]["count"]) +' counts')
print(u'Meguro Line:'+ str(train[u"Meguro"]["count"]) +' counts')
print(u'Hanzomon Line:'+ str(train[u"Hanzomon"]["count"]) +' counts')
print(u'Tobu Isezaki Linie:'+ str(train[u"Tobu Himmelsbaum"]["count"])+' counts')
print(u'Fukutoshin-Linie:'+ str(train[u"Subcenter"]["count"]) +' counts')
print(u'Tobu Tojo Line:'+ str(train[u"Tojo"]["count"]) +' counts')
print(u'Seibu Ikebukuro Linie:'+ str(train[u"Seibu Ikebukuro"]["count"]) +' counts')
print(u'Toei Mita Linie:'+ 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 Himmelsbaum"]["count"], u'Tobu Himmelsbaumライン', train[u"Tobu Himmelsbaum"]["flag"])
train[u"Tato"]["flag"] = tweet(train[u"Subcenter"]["count"], u'Vizekapital', train[u"Subcenter"]["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.")
Es gibt verschiedene Faktoren, die zu Verzögerungen auf der Schiene führen. Wenn Sie das Fahren aufgrund von Personenschäden, Signalproblemen, Naturkatastrophen usw. unterbrechen, dauert es lange, bis der Zeitplan gestört ist. Ich denke nicht darüber nach.
Es ist durchaus möglich, dass Sie 10 Minuten zu spät am Morgen in der Hauptverkehrszeit sind. Wenn Sie dies zu Hause und nicht nach der Ankunft am Bahnhof bemerken, ist Ihr Spielraum ganz anders. Es ist absolut unmöglich für uns, zum normalen Fahrplan zurückzukehren, dass der Zug zu spät kommt. Was Sie tun können, ist was Sie tun. Universelle Wahrheit.
Ich habe dieses Programm die ganze Zeit auf meinem Raspberry Pi 2 zu Hause ausgeführt.
Ich habe es lange geschrieben, aber das ist das Ende. Wenn Sie Fehler oder Vorschläge haben, hinterlassen Sie bitte einen Kommentar.
Recommended Posts