aboutsummaryrefslogtreecommitdiff
path: root/src/server/DashUploadUtils.ts
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2023-12-28 13:39:23 -0500
committerbobzel <zzzman@gmail.com>2023-12-28 13:39:23 -0500
commitdf2fc3f11e3b474144db5062620c9f65ca857203 (patch)
tree1f42a5f33a63c530f2231fdbd42dc930100b736a /src/server/DashUploadUtils.ts
parentfa6214e763fc341ad355c95424ae76f14450d8ce (diff)
fixed youtube uploads, cleaned up a bunch of imports and added some typings files.
Diffstat (limited to 'src/server/DashUploadUtils.ts')
-rw-r--r--src/server/DashUploadUtils.ts31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts
index 0161a8d38..a8e09818e 100644
--- a/src/server/DashUploadUtils.ts
+++ b/src/server/DashUploadUtils.ts
@@ -20,12 +20,12 @@ import { AzureManager } from './ApiManagers/AzureManager';
import axios from 'axios';
const spawn = require('child_process').spawn;
const { exec } = require('child_process');
-const parse = require('pdf-parse');
-const ffmpeg = require('fluent-ffmpeg');
-const fs = require('fs');
const requestImageSize = require('../client/util/request-image-size');
-const md5File = require('md5-file');
-const autorotate = require('jpeg-autorotate');
+import * as parse from 'pdf-parse';
+import { ffprobe, FfmpegCommand } from 'fluent-ffmpeg';
+import * as fs from 'fs';
+import * as md5File from 'md5-file';
+import * as autorotate from 'jpeg-autorotate';
export enum SizeSuffix {
Small = '_s',
@@ -95,7 +95,7 @@ export namespace DashUploadUtils {
// concatenate the videos
await new Promise((resolve, reject) => {
- var merge = ffmpeg();
+ var merge = new FfmpegCommand();
merge
.input(textFilePath)
.inputOptions(['-f concat', '-safe 0'])
@@ -152,7 +152,7 @@ export namespace DashUploadUtils {
exec(`yt-dlp -o ${finalPath} "https://www.youtube.com/watch?v=${videoId}" --get-duration`, (error: any, stdout: any, stderr: any) => {
const time = Array.from(stdout.trim().split(':')).reverse();
const duration = (time.length > 2 ? Number(time[2]) * 1000 * 60 : 0) + (time.length > 1 ? Number(time[1]) * 60 : 0) + (time.length > 0 ? Number(time[0]) : 0);
- res(resolveExistingFile(name, finalPath, Directory.videos, 'video/mp4', duration, undefined));
+ res(resolveExistingFile(name, filepath, Directory.videos, 'video/mp4', duration, undefined));
});
} else {
uploadProgress.set(overwriteId, 'starting download');
@@ -185,9 +185,12 @@ export namespace DashUploadUtils {
exec(`yt-dlp-o ${filepath} "https://www.youtube.com/watch?v=${videoId}" --get-duration`, (error: any, stdout: any, stderr: any) => {
const time = Array.from(stdout.trim().split(':')).reverse();
const duration = (time.length > 2 ? Number(time[2]) * 1000 * 60 : 0) + (time.length > 1 ? Number(time[1]) * 60 : 0) + (time.length > 0 ? Number(time[0]) : 0);
- const data = { size: 0, filepath, name, mimetype: '', originalFilename: name, newFilename: name, hashAlgorithm: 'md5' as 'md5', type: 'video/mp4' };
- const file = { ...data, toJSON: () => ({ ...data, length: 0, filename: data.filepath.replace(/.*\//, ''), mtime: new Date(), mime: '', hashAlgorithm: 'md5' as 'md5', toJson: () => undefined as any }) };
- res(MoveParsedFile(file, Directory.videos));
+ const data = { size: 0, filepath, name, mimetype: 'video', originalFilename: name, newFilename: name, hashAlgorithm: 'md5' as 'md5', type: 'video/mp4' };
+ const file = { ...data, toJSON: () => ({ ...data, length: 0, filename: data.filepath.replace(/.*\//, ''), mtime: new Date(), toJson: () => undefined as any }) };
+ MoveParsedFile(file, Directory.videos).then(output => {
+ console.log('OUTPUT = ' + output);
+ res(output);
+ });
});
}
});
@@ -217,7 +220,7 @@ export namespace DashUploadUtils {
if (format.includes('x-matroska')) {
console.log('case video');
await new Promise(res =>
- ffmpeg(file.filepath)
+ new FfmpegCommand(file.filepath)
.videoCodec('copy') // this will copy the data instead of reencode it
.save(file.filepath.replace('.mkv', '.mp4'))
.on('end', res)
@@ -229,7 +232,7 @@ export namespace DashUploadUtils {
if (format.includes('quicktime')) {
let abort = false;
await new Promise<void>(res =>
- ffmpeg.ffprobe(file.filepath, (err: any, metadata: any) => {
+ ffprobe(file.filepath, (err: any, metadata: any) => {
if (metadata.streams.some((stream: any) => stream.codec_name === 'hevc')) {
abort = true;
}
@@ -615,13 +618,13 @@ export namespace DashUploadUtils {
buffer = buffer2;
} catch (e) {}
return Jimp.read(buffer ?? fileIn)
- .then(async (img:any) => {
+ .then(async (img: any) => {
await Promise.all( sizes.filter(({ width }) => width) .map(({ width, suffix }) =>
img = img.resize(width, Jimp.AUTO).write(outputPath(suffix))
)); // prettier-ignore
return writtenFiles;
})
- .catch((e:any) => {
+ .catch((e: any) => {
console.log('ERROR' + e);
return writtenFiles;
});