From ce1814387c9793e9553a525a44d218c50d7e255d Mon Sep 17 00:00:00 2001 From: Mark Powers Date: Sun, 9 Aug 2020 11:49:36 -0500 Subject: Refactor to use templates, add config --- index.js | 118 +++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 58 insertions(+), 60 deletions(-) (limited to 'index.js') diff --git a/index.js b/index.js index 4a52648..b8b34ab 100644 --- a/index.js +++ b/index.js @@ -3,18 +3,22 @@ const exec = require('child_process').exec; const express = require('express'); const fs = require('fs') +const templates = require('./templates.js'); +const bodyParser = require("body-parser"); const maxFiles = 50; const port = 8000 -const rootPath = "" -const type = "written" +const rootPath = "/home/mark/Music" +const type = "audio" const filters = { - "audio": ["flac", "ogg", "mp3", "aac", "midi", "mid", "opus", "wav"], + "audio": ["flac", "ogg", "mp3", "aac", "midi", "mid", "opus", "wav", "m4a", "m3u"], "written": ["txt", "pdf", "html", "epub", "doc", "docx"] } const server = express(); +server.use(bodyParser.urlencoded({ extended: false })); + server.use((req, res, next) => { console.debug(new Date(), req.ip, req.method, req.originalUrl); if(!["::1", "::ffff:127.0.0.1"].includes(req.ip )){ @@ -34,65 +38,45 @@ function shuffle(a) { return a; } +function loadTheFilesAndExtensions(path){ + files = fs.readdirSync(path) + files.forEach((file) => { + let stat = fs.statSync(`${path}/${file}`) + if(stat.isDirectory()){ + loadTheFilesAndExtensions(`${path}/${file}`) + } else { + let idx = file.lastIndexOf(".") + if(idx == -1){ + return + } + let ext = file.substring(idx+1) + if(!extentions.includes(ext)){ + extentions.push(ext) + } + if(type != "all" && filters[type].includes(ext)){ + theFiles.push({ + path: path, + name: file, + created: String(stat.birthtime).substring(0, 24), + accessed: String(stat.atime).substring(0, 24), + }) + } + + } + }) +} + var theFiles +var extentions server.get('/', async (req, res, next) => { + extentions = [] theFiles = [] - listFiles = function(path){ - files = fs.readdirSync(path) - files.forEach((file) => { - let stat = fs.statSync(`${path}/${file}`) - if(stat.isDirectory()){ - listFiles(`${path}/${file}`) - } else { - let idx = file.lastIndexOf(".") - if(idx == -1){ - return - } - let ext = file.substring(idx+1) - console.log(ext) - if(filters[type].includes(ext)){ - theFiles.push({ - path: path, - name: file, - created: String(stat.birthtime).substring(0, 24), - accessed: String(stat.atime).substring(0, 24), - }) - } - - } - }) - } - listFiles(rootPath) + loadTheFilesAndExtensions(rootPath) shuffle(theFiles) + theFiles = theFiles.slice(0, maxFiles) var html = [] - html.push(` - - - Files - - - - -

Check out these files!

- - - `) + html.push(templates["/"]["post"]) + res.status(200).send(html.join("")) +}) + +server.get("/config", async (req, res, next) => { + var html = [] + html.push(templates["/config"]["pre"]) + html.push(`
Path
`) + html.push(`
Max Files
`) + html.push(`
File Filter
`) + html.push(`
Save
`) + html.push(templates["/config"]["post"]) res.status(200).send(html.join("")) +}) + +server.post("/config", async (req, res, next) => { + console.log(req.headers) + console.log(req.body) + res.status(200).send("") }) server.get("/open/:index", (req, res, next)=>{ let index = Number(req.params.index) let f = theFiles[index] exec(`xdg-open "${f.path}/${f.name}"`) - res.status(200).send(""); }) -- cgit v1.2.3