From d148cc0b027eec4264ccbf98c82d616c0b691676 Mon Sep 17 00:00:00 2001 From: Matthew Grove Date: Thu, 16 May 2024 16:16:22 +0100 Subject: [PATCH] Control play/pause and next/prev track with buttons on media screens --- api.py | 11 ++++++++++- app.py | 17 +++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/api.py b/api.py index 584bf8f..5b32bc9 100644 --- a/api.py +++ b/api.py @@ -70,6 +70,15 @@ class Api: else: dir = "down" self.__post(f"/api/services/media_player/volume_{dir}", {"entity_id": entity_id}) self.__post(f"/api/services/media_player/volume_{dir}", {"entity_id": entity_id}) + + def nextTrack(self, entity_id: str) -> None: + self.__post("/api/services/media_player/media_next_track", {"entity_id": entity_id}) + + def prevTrack(self, entity_id: str) -> None: + self.__post("/api/services/media_player/media_previous_track", {"entity_id": entity_id}) + + def playPause(self, entity_id: str) -> None: + self.__post("/api/services/media_player/media_play_pause", {"entity_id": entity_id}) def toggleLight(self, entity_id: str) -> None: - self.__post(f"/api/services/light/toggle", {"entity_id": entity_id}) + self.__post("/api/services/light/toggle", {"entity_id": entity_id}) diff --git a/app.py b/app.py index 5184701..cfd8a16 100644 --- a/app.py +++ b/app.py @@ -212,15 +212,28 @@ class App: def __handleMediaScreenButtons(self) -> bool: up = self.lcd.up["v"] down = self.lcd.down["v"] + keyA = self.lcd.keyA["v"] + keyX = self.lcd.keyX["v"] + keyY = self.lcd.keyY["v"] self.lcd.up["v"] = False self.lcd.down["v"] = False + self.lcd.keyA["v"] = False + self.lcd.keyX["v"] = False + self.lcd.keyY["v"] = False a = False + e = SCREENS[self.screen]["entity"] if (up): - self.api.changeVolume(SCREENS[self.screen]["entity"]) + self.api.changeVolume(e) a = True elif (down): - self.api.changeVolume(SCREENS[self.screen]["entity"], False) + self.api.changeVolume(e, False) a = True + if (keyX): + self.api.nextTrack(e) + elif (keyY): + self.api.prevTrack(e) + if (keyA): + self.api.playPause(e) return a # if (a): self.__handleMediaScreenButtons()