node-genius-ts
TypeScript icon, indicating that this package has built-in type declarations

0.9.0 • Public • Published

node-genius-ts

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 node-genius-ts

    or

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

Usage

General

import { createGeniusClient } from 'node-genius-ts';
 
const geniusClient = createGeniusClient(YOUR_GENIUS_API_KEY);

Environment Variables

Environment Variable default
GENIUS_API_BASE_URL https://api.genius.com

Functions

getAlbum

try {
  const response = await geniusClient.getAlbum(11798);
 
  console.log(`Album Name: ${response.album.name}`);
} catch (err) {
  // handle error
}

Params

Option type default
albumId number required

Returns

Option type
response object
response.album GeniusAlbum

getArtist

try {
  const response = await geniusClient.getArtist(1304);
 
  console.log(`Artist Name: ${response.artist.name}`);
} catch (err) {
  // handle error
}

Params

Option type default
artistId number required

Returns

Option type
response object
response.artist GeniusArtist

getArtistTracks

try {
  const { nextPage, page, tracks } = await geniusClient.getArtistTracks(1304);
 
  console.log(`${tracks.length} tracks found on page ${page}. Next page: ${nextPage}.`);
} catch (err) {
  // handle error
}

Params

Option type default
artistId number required
options object { page: 1, perPage: 50 }
options.page number 1
options.perPage number 50

Returns

Option type
response object
response.nextPage number | null
response.page number
response.tracks GeniusTrack[]

getTrack

try {
  const response = await geniusClient.getTrack(53951);
 
  console.log(`Track Title: ${response.song.title}`);
} catch (err) {
  // handle error
}

Params

Option type default
trackId number required

Returns

Option type
response object
response.track GeniusTrack

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.

Todo

  • Export extensible interfaces.

Package Sidebar

Install

npm i node-genius-ts

Weekly Downloads

4

Version

0.9.0

License

MIT

Unpacked Size

72.3 kB

Total Files

26

Last publish

Collaborators

  • maxkaradeniz