66 lines
No EOL
1.9 KiB
JavaScript
66 lines
No EOL
1.9 KiB
JavaScript
// http://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=username&api_key=YOUR_API_KEY&format=json
|
|
|
|
module.exports = async function (lastfmUsername, option) {
|
|
let tracks = [];
|
|
const options = {
|
|
"alltime": "overall",
|
|
"weekly": "7day",
|
|
"monthly": "1month",
|
|
"quarterly": "3month",
|
|
"halfyear": "6month",
|
|
"yearly": "12month",
|
|
undefined: "7day"
|
|
}
|
|
if(option.length === 0){
|
|
option[0] = "weekly"
|
|
}
|
|
|
|
option[0] = options[option[0]];
|
|
if(option[0] === undefined)
|
|
option[0] = options[option[0]];
|
|
|
|
let duration = "";
|
|
switch (option[0]){
|
|
case "overall":
|
|
duration = "all time";
|
|
break;
|
|
case "7day":
|
|
duration = "weekly";
|
|
break;
|
|
case "1month":
|
|
duration = "monthly";
|
|
break;
|
|
case "3month":
|
|
duration = "quarterly";
|
|
break;
|
|
case "6month":
|
|
duration = "half year";
|
|
break;
|
|
case "12month":
|
|
duration = "yearly";
|
|
break;
|
|
}
|
|
const apiKey = process.env.LAST_FM_API_KEY;
|
|
if(lastfmUsername != undefined){
|
|
tracks = await new Promise ((resolve, reject) => {
|
|
fetch(`https://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=${lastfmUsername}&period=${option[0]}&api_key=${apiKey}&format=json`)
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
for(let i = 0; i < 10; i++){
|
|
let track = {}
|
|
let currentTrack = data.toptracks.track[i];
|
|
track.artist = currentTrack.artist.name;
|
|
track.song = currentTrack.name;
|
|
track.playcount = currentTrack.playcount;
|
|
tracks.push(track);
|
|
}
|
|
resolve(tracks);
|
|
})
|
|
.catch(error => {
|
|
console.error(error);
|
|
reject(error);
|
|
});
|
|
});
|
|
}
|
|
return tracks;
|
|
} |