RandMsg ported
This commit is contained in:
parent
269da114a5
commit
cb4e51ff9c
78
endpoints/RandMsg.py
Normal file
78
endpoints/RandMsg.py
Normal 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
|
||||||
|
}
|
2
main.py
2
main.py
@ -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
|
||||||
"""
|
"""
|
Loading…
x
Reference in New Issue
Block a user