everybody-mov/tweetbot.py

74 lines
2.0 KiB
Python

#!/usr/bin/env python3
import os
import sys
from typing import Tuple
import tweepy
from time import sleep
from random import shuffle
def get_arguments() -> Tuple[bytes, bytes, bytes, bytes]:
consumer_key = os.environ['CONSUMER_KEY'].encode('utf8')
consumer_secret = os.environ['CONSUMER_SECRET'].encode('utf8')
access_token = os.environ['ACCESS_TOKEN'].encode('utf8')
access_token_secret = os.environ['ACCESS_TOKEN_SECRET'].encode('utf8')
return consumer_key, consumer_secret, access_token, access_token_secret
def populate_array(file_lines) -> list:
length = len(file_lines)
array = []
for i in range(length):
array.append(i)
shuffle(array)
return array
def main() -> None:
# Access and authorize our Twitter credentials
consumer_key, consumer_secret, access_token, access_token_secret = get_arguments()
auth = tweepy.OAuth1UserHandler(consumer_key=consumer_key, consumer_secret=consumer_secret,
access_token=access_token, access_token_secret=access_token_secret)
api = tweepy.API(auth=auth)
my_file = open('./everybody.txt', 'r', encoding='utf-8')
# Read lines one by one from my_file and assign to file_lines variable
file_lines = [x.strip() for x in my_file.readlines()]
# Close file.
my_file.close()
array = populate_array(file_lines)
# Driving loop.
while True:
while array:
tweet = file_lines[array.pop()]
try:
print(tweet)
api.update_status(tweet)
sleep(1800)
except tweepy.Forbidden as fe:
print(f"{fe.api_errors}")
sleep(30)
except tweepy.BadRequest as be:
print(f"{be.api_errors}")
sys.exit(1)
except tweepy.TweepyException as te:
print(te)
sys.exit(1)
array = populate_array(file_lines)
if __name__ == '__main__':
main()