parent
cc50faeb09
commit
55585a921f
After Width: | Height: | Size: 8.9 KiB |
@ -0,0 +1,79 @@
|
||||
// Last.fm API documents 👉 https://www.last.fm/api
|
||||
|
||||
import axios from "axios";
|
||||
import md5 from "crypto-js/md5";
|
||||
|
||||
const apiKey = process.env.VUE_APP_LASTFM_API_KEY;
|
||||
const apiSharedSecret = process.env.VUE_APP_LASTFM_API_SHARED_SECRET;
|
||||
const baseUrl = window.location.origin;
|
||||
const url = "https://ws.audioscrobbler.com/2.0/";
|
||||
|
||||
const sign = (params) => {
|
||||
const sortParamsKeys = Object.keys(params).sort();
|
||||
const sortedParams = sortParamsKeys.reduce((acc, key) => {
|
||||
acc[key] = params[key];
|
||||
return acc;
|
||||
}, {});
|
||||
let signature = "";
|
||||
for (const [key, value] of Object.entries(sortedParams)) {
|
||||
signature += `${key}${value}`;
|
||||
}
|
||||
return md5(signature + apiSharedSecret).toString();
|
||||
};
|
||||
|
||||
export function auth() {
|
||||
window.open(
|
||||
`https://www.last.fm/api/auth/?api_key=${apiKey}&cb=${baseUrl}/#/lastfm/callback`
|
||||
);
|
||||
}
|
||||
|
||||
export function authGetSession(token) {
|
||||
const signature = md5(
|
||||
`api_key${apiKey}methodauth.getSessiontoken${token}${apiSharedSecret}`
|
||||
).toString();
|
||||
return axios({
|
||||
url,
|
||||
method: "GET",
|
||||
params: {
|
||||
method: "auth.getSession",
|
||||
format: "json",
|
||||
api_key: apiKey,
|
||||
api_sig: signature,
|
||||
token,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function trackUpdateNowPlaying(params) {
|
||||
params.api_key = apiKey;
|
||||
params.method = "track.updateNowPlaying";
|
||||
params.sk = JSON.parse(localStorage.getItem("lastfm"))["key"];
|
||||
const signature = sign(params);
|
||||
|
||||
return axios({
|
||||
url,
|
||||
method: "POST",
|
||||
params: {
|
||||
...params,
|
||||
api_sig: signature,
|
||||
format: "json",
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function trackScrobble(params) {
|
||||
params.api_key = apiKey;
|
||||
params.method = "track.scrobble";
|
||||
params.sk = JSON.parse(localStorage.getItem("lastfm"))["key"];
|
||||
const signature = sign(params);
|
||||
|
||||
return axios({
|
||||
url,
|
||||
method: "POST",
|
||||
params: {
|
||||
...params,
|
||||
api_sig: signature,
|
||||
format: "json",
|
||||
},
|
||||
});
|
||||
}
|
Loading…
Reference in new issue