Skip to content

Commit f57b0ae

Browse files
authored
Merge pull request #15 from Borewit/fix-multiple-charsets
Support multiple types of character encoding
2 parents ac26981 + bf4a077 commit f57b0ae

10 files changed

+647
-18
lines changed

lib/cue.js

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
, CueSheet = require('./cuesheet').CueSheet
77
, File = require('./cuesheet').File
88
, Index = require('./cuesheet').Index
9-
, Time = require('./cuesheet').Time;
10-
9+
, Time = require('./cuesheet').Time
10+
, chardet = require('chardet');
1111

1212
var commandMap = {
1313
'CATALOG': parseCatalog,
@@ -45,18 +45,31 @@ exports = module.exports;
4545
throw new Error('file ' + filename + ' does not exist');
4646
}
4747

48-
lines = fs.readFileSync(filename, { encoding: 'utf8', flag: 'r' })
48+
cuesheet.encoding = chardet.detect(fs.readFileSync(filename));
49+
let encoding = cuesheet.encoding;
50+
51+
switch (cuesheet.encoding) {
52+
case 'ISO-8859-1':
53+
encoding = 'binary';
54+
break;
55+
}
56+
57+
lines = fs.readFileSync(filename, { encoding: encoding, flag: 'r' })
4958
.replace(/\r\n/, '\n').split('\n');
5059

5160
lines.forEach(function(line) {
5261
if (! line.match(/^\s*$/)) {
5362
lineParser = parseCommand(line);
5463
commandMap[lineParser.command](lineParser.params, cuesheet);
55-
};
64+
}
5665
});
5766

67+
if (!cuesheet.files[cuesheet.files.length - 1].name) {
68+
cuesheet.files.pop();
69+
}
70+
5871
return cuesheet;
59-
}
72+
};
6073

