Read and edit MP3 metadata - ID3v2.2/2.3/2.4 and ID3v1.1 tags, embedded artwork, MPEG audio frame and Xing/VBRI stream analysis - and build M3U/M3U8 playlists
[decks]
"@deckyard/mp3" = "^0.1.0"| Version | Status | Kind | Pin | Requires | Engines | Capabilities |
|---|---|---|---|---|---|---|
| 0.1.0 | live | git | 39f4b6993fa2 | - | jennifer >=0.25.0 jennifer-tiny >=0.25.0 | - |
LGPL-3.0-only
0.1.0Times a client asked this registry where to find this deck. Not downloads: the registry only stores metadata, and the code is fetched from its repository directly, so we never see an install and cannot count one. Repeated builds inflate these numbers; installs from an existing lockfile do not appear at all. Counted in UTC.
A Jennifer deck that reads and writes MP3 metadata and M3U playlists, in pure Jennifer: ID3v2.2, 2.3 and 2.4 tags (unsynchronisation, compressed frames, all four text encodings, artwork), ID3v1 and ID3v1.1 with the 192-entry genre table, MPEG frame headers with Xing, Info and VBRI stream headers, and M3U / M3U8 playlists. One Tag struct covers every tag version, for reading and for writing.
jvc add @deckyard/mp3jvc vendors the src/ subtree to vendor/deckyard/mp3/. Without jvc, copy src/ (the entry module mp3.j and topics/) from a checkout or a deckyard-mp3-<version>.tar.gz release archive into that directory.
Requires Jennifer 0.25.0 or newer, and runs on jennifer-tiny. No network, subprocess or database; only open, save, writeFile, openPlaylist and savePlaylist touch the disk, through fs.
use io;
import "@deckyard/mp3/" as mp3;
def track as mp3.Track init mp3.open("song.mp3");
io.printf("%s\n", mp3.describe($track));
# Maike Vandervaart - Ich war müde leer nicht mehr da 4:18 160 kbit/s VBR 44100 Hz stereo
def tag as mp3.Tag init $track.tag;
$tag.genre = "Ambient";
mp3.save(mp3.withTag($track, $tag), "song.mp3");The book: guides, the on-disk formats, and a cheatsheet of every export. Runnable programs are in examples/. Contributors: the gate is tools/check-all.sh.
LGPL-3.0-only, see LICENSE. Copyright (C) 2026 mplx <[email protected]>.