# id3-parser **Repository Path**: cwhmygit/id3-parser ## Basic Information - **Project Name**: id3-parser - **Description**: A pure JavaScript id3 tag parser. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-10-03 - **Last Updated**: 2024-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # id3-parser [![test](https://github.com/creeperyang/id3-parser/actions/workflows/test.yml/badge.svg)](https://github.com/creeperyang/id3-parser/actions/workflows/test.yml) [![npm version](https://badge.fury.io/js/id3-parser.svg)](https://badge.fury.io/js/id3-parser) [![download times](https://img.shields.io/npm/dm/id3-parser.svg)](https://www.npmjs.com/package/id3-parser) [![download times](https://img.shields.io/npm/dt/id3-parser.svg)](https://www.npmjs.com/package/id3-parser) A pure JavaScript id3 tag parser. ## Installation & Usage [![NPM](https://nodei.co/npm/id3-parser.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/id3-parser/) ```js import parse from 'id3-parser'; const tag = parse(buffer|uint8Array|number[]); console.log(tag); ``` If you want to use inside browser, you may need to use with webpack or other pack utils. The lib itself is writtern with typescript and traformed to `es2015`. ```js import parse from 'id3-parser'; import { convertFileToBuffer, fetchFileAsBuffer } from 'id3-parser/lib/util'; // You have a File instance in browser convertFileToBuffer(file).then(parse).then(tag => { console.log(tag); }); // Or a remote mp3 file url fetchFileAsBuffer(url).then(parse).then(tag => { console.log(tag); }); ``` ## API In most cases, you always want input an array of number (binary data) and then get the id3 tag info. ```js import parse, { parseV1Tag, parseV2Tag } from 'id3-parser'; parse(array) // ==> tag ``` ### parse(buffer|uint8Array|number[]) Parse id3v1 and id3v2.3 tags from a buffer(Node `Buffer` instance), uint8Array(`Uint8Array` instance). The typical parsed tag (return value) would be like: ```js { version: { v1: false, // means no id3v1 tag v2: { major: 2, minor: 3, revision: 0, flags: { unsync: false, xheader: false, experimental: false, }, }, }, artist: '王菲', album: '匆匆那年', title: '匆匆那年', year: '2014-11-05', comments: [{ description: '', language: 'eng', value: 'V1.0', }], lyrics: [{ description: 'h', language: 'eng', // tslint:disable-next-line:max-line-length value: '\n[00:01.92]匆匆那年(电影《匆匆那年》主题曲)\n[00:02.19]作词:林夕\n[00:02.63]作曲:梁翘柏\n[00:02.98]演唱:王菲\n[00:04.44]\n[00:28.71]匆匆那年我们 究竟说了几遍 再见之后再拖延\n[00:34.21]可惜谁有没有 爱过不是一场 七情上面的雄辩\n[00:39.90]匆匆那年我们 一时匆忙撂下 难以承受的诺言\n[00:45.45]只有等别人兑现\n[00:49.53]\n[00:51.17]不怪那吻痕还 没积累成茧\n[00:56.71]拥抱着冬眠也没能 羽化再成仙\n[01:02.33]不怪这一段情 没空反复再排练\n[01:07.88]是岁月宽容恩赐 反悔的时间\n[01:16.20]\n[01:18.92]如果再见不能红着眼 是否还能红着脸\n[01:24.71]就像那年匆促 刻下永远一起 那样美丽的谣言\n[01:29.97]如果过去还值得眷恋 别太快冰释前嫌\n[01:36.03]谁甘心就这样 彼此无挂也无牵\n[01:41.67]我们要互相亏欠 要不然凭何怀缅\n[01:57.64]\n[01:58.81]匆匆那年我们 见过太少世面 只爱看同一张脸\n[02:04.19]那么莫名其妙 那么讨人欢喜 闹起来又太讨厌\n[02:09.85]相爱那年活该 匆匆因为我们 不懂顽固的诺言\n[02:15.34]只是分手的前言\n[02:19.61]\n[02:20.99]不怪那天太冷 泪滴水成冰\n[02:26.63]春风也一样没 吹进凝固的照片\n[02:32.26]不怪每一个人 没能完整爱一遍\n[02:37.86]是岁月善意落下 残缺的悬念\n[02:47.25]\n[02:48.88]如果再见不能红着眼 是否还能红着脸\n[02:54.71]就像那年匆促 刻下永远一起 那样美丽的谣言\n[02:59.99]如果过去还值得眷恋 别太快冰释前嫌\n[03:06.05]谁甘心就这样 彼此无挂也无牵\n[03:11.02]\n[03:11.27]如果再见不能红着眼 是否还能红着脸\n[03:17.53]就像那年匆促 刻下永远一起 那样美丽的谣言\n[03:22.31]如果过去还值得眷恋 别太快冰释前嫌\n[03:28.52]谁甘心就这样 彼此无挂也无牵\n[03:34.15]我们要互相亏欠\n[03:39.73]我们要藕断丝连\n[03:51.48]\n', }], image: { type: 'cover-front', mime: 'image/jpeg', description: 'e', data: buffer // just the cover's binary data }, } ``` ### parseV1Tag(buffer|uint8Array|number[]) | parseV2Tag(buffer|uint8Array|number[]) Only parse id3v1 tag or id3v2 tag. ## License Copyright (c) 2015 creeperyang. Licensed under the MIT license.