6174
function parseCatalog(params, cuesheet) {
6275
cuesheet.catalog = params[0];
@@ -67,9 +80,11 @@ function parseCdTextFile(params, cuesheet) {
6780
}
6881

6982
function parseFile(params, cuesheet) {
70-
var file;
83+
var file = cuesheet.getCurrentFile();
7184

72-
file = cuesheet.newFile().getCurrentFile();
85+
if (!file || file.name) {
86+
file = cuesheet.newFile();
87+
}
7388

7489
file.name = params[0];
7590
file.type = params[1];
@@ -99,7 +114,12 @@ function parseIndex(params, cuesheet) {
99114
}
100115

101116
if (number < 0 || number > 99) {
102-
throw new Error('Index nubmer must between 0 and 99: ', number);
117+
throw new Error('Index number must between 0 and 99: ', number);
118+
}
119+
120+
if (number === 1 && time.min === 0 && time.min === 0 && time.sec === 0 && time.frame === 0) {
121+
cuesheet.newFile();
122+
return;
103123
}
104124

105125
if (!track.indexes) {

lib/cuesheet.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ CueSheet.prototype.getCurrentFile = function() {
5151
} else {
5252
return null;
5353
}
54-
}
54+
};
5555

5656
CueSheet.prototype.getCurrentTrack = function() {
5757
var file = this.getCurrentFile();
@@ -68,9 +68,10 @@ CueSheet.prototype.newFile = function() {
6868
this.files = [];
6969
}
7070

71-
this.files.push(new File());
71+
var file = new File();
72+
this.files.push(file);
7273

73-
return this;
74+
return file;
7475
};
7576

7677
CueSheet.prototype.newTrack = function(number, type) {

package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,15 @@
1313
},
1414
"dependencise": {},
1515
"devDependencies": {
16-
"mocha": "~1.10.0",
17-
"expect.js": "~0.2.0"
16+
"expect.js": "~0.2.0",
17+
"mocha": "~1.10.0"
1818
},
1919
"engines": {
2020
"node": ">=0.10",
2121
"npm": ">=1.2"
2222
},
23-
"license": "MIT"
23+
"license": "MIT",
24+
"dependencies": {
25+
"chardet": "^0.8.0"
26+
}
2427
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
REM GENRE Pop
2+
REM DATE 2018
3+
REM DISCID 7F09CF0A
4+
REM COMMENT "ExactAudioCopy v1.3"
5+
PERFORMER "Frank Boeijen"
6+
TITLE "Palermo"
7+
REM COMPOSER ""
8+
FILE "01. Frank Boeijen - Achter De Wolken.wav" WAVE
9+
TRACK 01 AUDIO
10+
TITLE "Achter De Wolken"
11+
PERFORMER "Frank Boeijen"
12+
REM COMPOSER ""
13+
ISRC NL5BD1700101
14+
FLAGS DCP
15+
INDEX 01 00:00:00
16+
TRACK 02 AUDIO
17+
TITLE "Hoe Het Was"
18+
PERFORMER "Frank Boeijen"
19+
REM COMPOSER ""
20+
ISRC NL5BD1700102
21+
FLAGS DCP
22+
INDEX 00 04:30:66
23+
FILE "02. Frank Boeijen - Hoe Het Was.wav" WAVE
24+
INDEX 01 00:00:00
25+
TRACK 03 AUDIO
26+
TITLE "Vuur En Vlam"
27+
PERFORMER "Frank Boeijen"
28+
REM COMPOSER ""
29+
ISRC NL5BD1700103
30+
FLAGS DCP
31+
INDEX 00 04:12:65
32+
FILE "03. Frank Boeijen - Vuur En Vlam.wav" WAVE
33+
INDEX 01 00:00:00
34+
TRACK 04 AUDIO
35+
TITLE "Jij Bent Hier"
36+
PERFORMER "Frank Boeijen"
37+
REM COMPOSER ""
38+
ISRC NL5BD1700104
39+
FLAGS DCP
40+
INDEX 00 03:08:00
41+
FILE "04. Frank Boeijen - Jij Bent Hier.wav" WAVE
42+
INDEX 01 00:00:00
43+
TRACK 05 AUDIO
44+
TITLE "Vandaag"
45+
PERFORMER "Frank Boeijen"
46+
REM COMPOSER ""
47+
ISRC NL5BD1700105
48+
FLAGS DCP
49+
INDEX 00 03:26:14
50+
FILE "05. Frank Boeijen - Vandaag.wav" WAVE
51+
INDEX 01 00:00:00
52+
TRACK 06 AUDIO
53+
TITLE "Daar Zal Het Zijn"
54+
PERFORMER "Frank Boeijen"
55+
REM COMPOSER ""
56+
ISRC NL5BD1700106
57+
FLAGS DCP
58+
INDEX 00 04:07:72
59+
FILE "06. Frank Boeijen - Daar Zal Het Zijn.wav" WAVE
60+
INDEX 01 00:00:00
61+
TRACK 07 AUDIO
62+
TITLE "Alles Is Teder"
63+
PERFORMER "Frank Boeijen"
64+
REM COMPOSER ""
65+
ISRC NL5BD1700107
66+
FLAGS DCP
67+
INDEX 00 03:50:46
68+
FILE "07. Frank Boeijen - Alles Is Teder.wav" WAVE
69+
INDEX 01 00:00:00
70+
TRACK 08 AUDIO
71+
TITLE "Zon"
72+
PERFORMER "Frank Boeijen"
73+
REM COMPOSER ""
74+
ISRC NL5BD1700108
75+
FLAGS DCP
76+
INDEX 00 04:34:25
77+
FILE "08. Frank Boeijen - Zon.wav" WAVE
78+
INDEX 01 00:00:00
79+
TRACK 09 AUDIO
80+
TITLE "Droom Van Jou"
81+
PERFORMER "Frank Boeijen"
82+
REM COMPOSER ""
83+
ISRC NL5BD1700109
84+
FLAGS DCP
85+
INDEX 00 03:50:04
86+
FILE "09. Frank Boeijen - Droom Van Jou.wav" WAVE
87+
INDEX 01 00:00:00
88+
TRACK 10 AUDIO
89+
TITLE "Hoe Het Ook Gaat"
90+
PERFORMER "Frank Boeijen"
91+
REM COMPOSER ""
92+
ISRC NL5BD1700110
93+
FLAGS DCP
94+
INDEX 00 04:47:13
95+
FILE "10. Frank Boeijen - Hoe Het Ook Gaat.wav" WAVE
96+
INDEX 01 00:00:00
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
REM GENRE Nederpop
2+
REM DATE 1987
3+
REM DISCID 910B940B
4+
REM COMMENT "ExactAudioCopy v0.99pb5"
5+
PERFORMER "Frank Boeijen Groep"
6+
TITLE "Welkom In Utopia"
7+
FILE "01 Welkom In Utopia I.wav" WAVE
8+
TRACK 01 AUDIO
9+
TITLE "Welkom In Utopia I"
10+
PERFORMER "Frank Boeijen Groep"
11+
INDEX 01 00:00:00
12+
FILE "02 Hier Komt De Storm.wav" WAVE
13+
TRACK 02 AUDIO
14+
TITLE "Hier Komt De Storm"
15+
PERFORMER "Frank Boeijen Groep"
16+
INDEX 01 00:00:00
17+
FILE "03 De Wind Nam Hem Mee.wav" WAVE
18+
TRACK 03 AUDIO
19+
TITLE "De Wind Nam Hem Mee"
20+
PERFORMER "Frank Boeijen Groep"
21+
INDEX 01 00:00:00
22+
TRACK 04 AUDIO
23+
TITLE "De Tijden"
24+
PERFORMER "Frank Boeijen Groep"
25+
INDEX 00 05:27:00
26+
FILE "04 De Tijden.wav" WAVE
27+
INDEX 01 00:00:00
28+
FILE "05 Niemand Heeft Gelijk.wav" WAVE
29+
TRACK 05 AUDIO
30+
TITLE "Niemand Heeft Gelijk"
31+
PERFORMER "Frank Boeijen Groep"
32+
INDEX 01 00:00:00
33+
TRACK 06 AUDIO
34+
TITLE "Mantel Der Liefde"
35+
PERFORMER "Frank Boeijen Groep"
36+
INDEX 00 04:10:37
37+
FILE "06 Mantel Der Liefde.wav" WAVE
38+
INDEX 01 00:00:00
39+
TRACK 07 AUDIO
40+
TITLE "Winter In Hamburg"
41+
PERFORMER "Frank Boeijen Groep"
42+
INDEX 00 03:39:25
43+
FILE "07 Winter In Hamburg.wav" WAVE
44+
INDEX 01 00:00:00
45+
TRACK 08 AUDIO
46+
TITLE "Kleine Blonde Prinses"
47+
PERFORMER "Frank Boeijen Groep"
48+
INDEX 00 05:18:25
49+
FILE "08 Kleine Blonde Prinses.wav" WAVE
50+
INDEX 01 00:00:00
51+
FILE "09 De Oorlog Der Liefde.wav" WAVE
52+
TRACK 09 AUDIO
53+
TITLE "De Oorlog Der Liefde"
54+
PERFORMER "Frank Boeijen Groep"
55+
INDEX 01 00:00:00
56+
FILE "10 Vrienden Onder Elkaar.wav" WAVE
57+
TRACK 10 AUDIO
58+
TITLE "Vrienden Onder Elkaar"
59+
PERFORMER "Frank Boeijen Groep"
60+
INDEX 01 00:00:00
61+
FILE "11 Welkom In Utopia II.wav" WAVE
62+
TRACK 11 AUDIO
63+
TITLE "Welkom In Utopia II"
64+
PERFORMER "Frank Boeijen Groep"
65+
INDEX 01 00:00:00
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
REM GENRE Flamenco
2+
REM DATE 1973
3+
REM DISCID 6B085A08
4+
REM COMMENT "ExactAudioCopy v0.99pb5"
5+
PERFORMER "Paco de Lucía"
6+
TITLE "Fuente y Caudal"
7+
FILE "01 - Entre Dos Aguas (Rumba).wav" WAVE
8+
TRACK 01 AUDIO
9+
TITLE "Entre Dos Aguas (Rumba)"
10+
PERFORMER "Paco de Lucía"
11+
ISRC ES5709901833
12+
INDEX 01 00:00:00
13+
TRACK 02 AUDIO
14+
TITLE "Aires Choqueros (Fandangos de Huelva)"
15+
PERFORMER "Paco de Lucía"
16+
ISRC ES5709901831
17+
INDEX 00 05:58:20
18+
FILE "02 - Aires Choqueros (Fandangos de Huelva).wav" WAVE
19+
INDEX 01 00:00:00
20+
TRACK 03 AUDIO
21+
TITLE "Reflejo de Luna (Granaína)"
22+
PERFORMER "Paco de Lucía"
23+
ISRC ES5709901837
24+
INDEX 00 04:12:34
25+
FILE "03 - Reflejo de Luna (Granaína).wav" WAVE
26+
INDEX 01 00:00:00
27+
TRACK 04 AUDIO
28+
TITLE "Solera (Bulería por Soleá)"
29+
PERFORMER "Paco de Lucía"
30+
ISRC ES5709901838
31+
INDEX 00 03:50:02
32+
FILE "04 - Solera (Bulería por Soleá).wav" WAVE
33+
INDEX 01 00:00:00
34+
TRACK 05 AUDIO
35+
TITLE "Fuente y Caudal (Tarantas)"
36+
PERFORMER "Paco de Lucía"
37+
ISRC ES5709901834
38+
INDEX 00 03:41:69
39+
FILE "05 - Fuente y Caudal (Tarantas).wav" WAVE
40+
INDEX 01 00:00:00
41+
TRACK 06 AUDIO
42+
TITLE "Cepa Andalúza (Bulerías)"
43+
PERFORMER "Paco de Lucía"
44+
ISRC ES5709901832
45+
INDEX 00 05:09:74
46+
FILE "06 - Cepa Andalúza (Bulerías).wav" WAVE
47+
INDEX 01 00:00:00
48+
TRACK 07 AUDIO
49+
TITLE "Los Pinares (Tangos)"
50+
PERFORMER "Paco de Lucía"
51+
ISRC ES5709901835
52+
INDEX 00 05:46:07
53+
FILE "07 - Los Pinares (Tangos).wav" WAVE
54+
INDEX 01 00:00:00
55+
TRACK 08 AUDIO
56+
TITLE "Plaza de San Juan (Alegrías)"
57+
PERFORMER "Paco de Lucía"
58+
ISRC ES5709901836
59+
INDEX 00 03:33:73
60+
FILE "08 - Plaza de San Juan (Alegrías).wav" WAVE
61+
INDEX 01 00:00:00

0 commit comments

Comments
 (0)