Top 10 Lyrics API Recommendations for Comprehensive Music Data

Jennie Lee
7 min readMar 30, 2024

--

Looking for a Postman alternative?

Try APIDog, the Most Customizable Postman Alternative, where you can connect to thousands of APIs right now!

Introduction to the Spotify and Genius APIs

As the popularity of music streaming platforms continues to rise, there is a growing demand for comprehensive music data, including song lyrics. In this article, we will explore how to harness the power of Lyrics APIs to access and retrieve song lyrics from popular music streaming services like Spotify and Genius.com.

The Motivation for Creating the Python Script

The motivation behind creating a Python script to fetch song lyrics from Spotify stems from the desire to enhance the music listening experience. By seamlessly integrating lyrics into the music player, users can easily follow along and sing along to their favorite songs. The combination of Spotify and Genius APIs provides an excellent opportunity to achieve this goal.

Overview of the Spotify API and its Capabilities

The Spotify API allows developers to interact with the Spotify music service, providing access to a wide range of music-related data. With this API, you can search for tracks, albums, artists, playlists, and more. It also allows you to control playback, retrieve metadata for currently playing songs, and obtain audio analysis for tracks.

Introduction to the Genius.com API for Song Lyrics

Genius.com, a popular website dedicated to music, provides an extensive library of annotated song lyrics. The Genius.com API offers a public interface for accessing this vast collection of lyrics. With this API, you can search for songs, retrieve song lyrics, and obtain additional information such as song annotations and artist information.

Connecting to Spotify using the D-Bus interface (MPRIS)

To start retrieving song lyrics from Spotify, we need to establish a connection to the Spotify application running on our computer. We can achieve this by utilizing the D-Bus interface, specifically the MPRIS (Media Player Remote Interfacing Specification) protocol.

Step-by-Step Guide to Connect to Spotify

To connect to Spotify, you’ll need to follow these steps:

  1. Import the necessary libraries, including the dbus library for communication via D-Bus and the gi.repository module for GDBus support.
  2. Create a SessionBus instance using the dbus.SessionBus() method.
  3. Retrieve the Spotify MediaPlayer2 object path by calling the get_object_path() method on the SessionBus instance and passing in the D-Bus name of the Spotify application.
  4. Extract the metadata for the currently playing song by calling the get() method on the MediaPlayer2 object and passing in the desired metadata property, such as Metadata.Artist and Metadata.Title.

Code Snippets and Examples for Establishing Connection

Here’s a sample code snippet that demonstrates how to connect to Spotify and extract the metadata for the currently playing song:

import dbus
from gi.repository import GLib

bus = dbus.SessionBus()

# Specify the D-Bus name of the Spotify application
spotify_bus_name = "org.mpris.MediaPlayer2.spotify"

# Retrieve the Spotify MediaPlayer2 object path
spotify_object_path = bus.get_object_path(spotify_bus_name, "/org/mpris/MediaPlayer2")

# Extract the metadata for the currently playing song
metadata = spotify_object_path.Get("org.mpris.MediaPlayer2.Player", "Metadata", dbus_interface="org.freedesktop.DBus.Properties")

# Retrieve the artist and title from the metadata
artist = metadata.get("xesam:artist")[0]
title = metadata.get("xesam:title")

print(f"Currently playing: {artist} - {title}")

Running this code will output the artist and title of the currently playing song in Spotify.

Accessing the Genius API and Obtaining the Access Token

To fetch the lyrics for the currently playing song, we need to interact with the Genius.com API. Before we can do that, we must obtain an access token for authentication purposes.

Creating a Genius API Client

To create a Genius API client, follow these steps:

  1. Sign up for a Genius.com account if you don’t have one already.
  2. Go to the Genius API website and create a new API client.
  3. Fill in the required details, such as the name and website URL of your application.
  4. After creating the client, you will receive a client ID and a client secret. These will be used to obtain the access token.

Obtaining the Access Token for API Authentication

To obtain an access token for the Genius API, we need to make a request to the Genius API OAuth endpoint. Here’s an overview of the process:

  1. Construct the authorization URL by appending the client ID and other necessary parameters to the endpoint URL.
  2. Redirect the user to this authorization URL, where they will be prompted to grant permission to your application. Once they grant permission, they will be redirected back to the specified redirect URL, along with an authorization code.
  3. Exchange the authorization code for an access token by making a POST request to the Genius API token endpoint. Include the client ID, client secret, redirect URL, and authorization code in the request body.
  4. If the request is successful, you will receive an access token in the response.

Explaining the Importance of the Access Token in the Script

The access token obtained from the Genius API is crucial for authenticating our requests to fetch song lyrics. Without a valid access token, we won’t be able to access the protected resources provided by the Genius.com API.

