]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - scripts/optimize-old-videos.ts
Fix tests
[github/Chocobozzz/PeerTube.git] / scripts / optimize-old-videos.ts
index ab44acfbeb755027daccccf87cac3bd2904cc558..02026b3dadeb0a0e0d45a80def58a5d1b0f575ab 100644 (file)
@@ -1,11 +1,7 @@
-import { join } from 'path'
-import { readdir } from 'fs-extra'
-import { CONFIG, VIDEO_TRANSCODING_FPS } from '../server/initializers/constants'
-import { getVideoFileResolution, getVideoFileBitrate, getVideoFileFPS } from '../server/helpers/ffmpeg-utils'
+import { VIDEO_TRANSCODING_FPS } from '../server/initializers/constants'
+import { getVideoFileBitrate, getVideoFileFPS, getVideoFileResolution } from '../server/helpers/ffmpeg-utils'
 import { getMaxBitrate } from '../shared/models/videos'
-import { VideoRedundancyModel } from '../server/models/redundancy/video-redundancy'
 import { VideoModel } from '../server/models/video/video'
-import { getUUIDFromFilename } from '../server/helpers/utils'
 import { optimizeVideofile } from '../server/lib/video-transcoding'
 
 run()
@@ -16,21 +12,24 @@ run()
   })
 
 async function run () {
-  const files = await readdir(CONFIG.STORAGE.VIDEOS_DIR)
-  for (const file of files) {
-    const inputPath = join(CONFIG.STORAGE.VIDEOS_DIR, file)
-    const videoBitrate = await getVideoFileBitrate(inputPath)
-    const fps = await getVideoFileFPS(inputPath)
-    const resolution = await getVideoFileResolution(inputPath)
-    const uuid = getUUIDFromFilename(file)
+  const localVideos = await VideoModel.listLocal()
 
-    const isLocalVideo = await VideoRedundancyModel.isLocalByVideoUUIDExists(uuid)
-    const isMaxBitrateExceeded =
-      videoBitrate > getMaxBitrate(resolution.videoFileResolution, fps, VIDEO_TRANSCODING_FPS)
-    if (uuid && isLocalVideo && isMaxBitrateExceeded) {
-      const videoModel = await VideoModel.loadByUUIDWithFile(uuid)
-      await optimizeVideofile(videoModel, inputPath)
+  for (const video of localVideos) {
+    for (const file of video.VideoFiles) {
+      const inputPath = video.getVideoFilename(file)
+
+      const [ videoBitrate, fps, resolution ] = await Promise.all([
+        getVideoFileBitrate(inputPath),
+        getVideoFileFPS(inputPath),
+        getVideoFileResolution(inputPath)
+      ])
+
+      const isMaxBitrateExceeded = videoBitrate > getMaxBitrate(resolution.videoFileResolution, fps, VIDEO_TRANSCODING_FPS)
+      if (isMaxBitrateExceeded) {
+        await optimizeVideofile(video, file)
+      }
     }
   }
+
   console.log('Finished optimizing videos')
 }