feat(media): MprisController fängt Player- und Bus-Fehler sauber ab
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -43,27 +43,36 @@ class MprisController:
|
||||
"""Pausiert einen Player, wenn er im Status 'Playing' ist.
|
||||
Gibt den Bus-Namen zurück, wenn pausiert wurde, sonst None.
|
||||
"""
|
||||
player = await self._get_player_interface(bus_name)
|
||||
status = await player.get_playback_status()
|
||||
if status != "Playing":
|
||||
try:
|
||||
player = await self._get_player_interface(bus_name)
|
||||
status = await player.get_playback_status()
|
||||
if status != "Playing":
|
||||
return None
|
||||
await player.call_pause()
|
||||
return bus_name
|
||||
except Exception as e:
|
||||
logger.warning("Konnte Player %s nicht pausieren: %s", bus_name, e)
|
||||
return None
|
||||
await player.call_pause()
|
||||
return bus_name
|
||||
|
||||
async def _resume_player(self, bus_name: str) -> None:
|
||||
try:
|
||||
player = await self._get_player_interface(bus_name)
|
||||
await player.call_play()
|
||||
except Exception as e:
|
||||
logger.warning("Konnte Player %s nicht fortsetzen: %s", bus_name, e)
|
||||
|
||||
async def pause(self) -> None:
|
||||
names = await self._list_player_names()
|
||||
try:
|
||||
names = await self._list_player_names()
|
||||
except Exception as e:
|
||||
logger.warning("D-Bus nicht erreichbar, überspringe Media-Pause: %s", e)
|
||||
self._paused = []
|
||||
return
|
||||
results = await asyncio.gather(
|
||||
*(self._pause_player(n) for n in names),
|
||||
return_exceptions=True,
|
||||
)
|
||||
self._paused = [
|
||||
name for name in results
|
||||
if isinstance(name, str)
|
||||
]
|
||||
|
||||
async def _resume_player(self, bus_name: str) -> None:
|
||||
player = await self._get_player_interface(bus_name)
|
||||
await player.call_play()
|
||||
self._paused = [name for name in results if isinstance(name, str)]
|
||||
|
||||
async def resume(self) -> None:
|
||||
if not self._paused:
|
||||
|
||||
Reference in New Issue
Block a user