spotify-now-playing
v1.1.4
Published
<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
Maintainers
Readme
A lightweight Spotify API wrapper that allows you to display the music you're currently listening to 🎸🎺
🖊 Getting started
⏪ Prerequisites
- Create an application in the Spotify Developer Dashboard
- Click on the
Edit settingsbutton - Set the
Redirect URIsto a convenient location (doesn't matter) - Save the given
Client IDalong with theClient Secret
- Click on the
- Retrieve the access code
Visit the following URL after replacing
$CLIENT_ID,$SCOPE, and$REDIRECT_URIhttps://accounts.spotify.com/authorize?response_type=code&client_id=$CLIENT_ID&scope=$SCOPE&redirect_uri=$REDIRECT_URIYou can choose scope(s) by visiting the Spotify API docs
- Note
codefrom the URL you were redirected to - Acquire your refresh token
Run the following CURL command
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)
- Save
refresh_tokenfor later
📚 Installation
npm 🐻
npm i spotify-now-playing --save-dev
or yarn 🧶
yarn add spotify-now-playing --dev
👨💻 Usage
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
// 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
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
