[PYTHON] Ich wandelte die Zeit in eine ganze Zahl um, zerlegte sie in Primfaktoren und machte einen Bot, um das Ergebnis zu twittern (xkcd story)

Einführung

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 factoring_the_time.png 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. bot.jpg

Umgebung

Verfahren

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!

Kommentar

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.

abschließend

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

Ich wandelte die Zeit in eine ganze Zahl um, zerlegte sie in Primfaktoren und machte einen Bot, um das Ergebnis zu twittern (xkcd story)
Ich habe ein POST-Skript erstellt, um ein Problem in Github zu erstellen und es im Projekt zu registrieren
Ich habe GhostScript mit Python ausgeführt, das PDF in Seiten aufgeteilt und es in ein JPEG-Bild konvertiert.
Ich mag es nicht, mit der Veröffentlichung von Pokemon Go frustriert zu sein, deshalb habe ich ein Skript erstellt, um die Veröffentlichung zu erkennen und zu twittern
Eine einfache Möglichkeit, die in Python benötigte Zeit anzuzeigen und sie intelligenter zu verbessern
Ich habe einen Linienbot erstellt, der das Geschlecht und das Alter einer Person anhand des Bildes errät
Ich möchte die Ausführungszeit aufzeichnen und ein Protokoll führen.
Ich habe einen Chat-Chat-Bot mit Tensor2Tensor erstellt und diesmal hat es funktioniert
Da ich zu verschiedenen Zeiten anfing zu arbeiten, machte ich einen Bot, der mir die Zeit sagt, die Arbeit zu verlassen
Ich habe ein Tool erstellt, um die Ausführungszeit von cron zu schätzen (+ PyPI-Debüt)
Ich habe ein Tool erstellt, um Slack über Connpass-Ereignisse zu informieren, und es zu Terraform gemacht
Ich möchte gleichzeitig einen Musik-Player erstellen und Musik ablegen
Ich habe einen Appdo-Befehl erstellt, um Befehle im Kontext der App auszuführen
Ich habe ein Bildklassifizierungsmodell erstellt und versucht, es auf dem Handy zu verschieben
Ich möchte die Ergebnisse von% time, %% time usw. in einem Objekt (Variable) speichern.
Ich habe in Python ein Tool erstellt, das mit der rechten Maustaste auf eine Excel-Datei klickt und diese für jedes Blatt in Dateien unterteilt.
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
Python-Anfänger haben einen Chat-BOT erstellt, also habe ich versucht, zusammenzufassen, wie man es macht
Ich habe in Python ein Programm erstellt, das die 1-Minuten-Daten von FX auf eine beliebige Zeit (1 Stunde usw.) ändert.
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ich habe ein Tool erstellt, mit dem das Erstellen und Installieren eines öffentlichen Schlüssels etwas einfacher ist.
Ich habe eine Klasse erstellt, um das Analyseergebnis von MeCab in ndarray mit Python zu erhalten
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Ich habe eine Funktion zum Trimmen des Bildes von Python openCV erstellt. Verwenden Sie sie daher bitte.
Erstellt eine Methode zur automatischen Auswahl und Visualisierung eines geeigneten Diagramms für Pandas DataFrame