dotfiles/.local/bin/get-lyrics.py
2025-05-28 18:33:04 +02:00

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()