From d6cc355e40d5c435d60f613798cd88f2e404132a Mon Sep 17 00:00:00 2001 From: Karl Date: Mon, 8 Nov 2021 12:12:12 +0000 Subject: [PATCH] aync version of the screen --- sync_screen.py | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 sync_screen.py diff --git a/sync_screen.py b/sync_screen.py new file mode 100644 index 0000000..035c764 --- /dev/null +++ b/sync_screen.py @@ -0,0 +1,84 @@ +import time +import board +import adafruit_ssd1306 +from tenacity import retry, stop_after_attempt + +from mopidy_json_client import MopidyClient + +from datetime import datetime + + +@retry(stop=stop_after_attempt(5)) +def current_track(): + mopidy = MopidyClient() + if mopidy.playback.get_state() == "stopped": + oled.text("Nothing", 32, 26, 1) + oled.text("Playing", 32, 36, 1) + return + if mopidy.playback.get_state() == "paused": + oled.text("Paused", 32, 36, 1) + return + current_track_data = mopidy.playback.get_current_track() + time_position = datetime.fromtimestamp( + mopidy.playback.get_time_position() / 1000.0 + ).strftime("%M:%S") + if "ytmusic" in current_track_data["uri"]: + if "album" in current_track_data: + totalTime = current_track_data["length"] + track_total_length = datetime.fromtimestamp(totalTime / 1000.0).strftime( + "%M:%S" + ) + current_data = { + "Artist": current_track_data["artists"][0]["name"], + "Album": current_track_data["album"]["name"], + "Song": current_track_data["name"], + "TrackTime": time_position + "/" + track_total_length, + } + elif "ytmusic:track" in current_track_data["uri"]: + totalTime = current_track_data["length"] + track_total_length = datetime.fromtimestamp(totalTime / 1000.0).strftime( + "%M:%S" + ) + current_data = { + "Artist": "-", + "Album": current_track_data["artists"][0]["name"], + "Song": current_track_data["name"], + "TrackTime": time_position + "/" + track_total_length, + } + else: + try: + stream_title = mopidy.playback.get_stream_title() + artist_and_song = stream_title.split(" - ") + except: + stream_title = "None" + artist_and_song = ["None", "None"] + current_data = { + "Artist": current_track_data["album"]["name"], + "Album": artist_and_song[0], + "Song": artist_and_song[1], + "TrackTime": time_position, + } + mopidy.disconnect() + oled.text(current_data["Artist"], 0, 16, 1) + oled.text(current_data["Album"], 0, 26, 1) + oled.text(current_data["Song"], 0, 36, 1) + oled.text(current_data["TrackTime"], 0, 46, 1) + return + + +WIDTH = 128 +HEIGHT = 64 + +# Use for I2C. +i2c = board.I2C() +oled = adafruit_ssd1306.SSD1306_I2C(WIDTH, HEIGHT, i2c, addr=0x3C) + + +while True: + oled.fill(0) + oled.text("Floppy Player", 26, 0, 1) + current_track() + oled.show() + time.sleep(2) + +