[PYTHON] Erhalten Sie Verzögerungsinformationen auf Twitter und twittern Sie

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.

Erlaube Tweets von Python

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.

Suchen Sie nach zutreffenden Wörtern aus Tweets

Zuerst musst du den Tweet bekommen. Ich habe auf andere Beiträge verwiesen.

Holen Sie sich 100 Tweets

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()

Suchbegriff

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.

Wie viele Routen suchen

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.

Funktion

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.

Ausführungsergebnis

Das Display wird auch auf der Konsole angezeigt.

(Capture.PNG)

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.

Tweet Ergebnis

Es wird so sein. キャプチャ2.PNG

Einzelheiten

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.")

Zusammenfassung

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

Erhalten Sie Verzögerungsinformationen auf Twitter und twittern Sie
Holen Sie sich Promi-Tweet-Geschichte von Twitter
Holen Sie sich nur Bild-Tweets auf Twitter
[Memo] Tweet auf Twitter mit Python
Holen Sie sich mit Selenium Twitter-Lesezeichen auf CentOS
Programm, um Lieblingsbilder von Twitter zu erhalten
Siehe Datei- und Ordnerinformationen zu Python
Holen Sie sich Bilder von bestimmten Benutzern auf Twitter
Verwenden Sie die Twitter-API (API-Kontoregistrierung und Tweet-Erfassung).
Twitter mit Python3
Erhalten Sie mit Python Informationen zu den 100 einflussreichsten technischen Twitter-Nutzern der Welt.
Holen Sie sich Twitter userData
Verzögerungen - Informationen zu den verschiedenen Kernel-Verzögerungs- / Schlafmechanismen
Schritte zum Messen der Abdeckung und zum Abrufen von Abzeichen auf codecov.io
Automatisches Folgen auf Twitter mit Python und Selen! (RPA)
Erhalten Sie Kommentare auf Youtube Live mit [Python] und [Pytchat]!
Tweet die dreifache Vorhersage des Bootsrennens auf Twitter
Holen Sie sich Twitter-Tweets, Follower, Follower, Likes, mit urllib und beautifulSoup
[Python] Mit der API von Qiita erhalten Sie Benutzer- und Artikelinformationen
[Linux] Informationen zu Linux-Ressourcen abrufen
Anzahl der Charaktere auf Twitter
[google-oauth] Benutzerinformationen abrufen
Web-Scraping-Informationen zu Lachprogrammen und Benachrichtigungen über LINE
Anfänger erhalten Qiita-Tag-Informationen und visualisieren und betrachten das TOP10.
Ich habe versucht, die Informationen des Webs mit "Requests" und "lxml" abzurufen.
Optimieren Sie das Sammeln von Informationen mit Twitter API und Slack Bots
Anfänger der Google Maps API und der Twitter API haben "Tweet Map" erstellt.
Sammeln von Informationen von Twitter mit Python (Integration von MySQL und Python)
[Python x Zapier] Erhalten Sie Warninformationen und benachrichtigen Sie mit Slack