52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
from json import loads
|
|
from dotenv import load_dotenv
|
|
from os import getenv
|
|
from random import randint
|
|
from requests import get, post
|
|
from sys import argv
|
|
|
|
def load_env():
|
|
load_dotenv()
|
|
api_key = getenv('QUOTES_ACCESS_TOKEN')
|
|
quotes_library = getenv('QUOTES_LIBRARY')
|
|
if quotes_library.startswith('https',0):
|
|
quote_file = loads(get(quotes_library).text)
|
|
else:
|
|
quote_file = loads(open(quotes_library).read())
|
|
return api_key, quote_file
|
|
|
|
def build_post(api_key, quote_file, choice=0):
|
|
if choice == 0:
|
|
rand = randint(0, len(quote_file) - 1)
|
|
else:
|
|
rand = choice
|
|
quote = quote_file[rand]['quote']
|
|
author = quote_file[rand]['author']
|
|
toot = "'" + quote + "'\n\n - " + author + "\n\n#RandomQuote #quotes #quote #bot"
|
|
headers = {
|
|
"Content-Type": "application/json",
|
|
"Bearer": api_key,
|
|
"Authorization": "Bearer " + api_key
|
|
}
|
|
payload = {
|
|
"status": toot,
|
|
"visibility": "public"
|
|
}
|
|
return headers, payload
|
|
|
|
def make_post(headers, payload):
|
|
post_endpoint = getenv('ENDPOINT')
|
|
try:
|
|
post(post_endpoint, json=payload, headers=headers)
|
|
except Exception as e:
|
|
print('An error occurred: ', e)
|
|
|
|
if __name__ == '__main__':
|
|
if len(argv) > 0:
|
|
choice = int(argv[1])
|
|
else:
|
|
choice = int(0)
|
|
api_key, quote_file = load_env()
|
|
headers, payload = build_post(api_key, quote_file, choice)
|
|
make_post(headers, payload)
|