@infinito/id3
Version:
ID3 Tag Reader/Writer
25 lines (22 loc) • 868 B
JavaScript
import fs from 'fs';
import {constants} from './constants.js';
import validID3 from './valid.js';
export default function getTagBuffer(path) {
if(typeof path!="string") {
throw new TypeError('parameter path must be a string');
}
if(!(fs.existsSync(path))) {
throw new Error(`${path} not found`);
}
const fd = fs.openSync(path,'r');
let buf = new Uint8Array(constants.ID3_HEADER_LENGTH_BYTES);
if(fs.readSync(fd,buf,0,constants.ID3_HEADER_LENGTH_BYTES,0)!=constants.ID3_HEADER_LENGTH_BYTES) {
throw new Error('fs.readSync failed');
}
const tagInfo = validID3(buf.buffer);
buf = new Uint8Array(tagInfo.size+constants.ID3_HEADER_LENGTH_BYTES);
if(fs.readSync(fd,buf,0,tagInfo.size+constants.ID3_HEADER_LENGTH_BYTES,0)!=tagInfo.size+constants.ID3_HEADER_LENGTH_BYTES) {
throw new Error('fs.readSync failed');
}
return buf;
}