Cela fait trois mois que je me suis inscrit à l'application avec enthousiasme, "J'utiliserai Twitter avec Python!" Quand je pensais que je devais faire quelque chose, j'ai trouvé cette histoire sur xkcd. Factoring the Time - xkcd.com J'ai fait un bot qui automatise le travail de factorisation du temps en facteurs premiers, ce que cet homme (?) Faisait tuer le temps, et tweetant le résultat. Cela fonctionne comme ça.
Quoi qu'il en soit, c'est l'enregistrement des demandes. Puisque de nombreux articles ont été écrits, je vais l'omettre ici. Si vous recherchez "enregistrement python twitter" sur Google, vous devriez en voir.
Créez un fichier appelé token
et écrivez-y la chaîne de caractères obtenue.
token
"Consumer Key"
"Consumer Secret"
"Access Token"
"Access Secret"
Après avoir écrit comme ça, créez main.py
dans le même répertoire et éditez-le.
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()
Une fois exécuté, il tweetera le résultat de la factorisation du temps presque toutes les minutes. Tu l'as fait!
Je ne pense pas que ce soit nécessaire, mais pour le moment ...
Le déroulement du programme est comme ça
① authentification twitter avec tweepy
② Obtenez l'heure actuelle avec datetime
③ Revenir à ② si l'heure a déjà été tweetée
④ Décomposition des facteurs premiers et changement de format avec sympy
⑤ Tweet le résultat (retour à ②)
Twitter est authentifié à l'aide des informations du jeton avec login ()
. Utilisez datetime.now (). Strftime ()
avec get_time_by_int ()
pour obtenir le nombre qui combine l'heure actuelle et la minute actuelle (comme 12:30 → 1230). Ici, si l'heure a déjà été tweetée, ou si le nombre retourné est 0 ou 1, le processus suivant ne sera pas lancé. J'utilise sympy.factorint ()
pour la factorisation des nombres premiers. Le résultat est renvoyé dans le dictionnaire de type {facteur principal: exposant, facteur premier: exposant ...}, utilisez donc pour pour le convertir en une forme de multiplication sans exposant. Enfin, changez le message selon que le résultat de la factorisation premier contient * (si le nombre de temps est un nombre premier) et tweetez avec ʻapi.update.status () `.
En raison du recours à la bibliothèque pour la quasi-totalité du traitement, il était inférieur à 50 lignes. Python est incroyable.
C'était ma première création de bot, mais j'ai trouvé qu'il était assez facile d'en créer un simple. Je l'exécute correctement, donc il s'arrête parfois, mais je veux le déplacer pendant quelques jours de plus.
Recommended Posts