Už víme jak se připojit k Twitter REST API a jak si zautomatizovat tweetování novinek z RSS feedu. Co takhle naprogramovat Twitter Bota, který bude retweetovat nebo likovat některé tweety jiných uživatelů? I to je možné. Tak jdeme na to!
Zdrojový kód
from twython import Twython, TwythonError
import os
max_tweets = 2
tweet_counter = 0
def is_in_logfile(content, filename):
if os.path.isfile(filename):
with open(filename) as f:
lines = f.readlines()
if (content + "\n" or content) in lines:
return True
return False
def write_to_logfile(content, filename):
try:
with open(filename, "a") as f:
f.write(content + "\n")
except IOError as e:
print(e)
def search_and_retweet(query, logfile, count=10):
global tweet_counter
global max_tweets
"""Search for a query in tweets, and retweet those tweets."""
try:
twitter = Twython(API key, API secret key, Access token, Access token secret)
search_results = twitter.search(q=query, count=count)
except TwythonError as e:
print(e)
for tweet in search_results["statuses"][::-1]:
# check if is retweet
is_retweet = True if 'retweeted_status' in tweet or 'quoted_status' in tweet else False
link = tweet['id_str']
if tweet_counter >= max_tweets:
print('Wait a moment... rate limited')
elif is_in_logfile(link, logfile):
print('Nothing: operation on tweet', link, 'was performed')
else:
if is_retweet:
print('Like:', link, '-', tweet['user']['name'], '-', tweet['text'])
try:
twitter.create_favorite(id=link)
except TwythonError as e:
print(e)
else:
print('Retweet:', link, '-', tweet['user']['name'], '-', tweet['text'])
try:
twitter.retweet(id = link)
except TwythonError as e:
print(e)
write_to_logfile(link, logfile)
tweet_counter = tweet_counter + 1
logfile = '/path/to/log/file.txt'
query = 'Search query'
#query = '(flexibee -(from:flexibee_bot OR from:flexibee_zpravy))'
search_and_retweet(query, logfile, 100)
V tomto prográmku budeme potřebovat jen knihovnu Twython. Všechno ostatní je jen otázkou správného volání API.
Opět musíme vyplnit API key, API secret key, Access token, Access token secret a cestu k souboru, do kterého se budou logovat zpracované tweety (abychom neposílali vícekrát a nedostali „ban“ RESTRICTED TO API READ ACCESS ONLY).
Nastavení search query
V podstatě nejdůležitější částí retweeter bota je search query. Její použití nám vrátí tweety, které odpovídají našemu přání. Konstrukce není nikterak složitá. Nejspíš si vystačíme s několika základními operátory.
Základní operátory pro konstrukci search query
watching now – vyhledá všechny tweety obsahující watching a now
"happy hour" – vyhledá přesnou frázi
love OR hate – vyhledá tweety obsahující love nebo hate
beer -root – všechno co obsahuje slovo beer, ale neobsahuje slovo root
#hashtag – vše s hastagem #hashtag
from:charlieblogeu – vše co tweetne uživatel charlieblogeu
to:NASA – tweety, které odpovídají na tweety účtu NASA
@NASA – tweety, které zmiňují účet NASA
Kompletní seznam operátorů naleznete v Twitter API dokumentaci operátorů.
Spuštění programu
Program si uložíme do souboru retweeter.py a spuštění provedeme příkazem
python3 retweeter.py
Opět bude nejlepší si spouštění dát do cronu, abychom si ušetřili zbytečné ruční spouštění 😉.
Závěr
Stačí správně nastavit vyhledávací pravidlo a už nikdy nebudete muset na twitteru hledat. Bot vám všechny tweety krásně naservíruje 🙂.
Já ho takto používám pro informování o tweetech zmiňujících FlexiBee.