From c2852838ddbd27a4e80b91ed73ce0d2df4071f97 Mon Sep 17 00:00:00 2001 From: j Date: Mon, 15 Jan 2024 11:12:48 +0100 Subject: [PATCH] shutdown sync server if player fails --- cdoseaplay/sync.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/cdoseaplay/sync.py b/cdoseaplay/sync.py index e2407d2..76a84e4 100755 --- a/cdoseaplay/sync.py +++ b/cdoseaplay/sync.py @@ -57,11 +57,12 @@ class Player(Thread): current = '' playlist_items = 260 - def __init__(self, peer, player, playlist, prefix): + def __init__(self, peer, player, playlist, prefix, server): self.peer = peer self.playlist = playlist self.prefix = prefix self.player = player + self.server = server self.queue = Queue() Thread.__init__(self) self.daemon = True @@ -72,15 +73,20 @@ class Player(Thread): self.position, self.playlist_items = update_playlist(self.playlist, self.prefix, position=self.get_position()) logger.debug("load playlist") self.player.loadlist(self.playlist) - self.player.pause = True - while self.running: - logger.debug("play") - self.play() - self.position = (self.position + 1) % self.playlist_items - logger.debug("ping") - self.ping() - logger.debug("wait") - self.queue.get() + try: + self.player.pause = True + while self.running: + logger.debug("play") + self.play() + self.position = (self.position + 1) % self.playlist_items + logger.debug("ping") + self.ping() + logger.debug("wait") + self.queue.get() + except: + logger.error("playback failed") + self.running = False + self.server.shutdown() def play(self): self.playing = True @@ -157,7 +163,7 @@ def main(): listen = '0.0.0.0' server = ThreadingUDPServer((listen, args.port), Handler) server.allow_reuse_address = True - server.player = Player(peer, player, args.playlist, args.prefix) + server.player = Player(peer, player, args.playlist, args.prefix, server) player.register_key_binding('q', server.q_binding) logger.debug("listen on %s...", args.port)