50 lines
1.6 KiB
Python
Executable File
50 lines
1.6 KiB
Python
Executable File
import time
|
|
from roonapi import RoonApi
|
|
|
|
appinfo = {
|
|
"extension_id": "python_roon_waybar",
|
|
"display_name": "Waybar Roon Extension",
|
|
"display_version": "1.0.0",
|
|
"publisher": "gregd",
|
|
"email": "mygreat@emailaddress.com",
|
|
}
|
|
|
|
core_id = open("/home/teraflops/apikeys/roon_core_id").read()
|
|
token = open("/home/teraflops/apikeys/roon_core_token").read()
|
|
|
|
roonapi = RoonApi(appinfo, token, "192.168.1.37", "9330", True)
|
|
|
|
|
|
def send_album_cover_notification(zone):
|
|
"""Envía una notificación con la carátula del álbum."""
|
|
album_cover_url = zone['now_playing']['image_key']
|
|
response = requests.get(
|
|
f"http://{roonapi.host}:{roonapi.port}/image/{album_cover_url}")
|
|
|
|
if response.status_code == 200:
|
|
cover_path = "/tmp/roon_album_cover.jpg"
|
|
with open(cover_path, "wb") as f:
|
|
f.write(response.content)
|
|
|
|
# Envía la notificación usando notify-send
|
|
subprocess.run([
|
|
"notify-send", "-i", cover_path, "Now Playing",
|
|
f"{zone['now_playing']['three_line']['line1']
|
|
} - {zone['now_playing']['three_line']['line2']}"
|
|
])
|
|
|
|
|
|
def get_current_track():
|
|
"""Obtiene la canción actual que está sonando en Roon."""
|
|
zones = roonapi.zones
|
|
for zone in zones.values():
|
|
if zone['state'] == 'playing':
|
|
track_name = zone['now_playing']['three_line']['line1']
|
|
artist_name = zone['now_playing']['three_line']['line2']
|
|
return f"{track_name} - {artist_name}"
|
|
return "No track playing"
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print(get_current_track())
|