From 4f7b6de5a659795630de36dfbcc4b052b386289f Mon Sep 17 00:00:00 2001 From: trueold89 Date: Fri, 3 May 2024 16:18:46 +0300 Subject: [PATCH] Init DirectoryGetter.py - Add the abstract class DirectoryGetter - Made DirectoryGetter implementation for JellyfinAPI --- DirectoryGetter.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++ JellyfinAPI.py | 1 - 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 DirectoryGetter.py delete mode 100644 JellyfinAPI.py diff --git a/DirectoryGetter.py b/DirectoryGetter.py new file mode 100644 index 0000000..0fe863f --- /dev/null +++ b/DirectoryGetter.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +from requests import get as req_get +from requests import Response +from abc import ABCMeta, abstractmethod + + +class DirectoryGetter(object): + __metaclass__ = ABCMeta + + @abstractmethod + def getDirs(self) -> dict: + """ + Returns a list key:value - Directory name : directory path + :return: Dictionary - Directory name : directory path + """ + + @abstractmethod + def CheckAvailability(self) -> bool: + """ + Checks if the directory parsing method is available + :return: boolean check result + """ + + +class Jellyfin(DirectoryGetter): + def __init__(self, url: str, api_key: str) -> None: + self.url = url + self.api_key = api_key + + def CheckAvailability(self) -> bool: + if self.__get("Library/VirtualFolders").status_code == 200: + return True + else: + raise Exception("Error connecting to JellyfinAPI") + + def __get(self, api_path: str) -> Response: + request = req_get(f"{self.url}/{api_path}?api_key={self.api_key}") + status = request.status_code + match status: + case 200: + return request + case 401: + raise Exception("Error 401: Authorization error, check api key") + case 403: + raise Exception("Error 403: Forbidden") + case 404: + raise Exception("Error 404: Not found") + + def getDirs(self) -> dict: + folders_list = self.__get("Library/VirtualFolders").json() + out = {} + for folder in folders_list: + out[folder["Name"]] = folder["Locations"][0] + return out diff --git a/JellyfinAPI.py b/JellyfinAPI.py deleted file mode 100644 index 40a96af..0000000 --- a/JellyfinAPI.py +++ /dev/null @@ -1 +0,0 @@ -# -*- coding: utf-8 -*-