add keyboard interrupt handling

This commit is contained in:
2025-12-10 01:16:12 +01:00
parent b577359381
commit a842db2d97
2 changed files with 23 additions and 9 deletions

View File

@@ -18,14 +18,19 @@ class JellyfinApiClient:
self.client.config.app('jellydisc', '0.0.1', machine_name, unique_id) self.client.config.app('jellydisc', '0.0.1', machine_name, unique_id)
self.client.config.data['auth.ssl'] = True 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.connect_to_address(settings.jellyfin_server_url)
self.client.auth.login( self.client.auth.login(
settings.jellyfin_server_url, settings.jellyfin_server_url,
settings.jellyfin_username, settings.jellyfin_username,
settings.jellyfin_password settings.jellyfin_password
) )
self.logger.info("Authenticated with Jellyfin server.")
self.logger.info("Connected to Jellyfin server.")
def get_current_playback(self) -> JellyfinMediaItem | None: def get_current_playback(self) -> JellyfinMediaItem | None:
self.logger.info("Fetching current playback information...") self.logger.info("Fetching current playback information...")

View File

@@ -13,6 +13,7 @@ jellyfinApiClient = JellyfinApiClient()
def main(): def main():
while True: while True:
try:
media_item = jellyfinApiClient.get_current_playback() media_item = jellyfinApiClient.get_current_playback()
if not media_item: if not media_item:
discordRPC.clear() discordRPC.clear()
@@ -21,6 +22,14 @@ def main():
discordRPC.update(to_rpc_payload(media_item)) discordRPC.update(to_rpc_payload(media_item))
time.sleep(15) 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__": if __name__ == "__main__":
main() main()