52 lines
1.7 KiB
Python
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)
|
|
|