Moreover, the access token allows us to make authenticated requests on behalf of our application, ensuring that we stay within the rate limits imposed by the Genius API.

Searching for a Song in the Genius API

To retrieve the lyrics for the currently playing song, we need to search for it in the Genius.com API. By passing the song title and artist as parameters, we can find the corresponding lyrics. Let’s take a look at the necessary steps:

Making a Request to the Genius API with the Song Title and Artist

To search for a song in the Genius API, follow these steps:

  1. Construct the search URL by appending the song title and artist to the Genius API base URL.
  2. Include the access token as an Authorization header in the request.
  3. Make a GET request to the search URL.

Understanding the Genius API Response

The Genius API response contains information about the search results for the provided song title and artist. It includes metadata about the songs, such as the title, artist, and URL for each individual song.

Extracting the Song URL from the Genius API Response

To extract the URL for the song, we need to parse the Genius API response and retrieve the appropriate information. By examining the structure of the response, we can extract the necessary data to construct the URL for the song.

Once we have the URL, we can proceed to the next step of scraping the lyrics.

Scraping Lyrics from the Song URL using BeautifulSoup

To scrape the lyrics from the song URL obtained from the Genius API, we will use the BeautifulSoup library. BeautifulSoup provides a convenient way to parse HTML and extract the desired content.

Introduction to BeautifulSoup Library for Web Scraping

BeautifulSoup is a Python library that allows us to parse HTML and XML documents. It provides easy-to-use methods and classes for navigating and extracting data from structured markup.

Code Examples for Scraping Lyrics from HTML

Here’s a code snippet that demonstrates how to use BeautifulSoup to scrape lyrics from an HTML page:

from bs4 import BeautifulSoup
import requests

# URL of the song lyrics page
url = "https://genius.com/artist-name/song-title-lyrics"

# Send a GET request to the URL and retrieve the HTML content
response = requests.get(url)

# Create a BeautifulSoup object and specify the parser
soup = BeautifulSoup(response.content, "html.parser")

# Find the element that contains the lyrics
lyrics_element = soup.find("div", class_="lyrics")

# Extract the text of the lyrics
lyrics = lyrics_element.get_text().strip()

print(lyrics)

Running this code will output the lyrics for the specified song.

Handling Different HTML Structures and Exceptions

It’s important to note that the structure of HTML can vary across different websites and even different songs on Genius.com. Therefore, it’s essential to consider different HTML structures when scraping lyrics.

Additionally, exceptions may occur when parsing the HTML or when retrieving the lyrics element. It’s recommended to handle these exceptions gracefully and provide appropriate error messages or fallback logic.

Instructions for Using the Python Script

To use the Python script for fetching song lyrics from Spotify, you need to follow these instructions:

Cloning the Repository and Setting Up Dependencies

  1. Clone the repository containing the Python script from the provided GitHub link.
  2. Install the necessary dependencies by running pip install -r requirements.txt in your terminal.

Adding Your Genius API Access Token to the Script

  1. Retrieve your Genius API access token by following the steps outlined earlier.
  2. Open the Python script in a text editor.
  3. Locate the genius_access_token variable and replace its value with your obtained access token.

Running the Script and Retrieving Lyrics for the Currently Playing Song

  1. Make sure Spotify is running on your computer and playing a song.
  2. In your terminal, navigate to the directory where the Python script is located.
  3. Run the script by executing python get_lyrics.py.
  4. The script will connect to Spotify, retrieve the metadata for the currently playing song, search for the lyrics on Genius.com, and output the lyrics for that song.

Additional Functionalities in the Repository

Apart from fetching lyrics for the currently playing song, the repository also includes additional functionalities:

Exploring the Repository for Search Functionality

The script allows users to search for lyrics by passing the artist name and song title as command-line arguments. It uses the Genius API to search for the specified song and retrieves the lyrics if a match is found.

Performing Song Search by Passing the Artist and Song Names

To perform a song search using the script, execute the command python get_lyrics.py --artist "artist name" --title "song title". Replace "artist name" and "song title" with the desired artist and song information.

Highlighting the Versatility

By providing search functionality, the Python script offers users the flexibility to fetch lyrics for any song of their choice, not just the currently playing one on Spotify. This versatility expands the script’s usefulness and allows users to explore lyrics for a wide range of songs.

In conclusion, integrating the Spotify and Genius APIs with a Python script allows us to fetch song lyrics conveniently. By following the step-by-step guide, you can set up the necessary connections, retrieve metadata from Spotify, obtain an access token from the Genius API, perform searches, and scrape lyrics from the Genius.com website. The provided sample codes and instructions make it easy to implement the script and enhance your music listening experience.

Looking for a Postman alternative?

Try APIDog, the Most Customizable Postman Alternative, where you can connect to thousands of APIs right now!

--

--