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 | |
| import pandas as pd | |
| from pymongo import MongoClient | |
| 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.""" | |
| 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 | |