diff --git a/.gitignore b/.gitignore index 8003b3e..f3c3544 100755 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ private/ */private/ package-lock.json .env +ytmusic_cache +.vscode diff --git a/index.js b/index.js index 9dd8dc1..897da24 100755 --- a/index.js +++ b/index.js @@ -34,7 +34,7 @@ const port = process.env.PORT || 48916; /** * Are we prod or dev */ -const dev = process.env.DEV || true; +const dev = process.env.DEV || "true"; // Helper functions I've made to do things and stuff :P @@ -88,6 +88,8 @@ async function updateSongs() { if (typeof playlistSongs == 'object') { // For each song that youtube moosic has yelled back at us, give them individually to populateThumbnails() await Promise.all(playlistSongs.map(async song => await populateThumbnails(song))); + // Write all of this to cache + fs.writeFileSync(path.join(baseDir + '/ytmusic_cache'), JSON.stringify({playlistSongs, thumbnails})); } else { // like legit this shouldnt even be possible @@ -124,6 +126,14 @@ async function send404(req, res) { // Begin the server-ing things const app = express(); + +app.use((req, res, next) => { + if (dev == "true") { + console.log(`got a req to ${req.path}?${req.query} with a body of ${req.body}`); + } + next(); +}); + var server; // Set at app.listen (bottom), used to kill server on ctrl-c // YT Music stuff @@ -261,6 +271,7 @@ async function customConsole() { const cmd_raw_args = cmd_raw.split(" "); const cmd_args = cmd_raw_args.slice(1); const cmd = cmd_raw_args[0]; + const cmd_body = cmd_raw.substring(cmd.length).trim(); switch(cmd) { case "?": @@ -277,7 +288,7 @@ async function customConsole() { // ...... i dont know what or how or why but magically it is working now so i am just not gonna touch it and hope // whatever black magic made it work keeps working .-. try { - rl.write(eval(cmd_args.toString()) + "\n"); + rl.write(eval(cmd_body) + "\n"); } catch (err) { console.error(err); } @@ -296,32 +307,52 @@ async function customConsole() { } } -// Wrap in a async function to wait for youtube music response before starting http server -// (to prevent a race condition where people can view the moosic page be4 it is ready) async function main() { - - // Init the moosics stuff (black magic) - await ytmusic.initialize(); - - // Populate playlistSongs and thumbnails - await updateSongs(); + if (dev == "true") console.log("Starting custom console"); + // Start console + customConsole(); // DO NOT CALL `await` ON THIS!! THIS WILL CAUSE IT TO NEVER RETURN!! + if (dev == "true") console.log("Console started"); + + if (dev == "true") console.log("Loading ytmusic stuffs from cache file"); + // Load from cache + await (async () => { + let cachefile; + cachefile = fs.readFileSync(path.join(baseDir, '/ytmusic_cache')); + let parsed_cachefile = JSON.parse(cachefile); + playlistSongs = parsed_cachefile.playlistSongs; + thumbnails = parsed_cachefile.thumbnails; + if (dev == "true") console.log("Finished loading from ytmusic stuffs from cache"); + })(); + + // Wrap in async but don't await as to not delay server boot, we can load from cache faster then we can load from yt music + (async () => { + if (dev == "true") console.log("ytmusic init begining"); + // Init the moosics stuff + await ytmusic.initialize(); + if (dev == "true") console.log("ytmusic initialized"); + + // Populate playlistSongs and thumbnails + await updateSongs(); + if (dev == "true") console.log("Loaded new data from YTMusic!\n"); + })(); + + if (dev == "true") console.log("populating blog index") // Populate the blog index await generateBlogIndex(); + if (dev == "true") console.log("populated blog index"); server = http.createServer(app); + if (dev == "true") console.log("Starting server"); await (async () => { server.listen(port, () => { - console.log(`Listening to ${port}`); + console.log(`Listening to ${port}\n`); // Start hourly loop to update playlist loopHourly(async () => await updateSongs()); }); })(); - - // Start console - customConsole(); } // Handle a few signals diff --git a/start.sh b/start.sh index fcc8621..80526fc 100755 --- a/start.sh +++ b/start.sh @@ -8,5 +8,5 @@ sudo -iu prod fuser $(sudo -iu prod which node) -k echo '==== Restarting Nginx ====' rc-service nginx restart echo '===== Starting server ====' -screen -dmS portfolio bash -c "sudo -iu prod bash -c 'cd /prod/portfolio && node --permission --allow-fs-read=/prod/portfolio/* .'" +screen -dmS portfolio bash -c "sudo -iu prod bash -c 'cd /prod/portfolio && node --permission --allow-fs-read=/prod/portfolio/* --allow-fs-write/prod/portfolio/ytmusic_cache .'" echo 'boosh' diff --git a/start_dev.sh b/start_dev.sh index 664c0b9..d487f0c 100755 --- a/start_dev.sh +++ b/start_dev.sh @@ -4,4 +4,4 @@ screen -wipe portfolio_devel echo '==== Restarting Nginx ====' rc-service nginx restart echo '===== Starting server ====' -sudo -iu prod bash -c 'cd /development/website && node --permission --allow-fs-read=/development/website/* .' +sudo -iu prod bash -c 'cd /development/website && node --permission --allow-fs-read=/development/website/* --allow-fs-write=/development/website/ytmusic_cache .'