49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
import logging
|
|
import sys
|
|
import typing
|
|
from functools import lru_cache
|
|
from pathlib import Path
|
|
|
|
from platformdirs import user_data_dir
|
|
from reader import Reader, make_reader
|
|
|
|
if typing.TYPE_CHECKING:
|
|
from reader.types import JSONType
|
|
|
|
data_dir: str = user_data_dir(appname="discord_rss_bot", appauthor="TheLovinator", roaming=True, ensure_exists=True)
|
|
|
|
|
|
logger: logging.Logger = logging.getLogger("discord_rss_bot")
|
|
logger.setLevel(logging.DEBUG)
|
|
stream_handler = logging.StreamHandler(sys.stdout)
|
|
log_formatter = logging.Formatter(
|
|
"%(asctime)s [%(processName)s: %(process)d] [%(threadName)s: %(thread)d] [%(levelname)s] %(name)s: %(message)s",
|
|
)
|
|
stream_handler.setFormatter(log_formatter)
|
|
logger.addHandler(stream_handler)
|
|
|
|
|
|
# TODO(TheLovinator): Add default things to the database and make the edible.
|
|
default_custom_message: JSONType | str = "{{entry_title}}\n{{entry_link}}"
|
|
default_custom_embed: dict[str, str] = {
|
|
"title": "{{entry_title}}",
|
|
"description": "{{entry_text}}",
|
|
"image_url": "{{image_1}}",
|
|
"color": "#469ad9",
|
|
}
|
|
|
|
|
|
@lru_cache
|
|
def get_reader(custom_location: Path | None = None) -> Reader:
|
|
"""Get the reader.
|
|
|
|
Args:
|
|
custom_location: The location of the database file.
|
|
|
|
"""
|
|
db_location: Path = custom_location or Path(data_dir) / "db.sqlite"
|
|
|
|
return make_reader(url=str(db_location))
|