From bd30f3ec85f55dfd1b6ef8310a30efb46217d69c Mon Sep 17 00:00:00 2001 From: waveringana Date: Mon, 11 Dec 2023 12:03:33 -0500 Subject: [PATCH] 1.10.1 --- README.md | 4 +- app/lib/ffmpeg.ts | 23 ++++++++---- app/lib/middleware.ts | 19 ++++++++-- app/lib/multer.ts | 18 ++++----- app/public/js/index.js | 24 +++++++++++- app/views/adduser.ejs | 83 +++++++++++++++++++++++++----------------- app/views/gifv.ejs | 10 ++--- package-lock.json | 4 +- package.json | 2 +- 9 files changed, 121 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 5ea1de4..5aab021 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ Enabled at `/upload`. Requires authentication with key. `expire` key specifies d ### Using Docker ```bash -docker run -d -p "3000:3000" -e EBPORT=3000 -e EBPASS=changeme -e EBAPI_KEY=changeme ghcr.io/waveringana/embedder:1.9.2 +docker run -d -p "3000:3000" -e EBPORT=3000 -e EBPASS=changeme -e EBAPI_KEY=changeme ghcr.io/waveringana/embedder:1.10.1 ``` ### Docker Compose @@ -76,7 +76,7 @@ services: volumes: - ./db:/var/db - ./uploads:/uploads - image: ghcr.io/waveringana/embedder:1.9.2 + image: ghcr.io/waveringana/embedder:1.10.1 ``` ## 📜 License diff --git a/app/lib/ffmpeg.ts b/app/lib/ffmpeg.ts index 0f3a938..813d3a3 100644 --- a/app/lib/ffmpeg.ts +++ b/app/lib/ffmpeg.ts @@ -123,7 +123,7 @@ export const ffmpegDownscale = ( path: string, filename: string, extension: string, -) => { +): Promise => { const startTime = Date.now(); const outputOptions = [ "-vf", @@ -143,8 +143,11 @@ export const ffmpegDownscale = ( .input(path) .outputOptions(outputOptions) .output(`uploads/720p-${filename}${extension}`) - .on("progress", function(progress) { - fs.writeFileSync(progressFile, JSON.stringify({ progress: progress.percent / 100 })); + .on("progress", function (progress) { + fs.writeFileSync( + progressFile, + JSON.stringify({ progress: progress.percent / 100 }), + ); }) .on("end", () => { console.log( @@ -189,7 +192,7 @@ export const ffmpegConvert = ( path: string, filename: string, extension: string, -) => { +): Promise => { const startTime = Date.now(); const outputOptions = [ "-vf", @@ -225,8 +228,11 @@ export const ffmpegConvert = ( .output("uploads/") .outputFormat(outputFormat) .output(`uploads/${filename}${outputFormat}`) - .on("progress", function(progress) { - fs.writeFileSync(progressFile, JSON.stringify({ progress: progress.percent / 100 })); + .on("progress", function (progress) { + fs.writeFileSync( + progressFile, + JSON.stringify({ progress: progress.percent / 100 }), + ); }) .on("end", function () { console.log( @@ -246,7 +252,10 @@ export const ffProbe = async ( extension: string, ) => { return new Promise((resolve, reject) => { - if (!videoExtensions.includes(extension) && !imageExtensions.includes(extension)) { + if ( + !videoExtensions.includes(extension) && + !imageExtensions.includes(extension) + ) { console.log(`Extension is ${extension}`); reject(`Submitted file is neither a video nor an image: ${path}`); } diff --git a/app/lib/middleware.ts b/app/lib/middleware.ts index 9daa617..2a162c3 100644 --- a/app/lib/middleware.ts +++ b/app/lib/middleware.ts @@ -44,7 +44,14 @@ export const checkSharexAuth: Middleware = (req, res, next) => { next(); }; -/**Creates oembed json file for embed metadata */ +/** + * Creates oembed data for uploaded files + * + * @param {Express Request Object} Express request object + * @param {Express Response Object} Express response object + * @param {Express NextFunction variable} Express next function + * + */ export const createEmbedData: Middleware = async (req, res, next) => { const files = req.files as Express.Multer.File[]; for (const file in files) { @@ -90,7 +97,14 @@ export const createEmbedData: Middleware = async (req, res, next) => { next(); }; -/**Creates a 720p copy of video for smaller file */ +/** + * Creates a 720p copy of uploaded videos + * + * @param {Express Request Object} req Express request object + * @param {Express Response Object} res Express response object + * @param {Express NextFunction} next Express next function + * + */ export const convertTo720p: Middleware = (req, res, next) => { const files = req.files as Express.Multer.File[]; console.log("convert to 720p running"); @@ -103,7 +117,6 @@ export const convertTo720p: Middleware = (req, res, next) => { fileExtension !== ".gif" ) { console.log(`${files[file].filename} is not a video file`); - console.log(fileExtension); continue; } diff --git a/app/lib/multer.ts b/app/lib/multer.ts index 63bcbb6..a0cbe21 100644 --- a/app/lib/multer.ts +++ b/app/lib/multer.ts @@ -33,6 +33,7 @@ export const fileStorage = multer.diskStorage({ console.log(err); callback(err, null); } + if (exists.length != 0) { const suffix = new Date().getTime() / 1000; @@ -41,15 +42,9 @@ export const fileStorage = multer.diskStorage({ request.body.title == null || request.body.title == undefined ) { - callback( - null, - filename + "-" + suffix + fileExtension, - ); + callback(null, filename + "-" + suffix + fileExtension); } else { - callback( - null, - request.body.title + "-" + suffix + fileExtension, - ); + callback(null, request.body.title + "-" + suffix + fileExtension); } } else { if ( @@ -67,7 +62,7 @@ export const fileStorage = multer.diskStorage({ }, }); -export const allowedMimeTypes = [ +export let allowedMimeTypes = [ "image/png", "image/jpg", "image/jpeg", @@ -80,6 +75,10 @@ export const allowedMimeTypes = [ "audio/ogg", ]; +export const setAllowedMimeTypes = (mimeTypes: string[]): void => { + allowedMimeTypes = mimeTypes; +}; + export const fileFilter = ( request: Request, file: Express.Multer.File, @@ -91,4 +90,3 @@ export const fileFilter = ( callback(null, false); } }; - diff --git a/app/public/js/index.js b/app/public/js/index.js index 5c27050..55bb308 100644 --- a/app/public/js/index.js +++ b/app/public/js/index.js @@ -1,8 +1,30 @@ -/* eslint-disable no-undef */ +/* eslint no-use-before-define: 0 */ /* eslint-env browser: true */ let newMediaList; +const videoExtensions = [ + ".mp4", + ".mov", + ".avi", + ".flv", + ".mkv", + ".wmv", + ".webm", +]; + +const imageExtensions = [ + ".jpg", + ".jpeg", + ".png", + ".gif", + ".bmp", + ".svg", + ".tiff", + ".webp", +]; + + function copyURI(evt) { evt.preventDefault(); navigator.clipboard diff --git a/app/views/adduser.ejs b/app/views/adduser.ejs index 751d024..5d72de0 100644 --- a/app/views/adduser.ejs +++ b/app/views/adduser.ejs @@ -1,37 +1,52 @@ - + - - - - Embedder - - - - - - - + + + + Embedder + + + + + + + - -
-

