@infinito/id3
Version:
ID3 Tag Reader/Writer
30 lines (28 loc) • 1.15 kB
JavaScript
import {constants} from './constants.js';
import getSyncSafe from './get.syncsafe.js';
export default function validID3(buf) {
if(!(buf instanceof ArrayBuffer)) {
throw new TypeError('parameter buf must be an instance of an ArrayBuffer');
}
if(buf.byteLength<constants.ID3_HEADER_LENGTH_BYTES) {
throw new Error('buffer provided to validID3 must be at least as big as the ID3 header');
}
var res = {
ver:0,
subver:0,
flags:0,
size:0
};
const header = new Uint8Array(buf,0,constants.ID3_HEADER_LENGTH_BYTES-constants.ID3_HEADER_TAG_SIZE_LENGTH_BYTES);
for(let i=0;i<constants.ID3_HEADER_IDENTIFIER_LENGTH_BYTES;i++) {
if(header[i]!=constants.ID3_HEADER_IDENTIFIER[i]) {
throw new Error("No valid id3 tags found");
return false;
}
}
res.ver = header[constants.ID3_HEADER_IDENTIFIER_LENGTH_BYTES];
res.subver = header[constants.ID3_HEADER_IDENTIFIER_LENGTH_BYTES+1];
res.flags = header[constants.ID3_HEADER_IDENTIFIER_LENGTH_BYTES+2];
res.size = getSyncSafe(new Uint8Array(buf,constants.ID3_HEADER_IDENTIFIER_LENGTH_BYTES+3,constants.ID3_HEADER_TAG_SIZE_LENGTH_BYTES));
return res;
};