Skip to content

Instantly share code, notes, and snippets.

@maimainoue
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maimainoue/7c22eeff3c197998ff89 to your computer and use it in GitHub Desktop.
Save maimainoue/7c22eeff3c197998ff89 to your computer and use it in GitHub Desktop.
mediatoolsから toc 読み取り
MEDIATOOLS.readMediaTools = function(drive,cb) {
var command = 'mediatools.exe drive '+drive+' toc upc isrc';
exec(command,function(err,stdout,stderr){
//if (!err) throw err; // mediatoolsは成功時にerrorcodeを返す?
if( stdout.match( /Unable to retrieve TOC/ ) ) {
throw err;
}
MEDIATOOLS.parseMediaTools(stdout,cb);
});
return ;
}
/*
parse
*/
MEDIATOOLS.parseMediaTools = function(rawdata,cb) {
var discInfo = {};
mtdata = rawdata.replace(/\r/g, '');
var TOCs = mtdata
.findString('TOC START\n','\nTOC END','')
.replace(/\n/g, '\r\n','')
;
discInfo.track = new Array();
TOCs.split('\r\n').forEach( function (value) {
var toc = value.split('\t');
var track = {};
track.start = toc[1].toInt();
track.len = toc[2].toInt();
track.time = toc[3];
discInfo.track.push(track);
});
discInfo.trackCount = discInfo.track.length;
var ISRCs = mtdata
.replace(/\r/g, '','')
.findString('ISRCS STARTS\n','\nISRCS END','')
.replace(/\n/g, '\r\n','')
;
ISRCs.split('\r\n').forEach( function (value) {
var toc = value.split('\t');
var trackindex = toc[1].toInt();
discInfo.track[--trackindex].isrc = toc[2];
});
var EAN = mtdata
.replace(/\r/g, '','')
.findString('UPC STARTS','UPC ENDS','')
.replace(/\n/g, '','')
.replace(/\r/g, '','')
;
if( EAN != '' ) {
discInfo.catalog = EAN;
}
cb(discInfo,rawdata);
return ;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment