Okay, so my last post dealt with searching with Twython and this lead to me to thinking; what about replying to tweets that mention the search terms. Which is why I’ve created a auto-tweet reply program!
Some things I considered when writing this program;
- I wanted to reply to Tweets from a certain day range (in this case the last 24 hours) as I am thinking of running the script once a day (may need to change the formatted_date >= yesterday to get this working correctly.
- I didn’t want to spam Twitter (same reason I added in a delay between sending tweets).
# geektechstuff # Twitter Application from twython import Twython #Twython is a Twitter Python library import datetime import time #imports the Twitter API keys from auth import ( consumer_key, consumer_secret, access_token, access_token_secret ) twitter = Twython( consumer_key, consumer_secret, access_token, access_token_secret ) # This posts Tweets # message = "geektechstuff.com Test Tweet aka /'Hello World!/'" # twitter.update_status(status=message) # print("Tweeted: %s" % message) # This searches Tweets print('GeekTechStuff Twitter Search Python Program') print('') search_term = input('What word should I look for? ') results = twitter.cursor(twitter.search, q=search_term) print('') print('Searching Twitter...') print('') now = datetime.date.today() now = str(now) now = now.replace("-", "") now = int(now) for result in results: name = result['user'] screen_name = name['screen_name'] creation_date = result['created_at'] tweet_txt = result['text'] print('Twitter User:', screen_name) print('Posted:') print(tweet_txt) print('at:') print(creation_date) print('') # Next bit is all about the date of creation # Bit long winded and there is probably an easier solution date_unformatted = creation_date month = date_unformatted[4:7] date = date_unformatted[8:10] year = date_unformatted[-4:] if month == 'Jan': month = '01' elif month == 'Feb': month = '02' elif month == 'Mar': month = '03' elif month == 'Apr': month = '04' elif month == 'May': month = '05' elif month == 'Jun': month = '06' elif month == 'Jul': month = '07' elif month == 'Aug': month = '08' elif month == 'Sep': month = '09' elif month == 'Oct': month = '10' elif month == 'Nov': month = '11' elif month == 'Dec': month = '12' formatted_date = year + month + date formatted_date = int(formatted_date) yesterday = now - 1 if formatted_date >= yesterday: #This posts Tweets twitter_handle = '@' + screen_name message = twitter_handle+" I am an automated Python program from GeekTechStuff, thanks for the Twitter mention " twitter.update_status(status=message, in_reply_to_status_id=twitter_handle) print("Tweeted: %s" % message) #delay so that it doesn't look like the program is spamming Twitter time.sleep(15)
One thing I am going to need to do is create a several messages and then get the program to randomly chose which to send as otherwise Twitter ends the program (Twitter doesn’t allow the same tweet to be sent twice consecutively).