added env support to video thumbnails, fixed thumbnail script, and added example env

This commit is contained in:
subnub
2024-12-27 17:07:45 -05:00
parent 16b6aff558
commit 22394666ca
7 changed files with 57 additions and 16 deletions
+23 -1
View File
@@ -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=
+8
View File
@@ -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,
};
@@ -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,
@@ -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,
+3 -1
View File
@@ -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",
BIN
View File
Binary file not shown.
+15 -10
View File
@@ -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");