4
1
Fork 1

Compare commits

..

No commits in common. "7e17c716101c521f8cd78c565eee96635bd25e2c" and "4f7b6de5a659795630de36dfbcc4b052b386289f" have entirely different histories.

6 changed files with 5 additions and 126 deletions

View File

@ -1,33 +0,0 @@
# -*- coding: utf-8 -*-
from json import load as jsonLoad
from TYPES import DirParserTypes, LogTypes
CFG_PATH = "config.json"
def loadCFG(config_path: str) -> dict:
with open(config_path, "r") as cfg:
return jsonLoad(cfg)
def loadParser(options: dict) -> tuple:
dirParser = None
parser_value = options["Main"]["DirParser"]
for av_parser in DirParserTypes:
if parser_value == av_parser.value:
dirParser = av_parser
if dirParser is None:
raise Exception(f"Directory parser '{parser_value}' not found")
else:
match dirParser:
case DirParserTypes.Jellyfin:
JellyfinConfig = {}
for i in options["JellyfinConfig"].keys():
JellyfinConfig[i] = options["JellyfinConfig"][i]
return dirParser, JellyfinConfig
configuration = loadCFG(CFG_PATH)
dirParser, JellyfinConfig = loadParser(configuration)
DBPath = configuration["Main"]["DBPath"]

View File

@ -1,33 +0,0 @@
# -*- coding: utf-8 -*-
from sqlite3 import connect as sqconnect
class DataBase(object):
def __init__(self, path: str, table: str) -> None:
self.path = path
self.table = table
def __execute(self, request: str, additional=None):
with sqconnect(self.path) as db:
cursor = db.cursor()
if additional is not None:
cursor.execute(request, additional)
else:
cursor.execute(request)
db.commit()
def createTable(self, table_content: str) -> None:
self.__execute(f'''
CREATE TABLE IF NOT EXISTS {self.table}(
id INTEGER PRIMARY KEY,
{table_content}
)
''')
def insert(self, data: dict) -> None:
fields = ", ".join(list(data.keys()))
values = list(data.values())
self.__execute(f'''
INSERT INTO {self.table} ({fields}) VALUES ({str("?," * len(data))[:-1]})
''', tuple(values))

View File

@ -15,7 +15,7 @@ class DirectoryGetter(object):
""" """
@abstractmethod @abstractmethod
def validation(self) -> bool: def CheckAvailability(self) -> bool:
""" """
Checks if the directory parsing method is available Checks if the directory parsing method is available
:return: boolean check result :return: boolean check result
@ -26,14 +26,12 @@ class Jellyfin(DirectoryGetter):
def __init__(self, url: str, api_key: str) -> None: def __init__(self, url: str, api_key: str) -> None:
self.url = url self.url = url
self.api_key = api_key self.api_key = api_key
if self.url[-1] == "/":
self.url = self.url[:-1]
if not (self.validation()):
raise Exception("Error connecting to JellyfinAPI")
def validation(self) -> bool: def CheckAvailability(self) -> bool:
if self.__get("Library/VirtualFolders").status_code == 200: if self.__get("Library/VirtualFolders").status_code == 200:
return True return True
else:
raise Exception("Error connecting to JellyfinAPI")
def __get(self, api_path: str) -> Response: def __get(self, api_path: str) -> Response:
request = req_get(f"{self.url}/{api_path}?api_key={self.api_key}") request = req_get(f"{self.url}/{api_path}?api_key={self.api_key}")
@ -42,7 +40,7 @@ class Jellyfin(DirectoryGetter):
case 200: case 200:
return request return request
case 401: case 401:
raise Exception("Error 401: Authorization error, check API key") raise Exception("Error 401: Authorization error, check api key")
case 403: case 403:
raise Exception("Error 403: Forbidden") raise Exception("Error 403: Forbidden")
case 404: case 404:

View File

@ -1,31 +0,0 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from TYPES import LogTypes
from DataBase import DataBase
from Config import DBPath
class Log(object):
def __init__(self, logtype: LogTypes, location: str, message: str) -> None:
self.logtype = logtype
self.location = location
self.msg = message
self.toDB()
date = datetime.now().date()
time = datetime.now().time().strftime("%H:%M:%S")
def __str__(self):
return f"[{self.date} | {self.time}] [{self.logtype.value}] [{self.location}] {self.msg}"
def toDB(self):
db = DataBase(DBPath, "logs")
db.createTable("date TEXT, time TEXT, type TEXT, location TEXT, message TEXT")
db.insert({
"date": self.date,
"time": self.time,
"type": self.logtype.value,
"location": self.location,
"message": self.msg
})

View File

@ -1,12 +1 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from enum import Enum
class DirParserTypes(Enum):
Jellyfin = "Jellyfin"
class LogTypes(Enum):
LOG = "Log"
ERROR = "Error"
WARN = "Warning"

View File

@ -1,11 +0,0 @@
{
"Main": {
"DirParser": "Jellyfin",
"DBPath": "/etc/qbitbot/botdb.db"
},
"JellyfinConfig": {
"ServerURL": "https://yourdomain.com",
"APIKey": "youaractualjellyfintoken"
}
}