How to get your Spotify current track
[Esse artigo foi traduzido pelo gpt]
Sumário
Introdução
Eu vi isso no site do Cristian Granda (opens in a new tab) e achei muito legal — eu nunca tinha visto. Eu levei dois dias para fazer, mas eu vou te ensinar a fazer rápido ⚡.
Depois que eu vi o demo da API (opens in a new tab), eu pensei “easy-peasy”, e realmente é, mas chegar lá não é.
Basicamente, você precisa criar uma integração no Spotify, pegar um refresh token, pegar um auth code e então buscar a música atual. Eu travei em duas etapas: descobrir tudo e conseguir o refresh token. Mas eu achei um site muito bom (opens in a new tab), que me fez pensar que eu não sou o único fritando a cabeça para pegar um simples refresh token 😸.
Como fazer
Comece criando uma integração no Spotify Dashboard (opens in a new tab). Depois, clique em edit settings e adicione https://getyourspotifyrefreshtoken.herokuapp.com/callback em Redirect URIs.
Em seguida, copie o client id e o secret, cole os dois no site aqui (opens in a new tab), marque user-read-currently-playing e envie.
Agora você tem o refresh token da sua integração do Spotify. Use ele para conseguir um access token. Eu fiz isso com minha API pessoal usando Node.js. Olha a função getAccessToken:
import { stringify } from "qs";
const TOKEN_ENDPOINT = "https://accounts.spotify.com/api/token";
const basic = Buffer.from(`${client_id}:${client_secret}`).toString("base64");
const getAccessToken = async () => {
try {
const response = await axios.post(
TOKEN_ENDPOINT,
stringify({
grant_type: "refresh_token",
refresh_token,
}),
{
headers: {
Authorization: `Basic ${basic}`,
"Content-Type": "application/x-www-form-urlencoded",
},
}
);
return response.data;
} catch (error) {
// @ts-ignore
console.log(error.response.data);
}
}; Repara que eu usei os pacotes axios e qs, mas você pode fazer a mesma coisa usando a fetch API.
Por fim, a função que busca a música atual:
const NOW_PLAYING_ENDPOINT =
"https://api.spotify.com/v1/me/player/currently-playing?market=ES";
const getNowPlaying = async () => {
const { access_token } = await getAccessToken();
const res = await axios.get(NOW_PLAYING_ENDPOINT, {
headers: {
Authorization: `Bearer ${access_token}`,
},
});
const actualMusic = await res.data;
return actualMusic;
}; Agora você tem um JSON gigante contendo um item com todas as informações da sua música atual. Se eu estiver ouvindo Spotify agora, você vai ver na minha página about. Deve ficar assim:
Fontes
- Get currently Playing Track (opens in a new tab)
- GetYourSpotifyRefreshToken (opens in a new tab)
- Spotify Auth (opens in a new tab)
- Spotify Authorization Code Flow (opens in a new tab)