diff --git a/config.json b/config.json index 78ac5f0..f718e16 100644 --- a/config.json +++ b/config.json @@ -2,7 +2,24 @@ "activityImages": { "ULTRAKILL": "https://fs.violets-purgatory.dev/ULTRAKILL/etc/DiscordIcon.webp" }, - + "discStatuses": { + "online": { + "text": "Online", + "color": "rgb(100, 255, 100)" + }, + "dnd": { + "text": "DND", + "color": "rgb(255, 100, 100)" + }, + "idle": { + "text": "Idle", + "color": "rgb(255, 255, 75)" + }, + "offline": { + "text": "", + "color": "rgb(175, 175, 200)" + } + }, "quotes": [ "Remember the 14th commandment: Thou shalt always clean thy plate and not waste anything, whether thy stomach is full, or not.", "Remember son, dying is gay!", diff --git a/index.js b/index.js index d4c9e6c..645bdef 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,6 @@ const express = require('express'), path = require('path'), fs = require('fs'), - WebSocket = require('ws'), - minify = require('minify-html'), pageUpdater = require('./pageUpdater.js') var app = express() @@ -10,23 +8,13 @@ var app = express() const PORT = process.env.PORT || 8080 const staticpath = path.join(__dirname, 'static') -const resourcePath = path.join(__dirname, 'resources') -const mainpage = resourcePath + '/mainPage.html' var lanyardData = undefined var config = JSON.parse(fs.readFileSync(path.join(__dirname, 'config.json'))) var thumborInstances = config.thumborInstances -var activityImages = config.activityImages - -var highlight = config.highlightedWords - -var uptime = Date.now() -var lastLanyardUpdate = Date.now() -var lastPong = Date.now() - var thumbCount = 0 function getThumbor() { @@ -38,8 +26,6 @@ app.listen(PORT, () => { console.log("Violet's Purgatory is now listening on port: " + PORT) }) -var cachedImages = {} - if (!fs.existsSync(path.join(staticpath, 'cached'))) { fs.mkdirSync(path.join(staticpath, 'cached')) } @@ -48,31 +34,6 @@ var randomQuotes = config.quotes var commitCount = "300+" -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) { - if (activity.name in activityImages) { - return decodeURIComponent(activityImages[activity.name]) - } else { - return null - } - } -} - function timeFormatter(seconds) { seconds = Math.ceil(seconds) var minutes = Math.floor(seconds / 60) @@ -99,71 +60,4 @@ function gameTimeFormatter(seconds) { } -app.use(pageUpdater.middleWare) - -// Lanyard Stuffs - -function socketeer() { - var lanyard = new WebSocket('https://api.violets-purgatory.dev') - function ping(dur) { - lanyard.send(JSON.stringify({ - op: 3 - })) - setTimeout(() => { - ping(dur) - if (Date.now() - lastPong > 120000) { - console.log("FUCK!") - lanyard.close() - socketeer() - } - }, dur); - } - - lanyard.addEventListener("message", async (res) => { - var data = JSON.parse(res.data) - if (data.op == 1) { - ping(30000) - lastPong = Date.now() - } else if (data.op == 3) { - lastPong = Date.now() - } else if (data.op == 0) { - lanyardData = data.d - lastLanyardUpdate = Date.now() - - for (let index = 0; index < lanyardData.activities.length; index++) { - const activity = lanyardData.activities[index]; - - if (get_img_url(activity)) { - var url = get_img_url(activity) - var fn = Math.ceil(Math.random() * 100_000_000_000).toString() - var fp = path.join(__dirname, 'static/cached', fn) - - if (!cachedImages[url]) { - const response = await (await fetch(url)).arrayBuffer() - - fs.writeFileSync(fp, Buffer.from(response)) - - cachedImages[url] = fn - } - } - - if (get_img_url(activity, "small_image")) { - var url = get_img_url(activity, "small_image") - var fn = Math.ceil(Math.random() * 100_000_000_000).toString() - var fp = path.join(__dirname, 'static/cached', fn) - - if (!cachedImages[url]) { - const response = await (await fetch(url)).arrayBuffer() - - fs.writeFileSync(fp, Buffer.from(response)) - - cachedImages[url] = fn - } - } - } - - } - }) -} - -socketeer() \ No newline at end of file +app.use(pageUpdater.middleWare) \ No newline at end of file diff --git a/pageUpdater.js b/pageUpdater.js index 2918eef..6afd500 100644 --- a/pageUpdater.js +++ b/pageUpdater.js @@ -1,5 +1,7 @@ const path = require('path'), - fs = require('fs') + fs = require('fs'), + WebSocket = require('ws'), + minify = require('minify-html') var config = JSON.parse(fs.readFileSync(path.join(__dirname, 'config.json'))) @@ -9,51 +11,32 @@ var titles = config.titles var commitCount = "300+" -function makeStars() { - var html = "" +var lanyardData = undefined - for (let index = 0; index < 35; index++) { - html += `
` - } - html += "" - - return html -} +var uptime = Date.now() function converter(html) { - html = html.replaceAll("{BG_EFFECT}", makeStars()) + if (lanyardData) { + var statusData = config.discStatuses[lanyardData.discord_status] + } else { + var statusData = config.discStatuses.offline + } + var replacers = { + "COMMIT_COUNT": commitCount, + "RANDOM_QUOTE": quotes[Math.floor(Math.random() * quotes.length)], + "QUOTE_COUNT": quotes.length, + "RANDOM_TITLE": titles[Math.floor(Math.random() * titles.length)], + "DISCORD_STATUS": + `${statusData.text}` + + `` + } - html = html.replaceAll("{COMMIT_COUNT}", commitCount) + var rpTable = Object.keys(replacers) - html = html.replaceAll("{RANDOM_QUOTE}", quotes[Math.floor(Math.random() * quotes.length)]) - - html = html.replaceAll("{QUOTE_COUNT}", quotes.length) - - html = html.replaceAll("{RANDOM_TITLE}", titles[Math.floor(Math.random() * titles.length)]) + for (let index = 0; index < rpTable.length; index++) { + const text = rpTable[index]; + html = html.replaceAll(`{${text}}`, replacers[text]) + } var highTable = Object.keys(highlightedWords) for (let index = 0; index < highTable.length; index++) { @@ -99,4 +82,103 @@ async function updateCommits() { commitCount = commits } -updateCommits() \ No newline at end of file +updateCommits() + +// Lanyard Stuffs + +var lastLanyardUpdate = Date.now() +var lastPong = Date.now() + +var activityImages = config.activityImages +var cachedImages = {} + +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) { + if (activity.name in activityImages) { + return decodeURIComponent(activityImages[activity.name]) + } else { + return null + } + } +} + + +function socketeer() { + var lanyard = new WebSocket('https://api.violets-purgatory.dev') + function ping(dur) { + lanyard.send(JSON.stringify({ + op: 3 + })) + setTimeout(() => { + ping(dur) + if (Date.now() - lastPong > 120000) { + console.log("FUCK!") + lanyard.close() + socketeer() + } + }, dur); + } + + lanyard.addEventListener("message", async (res) => { + var data = JSON.parse(res.data) + if (data.op == 1) { + ping(30000) + lastPong = Date.now() + } else if (data.op == 3) { + lastPong = Date.now() + } else if (data.op == 0) { + lanyardData = data.d + lastLanyardUpdate = Date.now() + + for (let index = 0; index < lanyardData.activities.length; index++) { + const activity = lanyardData.activities[index]; + + if (get_img_url(activity)) { + var url = get_img_url(activity) + var fn = Math.ceil(Math.random() * 100_000_000_000).toString() + var fp = path.join(__dirname, 'static/cached', fn) + + if (!cachedImages[url]) { + const response = await (await fetch(url)).arrayBuffer() + + fs.writeFileSync(fp, Buffer.from(response)) + + cachedImages[url] = fn + } + } + + if (get_img_url(activity, "small_image")) { + var url = get_img_url(activity, "small_image") + var fn = Math.ceil(Math.random() * 100_000_000_000).toString() + var fp = path.join(__dirname, 'static/cached', fn) + + if (!cachedImages[url]) { + const response = await (await fetch(url)).arrayBuffer() + + fs.writeFileSync(fp, Buffer.from(response)) + + cachedImages[url] = fn + } + } + } + + } + }) +} + +socketeer() \ No newline at end of file diff --git a/static/index.html b/static/index.html index 43f4812..97bf06d 100644 --- a/static/index.html +++ b/static/index.html @@ -2,7 +2,7 @@ - + @@ -26,45 +26,44 @@ {COMMIT_COUNT}

{RANDOM_QUOTE}

-
-

Violet

-
- -
-

They/Them

-

Developer

-

{DISCORD_STATUS}

-
-
+
+

Violet

+
+
-
- - -

FileShare

-

Socials

-

Projects

-

Donate -

- - -
- -

Blog

-

FAQ

-

Dev Branch

- -
-

Hi! I'm Violet, a 15 year old web and game developer.
- I aspire to make fast and javascript free websites! I'm currently learning the Godot Engine, and have been - becoming quite fluent in NodeJS.

+

They/Them

+

Developer

+

{DISCORD_STATUS}

-

Although my site is pretty barebones at the moment due to a recent rewrite, I hope to continue with this +

+
+ + +

Donate

+ +

FileShare

+ + + + + + + +

Blog

+ +

Dev Branch

+ +
+

Hi! I'm Violet, a 15 year old web and game developer.
+ I aspire to make fast and javascript free websites! I'm currently learning the Godot Engine, and + have been + becoming quite fluent in NodeJS.

+
+
+

Although my site is pretty barebones at the moment due to a recent rewrite, I hope to continue with this passion and update this website along with it.

-

As is probably very obvious, I'm not great at graphic design at the moment, but I hope to improve upon that - as time goes on.
I'm sure you can tell I have a pretty low self esteem too... -