2025-05-28 18:27:10 +02:00

52 lines
1.7 KiB
Python

from roonapi import RoonApi
import time
import subprocess
appinfo = {
"extension_id": "python_roon_waybar",
"display_name": "Waybar Roon Extension",
"display_version": "1.0.0",
"publisher": "gregd",
"email": "mygreat@emailaddress.com",
}
# Lee el core_id y el token desde los archivos
try:
core_id = open("/home/teraflops/apikeys/roon_core_id").read().strip()
token = open("/home/teraflops/apikeys/roon_core_token").read().strip()
except FileNotFoundError:
print("Error: core_id o token no encontrados. Debes autorizar usando discovery.py primero.")
exit()
# Conéctate a Roon usando el core_id y el token guardados
roonapi = RoonApi(appinfo, token, "192.168.1.37", 9330, True)
def my_state_callback(event, changed_ids):
"""Llamado cuando algo cambia en Roon."""
for zone_id in changed_ids:
zone = roonapi.zones[zone_id]
if zone['state'] == 'playing':
track_name = zone['now_playing']['three_line']['line1']
artist_name = zone['now_playing']['three_line']['line2']
print(f"Canción en reproducción: {track_name} - {artist_name}")
# Actualiza Waybar usando un archivo de texto o variable
with open("/tmp/waybar_roon_track", "w") as f:
f.write(f"{track_name} - {artist_name}")
# Envía notificación de la canción
subprocess.run([
"notify-send", "Roon Now Playing",
f"{track_name} - {artist_name}"
])
# Registra el callback para recibir actualizaciones
roonapi.register_state_callback(my_state_callback)
# Mantén el script corriendo para escuchar cambios
while True:
time.sleep(10)