Added support for progress bar display

This commit is contained in:
Phin 2024-09-23 17:23:02 +05:30
parent 3816db4204
commit 969a924488
3 changed files with 16 additions and 8 deletions

View file

@ -18,7 +18,7 @@ config: models.config.Config = {
"album": True,
"year": True,
"statusIcon": False,
"remainingTime": False,
"progressMode": "bar",
"paused": False,
"posters": {
"enabled": False,
@ -66,8 +66,11 @@ def loadConfig() -> None:
config["display"]["duration"] = not config["display"]["hideTotalTime"]
del config["display"]["hideTotalTime"]
if "useRemainingTime" in config["display"]:
config["display"]["remainingTime"] = config["display"]["useRemainingTime"]
del config["display"]["useRemainingTime"]
if "remainingTime" in config["display"]:
del config["display"]["remainingTime"]
if config["display"]["progressMode"] not in ["off", "elapsed", "remaining", "bar"]:
config["display"]["progressMode"] = "bar"
saveConfig()
class YamlSafeDumper(yaml.SafeDumper):

View file

@ -279,7 +279,7 @@ class PlexAlertListener(threading.Thread):
title = shortTitle = item.title
thumb = item.thumb
if state != "playing" and mediaType != "track":
if config["display"]["remainingTime"]:
if config["display"]["progressMode"] == "remaining":
stateStrings.append(f"{formatSeconds((item.duration - viewOffset) / 1000, ':')} left")
else:
stateStrings.append(f"{formatSeconds(viewOffset / 1000, ':')} elapsed")
@ -351,10 +351,15 @@ class PlexAlertListener(threading.Thread):
activity["buttons"] = buttons[:2]
if state == "playing":
currentTimestamp = int(time.time() * 1000)
if config["display"]["remainingTime"]:
activity["timestamps"] = { "end": round(currentTimestamp + (item.duration - viewOffset)) }
else:
activity["timestamps"] = { "start": round(currentTimestamp - viewOffset) }
match config["display"]["progressMode"]:
case "elapsed":
activity["timestamps"] = { "start": round(currentTimestamp - viewOffset) }
case "remaining":
activity["timestamps"] = { "end": round(currentTimestamp + (item.duration - viewOffset)) }
case "bar":
activity["timestamps"] = { "start": round(currentTimestamp - viewOffset), "end": round(currentTimestamp + (item.duration - viewOffset)) }
case _:
pass
if not self.discordIpcService.connected:
self.discordIpcService.connect()
if self.discordIpcService.connected:

View file

@ -20,7 +20,7 @@ class Display(TypedDict):
album: bool
year: bool
statusIcon: bool
remainingTime: bool
progressMode: str
paused: bool
posters: Posters
buttons: list[Button]