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)