benrr101 / node-taglib-sharp

A node.js port of mono/taglib-sharp
GNU Lesser General Public License v2.1
42 stars 11 forks source link

TagLib# for Node

Master Develop Latest
Build Status Build Status Build Status
Coverage Status Coverage Status Coverage Status

Description

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.

Supported Tagging Formats

Supported File Formats

Installation

npm install --save node-taglib-sharp

Getting Started

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();

Known Issues