id3-parser
Version:
A pure JavaScript id3 tag parser.
37 lines (34 loc) • 975 B
text/typescript
import { IBytes, IID3Tag, ITags } from './interface';
import parseV1Tag from './parsers/v1parser';
import parseV2Tag from './parsers/v2parser';
function parse(bytes: IBytes) {
const v1data = parseV1Tag(bytes);
const v2data = parseV2Tag(bytes);
if (!v2data && !v1data) {
return false;
}
const defaultValue = { version: false };
const { version: v2, ...v2meta } = v2data || defaultValue;
const { version: v1, ...v1meta } = v1data || defaultValue;
const result: IID3Tag = {
version: {
v1,
v2,
},
...v1meta,
...v2meta,
};
/* tslint:disable:no-any */
if ((v1meta as ITags).comments) {
result.comments = [{
value: (v1meta as ITags).comments,
}, ...(v2meta && (v2meta as any).comments) ? (v2meta as any).comments : []];
}
/* tslint:enable:no-any */
return result;
}
export default parse;
export {
parseV1Tag,
parseV2Tag,
};