diff options
| author | bobzel <zzzman@gmail.com> | 2023-12-28 13:39:23 -0500 |
|---|---|---|
| committer | bobzel <zzzman@gmail.com> | 2023-12-28 13:39:23 -0500 |
| commit | df2fc3f11e3b474144db5062620c9f65ca857203 (patch) | |
| tree | 1f42a5f33a63c530f2231fdbd42dc930100b736a /src/server/DashUploadUtils.ts | |
| parent | fa6214e763fc341ad355c95424ae76f14450d8ce (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.ts | 31 |
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; }); |
