def handle_tweet_posting(text, reply_id, test=False): """Sends a tweet to twitter, making sure it is not repeated and logs it to our log file. If no non repeated or non banned images found, return False. If operation was succesful, return True. text = text to be tweeted, reply_id = the id of the tweet we'll be replying to, test = if bot was executed with test flag or not. """ log = config.log_file tolerance = config.tolerance banned_list = config.banned_file media, amount_media_available = get_random_image_from_folder(config.source_folder) t = status.Tweet(media, text, reply_id) tolerance = 0 while t.is_already_tweeted(log, tolerance) or t.is_banned(banned_list): new_media = get_random_image_from_folder(config.source_folder) t.change_media(new_media) tolerance += 1 if tolerance >= amount_media_available: return False if not test: tweet_id = t.post_to_twitter(api) log_line = logger.log_line(post_number, tweet_id, media, reply_id) else: # if it was a test, don't post it and mark the log line as such log_line = logger.log_line(post_number, 'TEST_ID', "TEST_PATH", reply_id) logger.add_line_to_log(log_line, log) return True
def post_tweet(text, reply_id, test=False): """Actually sends a tweet to twitter""" tweet = status.Tweet() media = tweet.media(config.source_folder) tweet_text = tweet.text(text) log = config.log_file tolerance = config.tolerance banned_list = config.banned_file already_tweeted = status.is_already_tweeted(log, media, tolerance) banned = status.is_banned(banned_list, media) if already_tweeted or banned: return post_tweet(text, reply_id) # just try again if not test: status.tweet(media, tweet_text, reply_id, api) logger.addPost(media, reply_id, log) if test: logger.addPost(media, "TEST", log)
def create_tweet(text, reply_id, test=False): """Creates an instance of a tweet""" log = config.log_file tolerance = config.tolerance banned_list = config.banned_file media = get_random_image_from_folder(config.source_folder) t = status.Tweet(media, text, reply_id) while t.is_already_tweeted(log, tolerance) or t.is_banned(banned_list): new_media = get_random_image_from_folder(config.source_folder) t.change_media(new_media) if not test: tweet_id = t.post_to_twitter(api) log_line = logger.logLine(post_number, tweet_id, media, reply_id) if test: log_line = logger.logLine(post_number, 'TEST_ID', "TEST_PATH", reply_id) logger.addLineToLog(log_line, log)