flac-stream-tagger
Pure JavaScript FLAC Tag writer and reader.
Improved from flac-tagger to have native stream support and better memory handling for large files.
Installation
npm install flac-stream-tagger
Usage
Read
import { FlacStreamTagger } from "flac-stream-tagger";
import { createReadStream } from "fs";
import { readFile } from "fs/promises";
const readStream = createReadStream("input.flac");
const tagger = readStream.pipe(new FlacStreamTagger());
const tagger = FlacStreamTagger.fromBuffer(await readFile("input.flac"));
Print Tags
const tags = await tagger.tags();
console.log(tags);
const blocks = await tagger.metaBlocks();
console.log(blocks);
const { title, artist, album } = tags.tagMap;
const coverBuffer = tags.picture?.buffer;
Write
import { FlacStreamTagger } from "flac-stream-tagger";
import { readFile } from "fs/promises";
const flacTags: FlacTags = {
tagMap: {
title: "song title",
artist: ["artist A", "artist B"],
album: "album name",
},
picture: {
buffer: await readFile("coverImage.jpg"),
},
};
const inputStream: Readable;
const tagger = inputStream.pipe(new FlacStreamTagger(tags));
const tagger = FlacStreamTagger.fromBuffer(inputBuffer, tags);
tagger.pipe(createWriteStream("output.flac"));
cosnt buffer = await tagger.toBuffer();
Specification