diff --git a/endpoints/RandMsg.py b/endpoints/RandMsg.py new file mode 100644 index 0000000..130c6d9 --- /dev/null +++ b/endpoints/RandMsg.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3.12 + +import importlib +import urllib.parse +import regex +import logging +import json +import os +import random +import aiosqlite as sqlite3 + +from typing import Any, Annotated +from fastapi import FastAPI, Form, HTTPException +from pydantic import BaseModel + + +class RandMsg(FastAPI): + def __init__(self, app: FastAPI, util, constants): + self.app = app + self.util = util + self.constants = constants + + self.endpoint_name = "randmsg" + + app.add_api_route("/%s/" % self.endpoint_name, self.randmsg_handler, methods=["POST"]) + + async def randmsg_handler(self): + """ + Get a randomly generated message + """ + + random.seed() + db_rand_selected = random.choice([0, 1, 3]) + title_attr = "Unknown" + + match db_rand_selected: + case 0: + randmsg_db_path = os.path.join("/", "var", "lib", "singerdbs", "qajoke.db") # For qajoke db + db_query = "SELECT id, ('Q: ' || question || '
A: ' || answer) FROM jokes ORDER BY RANDOM() LIMIT 1" # For qajoke db + title_attr = "QA Joke DB" + case 1: + randmsg_db_path = os.path.join("/", "var", "lib", "singerdbs", "randmsg.db") # For randmsg db + db_query = "SELECT id, msg FROM msgs WHERE LENGTH(msg) <= 180 ORDER BY RANDOM() LIMIT 1" # For randmsg db + title_attr = "Random Msg DB" + case 2: + randmsg_db_path = os.path.join("/", "var", "lib", "singerdbs", "trump.db") # For Trump Tweet DB + db_query = "SELECT id, content FROM tweets ORDER BY RANDOM() LIMIT 1" # For Trump Tweet DB + title_attr = "Trump Tweet DB" + case 3: + randmsg_db_path = os.path.join("/", "var", "lib", "singerdbs", "philo.db") # For Philo DB + db_query = "SELECT id, (content || '
- ' || speaker) FROM quotes ORDER BY RANDOM() LIMIT 1" # For Philo DB + title_attr = "Philosophical Quotes DB" + case 4: + randmsg_db_path = os.path.join("/", "var", "lib", "singerdbs", "hate.db") # For Hate DB + db_query = """SELECT id, ("" || comment) FROM hate_speech WHERE length(comment) <= 180 ORDER BY RANDOM() LIMIT 1""" + title_attr = "Hate Speech DB" + case 5: + randmsg_db_path = os.path.join("/", "var", "lib", "singerdbs", "rjokes.db") # r/jokes DB + db_query = """SELECT id, (title || "
" || body) FROM jokes WHERE score >= 10000 ORDER BY RANDOM() LIMIT 1""" + title_attr = "r/jokes DB" + case 6: + randmsg_db_path = os.path.join("/", "var", "lib", "singerdbs", "donnies.db") # Donnies DB + random.seed() + twilight_or_mice = random.choice(["twilight", "mice"]) + db_query = f"SELECT id, text FROM {twilight_or_mice} ORDER BY RANDOM() LIMIT 1" + title_attr = "Donnies DB" + + + async with sqlite3.connect(database=randmsg_db_path, timeout=1) as _db: + async with _db.execute(db_query) as _cursor: + result = await _cursor.fetchone() + (result_id, result_msg) = result + result_msg = result_msg.strip() + return { + "id": result_id, + "msg": result_msg, + 'title': title_attr + } \ No newline at end of file diff --git a/main.py b/main.py index 1bd2d26..bafb4cc 100644 --- a/main.py +++ b/main.py @@ -55,9 +55,11 @@ End Blacklisted Routes Actionable Routes """ +randmsg_endpoint = importlib.import_module("endpoints.RandMsg").RandMsg(app, util, constants) lyric_search_endpoint = importlib.import_module("endpoints.LyricSearch").LyricSearch(app, util, constants) + """ End Actionable Routes """ \ No newline at end of file