Embedder

-

Add User

-
-
- - -
-
- - -
- -
-
-
- - + +
+

Embedder

+

Add User

+
+
+ + +
+
+ + +
+ +
+
+
+ + diff --git a/app/views/gifv.ejs b/app/views/gifv.ejs index b677d56..5607c2a 100644 --- a/app/views/gifv.ejs +++ b/app/views/gifv.ejs @@ -80,11 +80,6 @@ p { line-height: 1.6; /* Improve readability */ } -/* Optionally, you can add media query for dark mode based on user's system preferences */ -@media (prefers-color-scheme: dark) { - /* Dark mode styles */ -} - footer { text-align: center; padding: 20px; @@ -108,6 +103,9 @@ footer a:hover { text-decoration: underline; /* Adds an underline on hover for better user experience */ } +@media (prefers-color-scheme: light) { + +} @@ -119,6 +117,6 @@ footer a:hover { + diff --git a/package-lock.json b/package-lock.json index da402f2..8b2a1ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "embedder", - "version": "1.9.2", + "version": "1.10.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "embedder", - "version": "1.9.2", + "version": "1.10.1", "hasInstallScript": true, "license": "Unlicense", "dependencies": { diff --git a/package.json b/package.json index 911c186..fa7f536 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "embedder", - "version": "1.9.2", + "version": "1.10.1", "private": true, "description": "Media host for quick embeds to sites like discord", "keywords": [