|
|
|
const fs = require('fs');
|
|
|
|
const md5 = require('md5');
|
|
|
|
|
|
|
|
const _dir = '/o/video/';
|
|
|
|
|
|
|
|
var video = {};
|
|
|
|
|
|
|
|
fs.readdir(_dir, (err, series)=>{
|
|
|
|
series.forEach((item)=>{
|
|
|
|
var conf = fs.readFileSync(
|
|
|
|
_dir + item + '/config.json',
|
|
|
|
{encoding:"utf-8"}
|
|
|
|
);
|
|
|
|
conf = JSON.parse(conf);
|
|
|
|
if(!video.hasOwnProperty(conf.class)){
|
|
|
|
video[conf.class] = {};
|
|
|
|
}
|
|
|
|
video[conf.class][item] = {};
|
|
|
|
video[conf.class][item]['series'] = conf.series;
|
|
|
|
video[conf.class][item]['video'] = [];
|
|
|
|
// console.log(conf);
|
|
|
|
/* get Series Info */
|
|
|
|
var no = fs.readdirSync(_dir + item);
|
|
|
|
no.splice(no.findIndex(fName => fName == 'config.json'), 1);
|
|
|
|
no.forEach(fName => {
|
|
|
|
var videoInfo = getVideoInfo(fName, conf, item);
|
|
|
|
video[conf.class][item]['video'].push(videoInfo);
|
|
|
|
if(conf.hasOwnProperty('video') && conf.video.hasOwnProperty(videoInfo.no)){
|
|
|
|
Object.assign(video[conf.class][item]['video'][video[conf.class][item]['video'].length - 1], conf.video[videoInfo.no]);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
/* video sort */
|
|
|
|
video[conf.class][item]['video'].sort((a, b)=>a.no-b.no);
|
|
|
|
|
|
|
|
});
|
|
|
|
console.log(video.acg.YuruYuri.video);
|
|
|
|
fs.writeFile('/mnt/var/cache/acg.watch/video.json', JSON.stringify(video), 'utf8', err=>console.log(err));
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
var getVideoInfo = (fName, conf, item) => {
|
|
|
|
var o = {};
|
|
|
|
|
|
|
|
var arr = fName.split('.');
|
|
|
|
arr = arr[0].split('_');
|
|
|
|
|
|
|
|
o['season'] = getVideoSeason(arr);
|
|
|
|
o['no'] = getVideoNo(arr);
|
|
|
|
o['name'] = getVideoName(arr, conf);
|
|
|
|
o['danmakuID'] = md5(item+o.no).substring(0, 8);
|
|
|
|
o['url'] = 'https://onedrive.yimian.xyz/video/' + item + '/' + fName;
|
|
|
|
//o['extra'] = ['https://proxy.yimian.xyz/get/?url='+(new Buffer(o['url']).toString('base64'))];
|
|
|
|
|
|
|
|
return o;
|
|
|
|
}
|
|
|
|
|
|
|
|
var getVideoSeason = arr => parseInt(arr[0].replace(/[^0-9]/ig,""));
|
|
|
|
|
|
|
|
var getVideoNo = arr => parseInt(arr[0].replace(/[^0-9]/ig,"")) * 1000 + parseInt(arr[1].replace(/[^0-9]/ig,""));
|
|
|
|
|
|
|
|
var getVideoName = (arr, conf) => {
|
|
|
|
|
|
|
|
var season = getVideoSeason(arr);
|
|
|
|
|
|
|
|
if(arr.length >= 3){
|
|
|
|
var alias = arr[2];
|
|
|
|
}else{
|
|
|
|
var alias = '第' + getVideoNo(arr) % 1000 + '集';
|
|
|
|
}
|
|
|
|
|
|
|
|
return conf.series + '--第' + season + '季-' + alias;
|
|
|
|
}
|