UNPKG

spotify-now-playing

Version:

<div align="center"> <img src="https://github.com/bigarmTomi/spotify-now-playing/blob/master/docs/spotify-1.png" /> <img src="https://github.com/bigarmTomi/spotify-now-playing/blob/master/docs/spotify-2.png" /> <img src="https://github.co

116 lines (83 loc) β€’ 3.94 kB
<div align="center"> <img src="https://github.com/bigarmTomi/spotify-now-playing/blob/master/docs/spotify-1.png" /> <img src="https://github.com/bigarmTomi/spotify-now-playing/blob/master/docs/spotify-2.png" /> <img src="https://github.com/bigarmTomi/spotify-now-playing/blob/master/docs/spotify-3.png" /> </div> --- ![](https://img.shields.io/github/workflow/status/bigarmTomi/spotify-now-playing/CI) ![](https://img.shields.io/github/license/bigarmTomi/spotify-now-playing) ![](https://img.shields.io/github/package-json/v/bigarmTomi/spotify-now-playing) A lightweight Spotify API wrapper that allows you to display the music you're currently listening to 🎸🎺 ## πŸ–Š Getting started ### βͺ Prerequisites 1. Create an application in the [Spotify Developer Dashboard](https://developer.spotify.com/dashboard/) - Click on the `Edit settings` button - Set the `Redirect URIs` to a convenient location <sup>_(doesn't matter)_</sup> - Save the given `Client ID` along with the `Client Secret` 2. Retrieve the access code - Visit the following URL after replacing `$CLIENT_ID`, `$SCOPE`, and `$REDIRECT_URI` ```url https://accounts.spotify.com/authorize?response_type=code&client_id=$CLIENT_ID&scope=$SCOPE&redirect_uri=$REDIRECT_URI ``` - You can choose scope(s) by visiting the [Spotify API docs](https://developer.spotify.com/documentation/general/guides/authorization/scopes/) 3. Note `code` from the URL you were redirected to 4. Acquire your refresh token - Run the following CURL command ```ps curl -X POST https://accounts.spotify.com/api/token -d "client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&grant_type=authorization_code&code=$CODE&redirect_uri=$REDIRECT_URI" ``` - Either replace or export the variables in your shell (`$CILENT_ID`, `$CLIENT_SECRET`, `$CODE`, and `$REDIRECT_URI`) 5. Save `refresh_token` for later --- ### πŸ“š Installation ##### npm 🐻 > `npm i spotify-now-playing --save-dev` ##### or yarn 🧢 > `yarn add spotify-now-playing --dev` --- ### πŸ‘¨β€πŸ’» Usage ```ts import { SpotifyService } from 'spotify-now-playing' const Example = async () => { const spotify = new SpotifyService(CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN) const song = await spotify.getCurrentSong() if(!song.isPlaying) { return console.log('not listening to anything') } console.log(`Listening to **${song.title}** by ${song.artist.name}`) } ``` #### You can also use the library in frameworks such as Next or React πŸ‘‡ `/api/spotify.ts` ```ts // Use of backend is strongly advised as it hides internal requests that include your access token. import { NextApiRequest, NextApiResponse } from 'next' import { SpotifyService } from 'spotify-now-playing' export default async function(req: NextApiRequest, res: NextApiResponse) { const spotify = new SpotifyService(CLIENT_ID!, CLIENT_SECRET!, REFRESH_TOKEN!) const song = await spotify.getCurrentSong() res.json(song) } ``` `index.tsx` ```tsx export default function() { var { data: song } = useSWR('/api/spotify', fetcher, { refreshInterval: 5 * 1000, fallbackData: 'loading', }) if(song.title && !song.isPlaying) { return <p>Not listening to anything</p> } return( <div> <img src={ song.album?.image || 'https://cdn.albert.lol/964d7fc6' } width='150px' height='150px' /> <p>Listening to <b>{ song.title }</b> by { song.artist?.name || 'unknown' }</p> <p>Album: { song.album?.name }</p> <p>Release: { song.album?.releaseDate }</p> </div> ) } ``` Implementation of the library in Next.js can be found by [clicking here](https://github.com/bigarmTomi/arch.gay) ---