Shinobi/tools/addVideos.js.disabled

48 lines
2.3 KiB
Plaintext

//add videos to SQL tables from filesystem
var fs = require('fs');
var moment = require('moment');
var mysql = require('mysql');
var config = require('../conf.json');
s={}
s.disc=function(){
sql = mysql.createConnection(config.db);
sql.connect(function(err){if(err){console.log('Error Connecting : DB',err);setTimeout(s.disc, 2000);}});
sql.on('error',function(err) {console.log('DB Lost.. Retrying..');console.log(err);s.disc();return;});
}
s.disc();
if(!config.videosDir){config.videosDir=__dirname+'/../videos/'}
s.dir={videos:config.videosDir};
s.nameToTime=function(x){x=x.split('.')[0].split('T'),x[1]=x[1].replace(/-/g,':');x=x.join(' ');return x;}
s.moment=function(e,x){
if(!e){e=new Date};if(!x){x='YYYY-MM-DDTHH-mm-ss'};
return moment(e).format(x);
}
fs.readdir(s.dir.videos,function(err,groups){
groups.forEach(function(group){
fs.readdir(s.dir.videos+group,function(err,cameras){
cameras.forEach(function(camera){
fs.readdir(s.dir.videos+group+'/'+camera,function(err,videos){
sql.query('SELECT * FROM Videos WHERE ke=? AND mid=?',[group,camera],function(err,r){
videos.forEach(function(filename){
fs.stat(s.dir.videos+group+'/'+camera+'/'+filename,function(err,file){
file.startTime=s.nameToTime(filename)
file.endTime=s.moment(file.mtime,'YYYY-MM-DD HH:mm:ss')
var save=[camera,group,filename.split('.')[1],file.size,file.startTime,file.endTime,1]
var found=null
r.forEach(function(v){
if(s.moment(v.time,'YYYY-MM-DD HH:mm:ss')===file.startTime){
found=v
}
})
if(!found){
console.log('!found',save)
sql.query('INSERT INTO Videos (mid,ke,ext,size,time,end,status) VALUES (?,?,?,?,?,?,?)',save)
}
})
})
})
})
})
})
})
})