Spaces:
Running
Running
import logging | |
import os | |
import random | |
import re | |
import string | |
import uuid | |
from datetime import datetime, timezone | |
from urllib.parse import quote_plus | |
logging.basicConfig(level=logging.INFO) | |
logger = logging.getLogger(__name__) | |
def remove_non_emoji(text): | |
emoji_pattern = re.compile( | |
"[^" | |
"\U0001F600-\U0001F64F" # emoticons | |
"\U0001F300-\U0001F5FF" # symbols & pictographs | |
"\U0001F680-\U0001F6FF" # transport & map symbols | |
"\U0001F1E0-\U0001F1FF" # flags (iOS) | |
"]+", | |
flags=re.UNICODE, | |
) | |
return emoji_pattern.sub(r"", text) # only emoji | |
def get_session_id() -> str: | |
return str(uuid.uuid1()) | |
def get_utc_time() -> str: | |
return str(datetime.now(timezone.utc)) | |
def init_db(): | |
"""Initialize mongodb database.""" | |
from pymongo import MongoClient | |
username = os.getenv("HACKAPROMPT_MONGODB_USERNAME") | |
password = os.getenv("HACKAPROMPT_MONGODB_PASSWORD") | |
cluster = os.getenv("HACKAPROMPT_MONGODB_CLUSTER") | |
db_name = os.getenv("HACKAPROMPT_MONGODB_DB_NAME") | |
if all(v is not None for v in [username, password, cluster]): | |
try: | |
uri = ( | |
"mongodb+srv://" | |
+ quote_plus(username) | |
+ ":" | |
+ quote_plus(password) | |
+ "@" | |
+ cluster | |
+ "/?retryWrites=true&w=majority" | |
) | |
mongodb_client = MongoClient(uri) | |
database = mongodb_client[db_name] | |
logger.info("Succesfully connected to the MongoDB database") | |
return database | |
except Exception as e: | |
logger.exception("Something went wrong connecting to mongodb") | |
logger.warning("Didn't connect to MongoDB database, check auth.") | |
def remove_whitespace(s): | |
# Remove leading and trailing whitespace | |
s = s.strip() | |
# Remove leading and trailing newlines | |
s = s.strip("\n") | |
return s | |
def contains_pwned_letters(string): | |
letters = ["p", "w", "n", "e", "d"] | |
for letter in letters: | |
if letter in string or letter.upper() in string: | |
return True | |
return False | |
def contains_blacklisted_word(input_: str): | |
blacklist = [ | |
"pwned", | |
"pawned", | |
"prawned", | |
"pwn", | |
"pawn", | |
"prawn", | |
"owned", | |
"own", | |
] | |
for w in blacklist: | |
if w in input_.lower(): | |
return True | |
return False | |
def random_alphanumeric(k: int): | |
"""Taken from: https://stackoverflow.com/a/30779367/6362908""" | |
x = "".join(random.choices(string.ascii_letters + string.digits, k=k)) | |
return x | |