| @ -0,0 +1,125 @@ | |||
| const configManager = require('./configManager'); | |||
| const recursive = require('./recursiveTraversal'); | |||
| const filepreview = require('filepreview'); | |||
| const fs = require('fs'); | |||
| var privateVideos = null; | |||
| var publicVideos = null; | |||
| module.exports = | |||
| { | |||
| indexVideos: function(rootDir, videos, templateKey) | |||
| { | |||
| return new Promise(function(resolve, reject) | |||
| { | |||
| recursive(rootDir, function (err, files) | |||
| { | |||
| console.log(files); | |||
| files.forEach(file => | |||
| { | |||
| var splitArray = file.split('/'); | |||
| var name = splitArray[splitArray.length -1]; | |||
| const icon = './icon/' + templateKey + '/' + name + ".png"; | |||
| if (!fs.existsSync(icon)) | |||
| { | |||
| var options = { | |||
| width: 200, | |||
| quality: 50 | |||
| }; | |||
| filepreview.generate(file, icon, options,function(error) { | |||
| if (error) { | |||
| return console.log(error); | |||
| } | |||
| console.log('File preview is located ' + icon); | |||
| }); | |||
| } | |||
| videos.push({name: file.replace(rootDir, '')}); | |||
| }); | |||
| resolve(); | |||
| }); | |||
| }).catch(function(error) | |||
| { | |||
| console.log(error); | |||
| }) | |||
| }, | |||
| getVideosForTemplate: function(templateContext, templateKey) | |||
| { | |||
| return new Promise(function(resolve, reject) | |||
| { | |||
| var videos, rootDir; | |||
| if(templateKey === "public") | |||
| { | |||
| videos = publicVideos; | |||
| rootDir = configManager.getPublicDirectory(); | |||
| } | |||
| else | |||
| { | |||
| videos = privateVideos; | |||
| rootDir = configManager.getRootDirectory(); | |||
| } | |||
| if(videos === null) | |||
| { | |||
| videos = []; | |||
| module.exports.indexVideos(rootDir, videos, templateKey) | |||
| .then(function() | |||
| { | |||
| templateContext[templateKey] = videos; | |||
| if(templateKey === "public") | |||
| publicVideos = videos; | |||
| else | |||
| privateVideos = videos; | |||
| resolve(); | |||
| }) | |||
| } | |||
| else | |||
| { | |||
| templateContext[templateKey] = videos; | |||
| resolve(); | |||
| } | |||
| }) | |||
| }, | |||
| isPublicVideo: function(videoName) | |||
| { | |||
| if(publicVideos == null) | |||
| { | |||
| publicVideos = []; | |||
| rootDir = configManager.getPublicDirectory(); | |||
| module.exports.indexVideos(rootDir, publicVideos, "public").then(function() | |||
| { | |||
| for(var i = 0; i < publicVideos.length; i++) | |||
| { | |||
| const splitArray = publicVideos[i].name.split('/'); | |||
| const name = splitArray[splitArray.length -1]; | |||
| if(name === videoName) | |||
| { | |||
| return true; | |||
| } | |||
| } | |||
| return false; | |||
| }); | |||
| } | |||
| else | |||
| { | |||
| for(var i = 0; i < publicVideos.length; i++) | |||
| { | |||
| const splitArray = publicVideos[i].name.split('/'); | |||
| const name = splitArray[splitArray.length -1]; | |||
| if(name === videoName) | |||
| { | |||
| return true; | |||
| } | |||
| } | |||
| return false; | |||
| } | |||
| } | |||
| }; | |||