UNPKG

@infinito/id3

Version:
25 lines (22 loc) 868 B
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; }