{"id":16485911,"url":"https://github.com/creeperyang/id3-parser","last_synced_at":"2025-03-16T18:31:52.157Z","repository":{"id":57271079,"uuid":"37846184","full_name":"creeperyang/id3-parser","owner":"creeperyang","description":"A pure JavaScript id3 tag parser.","archived":false,"fork":false,"pushed_at":"2023-06-13T17:28:17.000Z","size":8247,"stargazers_count":54,"open_issues_count":5,"forks_count":13,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-27T12:15:22.847Z","etag":null,"topics":["id3","id3-parser","id3-reader","id3v1","id3v2"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/creeperyang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-06-22T09:04:57.000Z","updated_at":"2024-09-07T16:28:25.000Z","dependencies_parsed_at":"2024-06-18T16:59:22.024Z","dependency_job_id":"547c2f66-c421-472f-a450-1322bf2415ed","html_url":"https://github.com/creeperyang/id3-parser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creeperyang%2Fid3-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creeperyang%2Fid3-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creeperyang%2Fid3-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creeperyang%2Fid3-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/creeperyang","download_url":"https://codeload.github.com/creeperyang/id3-parser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243826783,"owners_count":20354220,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["id3","id3-parser","id3-reader","id3v1","id3v2"],"created_at":"2024-10-11T13:27:43.670Z","updated_at":"2025-03-16T18:31:47.147Z","avatar_url":"https://github.com/creeperyang.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# id3-parser\n\n[![test](https://github.com/creeperyang/id3-parser/actions/workflows/test.yml/badge.svg)](https://github.com/creeperyang/id3-parser/actions/workflows/test.yml)\n[![npm version](https://badge.fury.io/js/id3-parser.svg)](https://badge.fury.io/js/id3-parser)\n[![download times](https://img.shields.io/npm/dm/id3-parser.svg)](https://www.npmjs.com/package/id3-parser)\n[![download times](https://img.shields.io/npm/dt/id3-parser.svg)](https://www.npmjs.com/package/id3-parser)\n\nA pure JavaScript id3 tag parser.\n\n## Installation \u0026 Usage\n\n[![NPM](https://nodei.co/npm/id3-parser.png?downloads=true\u0026downloadRank=true\u0026stars=true)](https://nodei.co/npm/id3-parser/)\n\n```js\nimport parse from 'id3-parser';\n\nconst tag = parse(buffer|uint8Array|number[]);\nconsole.log(tag);\n```\n\nIf 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`.\n\n```js\nimport parse from 'id3-parser';\nimport { convertFileToBuffer, fetchFileAsBuffer } from 'id3-parser/lib/util';\n\n// You have a File instance in browser\nconvertFileToBuffer(file).then(parse).then(tag =\u003e {\n    console.log(tag);\n});\n// Or a remote mp3 file url\nfetchFileAsBuffer(url).then(parse).then(tag =\u003e {\n    console.log(tag);\n});\n```\n\n## API\n\nIn most cases, you always want input an array of number (binary data) and then get the id3 tag info.\n\n```js\nimport parse, { parseV1Tag, parseV2Tag } from 'id3-parser';\nparse(array) // ==\u003e tag\n```\n\n### parse(buffer|uint8Array|number[])\n\nParse id3v1 and id3v2.3 tags from a buffer(Node `Buffer` instance), uint8Array(`Uint8Array` instance).\n\nThe typical parsed tag (return value) would be like:\n\n```js\n{\n    version: {\n        v1: false, // means no id3v1 tag\n        v2: {\n            major: 2,\n            minor: 3,\n            revision: 0,\n            flags: {\n                unsync: false,\n                xheader: false,\n                experimental: false,\n            },\n        },\n    },\n    artist: '王菲',\n    album: '匆匆那年',\n    title: '匆匆那年',\n    year: '2014-11-05',\n    comments: [{\n        description: '',\n        language: 'eng',\n        value: 'V1.0',\n    }],\n    lyrics: [{\n        description: 'h',\n        language: 'eng',\n        // tslint:disable-next-line:max-line-length\n        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',\n    }],\n    image: {\n        type: 'cover-front',\n        mime: 'image/jpeg',\n        description: 'e',\n        data: buffer // just the cover's binary data\n    },\n}\n```\n\n### parseV1Tag(buffer|uint8Array|number[]) | parseV2Tag(buffer|uint8Array|number[])\n\nOnly parse id3v1 tag or id3v2 tag.\n\n## License\nCopyright (c) 2015 creeperyang. Licensed under the MIT license.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreeperyang%2Fid3-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcreeperyang%2Fid3-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreeperyang%2Fid3-parser/lists"}