|
|
- const configManager = require('./configManager');
-
- const recursive = require('./recursiveTraversal');
-
- const filepreview = require('filepreview');
-
- const fs = require('fs');
-
- var privateVideos = null;
-
- var publicVideos = null;
-
- function createIndex(filename, videos, templateKey)
- {
- return new Promise(function(resolve, reject)
- {
- console.log("Generating icon for " + filename);
- var splitArray = filename.split('/');
- var name = splitArray[splitArray.length -1];
- const icon = './icon/' + templateKey + '/' + name + ".png";
- if (!fs.existsSync(icon))
- {
- var options = {
- width: 200,
- quality: 50,
- previewTime: '00:05:00.000'
- };
-
- filepreview.generate(filename, icon, options, function (error)
- {
- if (error)
- {
- resolve();
- }
- console.log('File preview is located ' + icon);
- resolve();
- });
- }
- else
- {
- resolve();
- }
- })
- }
-
- async function runTasksSync(files, videos, templateKey)
- {
- for(var file of files)
- {
- await createIndex(file, videos, templateKey);
- }
- }
-
-
-
- module.exports =
- {
- indexVideos: function(rootDir, videos, templateKey)
- {
- return new Promise(function(resolve, reject)
- {
- recursive(rootDir, function (err, files)
- {
- files.forEach(file =>
- {
- videos.push({name: file.replace(rootDir, '')});
- });
- runTasksSync(files.splice(0, files.length/2), videos, templateKey);
- runTasksSync(files.splice(files.length/2, files.length), videos, templateKey);
- 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;
- }
- },
-
- reIndexVideos: function()
- {
- publicVideos = [];
- privateVideos = [];
- module.exports.indexVideos(configManager.getPublicDirectory(), publicVideos, "public");
- module.exports.indexVideos(configManager.getRootDirectory(), privateVideos, "private");
- },
-
- getPublicVideoCount: function()
- {
- return (publicVideos === null) ? 0: publicVideos.length;
- },
-
- getPrivateVideoCount: function()
- {
- return (privateVideos === null) ? 0: privateVideos.length;
- }
- };
|