lionseat/lionseat.py

67 lines
1.8 KiB
Python
Raw Normal View History

2024-06-14 10:17:16 -04:00
import os
import random
from mastodon import Mastodon
import sqlite3
def get_food():
2024-06-17 07:06:04 -04:00
foods = ["no spoilers"]
2024-06-14 10:17:16 -04:00
food = foods[random.randint(0, len(foods) - 1)]
return food
2024-06-17 07:06:04 -04:00
def get_cur_and_ensure_table(db_con):
2024-06-14 10:17:16 -04:00
cur = db_con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS used(used TEXT)")
2024-06-17 07:06:04 -04:00
def record_usage(cursor, my_food):
cursor.execute("INSERT INTO USED(used) values (?)", (my_food,))
def is_already_used(cursor, my_food):
cursor.execute("SELECT used FROM Used where used = ?", (my_food,))
result = cursor.fetchone()
return result is not None
def get_unique_food(db_con):
cursor = db_con.cursor()
max_attempts = 3
2024-06-14 10:17:16 -04:00
current_attempt = 1
while True and current_attempt < max_attempts:
current_attempt = current_attempt + 1
my_food = get_food()
2024-06-17 07:06:04 -04:00
used = is_already_used(cursor, my_food)
if not used:
record_usage(cursor, my_food)
2024-06-14 10:17:16 -04:00
return my_food
def get_masto_client_and_login():
client_id = os.environ["LIONSEAT_CLIENTID"]
client_secret = os.environ["LIONSEAT_CLIENTSECRET"]
mastodon_instance_url = os.environ["LIONSEAT_MASTO_URL"]
mastodon = Mastodon(
client_id=client_id,
client_secret=client_secret,
api_base_url=mastodon_instance_url,
)
mastodon.log_in(
username=os.environ["LIONSEAT_USER"],
password=os.environ["LIONSEAT_PASS"],
to_file="liomseatbot.secret",
scopes=["read", "write"],
)
return mastodon
2024-06-17 07:06:04 -04:00
with sqlite3.connect("lionseat.db") as db_con:
get_cur_and_ensure_table(db_con)
food = get_unique_food(db_con)
if food is not None:
status = f"Lions will eat {food}"
print(status)
mastodon = get_masto_client_and_login()
mastodon.status_post(status, visibility="public")