diff --git a/jellyfin/api_client.py b/jellyfin/api_client.py index 3cafbd4..a038cab 100644 --- a/jellyfin/api_client.py +++ b/jellyfin/api_client.py @@ -8,6 +8,7 @@ from jellyfin.models import ( JellyfinEpisodeMediaMetadata) from jellyfin.utils.config import configure_client from jellyfin.utils.playback import get_current_playback +from jellyfin.utils.image import get_image_url from typing import Optional, Tuple import logging import time @@ -50,9 +51,9 @@ class JellyfinApiClient: self.last_auth_time = time.time() self.logger.info("Authenticated with Jellyfin server.") - def get_current_playback(self) -> Optional[JellyfinMediaItem]: + def get_current_media(self) -> Optional[JellyfinMediaItem]: """ - Fetches the current playback information from the Jellyfin server. + Fetches the current media information from the Jellyfin server. Returns: Optional[JellyfinMediaItem]: The current playback media item or None if no active playback is found. @@ -79,18 +80,6 @@ class JellyfinApiClient: self.logger.info("No active playback found.") return None - def get_image_url(self, media_id: str) -> str: - """ - Constructs the image URL for a given media item. - - Args: - media_id (str): The ID of the media item. - Returns: - str: The constructed image URL. - """ - server_address = settings.jellyfin_server_url.rstrip('/') - return f"{server_address}/Items/{media_id}/Images/Primary?maxWidth=300&maxHeight=300" - def to_model(self, item: dict) -> JellyfinMediaItem: """ Converts a Jellyfin media item dictionary to a JellyfinMediaItem model. @@ -134,7 +123,7 @@ class JellyfinApiClient: id=media_id, name=item.get('Name'), type=JellyfinMediaType.AUDIO, - image_url=self.get_image_url(parent_id), + image_url=get_image_url(parent_id), start=start, end=end, metadata=metadata @@ -161,7 +150,7 @@ class JellyfinApiClient: id=media_id, name=item.get('Name'), type=JellyfinMediaType.MOVIE, - image_url=self.get_image_url(media_id), + image_url=get_image_url(media_id), start=start, end=end, metadata=metadata @@ -196,7 +185,7 @@ class JellyfinApiClient: id=media_id, name=name, type=JellyfinMediaType.EPISODE, - image_url=self.get_image_url(parent_id), + image_url=get_image_url(parent_id), start=start, end=end, metadata=metadata diff --git a/jellyfin/utils/image.py b/jellyfin/utils/image.py new file mode 100644 index 0000000..36ec2b2 --- /dev/null +++ b/jellyfin/utils/image.py @@ -0,0 +1,14 @@ +from settings import settings + + +def get_image_url(media_id: str) -> str: + """ + Constructs the image URL for a given media item. + + Args: + media_id (str): The ID of the media item. + Returns: + str: The constructed image URL. + """ + server_address = settings.jellyfin_server_url.rstrip('/') + return f"{server_address}/Items/{media_id}/Images/Primary?maxWidth=300&maxHeight=300" diff --git a/jellyfin/utils/playback.py b/jellyfin/utils/playback.py index aabe907..22e8bae 100644 --- a/jellyfin/utils/playback.py +++ b/jellyfin/utils/playback.py @@ -1,6 +1,7 @@ from datetime import datetime from typing import Optional, Tuple + def get_current_playback(media: dict) -> Tuple[Optional[int], Optional[int]]: """ Extracts playback start and end positions from a Jellyfin media item dictionary. diff --git a/main.py b/main.py index 054686e..6080c6d 100644 --- a/main.py +++ b/main.py @@ -16,7 +16,7 @@ def main(): while True: try: - media_item = jellyfin_api_client.get_current_playback() + media_item = jellyfin_api_client.get_current_media() if not media_item: discord_rpc.clear() time.sleep(settings.poll_interval)