59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
import subprocess
|
|
import json
|
|
import lyricsgenius
|
|
|
|
# Reemplaza con tu token de Genius
|
|
GENIUS_API_TOKEN = "wl-5tHeP4k1CS7Y_HbhN7QYDcEvFZ89nDZUX9ddpN90pvOmfgu-zAFsFHrFUBaGg"
|
|
|
|
# Comando para obtener la información del track actual con waybar-mpris
|
|
def get_mpris_info():
|
|
try:
|
|
# Ejecutar `waybar-mpris` y obtener la salida
|
|
mpris_output = subprocess.check_output(
|
|
["waybar-mpris", "--position", "--autofocus", "--order", "ARTIST:TITLE:POSITION"],
|
|
universal_newlines=True
|
|
).strip()
|
|
|
|
# Analizar la salida de `waybar-mpris`
|
|
artist, title, position = mpris_output.split(" - ")
|
|
return {"artist": artist, "title": title, "position": position}
|
|
except subprocess.CalledProcessError:
|
|
return None
|
|
|
|
# Obtener las letras de la canción usando lyricsgenius
|
|
def get_lyrics(artist, title):
|
|
genius = lyricsgenius.Genius(GENIUS_API_TOKEN)
|
|
try:
|
|
song = genius.search_song(title, artist)
|
|
return song.lyrics if song else "Lyrics not found"
|
|
except Exception as e:
|
|
return f"Error fetching lyrics: {e}"
|
|
|
|
# Ejecutar el script
|
|
def main():
|
|
# Obtener la información del track actual
|
|
mpris_info = get_mpris_info()
|
|
if mpris_info:
|
|
artist = mpris_info.get("artist", "")
|
|
title = mpris_info.get("title", "")
|
|
position = mpris_info.get("position", "")
|
|
|
|
# Obtener las letras
|
|
lyrics = get_lyrics(artist, title)
|
|
|
|
# Crear el JSON con la información del track y las letras
|
|
output = {
|
|
"artist": artist,
|
|
"title": title,
|
|
"position": position,
|
|
"lyrics": lyrics
|
|
}
|
|
print(json.dumps(output))
|
|
else:
|
|
print(json.dumps({"status": "stopped", "lyrics": "No song playing"}))
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|