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 c81ecd4..4a30256 100755 Binary files a/public/.DS_Store and b/public/.DS_Store differ diff --git a/serverUtils/createVideoThumbnails.js b/serverUtils/createVideoThumbnails.js index 1548157..2f4c778 100644 --- a/serverUtils/createVideoThumbnails.js +++ b/serverUtils/createVideoThumbnails.js @@ -1,13 +1,12 @@ -const getEnvVariables = require("../dist/enviroment/get-env-variables"); +const getEnvVariables = require("../dist-backend/enviroment/get-env-variables"); getEnvVariables(); const mongoose = require("./mongoServerUtil"); const conn = mongoose.connection; -const File = require("../dist/models/file-model"); -const User = require("../dist/models/user-model"); -const crypto = require("crypto"); +const File = require("../dist-backend/models/file-model"); +const User = require("../dist-backend/models/user-model"); const createVideoThumbnail = - require("../dist/services/chunk-service/utils/createVideoThumbnail").default; -const getKey = require("../dist/key/get-key").default; + require("../dist-backend/services/chunk-service/utils/createVideoThumbnail").default; +const getKey = require("../dist-backend/key/get-key").default; const waitForDatabase = () => { 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");