Es ist drei Monate her, seit ich mich mit Begeisterung für die Anwendung registriert habe: "Ich werde Twitter mit Python verwenden!" Als ich dachte, ich müsste etwas machen, fand ich diese Geschichte auf xkcd. Factoring the Time - xkcd.com Ich habe einen Bot erstellt, der die Arbeit automatisiert, die Zeit in Primfaktoren zu zerlegen, die dieser Mann (?) Die Zeit tötete, und das Ergebnis zu twittern. Es funktioniert so.
Auf jeden Fall handelt es sich um eine Antragsregistrierung. Da viele Artikel geschrieben wurden, werde ich sie hier weglassen. Wenn Sie nach "Twitter Python-Registrierung" googeln, sollten Sie einige sehen.
Erstellen Sie eine Datei mit dem Namen "Token" und schreiben Sie die erhaltene Zeichenfolge hinein.
token
"Consumer Key"
"Consumer Secret"
"Access Token"
"Access Secret"
Nachdem Sie so geschrieben haben, erstellen Sie "main.py" im selben Verzeichnis und bearbeiten Sie es.
main.py
# coding:utf-8
import tweepy
from datetime import datetime
import sympy
import time
def login():
with open("token") as f:
(consumer_key,
consumer_secret,
access_token,
access_secret) = f.read().split("\n")[:4]
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
return api
def get_factor_by_string(i):
d = sympy.factorint(i)
return "*".join(str(fact) for fact in d for num in range(d[fact]))
def get_time_by_int():
return int(datetime.now().strftime('%H%M'))
def main():
api = login()
old = get_time_by_int()
while True:
now = get_time_by_int()
if now != old and now != 0 and now != 1:
old = now
factor = get_factor_by_string(now)
if "*" in factor:
text = str(now) + "=" + factor
else:
text = str(now) + " is a prime number"
api.update_status(text)
time.sleep(0.1)
if __name__ == '__main__':
main()
Bei der Ausführung wird fast jede Minute das Ergebnis der Faktorisierung der Zeit getwittert. Du hast es geschafft!
Ich denke nicht, dass es notwendig ist, aber vorerst ...
Der Ablauf des Programms ist wie folgt
① Twitter-Authentifizierung mit Tweepy
② Ermitteln Sie die aktuelle Uhrzeit mit datetime
③ Kehren Sie zu ② zurück, wenn die Zeit bereits getwittert wurde
④ Zerlegung des Primfaktors und Formatänderung mit Sympy
⑤ Tweet das Ergebnis (zurück zu ②)
Twitter wird anhand der Informationen im Token mit "login ()" authentifiziert. Verwenden Sie "datetime.now (). Strftime ()" mit "get_time_by_int ()", um die Zahl zu erhalten, die die aktuelle Zeit und die aktuelle Minute kombiniert (z. B. 12:30 → 1230). Wenn die Zeit bereits getwittert wurde oder die zurückgegebene Nummer 0 oder 1 ist, wird der nächste Vorgang nicht gestartet. Ich benutze sympy.factorint ()
für die Primfaktorisierung. Das Ergebnis wird im Wörterbuchtyp {Primfaktor: Exponent, Primfaktor: Exponent ...} zurückgegeben. Verwenden Sie es also, um es in eine Multiplikationsform ohne Exponenten zu konvertieren. Ändern Sie abschließend die Nachricht in Abhängigkeit davon, ob * im Ergebnis der Primfaktorisierung enthalten ist (ob die Zeitnummer eine Primzahl ist), und twittern Sie mit "api.update.status ()".
Da Sie sich bei fast der gesamten Verarbeitung auf die Bibliothek verlassen, passt sie in weniger als 50 Zeilen. Python ist unglaublich.
Es war meine erste Bot-Kreation, aber ich fand, dass es ziemlich einfach war, eine einfache zu erstellen. Ich führe es richtig aus, daher hört es manchmal auf, aber ich möchte es noch ein paar Tage verschieben.
Recommended Posts