From 22394666ca87de4f424ecac0e970c52f12e4d029 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 27 Dec 2024 17:07:45 -0500 Subject: [PATCH] added env support to video thumbnails, fixed thumbnail script, and added example env --- backend/config/example-env | 24 ++++++++++++++++- backend/enviroment/env.ts | 8 ++++++ .../utils/createVideoThumbnail.ts | 2 +- .../chunk-service/utils/getBusboyData.ts | 10 ++++--- package.json | 4 ++- public/.DS_Store | Bin 8196 -> 10244 bytes serverUtils/createVideoThumbnails.js | 25 +++++++++++------- 7 files changed, 57 insertions(+), 16 deletions(-) diff --git a/backend/config/example-env b/backend/config/example-env index f000c44..c3ef179 100644 --- a/backend/config/example-env +++ b/backend/config/example-env @@ -1 +1,23 @@ -// TODO: Add example env file +MONGODB_URL= +DB_TYPE= +HTTP_PORT= +HTTPS_PORT= +PASSWORD_ACCESS= +PASSWORD_REFRESH= +PASSWORD_COOKIE= +_SECURE_COOKIES= +FS_DIRECTORY= +KEY= +EMAIL_VERIFICATION= +EMAIL_DOMAIN= +EMAIL_ADDRESS= +EMAIL_API_KEY= +EMAIL_HOST= +REMOTE_URL= +S3_ID= +S3_KEY= +S3_BUCKET= +URL= +TEMP_DIRECTORY= +VIDEO_THUMBNAILS_ENABLED= +TEMP_VIDEO_THUMBNAIL_LIMIT= \ No newline at end of file diff --git a/backend/enviroment/env.ts b/backend/enviroment/env.ts index 4a11e08..10f05bf 100644 --- a/backend/enviroment/env.ts +++ b/backend/enviroment/env.ts @@ -26,6 +26,10 @@ export default { emailHost: process.env.EMAIL_HOST, emailPort: process.env.EMAIL_PORT, emailAddress: process.env.EMAIL_ADDRESS, + videoThumbnailsEnabled: process.env.VIDEO_THUMBNAILS_ENABLED === "true", + tempVideoThumbnailLimit: process.env.TEMP_VIDEO_THUMBNAIL_LIMIT + ? +process.env.TEMP_VIDEO_THUMBNAIL_LIMIT + : 0, }; module.exports = { @@ -56,4 +60,8 @@ module.exports = { emailHost: process.env.EMAIL_HOST, emailPort: process.env.EMAIL_PORT, emailAddress: process.env.EMAIL_ADDRESS, + videoThumbnailsEnabled: process.env.VIDEO_THUMBNAILS_ENABLED === "true", + tempVideoThumbnailLimit: process.env.TEMP_VIDEO_THUMBNAIL_LIMIT + ? +process.env.TEMP_VIDEO_THUMBNAIL_LIMIT + : 0, }; diff --git a/backend/services/chunk-service/utils/createVideoThumbnail.ts b/backend/services/chunk-service/utils/createVideoThumbnail.ts index 87fccda..07300df 100644 --- a/backend/services/chunk-service/utils/createVideoThumbnail.ts +++ b/backend/services/chunk-service/utils/createVideoThumbnail.ts @@ -163,7 +163,7 @@ const createVideoThumbnail = ( await attemptToRemoveChunks(file, thumbnailFilename); - if (env.tempDirectory) { + if (env.tempDirectory && env.tempVideoThumbnailLimit > file.length) { const updatedFile = await tempCreateVideoThumbnail( file, filename, diff --git a/backend/services/chunk-service/utils/getBusboyData.ts b/backend/services/chunk-service/utils/getBusboyData.ts index e938faf..743f4b9 100644 --- a/backend/services/chunk-service/utils/getBusboyData.ts +++ b/backend/services/chunk-service/utils/getBusboyData.ts @@ -53,19 +53,23 @@ const processData = ( length = metadata.size; } + const videoCheck = videoChecker(filename); + const currentFile = new File({ filename, uploadDate: date.toISOString(), length, - metadata, + metadata: { + ...metadata, + isVideo: videoCheck, + }, }); await currentFile.save(); const imageCheck = imageChecker(currentFile.filename); - const videoCheck = videoChecker(currentFile.filename); - if (videoCheck) { + if (videoCheck && env.videoThumbnailsEnabled) { const updatedFile = await createVideoThumbnail( currentFile, filename, diff --git a/package.json b/package.json index db88dbc..08d086f 100755 --- a/package.json +++ b/package.json @@ -13,7 +13,9 @@ "build:backend": "tsc -p ./backend/tsconfig.json", "build": "npm run build:frontend && npm run build:backend", "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'", - "start": "NODE_ENV=production node dist-backend/server/server-start.js" + "start": "NODE_ENV=production node dist-backend/server/server-start.js", + "create-video-thumbnails": "NODE_ENV=production node serverUtils/createVideoThumbnails.js", + "create-video-thumbnails:dev": "NODE_ENV=development node serverUtils/createVideoThumbnails.js" }, "dependencies": { "@babel/core": "^7.8.4", diff --git a/public/.DS_Store b/public/.DS_Store index c81ecd4daef284d05a3b95dbed4a41847e59b150..4a30256090da506fcddad271cb7168f34a19b439 100755 GIT binary patch literal 10244 zcmeHMU2GIp6uxI#%8VW8ErP(f;6l|3RA^~wMHIH(mfvcdZcBgoS!QRCyfa&#sq~2J@?+(O1F?`)C9~-Gxy9r z_ndp@eDj^VIk$umXv!KjghUA;GTuy56`Pw}Y@FSbE-BEIpak?M#3x>A$Qw-AZfcTs zs0a}V5eN|o5eN|o5x5-?z~5|k$)!SuZHPdKK#0IN0&IVX;>~0%kfTEKtpgig0-!8L zHNWr~>j3T(4P-2kqe605oKsW}5V%56Vt{bR@hCG#84Kj7kiwmSa3>I~3_*nge0B7T za&rPPA;UIAAVgp?0<3l~Av*E!&n&3le@PA6mgiSje+5!e@syIOvT|3cQaZg<*_P;c zhZ4T-XT2splcbS^Wtb^F(`^}kf2ZlR*k;aj+A^)WZ)UbI<4)JL(Lg-wsm+!-l%zA` zuH);LV`lh#VveodmSea>O>WjPJZ>LM&Y#nYQwh9cHkQLk#=uV>7* zA#YBw2~bpLx#y=@&b94oFZ?NGvpKUIk`-}BR`R!$yM?jxkj!-F-(IppimAPRKg-y z3`?L6V$cXpunF3s0}{{)+aLu7n6MLE$ifipg?+Fe4!|Ke3`gL3cm-aAV{jZ!!h7&O zd;sU*JdDAYa1p+RAK(gHgP}SP{7$S%(#0a^VIupMa?eE8FR19h)<^q>xJt5GUg1OBD$68A{n!VmWXau zWT}k#NhRJ@Ya+D@W+5#S-Kt0_CJSx5)c=0~4nzkm literal 8196 zcmeHMTWl3Y7@n`Ru-mnCL8SF~z$3L3u;M9qk;~z*=3<*2Q%(pxL z|If_-?>9U7cNt?y7tAKcY8hh+RgStw&2z>+LL8SUULDkk6o8PY z0HV+}!=Y0ef3fIYwX)SuI9j z`TcsePad~sJ-0n?4Uu=9CJT?QGt2oOaK*1KV?Zdjjil zz-4@(Nur+JzLyW0#b7-)jW4xk^EuiExv{^?%KL<>`p(Rn_t@^1)2~tRnRn%#X$Pa7lCCqSg!z7BN)@TCB@4GM1y8s+?!#DlOJMBt6o%hMj94(PBMWFP9@v{8?xWyEmp{u|7WY zHp36v1}&FX^+h;+3$3b`%Ql%NUz1XoI(|k_pf0sYQlU-)W5WNsR8rpS{Mebtk}S=( zus$}(M%YRA0z1v#V`tep_9^?4ea9x)PwWc2%6?(LvfsdDE>#Om1$jldHRzG`cF;@B1)zS1{N76p8Q2({5|n`+P%g7P`XdLh_lvVg%eMoA+;C8 z?^lRxx*~41hWKKYHiQl-ZHPapD0-QcCF9Ff+5`GDDO;(nR*3C-g_N$<)~U1~^l~ZP zsBKb+_WE=wZP6Z8X=Cc_zti_$$$Oq%U_TOZe`kN80+pDJ8YHj?OR)WE@*oa&*C|}h?j5*ui!Pjfj99M5%^u4#W}nm68STH zg-e(yq3-q)>Rv9T?odbGbv$=J^%v { return new Promise((resolve, reject) => { @@ -22,6 +21,8 @@ const waitForDatabase = () => { }; const updateDocs = async () => { + console.log(`Updating video thumbnails, env is ${process.env.NODE_ENV}`); + console.log("\nWaiting for database..."); await waitForDatabase(); console.log("Connected to database\n"); @@ -44,13 +45,17 @@ const updateDocs = async () => { console.log("Found", files.length, "files"); for (let i = 0; i < files.length; i++) { - const currentFile = files[i]; + try { + const currentFile = files[i]; - console.log("current file", currentFile._id); + console.log("current file", currentFile._id); - const user = await User.findById(currentFile.metadata.owner); + const user = await User.findById(currentFile.metadata.owner); - await createVideoThumbnail(currentFile, currentFile.filename, user); + await createVideoThumbnail(currentFile, currentFile.filename, user); + } catch (e) { + console.log("error creating video thumbnail", e); + } } console.log("Done");