diff --git a/PFPs.json b/PFPs.json new file mode 100644 index 0000000..9304934 --- /dev/null +++ b/PFPs.json @@ -0,0 +1,28 @@ +{ + "default": [ + { + "name": "Misery", + "pfpRoot": "/pfps/Misery/", + "pfps": { + "online": ["MiseryBedHappy.png"], + "dnd": ["MiseryBedAngry.png"], + "idle": ["MiseryBedNeutral.png"], + "offline": [], + "fallback": "/pfps/Misery/MiseryBedNeutral.png" + } + } + ], + "christmas": [ + { + "name": "Misery", + "pfpRoot": "/pfps/Misery/", + "pfps": { + "online": ["MiserySantaHappy.png"], + "dnd": ["MiserySantaAngry.png"], + "idle": ["MiserySantaNeutral.png"], + "offline": [], + "fallback": "/pfps/Misery/MiserySantaNeutral.png" + } + } + ] +} \ No newline at end of file diff --git a/basicDocs.json b/basicDocs.json index 0a943f7..ee86a42 100644 --- a/basicDocs.json +++ b/basicDocs.json @@ -3,7 +3,7 @@ "documentation": "https://codeberg.org/Bingus_Violet/api.violets-purgatory.dev", "current_commands": { "/v1/pfp": { - "description": "Generates a random PFP. For use on the main page & with UserPFP on Discord." + "description": "Generates a (biased) random PFP. For use on the main page & with UserPFP on Discord." }, "/v1/lanyard": { "description": "Fetches the most recently updated Lanyard update. Only gives data about *my* lanyard status. Don't worry about 'overusing' this, as it doesn't call a request to Lanyard or Discord everytime, it just gets the most recent data gathered by the web socket. Mainly designed to prevent my many sites from overloading the Lanyard socket, but also so that I can add extra features in the future if I so desire." diff --git a/index.js b/index.js index e404424..a436a5f 100644 --- a/index.js +++ b/index.js @@ -11,6 +11,8 @@ var lanyardData = "Nothing Fetched yet!" var sockets = [] +var pfpSeason = "default" + function randomFileInDir(directory) { var dir = fs.readdirSync(directory) return path.join(directory, dir[Math.floor(Math.random() * dir.length)]) @@ -23,7 +25,26 @@ app.get("/", (req, res) => { }) app.get("/v1/pfp", (req, res) => { - res.sendFile(randomFileInDir(path.join(__dirname, 'pfps'))) + var time = new Date(Date.now()) + if ([11, 12, 1].includes(time.getMonth() + 1)) { + pfpSeason = "christmas" + } + + var pfpConfig = JSON.parse(fs.readFileSync(path.join(__dirname, "PFPs.json")))[pfpSeason] + var characterNumb = time.getDate() % pfpConfig.length + var char = pfpConfig[characterNumb] + var pfps = char.pfps + + try { + var status = lanyardData.d.discord_status + var pfpPool = pfps[status] + var rand = Math.floor(Math.random() * pfpPool.length) + var pfp = path.join(__dirname, char.pfpRoot, pfpPool[rand]) + res.sendFile(pfp) + } catch (error) { + var pfp = path.join(__dirname, char.fallback) + res.sendFile(pfp) + } }) app.get("/v1/lanyard", (req, res) => { diff --git a/pfps/MiseryBedAngry.png b/pfps/Misery/MiseryBedAngry.png similarity index 100% rename from pfps/MiseryBedAngry.png rename to pfps/Misery/MiseryBedAngry.png diff --git a/pfps/MiseryBedHappy.png b/pfps/Misery/MiseryBedHappy.png similarity index 100% rename from pfps/MiseryBedHappy.png rename to pfps/Misery/MiseryBedHappy.png diff --git a/pfps/MiseryBedNeutral.png b/pfps/Misery/MiseryBedNeutral.png similarity index 100% rename from pfps/MiseryBedNeutral.png rename to pfps/Misery/MiseryBedNeutral.png diff --git a/pfps/MiserySantaAngry.png b/pfps/Misery/MiserySantaAngry.png similarity index 100% rename from pfps/MiserySantaAngry.png rename to pfps/Misery/MiserySantaAngry.png diff --git a/pfps/MiserySantaHappy.png b/pfps/Misery/MiserySantaHappy.png similarity index 100% rename from pfps/MiserySantaHappy.png rename to pfps/Misery/MiserySantaHappy.png diff --git a/pfps/MiserySantaNeutral.png b/pfps/Misery/MiserySantaNeutral.png similarity index 100% rename from pfps/MiserySantaNeutral.png rename to pfps/Misery/MiserySantaNeutral.png diff --git a/pfps/Stocking.webp b/pfps/Stocking/Stocking.webp similarity index 100% rename from pfps/Stocking.webp rename to pfps/Stocking/Stocking.webp