const path = require("path"), fs = require("fs") var constants = JSON.parse(fs.readFileSync(path.join(__dirname, 'constants.json'))) function get_img_url(activity, size = "large_image") { if ("assets" in activity) { var image = activity.assets[size] if (image) { if (image.includes("https/")) { return decodeURIComponent('https://' + image.substr(image.indexOf('https/') + 6, image.length)) } else if (image.includes("spotify")) { return decodeURIComponent('https://i.scdn.co/image/' + image.substr(image.indexOf('spotify:') + 8, image.length)) } else { return decodeURIComponent('https://cdn.discordapp.com/app-assets/' + activity.application_id + "/" + image + ".png") } } } if (!image && size == "large_image") { } return null } function makeCompat(string="") { return string.replaceAll("<", "<").replaceAll(">", ">") } function timeFormatter(seconds) { seconds = Math.ceil(seconds / 1000) var minutes = Math.floor(seconds / 60) if (seconds % 60 < 10) { return `${minutes}:0${seconds % 60}` } else { return `${minutes}:${seconds % 60}` } } function gameTimeFormatter(seconds) { seconds = Math.ceil(seconds / 1000) var minutes = Math.ceil(seconds / 60) var hours = Math.floor(minutes / 60) if (seconds <= 60) { return 'about ' + seconds + ' seconds' } else if (minutes < 60) { return `${minutes} Minutes` } return `${hours} hours and ${minutes % 60} minutes` } function onlyIfExists(string, check) { if (check) { return string } else { return "" } } module.exports = { activitiesToHTML: (lanyardData, cachedImages) => { var debounce = false var addedHTML = "" if (lanyardData && lanyardData.activities.length > 0) { for (let index = 0; index < lanyardData.activities.length; index++) { const activity = lanyardData.activities[index]; var found = false for (let index = 0; index < lanyardData.activities.length; index++) { const act = lanyardData.activities[index] if (act.name == activity.name) { if (Object.keys(act).length > Object.keys(activity).length) { found = true } } } if (found) { continue } function get_img(activity, size = "large_image") { return "https://cache.violets-purgatory.dev/cached/" + get_img_url(activity, size) } function activityTime() { if (activity.timestamps) { if (activity.timestamps.start) { if (activity.timestamps.end) { var timeLeft = Math.round((activity.timestamps.end - Date.now()) / 1000) var currentPercent = (Date.now() - activity.timestamps.start) / (activity.timestamps.end - activity.timestamps.start) * 100 return `
${timeFormatter((Date.now() - activity.timestamps.start))}/${timeFormatter((activity.timestamps.end - activity.timestamps.start))} ` } else { return ` ${gameTimeFormatter((Date.now() - activity.timestamps.start))} ` } } else if (activity.timestamps.end) { return ` ${timeFormatter((activity.timestamps.end - Date.now()))} left ` } } } if (activity.type != 4 && activity.assets) { var time = activity.created_at if (activity.timestamps) { time = activity.timestamps.start } if (!activity.assets) { activity.assets = { "large_text": "", "small_text": "" } } var text1 = onlyIfExists("
" + makeCompat(activity.song) + "", activity.song) || activity.details var text2 = onlyIfExists("By: " + activity.artist, activity.artist) || activity.state var text3 = onlyIfExists("On: " + activity.album, activity.album != activity.song && activity.album) addedHTML += `
${onlyIfExists(``, activity.assets.small_image)}

${activity.name} ${onlyIfExists("
" + text1, text1)} ${onlyIfExists("
" + makeCompat(text2), text2)} ${onlyIfExists("
" + makeCompat(text3), text3)} ${onlyIfExists("
" + activityTime(), activityTime())}

` } } } if (addedHTML.length > 10) { addedHTML = `


What I'm up to:

` + addedHTML addedHTML += "
" } return addedHTML } }