From 375302ea761b157178de4383fb6ad9a61e07f1d6 Mon Sep 17 00:00:00 2001 From: Spoked Date: Sun, 22 Sep 2024 06:43:12 -0400 Subject: [PATCH] feat: add jellyfin & emby support. --- src/program/settings/models.py | 14 ++++++++++++++ src/program/updaters/__init__.py | 11 +++++++---- src/utils/logger.py | 4 ++-- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/program/settings/models.py b/src/program/settings/models.py index 3e6a5064..ccae3634 100644 --- a/src/program/settings/models.py +++ b/src/program/settings/models.py @@ -104,9 +104,23 @@ class PlexLibraryModel(Observable): url: str = "http://localhost:32400" +class JellyfinLibraryModel(Observable): + enabled: bool = False + api_key: str = "" + url: str = "http://localhost:8096" + + +class EmbyLibraryModel(Observable): + enabled: bool = False + api_key: str = "" + url: str = "http://localhost:8096" + + class UpdatersModel(Observable): updater_interval: int = 120 plex: PlexLibraryModel = PlexLibraryModel() + jellyfin: JellyfinLibraryModel = JellyfinLibraryModel() + emby: EmbyLibraryModel = EmbyLibraryModel() # Content Services diff --git a/src/program/updaters/__init__.py b/src/program/updaters/__init__.py index 7606fb77..c99480ce 100644 --- a/src/program/updaters/__init__.py +++ b/src/program/updaters/__init__.py @@ -1,6 +1,8 @@ """Updater module""" from program.media.item import MediaItem from program.updaters.plex import PlexUpdater +from program.updaters.jellyfin import JellyfinUpdater +from program.updaters.emby import EmbyUpdater from utils.logger import logger @@ -9,13 +11,14 @@ def __init__(self): self.key = "updater" self.services = { PlexUpdater: PlexUpdater(), + JellyfinUpdater: JellyfinUpdater(), + EmbyUpdater: EmbyUpdater(), } self.initialized = True def validate(self) -> bool: """Validate that at least one updater service is initialized.""" initialized_services = [service for service in self.services.values() if service.initialized] - return len(initialized_services) > 0 def run(self, item: MediaItem): @@ -30,9 +33,9 @@ def run(self, item: MediaItem): except Exception as e: logger.error(f"{service_cls.__name__} failed to update {item.log_string}: {e}") - # Lets update the attributes of the item and its children, we dont care if the service updated it or not. - for _item in get_items_to_update(item): - _item.set("update_folder", "updated") + # Lets update the attributes of the item and its children, we dont care if the service updated it or not. + for _item in get_items_to_update(item): + _item.set("update_folder", "updated") yield item def get_items_to_update(item: MediaItem) -> list[MediaItem]: diff --git a/src/utils/logger.py b/src/utils/logger.py index 79044f10..2fb9d8a3 100644 --- a/src/utils/logger.py +++ b/src/utils/logger.py @@ -33,7 +33,7 @@ def get_log_settings(name, default_color, default_icon): "DATABASE": (37, "d834eb", "🛢️"), "DEBRID": (38, "cc3333", "🔗"), "SYMLINKER": (39, "F9E79F", "🔗"), - "SCRAPER": (40, "D299EA", "👻"), + "SCRAPER": (40, "3D5A80", "👻"), "COMPLETED": (41, "FFFFFF", "🟢"), "CACHE": (42, "527826", "📜"), "NOT_FOUND": (43, "818589", "🤷‍"), @@ -55,7 +55,7 @@ def get_log_settings(name, default_color, default_icon): logger.level(name, no=no, color=color, icon=icon) # Default log levels - debug_color, debug_icon = get_log_settings("DEBUG", "ff69b4", "🐞") + debug_color, debug_icon = get_log_settings("DEBUG", "98C1D9", "🐞") info_color, info_icon = get_log_settings("INFO", "818589", "📰") warning_color, warning_icon = get_log_settings("WARNING", "ffcc00", "⚠️ ") critical_color, critical_icon = get_log_settings("CRITICAL", "ff0000", "")