-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdb_gen.js
58 lines (55 loc) · 1.67 KB
/
db_gen.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
const fs = require('fs');
const mm = require('music-metadata');
const config = require("./config.json");
const uuid = require('uuid/v4');
let ary = [];
let database;
const file = 'database.json';
if (!fs.existsSync(file)) {
database = ary;
fs.writeFileSync(file, JSON.stringify(ary));
}
else {
database = JSON.parse(fs.readFileSync(file, 'utf8'));
}
console.log(database);
fs.readdir(config.directory, (err, files) =>{
check(files.length);
files.forEach(element => {
//console.log(element);
//ファイル名が同じ場DBを保持
const result = database.filter(d => d.file === element);
//console.log(result);
//配列が空ではない場合
if(result.length!==0){
ary.push(result[0]);
}
else{
mm.parseFile(config.directory+element,{}).then((metadata)=> {
//console.log(metadata);
const data = {
file : element,
title: metadata.common.title,
artist: metadata.common.artist,
album: metadata.common.album,
id: uuid(),
kokosukiTimes: []
};
ary.push(data);
//console.log(ary.length+"/"+files.length);
});
}
});
//console.log(ary);
});
function check(n){
console.log("Database generating... "+ary.length+"/"+n);
if(ary.length===n){
setTimeout(function(){
fs.writeFileSync(file, JSON.stringify(ary));
},1000);
}
else{
setTimeout(function(){check(n)},500);
}
}