0.1.3 • Published 6 years ago

spotify-quiz-questions v0.1.3

Weekly downloads
5
License
MIT
Repository
github
Last release
6 years ago

spotify-quiz-questions NPM version Build Status Dependency Status Coverage percentage

Generates questions for music quiz

Fetches tracks from playlist of your choosing. Makes additional requests to fetch 'artists top tracks' or 'related artists' to construct question. Module uses spotify-web-api-node to make requests to Spotify API.

Installation

$ npm install --save spotify-quiz-questions

Usage

const SpotifyQuizQuestions = require('spotify-quiz-questions').default

const config = {
  // client id for Spotify API
  clientId: '', 
  // client id for Spotify API
  clientSecret: '',
  // if refresh token should auto update. defaults to false.
  shouldUpdateRefreshToken: false,
}

const spotifyQuizQuestions = new SpotifyQuizQuestions(config)

const options = {
  // playlist used to generate questions. defaults to 'Top 100 tracks currently on Spotify'
  playlist: {
    name: 'Top 100 tracks currently on Spotify',
    id: '4hOKQuZbraPDIfaGbM3lKI',
    owner: 'spotify'
  },
  // "guess the artist name" or "guess the track title" type of questions
  // 'track title', 'artist name' or 'mix'. defaults to 'mix'
  questionType: 'mix',
  // number of questions, max is 12. defaults to 10.
  amount: 10
}

spotifyQuizQuestions.getQuestions(options)
  .then((questions) => {
    const q = questions[0]
    q.getChoices() // [ 'Kevin Lyttle', 'Machel Montano', 'Massari', 'Mavado' ]
    q.getRightAnswer() // 'Kevin Lyttle'
    q.evaluateAnswer('Kevin Lyttle') // true

    const track = q.getTrack()
    track.getArtist() // 'Kevin Lyttle'
    track.getArtistId() // '1GaBsp1ICIp1e6udgE7fba'
    track.getTitle() // 'Turn Me On'
    track.getAudioPreview() // 'https://p.scdn.co/mp3-preview/...'
    track.getImage() // { height: 300, width: 300, url: 'https://i.scdn.co/image/...' }
    track.getMetaData() // { httpLink: 'https://open.spotify.com/track/...', uriLink: 'spotify:track:...' }
  })
  .catch((err) => console.log(err))

Typescript

Yes! Module comes bundled with declaration files.

import SpotifyQuizQuestions from 'spotify-quiz-questions';
import {
    SpotifyClientConstructorOptions,
    QuestionOptions,
    QuestionType,
    Playlist
} from 'spotify-quiz-questions/dist/interfaces';

const config: SpotifyClientConstructorOptions = {
    clientId: '',
    clientSecret: '',
    shouldUpdateRefreshToken: false,
};

const spotifyQuizQuestions = new SpotifyQuizQuestions(config);

const options: QuestionOptions = {
    playlist: <Playlist> {
        name: 'Top 100 tracks currently on Spotify',
        id: '4hOKQuZbraPDIfaGbM3lKI',
        owner: 'spotify'
    },
    questionType: <QuestionType> 'mix',
    amount: 10
}

spotifyQuizQuestions.getQuestions(options)
    .then((questions) => {
        ...
    })
    .catch((err: any) => console.log(err));

License

MIT © Simon Johansson