-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
96 lines (79 loc) · 2.82 KB
/
test.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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
var express = require('express');
var app = express();
var fs = require('fs');
var mm = require('musicmetadata');
app.listen(7777, function() {
console.log("[NodeJS] Application Listening on Port 7777");
});
app.get('/play/:key', function(req, res) {
var key = req.params.key;
var music = 'music/' + key + '.mp3';
var stat = fs.statSync(music);
range = req.headers.range;
//console.log(range);
var readStream;
if (range !== undefined) {
var parts = range.replace(/bytes=/, "").split("-");
var partial_start = parts[0];
var partial_end = parts[1];
if ((isNaN(partial_start) && partial_start.length > 1) || (isNaN(partial_end) && partial_end.length > 1)) {
return res.sendStatus(500); //ERR_INCOMPLETE_CHUNKED_ENCODING
}
var start = parseInt(partial_start, 10);
var end = partial_end ? parseInt(partial_end, 10) : stat.size - 1;
var content_length = (end - start) + 1;
res.status(206).header({
'Content-Type': 'audio/mpeg',
'Content-Length': content_length,
'Content-Range': "bytes " + start + "-" + end + "/" + stat.size
});
readStream = fs.createReadStream(music, {
start: start,
end: end
});
} else {
res.header({
'Content-Type': 'audio/mpeg',
'Content-Length': stat.size
});
readStream = fs.createReadStream(music);
}
readStream.pipe(res);
});
/* playlists.json 생성
// mp3 파일 태그중 제목을 읽기위해서는 한글 깨짐 해결 ( console에서 진행 )
// 패키지 설치 : sudo apt-get install python-mutagen
// mp3을 모두 cp949로 변경 : find . -iname "*.mp3" -execdir mid3iconv -e cp949 {} \;
// 그럼 소스에서 musicmetadata 로 create a new parser from a node ReadStream
//
*/
var path = './music/';
var fileNames = [];
var musicUrl = 'http://chooya01.iptime.org:7777/play/';
var musicTitile;
var JsonPlayLitFile = 'playlist.json';
var playlist = {
songs: []
};
fs.readdir(path, function(err, files) {
if (err) throw err;
files.forEach(function(file) {
// create a new parser from a node ReadStream
// 한글 깨짐 해결
// 패키지 설치 : sudo apt-get install python-mutagen
// mp3을 모두 cp949로 변경 : find . -iname "*.mp3" -execdir mid3iconv -e cp949 {} \;
var parser = mm(fs.createReadStream(path + file), function(err, metadata) {
if (err) throw err;
// playlist json 형태 제작
file = file.substring(0, file.indexOf('.'));
playlist.songs.push({
'title': metadata.artist + " - " + metadata.title,
'url': musicUrl + file
});
fs.writeFile(JsonPlayLitFile, JSON.stringify(playlist), 'utf8', function(err) {
if (err) throw err;
});
console.log(metadata);
});
});
});