cur_tick = 0
while True:
for player in self.players:
- if cur_tick == interval or player.state in (
- PlayerState.PLAYING,
- PlayerState.PAUSED,
+ if not player.available:
+ continue
+ if cur_tick == interval or (
+ player.active_queue.active
+ and player.state
+ in (
+ PlayerState.PLAYING,
+ PlayerState.PAUSED,
+ )
):
player.update_state()
if cur_tick == interval:
@property
def active(self) -> bool:
- """Return bool if the queue is currenty active on the player."""
- if not self.player.current_url:
- return False
+ """Return if the queue is currenty active."""
if stream := self.stream:
+ if not self.stream.done.is_set():
+ return True
+ if not self.player.current_url:
+ return False
return stream.stream_id in self.player.current_url
return False