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 +++++++++++++++++++++++++++++------------------------------ main.css | 5 ++- package.json | 1 + templates.js | 55 ++++++++++++++++++++++++++++ 4 files changed, 117 insertions(+), 62 deletions(-) create mode 100644 templates.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(""); }) diff --git a/main.css b/main.css index 50ee09c..917dd83 100644 --- a/main.css +++ b/main.css @@ -30,15 +30,16 @@ span.path { display: block; color: #aaa; } -span span.btn { +span.btn { background-color: #aaa; color: #fff; padding: 3px; margin-left: 3em; } -span span.btn:hover { +span.btn:hover { background-color: #888; color: #fff; padding: 3px; margin-left: 3em; + cursor: pointer } \ No newline at end of file diff --git a/package.json b/package.json index 8c694bb..78ccd10 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "", "main": "index.js", "dependencies": { + "body-parser": "^1.19.0", "express": "^4.17.1" }, "devDependencies": {}, diff --git a/templates.js b/templates.js new file mode 100644 index 0000000..10526ee --- /dev/null +++ b/templates.js @@ -0,0 +1,55 @@ +module.exports = { + "/": { + "pre": ` + + + Files + + + + +

Check out these files!

+ + + ` + }, + "/config": { + "pre": ` + + + Config + + + + +

Config

`, + "post": ` + ` + } +} -- cgit v1.2.3