1.0.1 • Published 4 years ago

ts-genius-light v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
4 years ago

ts-genius-light

An incomplete Node library to make requests to the genius.com API.

⚠️ This library was developed for my specific usecase so it is missing a lot of functionality (and types) for things I don't need a the moment. Currently it can only get an album, an artist, a track, and tracks of an artist. I'm open for contributions though. If you're looking for a more complete library, check out: node-genius or genius-api. For lyrics scraping you could try out genius-lyrics-api.

⚠️ Since the genius.com API docs are severely lackluster, these types are not guaranteed to be correct or stable. I sampled a lot of responses and used a tool to generate types from these samples. I also omitted some attributes that I didn't need. I still return the complete response from the genius.com API though.

⚠️ All requests are made with the text_format option set to plain, this is not configurable at the moment.

Installation

  • Add package

    yarn add ts-genius-light

    or

    npm install ts-genius-light
  • Generate an API Key from docs.genius.com.

Usage

General

import createGeniusClient from 'ts-genius-light';

const geniusClient = createGeniusClient(YOUR_GENIUS_API_KEY);

Environment Variables

Environment Variabledefault
GENIUS_API_BASE_URLhttps://api.genius.com

Functions

getAlbum

try {
  const geniusResponse = await geniusClient.getAlbum(11798);

  if ('response' in geniusResponse) {
    console.log(`Album Name: ${geniusResponse.response.album.name}`);
  }
} catch (err) {
  // handle error
}

Params

Optiontypedefault
albumIdnumberrequired

getArtist

try {
  const geniusResponse = await geniusClient.getArtist(1304);

  if ('response' in geniusResponse) {
    console.log(`Artist Name: ${geniusResponse.response.artist.name}`);
  }
} catch (err) {
  // handle error
}

Params

Optiontypedefault
artistIdnumberrequired

getArtistTracks

try {
  const geniusResponse = await geniusClient.getArtistTracks(1304);

  if ('response' in geniusResponse) {
    console.log(`${geniusResponse.response.songs.length} tracks found.`);
  }
} catch (err) {
  // handle error
}

Params

Optiontypedefault
artistIdnumberrequired
optionsobject{ page: 1, perPage: 50 }
options.pagenumber1
options.perPagenumber50

getTrack

try {
  const geniusResponse = await geniusClient.getTrack(53951);

  if ('response' in geniusResponse) {
    console.log(`Track Title: ${geniusResponse.response.song.title}`);
  }
} catch (err) {
  // handle error
}

Params

Optiontypedefault
trackIdnumberrequired

Local Development

This project was bootstrapped with TSDX.

Below is a list of commands you will probably find useful.

yarn dev or npm run dev

Runs the project in development/watch mode. Your project will be rebuilt upon changes. TSDX has a special logger for you convenience. Error messages are pretty printed and formatted for compatibility VS Code's Problems tab.

Your library will be rebuilt if you make edits.

yarn build or npm run build

Bundles the package to the dist folder. The package is optimized and bundled with Rollup into multiple formats (CommonJS, UMD, and ES Module).

yarn test or npm test

Runs the test watcher (Jest) in an interactive mode. By default, runs tests related to files changed since the last commit.

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago