genius-lyrics-api

A JavaScript package that leverages Genius API to search and fetch song lyrics and album art.It doesn't use any native node dependencies and therefore, can be used on the client-side.

Usage no npm install needed!

<script type="module">
  import geniusLyricsApi from 'https://cdn.skypack.dev/genius-lyrics-api';
</script>

README

genius-lyrics-api npm version

A JavaScript package that leverages Genius API to search and fetch song lyrics and album art.
It doesn't use any native node dependencies and therefore, can be used on the client-side.

Installation

Install with npm

npm install --save genius-lyrics-api

Or install with Yarn

yarn add genius-lyrics-api

Usage

Get the Genius Developer Access Token

import { getLyrics, getSong } from 'genius-lyrics-api';
const options = {
    apiKey: 'XXXXXXXXXXXXXXXXXXXXXXX',
    title: 'Blinding Lights',
    artist: 'The Weeknd',
    optimizeQuery: true
};

getLyrics(options).then((lyrics) => console.log(lyrics));

getSong(options).then((song) =>
    console.log(`
    ${song.id}
    ${song.title}
    ${song.url}
    ${song.albumArt}
    ${song.lyrics}`)
);

:warning: You may get a CORS block error while testing on localhost. To bypass this, you need to disable Same-Origin Policy in your browser. You may follow the instructions here.


Types

type options {
    title: string;
    artist: string;
    apiKey: string;		// Genius developer access token
    optimizeQuery?: boolean; // Setting this to true will optimize the query for best results
    authHeader?: boolean; // Whether to include auth header in the search request. 'false' by default.
}

🚨 All properties in the options object are required except optimizeQuery and authHeader. If title or artist is unknown, pass an empty string.

type song {
    id: number;		// Genius song id
    title: string;          // Song title
    url: string;		// Genius webpage URL for the song
    lyrics: string;		// Song lyrics
    albumArt: string;	// URL of the album art image (jpg/png)
}

type searchResult {
    id: number;		// Genius song id
    url: string;		// Genius webpage URL for the song
    title: string;		// Song title
    albumArt: string;	// URL of the album art image (jpg/png)
}

Methods

genius-lyrics-api exposes the following methods:

getLyrics(options | url)

Accepts options or the url to a Genius song.
Returns a promise that resolves to a string containing lyrics. Returns null if no lyrics are found.

getAlbumArt(options)

Accepts an options object.
Returns a promise that resolves to a url (string) to the song's album art. Returns null if no url is found.

getSong(options)

Accepts an options object.
Returns a promise that resolves to an object of type song. Returns null if song is not found.

searchSong(options)

Accepts an options object.
Returns a promise that resolves to an array of type searchResult. Returns null if no matches are found.

getSongById(id: (number | string))

Accepts a valid Genius song ID. IDs can be found using the searchSong method.
Returns a promise that resolves to an object of type song.

Support

If you find this package useful, hit that sweet sweet ⭐️ button.