2 changed files with 2 additions and 147 deletions
-
146index.js.pipesha
-
3package.json
@ -1,146 +0,0 @@ |
|||
var fs = require("fs"); |
|||
var path = require("path"); |
|||
var mm = require("musicmetadata"); |
|||
|
|||
var express = require("express"); |
|||
|
|||
var tracks = {}; |
|||
var art = {}; |
|||
|
|||
var music = { |
|||
artists: {} |
|||
}; |
|||
|
|||
var promise = new Promise(function (resolve, reject) { |
|||
fs.readdir(path.join(__dirname, "music"), function (err, files) { |
|||
var promises = []; |
|||
files.forEach(function (artist) { |
|||
art.artists[artist] = { |
|||
albums: {}, |
|||
picture: [] |
|||
}; |
|||
music.artists[artist] = { |
|||
albums: {} |
|||
}; |
|||
var promise = new Promise(function (resolve, reject) { |
|||
fs.readdir(path.join(__dirname, "music", artist), function (err, files) { |
|||
var promises = []; |
|||
files.forEach(function (album) { |
|||
art.artists[artist].albums[album] = { |
|||
tracks: [], |
|||
picture: [] |
|||
}; |
|||
music.artists[artist].albums[album] = { |
|||
tracks: [] |
|||
}; |
|||
var promise = new Promise(function (resolve, reject) { |
|||
fs.readdir(path.join(__dirname, "music", artist, album), function (err, files) { |
|||
var promises = []; |
|||
files.forEach(function (title) { |
|||
var fn = path.join(__dirname, "music", artist, album, title); |
|||
var promise = new Promise(function (resolve, reject) { |
|||
fs.stat(fn, function (err, stat) { |
|||
if (stat.isFile()) { |
|||
if (fn.match(/(.mp3|.wav)/) && fn.charAt(0) != ".") { |
|||
mm(fs.createReadStream(fn), function (err, metadata) { |
|||
if (err) { |
|||
console.log(err); |
|||
resolve(); |
|||
} |
|||
else { |
|||
var number = parseInt(title.split(" ")[0], 10); |
|||
if (isNaN(number)) { |
|||
number = music.artists[artist].albums[album].tracks.length; |
|||
} |
|||
|
|||
// Art |
|||
/*art.artists[artist].albums[album].tracks[number - 1] = { |
|||
picture: [] |
|||
}; |
|||
art.artists[artist].albums[album].tracks[number - 1].picture = metadata.picture; |
|||
if (!art.artists[artist].albums[album].picture[0] && metadata.picture[0]) { |
|||
art.artists[artist].albums[album].picture = metadata.picture; |
|||
} |
|||
if (!art.artists[artist].picture[0] && metadata.picture[0]) { |
|||
art.artists[artist].picture = metadata.picture; |
|||
}*/ |
|||
|
|||
var sha = crypto.createHash("sha1"); |
|||
fs.createReadStream(fn).pipe(sha).on("end", function () { |
|||
|
|||
metadata.number = number; |
|||
metadata.file = "/tracks/" + sha.read(); |
|||
|
|||
tracks[sha.read()] = new Buffer(); |
|||
fs.createReadStream(fn).pipe(tracks[sha.read()]); |
|||
|
|||
music.artists[artist].albums[album].tracks[number - 1] = metadata; |
|||
|
|||
resolve(); |
|||
}); |
|||
} |
|||
}); |
|||
} |
|||
else if (fn.match(/(.jpg|.png)/)) { |
|||
fs.readFile(fn, function (err, data) { |
|||
if (!err) { |
|||
var fns = fn.split("."); |
|||
art.artists[artist].albums[album].picture = [{ |
|||
format: fns[fns.length - 1], |
|||
data: data |
|||
}]; |
|||
art.artists[artist].picture = art.artists[artist].albums[album].picture; |
|||
} |
|||
resolve(); |
|||
}); |
|||
} |
|||
else { |
|||
resolve(); |
|||
} |
|||
} |
|||
else { |
|||
resolve(); |
|||
} |
|||
}); |
|||
}); |
|||
promises.push(promise); |
|||
}); |
|||
Promise.all(promises).then(function () { |
|||
music.artists[artist].albums[album].tracks.forEach(function (track, i) { |
|||
if ((!art.artists[artist].albums[album].tracks[i].picture[0]) && art.artists[artist].albums[album].picture[0]) { |
|||
art.artists[artist].albums[album].tracks[i].picture = art.artists[artist].albums[album].picture; |
|||
} |
|||
}); |
|||
if (music.artists[artist].albums[album].tracks.length < 1) { |
|||
music.artists[artist].albums[album] = undefined; |
|||
} |
|||
resolve(); |
|||
}); |
|||
}); |
|||
}); |
|||
promises.push(promise); |
|||
}); |
|||
Promise.all(promises).then(resolve); |
|||
}); |
|||
}); |
|||
promises.push(promise); |
|||
}); |
|||
Promise.all(promises).then(resolve); |
|||
}); |
|||
}); |
|||
promise.then(function () { |
|||
console.log("done"); |
|||
for (var artist in music.artists) { |
|||
for (var album in music.artists[artist].albums) { |
|||
for (var track in music.artists[artist].albums[album].tracks) { |
|||
} |
|||
//music.artists[artist].albums[album].picture = "" |
|||
} |
|||
} |
|||
}); |
|||
|
|||
var app = express(); |
|||
|
|||
app.get("/", function (req, res) { |
|||
res.end(JSON.stringify(music)); |
|||
}); |
Write
Preview
Loading…
Cancel
Save
Reference in new issue