From a842db2d97a0ce5fe9b6d6080422702e504d8c7a Mon Sep 17 00:00:00 2001 From: Zvonimir Rudinski Date: Wed, 10 Dec 2025 01:16:12 +0100 Subject: [PATCH] add keyboard interrupt handling --- jellyfin/api_client.py | 9 +++++++-- main.py | 23 ++++++++++++++++------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/jellyfin/api_client.py b/jellyfin/api_client.py index 3b00ace..fe05c5f 100644 --- a/jellyfin/api_client.py +++ b/jellyfin/api_client.py @@ -18,14 +18,19 @@ class JellyfinApiClient: self.client.config.app('jellydisc', '0.0.1', machine_name, unique_id) self.client.config.data['auth.ssl'] = True + self.authenticate() + + self.logger.info("Connected to Jellyfin server.") + + def authenticate(self): + self.logger.info("Authenticating with Jellyfin server...") self.client.auth.connect_to_address(settings.jellyfin_server_url) self.client.auth.login( settings.jellyfin_server_url, settings.jellyfin_username, settings.jellyfin_password ) - - self.logger.info("Connected to Jellyfin server.") + self.logger.info("Authenticated with Jellyfin server.") def get_current_playback(self) -> JellyfinMediaItem | None: self.logger.info("Fetching current playback information...") diff --git a/main.py b/main.py index 61f908c..2f5b21e 100644 --- a/main.py +++ b/main.py @@ -13,14 +13,23 @@ jellyfinApiClient = JellyfinApiClient() def main(): while True: - media_item = jellyfinApiClient.get_current_playback() - if not media_item: - discordRPC.clear() - time.sleep(15) - continue + try: + media_item = jellyfinApiClient.get_current_playback() + if not media_item: + discordRPC.clear() + time.sleep(15) + continue - discordRPC.update(to_rpc_payload(media_item)) - time.sleep(15) + discordRPC.update(to_rpc_payload(media_item)) + time.sleep(15) + except KeyboardInterrupt: + logging.info("Shutting down...") + discordRPC.clear() + break + except: + logging.exception("An error occurred in the main loop.") + jellyfinApiClient.authenticate() + time.sleep(15) if __name__ == "__main__": main()