refactor(mpris): replace playerctl with Gio.DBusProxy
Use raw D-Bus via Gio.DBusProxy instead of libplayerctl. All MPRIS interactions now go through standard D-Bus property reads and method calls. - Filter out playerctld proxy (duplicates active player) - Validate art URLs (http/https/file only) - Track failed cover downloads to avoid retry loops - Remove excessive try/except around safe property reads - Add public metadata property for consumers - Fix consumer references to removed _player.props.metadata
This commit is contained in:
3 files changed
+280
-220
No files matched your search
@@ -509,7 +509,7 @@ class PlayerBox(Box):
|
||||
|
||||
def _load_initial_metadata(self):
|
||||
try:
|
||||
metadata = self.player._player.props.metadata
|
||||
metadata = self.player.metadata
|
||||
if metadata:
|
||||
keys = metadata.keys()
|
||||
self.track_title.set_label(
|
||||
@@ -529,7 +529,7 @@ class PlayerBox(Box):
|
||||
)
|
||||
except Exception as e:
|
||||
logger.warning(
|
||||
f"[expanded_player] metadata = self.player._player.props.metadata failed: {e}"
|
||||
f"[expanded_player] metadata = self.player.metadata failed: {e}"
|
||||
)
|
||||
|
||||
def update_buttons(self, player_buttons, show_buttons):
|
||||
|
||||
@@ -460,7 +460,7 @@ class PlayerBox(Box):
|
||||
self.cover_path = result
|
||||
|
||||
try:
|
||||
metadata = self.player._player.props.metadata
|
||||
metadata = self.player.metadata
|
||||
if metadata:
|
||||
keys = metadata.keys()
|
||||
self.track_title.set_label(
|
||||
@@ -472,9 +472,7 @@ class PlayerBox(Box):
|
||||
else "No Artist"
|
||||
)
|
||||
except Exception as e:
|
||||
logger.warning(
|
||||
f"[player] metadata = self.player._player.props.metadata failed: {e}"
|
||||
)
|
||||
logger.warning(f"[player] metadata = self.player.metadata failed: {e}")
|
||||
|
||||
def update_buttons(self, player_buttons, show_buttons):
|
||||
if show_buttons and len(player_buttons) > 1:
|
||||
@@ -576,7 +574,7 @@ class PlayerBox(Box):
|
||||
self.play_pause_icon.dynamic_file(
|
||||
"player/play.svg" if current_status == "paused" else "player/pause.svg"
|
||||
)
|
||||
self._on_metadata(self.player, self.player._player.props.metadata)
|
||||
self._on_metadata(self.player, self.player.metadata)
|
||||
self.set_image()
|
||||
|
||||
def _on_map(self, *_):
|
||||
|
||||
Reference in new issue
Block a user