mirror of
https://github.com/ssyyhhrr/stewardle.git
synced 2025-11-08 10:33:46 -05:00
Driver of the Day Persistence
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
node_modules
|
||||
driver.txt
|
||||
drivers.json
|
||||
stats.json
|
||||
.idea
|
||||
63
app.js
63
app.js
@@ -6,12 +6,15 @@ const express = require("express")
|
||||
const favicon = require("serve-favicon")
|
||||
const morgan = require("morgan")
|
||||
const dayjs = require("dayjs")
|
||||
const process = require("process")
|
||||
const {v4: uuidv4} = require("uuid")
|
||||
|
||||
const version = uuidv4()
|
||||
|
||||
const driversPath = "./assets/drivers.json"
|
||||
const statsPath = "./assets/stats.json"
|
||||
const driverPath = "./assets/driver.txt"
|
||||
const pastPath = "./assets/past.json"
|
||||
|
||||
const flag = {
|
||||
"British": "gb",
|
||||
@@ -71,7 +74,23 @@ let driver
|
||||
|
||||
let year = new Date().getFullYear()
|
||||
|
||||
main()
|
||||
axios.get("https://ergast.com/api/f1/1950/driverStandings.json?limit=1000").then(async () => {
|
||||
await updateDrivers()
|
||||
}).catch(() => {
|
||||
console.log("API is unreachable! Not updating drivers...")
|
||||
if (fs.existsSync(driversPath)) {
|
||||
let data = fs.readFileSync(driversPath)
|
||||
drivers = JSON.parse(data)
|
||||
} else {
|
||||
throw "Ergast API is unreachable and the drivers.json cache has not been built. Please try again when the Ergast API is online."
|
||||
}
|
||||
}).catch(err => {
|
||||
console.log(err)
|
||||
return process.exit(1)
|
||||
}).then(() => {
|
||||
dotd(true)
|
||||
server()
|
||||
})
|
||||
|
||||
schedule.scheduleJob("59 23 * * *", async () => {
|
||||
axios.get("https://ergast.com/api/f1/1950/driverStandings.json?limit=1000").then(async () => {
|
||||
@@ -97,24 +116,6 @@ schedule.scheduleJob("0 0 * * *", () => {
|
||||
dotd()
|
||||
})
|
||||
|
||||
async function main() {
|
||||
axios.get("https://ergast.com/api/f1/1950/driverStandings.json?limit=1000").then(async () => {
|
||||
await updateDrivers()
|
||||
dotd()
|
||||
server()
|
||||
}).catch(() => {
|
||||
console.log("API is unreachable! Not updating drivers...")
|
||||
if (fs.existsSync(driversPath)) {
|
||||
let data = fs.readFileSync(driversPath)
|
||||
drivers = JSON.parse(data)
|
||||
dotd()
|
||||
server()
|
||||
} else {
|
||||
throw "Ergast API is unreachable and the drivers.json cache has not been built. Please try again when the Ergast API is online."
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async function updateDrivers() {
|
||||
drivers = {}
|
||||
for (let i = 2000; i <= year; i++) {
|
||||
@@ -156,17 +157,21 @@ async function updateDrivers() {
|
||||
})
|
||||
}
|
||||
|
||||
function dotd() {
|
||||
function dotd(cold = false) {
|
||||
console.log("Selecting Driver of the Day...")
|
||||
let newDriver = getRandomProperty(drivers)
|
||||
if (pastDrivers.includes(newDriver)) {
|
||||
console.log("Driver was picked recently, re-selecting...")
|
||||
dotd()
|
||||
return
|
||||
if (cold && fs.existsSync(driverPath)) {
|
||||
driver = fs.readFileSync(driverPath)
|
||||
} else {
|
||||
let newDriver = getRandomProperty(drivers)
|
||||
if (pastDrivers.includes(newDriver)) {
|
||||
console.log("Driver was picked recently, re-selecting...")
|
||||
return dotd()
|
||||
}
|
||||
driver = newDriver
|
||||
pastDrivers.push(driver)
|
||||
if (pastDrivers.length > 7) pastDrivers.shift()
|
||||
fs.writeFileSync(driverPath, driver)
|
||||
}
|
||||
driver = newDriver
|
||||
pastDrivers.push(driver)
|
||||
if (pastDrivers.length > 7) pastDrivers.shift()
|
||||
console.log(`Driver of the Day is ${driver}!`)
|
||||
console.log(drivers[driver])
|
||||
}
|
||||
@@ -213,7 +218,7 @@ function server() {
|
||||
app.get("/winner", (req, res) => {
|
||||
if (req.headers.authorization !== "Bearer kRyX3RYMRY$&yEc8") return res.end()
|
||||
res.json({
|
||||
"winner": drivers[driver].firstName + " " + drivers[driver].lastName
|
||||
"winner": drivers[driver].firstName + " " + drivers[driver].lastName,
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -240,6 +240,7 @@ async function submit(guess, real) {
|
||||
})
|
||||
})
|
||||
let winner = await data.json()
|
||||
console.log(winner)
|
||||
let gg = document.getElementsByClassName("input")[0]
|
||||
if (gg != null) {
|
||||
gg.classList.remove("input")
|
||||
|
||||
@@ -1 +1 @@
|
||||
{}
|
||||
{"2023-03-13":{"visits":4,"guesses":0}}
|
||||
14
package-lock.json
generated
14
package-lock.json
generated
@@ -16,6 +16,7 @@
|
||||
"lodash": "^4.17.21",
|
||||
"morgan": "^1.10.0",
|
||||
"node-schedule": "^2.1.0",
|
||||
"process": "^0.11.10",
|
||||
"serve-favicon": "^2.5.0",
|
||||
"uuid": "^9.0.0",
|
||||
"xml-js": "^1.6.11"
|
||||
@@ -771,6 +772,14 @@
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
|
||||
},
|
||||
"node_modules/process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
|
||||
"engines": {
|
||||
"node": ">= 0.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
@@ -1582,6 +1591,11 @@
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
|
||||
},
|
||||
"process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
"lodash": "^4.17.21",
|
||||
"morgan": "^1.10.0",
|
||||
"node-schedule": "^2.1.0",
|
||||
"process": "^0.11.10",
|
||||
"serve-favicon": "^2.5.0",
|
||||
"uuid": "^9.0.0",
|
||||
"xml-js": "^1.6.11"
|
||||
|
||||
@@ -184,4 +184,4 @@
|
||||
</body>
|
||||
<script src="./js/main.js"></script>
|
||||
<script src="./js/countUp.js"></script>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user