Master | Develop | Latest |
---|---|---|
TagLib# is a .NET library that has been around for years. It provides a unified interface for accessing metadata from a vast selection of media files. Until now there hasn't been a port of this library for Node.js. This project is a mostly wholesale translation of the original TagLib#.
Note: A port of TagLib already exists for Node.js. Despite TagLib being the origin of TabLib#, it is substantially lacking in the variety of media formats that can be handled. TagLib# greatly improved on the original TagLib, hence why this project exists.
AAC
, APE
, FLAC
, M2A
, MP1
, MP2
, MP3
M4A
, M4B
, M4P
, M4V
, MP4
ASF
, WMA
, WMV
AVI
, DIVX
, WAV
AAC
, FLAC
, M2A
, MP1
, MP2
, MP3
AAC
, AIF
, AIFF
, AVI
, DIVX
, FLAC
, M2A
, MP1
, MP2
, MP3
, WAV
MK3D
, MKA
, MKS
, MKV
, WEBM
read-onlyAVI
, DIVX
, WAV
AVI
, DIVX
, WAV
FLAC
, OGA
, OGG
, OGV
, OPUS
AAC
ASF
, WMA
, WMV
AIF
, AIFF
FLAC
MK3D
, MKA
, MKS
, MKV
M2A
, MP1
, MP2
, MP3
M2V
, MPE
, MPEG
, MPG
, MPV2
M4A
, M4B
, M4P
, M4V
, MP4
APE
OGA
, OGG
, OGV
, OPUS
AVI
, DIVX
, WAV
WEBM
npm install --save node-taglib-sharp
Getting started with node-taglib-sharp is surprisingly easy. The main entry point into the library
is via the File
class.
import {File} from "node-taglib-sharp";
const myFile = File.createFromPath("path/to/my/file.mp3");
The File
class provides factory methods for generating instances of classes that inherit from
File
to provide implementation specific to a file format (such as ApeFile
providing support
for Monkey's Audio files). The File
class has exposes the properties
and tag
properties to
allow manipulation of the tagging information and reading audio/video properties.
See the docs for the File class for complete details of the available properties.
console.log(myFile.properties.audioBitrate);
console.log(myFile.tag.title);
The Tag
base class provides a tagging-format agnostic interface to modify tag(s) on the file
object. Set tag properties as needed and they will be stored in a tagging format that is supported
by the file type. The changes can be easily written back to the file with save()
.
See the docs for the Tag class for complete details of the fields
supported by the format-agnostic Tag
class.
myFile.tag.title = "Time Won't Let Me Go";
myFile.tag.album = "The Sun And The Moon";
myFile.tag.performers = ["The Bravery"];
myFile.save();
myFile.dispose();
integer
types for position arguments, which safely goes up to 2^52 - 1
. Node 15 supports
number
or biginteger
for position arguments which would increase supported sizes to 64-bit
integers. Please create issue if this is a blocker.