39 lines
1.3 KiB
Bash
Executable File
39 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Configuración: Reemplaza 'TU_API_KEY' con tu clave de API de Musixmatch
|
|
API_KEY="9f48b41952ed1a7808f0069395f6ed60"
|
|
|
|
# Obtener artista y título
|
|
artist=$(playerctl metadata artist 2>/dev/null)
|
|
title=$(playerctl metadata title 2>/dev/null)
|
|
|
|
# Verificar si los valores se obtuvieron correctamente
|
|
if [[ -z "$artist" || -z "$title" ]]; then
|
|
jq -c -n --arg text "" '{"text":$text}'
|
|
exit 0
|
|
fi
|
|
|
|
# Codificar los valores para la URL
|
|
artist_url=$(echo "$artist" | jq -s -R -r @uri)
|
|
title_url=$(echo "$title" | jq -s -R -r @uri)
|
|
|
|
# Obtener las letras usando la API de Musixmatch
|
|
response=$(curl -s "https://api.musixmatch.com/ws/1.1/matcher.lyrics.get?q_track=$title_url&q_artist=$artist_url&apikey=$API_KEY")
|
|
|
|
# Extraer las letras del JSON de respuesta
|
|
lyrics=$(echo "$response" | jq -r '.message.body.lyrics.lyrics_body')
|
|
|
|
# Manejar errores y limpiar las letras
|
|
if [[ "$lyrics" == "null" || -z "$lyrics" ]]; then
|
|
lyrics="Letras no encontradas."
|
|
else
|
|
# Eliminar retornos de carro y líneas vacías
|
|
lyrics=$(echo "$lyrics" | tr -d '\r' | sed '/^[[:space:]]*$/d')
|
|
# Eliminar la línea de uso comercial de Musixmatch
|
|
lyrics=$(echo "$lyrics" | sed '/This Lyrics is NOT for Commercial use/d')
|
|
fi
|
|
|
|
# Generar JSON compacto y seguro
|
|
jq -c -n --arg text "🎵" --arg tooltip "$lyrics" '{"text":$text,"tooltip":$tooltip}'
|
|
|