2025-06-02 16:51:22 +02:00

71 lines
2.3 KiB
Python
Executable File

import sys
import requests
import json
import os
with open(os.path.expanduser("~/.apikeys/musixmatch"), "r") as file:
musixmatch_token = file.read().strip()
def get_lyrics(artist, song_title):
search_url = "https://api.musixmatch.com/ws/1.1/track.search"
params = {
"q_track_artist": f"{artist} {song_title}",
"apikey": musixmatch_token,
"s_track_rating": "desc",
"f_has_lyrics": "1"
}
response = requests.get(search_url, params=params)
if response.status_code != 200:
return f"Error al buscar la canción: {response.status_code}"
data = response.json()
tracks = data.get("message", {}).get("body", {}).get("track_list", [])
if not tracks:
return "No results found for this track."
track_id = None
for t in tracks:
t_title = t["track"]["track_name"].lower()
t_artist = t["track"]["artist_name"].lower()
if song_title.lower() in t_title and artist.lower() in t_artist:
track_id = t["track"]["track_id"]
print("\n Filtered search result:")
print("Track found:", t["track"]["track_name"])
print("Artist foung:", t["track"]["artist_name"])
print("Track ID:", track_id)
print("---")
break
if not track_id:
track_id = tracks[0]["track"]["track_id"]
print("\n generic search result:")
print("Title found:", tracks[0]["track"]["track_name"])
print("Artist found:", tracks[0]["track"]["artist_name"])
print("Track ID:", track_id)
print("---")
lyrics_url = "https://api.musixmatch.com/ws/1.1/track.lyrics.get"
lyrics_params = {
"track_id": track_id,
"apikey": musixmatch_token
}
lyrics_response = requests.get(lyrics_url, params=lyrics_params)
if lyrics_response.status_code != 200:
return f"Error obtaining lyrics: {lyrics_response.status_code}"
lyrics_data = lyrics_response.json()
lyrics = lyrics_data.get("message", {}).get("body", {}).get("lyrics", {}).get("lyrics_body", "")
return lyrics or "no lyrics available."
if len(sys.argv) != 3:
print("Usage: python get_lyrics.py <artist> <song>")
sys.exit(1)
artist = sys.argv[1]
song_title = sys.argv[2]
lyrics = get_lyrics(artist, song_title)
print(lyrics)