RandMsg ported

This commit is contained in:
codey 2024-08-11 12:46:24 -04:00
parent 269da114a5
commit cb4e51ff9c
2 changed files with 80 additions and 0 deletions

78
endpoints/RandMsg.py Normal file
View File

@ -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, ('<b>Q:</b> ' || question || '<br/><b>A:</b> ' || 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 || '<br> - ' || 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, ("<font color='#FF0000'>" || 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 || "<br>" || 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
}

View File

@ -55,9 +55,11 @@ End Blacklisted Routes
Actionable 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) lyric_search_endpoint = importlib.import_module("endpoints.LyricSearch").LyricSearch(app, util, constants)
""" """
End Actionable Routes End Actionable Routes
""" """