]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/videos.js
Move video duration logic in lib/
[github/Chocobozzz/PeerTube.git] / server / lib / videos.js
index 3c6ee4a650605a1b4ccad24bea60a191300fbb58..43d6c6b9992d6a46a8796787f53295a654fbdca7 100644 (file)
@@ -1,21 +1,41 @@
 'use strict'
 
-var async = require('async')
-var config = require('config')
-// TODO
-var path = require('path')
-var webtorrent = require('../lib/webtorrent')
+const async = require('async')
+const config = require('config')
+const ffmpeg = require('fluent-ffmpeg')
+const pathUtils = require('path')
+const webtorrent = require('../lib/webtorrent')
 
-var logger = require('../helpers/logger')
-var Videos = require('../models/videos')
+const logger = require('../helpers/logger')
+const Videos = require('../models/videos')
 
-var uploadDir = path.join(__dirname, '..', '..', config.get('storage.uploads'))
+const uploadDir = pathUtils.join(__dirname, '..', '..', config.get('storage.uploads'))
 
-var videos = {
+const videos = {
+  getVideoDuration: getVideoDuration,
+  getVideoState: getVideoState,
   seed: seed,
   seedAllExisting: seedAllExisting
 }
 
+function getVideoDuration (video_path, callback) {
+  ffmpeg.ffprobe(video_path, function (err, metadata) {
+    if (err) return callback(err)
+
+    return callback(null, Math.floor(metadata.format.duration))
+  })
+}
+
+function getVideoState (video) {
+  const exist = (video !== null)
+  let owned = false
+  if (exist === true) {
+    owned = (video.namePath !== null)
+  }
+
+  return { exist: exist, owned: owned }
+}
+
 function seed (path, callback) {
   logger.info('Seeding %s...', path)