diff --git a/discord/models.py b/discord/models.py index 66ee378..b16cdce 100644 --- a/discord/models.py +++ b/discord/models.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel +from pydantic import BaseModel, NonNegativeInt from pypresence.types import ActivityType from typing import Optional @@ -9,6 +9,6 @@ class DiscordRPCUpdatePayload(BaseModel): subtitle: str image_url: str details: str - start: Optional[int] - end: Optional[int] + start: Optional[NonNegativeInt] + end: Optional[NonNegativeInt] activity_type: ActivityType diff --git a/jellyfin/models.py b/jellyfin/models.py index d24a1d5..de467b4 100644 --- a/jellyfin/models.py +++ b/jellyfin/models.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel, HttpUrl +from pydantic import BaseModel, HttpUrl, NonNegativeInt from enum import StrEnum from typing import Optional, Union from discord.models import DiscordRPCUpdatePayload @@ -29,8 +29,8 @@ class JellyfinMediaItem(BaseModel): name: str type: JellyfinMediaType image_url: HttpUrl - start: Optional[int] - end: Optional[int] + start: Optional[NonNegativeInt] + end: Optional[NonNegativeInt] metadata: Union[JellyfinMusicMediaMetadata, JellyfinMovieMediaMetadata, JellyfinEpisodeMediaMetadata] diff --git a/main.py b/main.py index a9a8475..054686e 100644 --- a/main.py +++ b/main.py @@ -5,28 +5,28 @@ import coloredlogs import logging import time -coloredlogs.install( - level=logging.INFO, - fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s') - -discordRPC = DiscordRPC() -jellyfinApiClient = JellyfinApiClient() - def main(): + coloredlogs.install( + level=logging.INFO, + fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s') + + discord_rpc = DiscordRPC() + jellyfin_api_client = JellyfinApiClient() + while True: try: - media_item = jellyfinApiClient.get_current_playback() + media_item = jellyfin_api_client.get_current_playback() if not media_item: - discordRPC.clear() + discord_rpc.clear() time.sleep(settings.poll_interval) continue - discordRPC.update(media_item.to_rpc_payload()) + discord_rpc.update(media_item.to_rpc_payload()) time.sleep(settings.poll_interval) except KeyboardInterrupt: logging.info("Shutting down...") - discordRPC.clear() + discord_rpc.clear() break