ritual.sh/static/js/nowplaying.js
2024-02-13 11:04:53 +00:00

77 lines
2.8 KiB
JavaScript
Executable file

const URL_BASE = "https://ws.audioscrobbler.com/2.0/?method=";
const TRACK_METHOD = "user.getrecenttracks&user=";
const KEY_PARAM = "&api_key="
const MB_PARAM = "&mbid="
const REQ_PARAMS = "&format=json&limit=1"
function getDetail(item, requestType, key) {
const detailNode = document.getElementById(requestType);
if (Object.values(item).indexOf('mbid') > -1) {
const detailUrl = URL_BASE + requestType + ".getinfo" + KEY_PARAM + key + MB_PARAM + item["mbid"] + REQ_PARAMS
let detailRequest = null;
if (window.XMLHttpRequest) {
detailRequest = new XMLHttpRequest();
} else {
detailRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
detailRequest.onreadystatechange = function () {
if (detailRequest.readyState === XMLHttpRequest.DONE) {
if (detailRequest.status === 200) {
const response = JSON.parse(detailRequest.responseText);
detailNode.setAttribute("href", response[requestType]["url"])
detailNode.innerText = response[requestType]["name"]
}
}
}
detailRequest.open('GET', detailUrl, true);
detailRequest.send();
} else {
detailNode.setAttribute("href", "#")
detailNode.innerText = item["#text"]
}
}
function getLastTrack(user, key) {
const recentTracksUrl =
URL_BASE + TRACK_METHOD + user + KEY_PARAM + key + REQ_PARAMS
if (window.XMLHttpRequest) {
httpRequest = new XMLHttpRequest();
} else {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
httpRequest.onreadystatechange = function () {
if (httpRequest.readyState === XMLHttpRequest.DONE) {
const titleNode = document.getElementById("tracktitle");
const imageNode = document.getElementById("trackart");
const albumNode = document.getElementById("album")
if (httpRequest.status === 200) {
const response = JSON.parse(httpRequest.responseText);
const recentTrack = response.recenttracks.track[0];
console.log(recentTrack)
titleNode.innerText = recentTrack.name;
titleNode.setAttribute("href", recentTrack.url);
titleNode.setAttribute("title", recentTrack.name + " by " + recentTrack.artist["#text"]);
imageNode.setAttribute("src", recentTrack.image[3]["#text"]);
getDetail(recentTrack.album, "album", key)
getDetail(recentTrack.artist, "artist", key)
} else {
titleNode.innerText = "Please Try Again";
imageNode.setAttribute("src", "/images/OoO.png");
albumNode.innerText = "Last.fm"
}
}
}
httpRequest.open('GET', recentTracksUrl, true);
httpRequest.send();
}