v3.1.0
more metadata!
It was always my plan to add support for MP3 and AAC files to packard, it's just that for DJing and listening, I've been buying nothing but FLAC files (or buying WAVs that I then transcode to FLAC before archiving them – thanks, Beatport!). It turns out the state of the art as far as tag reading isn't quite where I'd like it to be, but with some creative hacking, I was able to get the streaming ID3v2 frame and QuickTime atom parsers I needed to make this happen.
In principle, packard should now be agnostic to audio file types, and adding additional file types, should someone want to (MQA? ALAC? Monkey's Audio? shn?), should be easy at this point, assuming a streaming parser for the tag frames exist in the npm ecosystem. At some point, I'd like to add the ability to clean up tags, but that's a little stickier, given how complicated writing the different kinds of tags are.
c68c35bID3v2 frames: usemusicmetadatato read tags from MP3 files, and create an abstract tag reader function that maps file types to specific kind of tag reader needed. (@othiym23)0637077QuickTime atoms: usemp4-parserto read tags from AAC files, and plug it into the abstract tag reader.mp4-parserassumes that everything's UTF-8, so fix up the standard iTunes atom names (which are encoded in... something else) using hax. (@othiym23)460018fsrc/flac/*→src/metadata/flac/*. (@othiym23)5525f51src/mp3/*→src/metadata/mp3/*. (@othiym23)56a1956Add ability to extract.m4afiles and scan them for metadata from zipfiles. (@othiym23)664c6c4Extract iTunes helpers from.m4areader. (@othiym23)9910efdRename functions to reflect thatpackardcan handle MP3 and AAC files as well as FLAC files now. (@othiym23)8033d16Extract tag internal-name-to-packard-name mappings from metadata readers. (@othiym23)fcc9444Improve ID3v2 tag reading by incorporating more frame types and simplifying how mappings are used. (@othiym23)27ee550Update to@packard/model@3, which usestagsinstead offlacTags. (@othiym23)8da151eAdd more tag types based on what's out there in the wild. (@othiym23)b44f31cWarn when a metadata reader encounters an unfamiliar tag type – that's the quickest way to ensure that the unknown tag type gets incorporated into the tag-reading framework. (@othiym23)
tweaks
180470dBurn the boats! Commit to standard! Which I already did! But I forgot to delete.eslintrc! (@othiym23)5638219albumsandoptimizewere missing from the command-line summary included inREADME.mdandtest/cli-basic.js. (@othiym23)fc9c697Use files and file tree roots consistently acrosspackardcommands. (@othiym23)f7855dfHack around issue with single-track albums as a way of stalling until proper cuesheet parsing can be added. (@othiym23)