Skip to content

v3.1.0

Choose a tag to compare

@othiym23 othiym23 released this 11 Jan 03:30
· 118 commits to master since this release

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.

  • c68c35b ID3v2 frames: use musicmetadata to read tags from MP3 files, and create an abstract tag reader function that maps file types to specific kind of tag reader needed. (@othiym23)
  • 0637077 QuickTime atoms: use mp4-parser to read tags from AAC files, and plug it into the abstract tag reader. mp4-parser assumes that everything's UTF-8, so fix up the standard iTunes atom names (which are encoded in... something else) using hax. (@othiym23)
  • 460018f src/flac/*src/metadata/flac/*. (@othiym23)
  • 5525f51 src/mp3/*src/metadata/mp3/*. (@othiym23)
  • 56a1956 Add ability to extract .m4a files and scan them for metadata from zipfiles. (@othiym23)
  • 664c6c4 Extract iTunes helpers from .m4a reader. (@othiym23)
  • 9910efd Rename functions to reflect that packard can handle MP3 and AAC files as well as FLAC files now. (@othiym23)
  • 8033d16 Extract tag internal-name-to-packard-name mappings from metadata readers. (@othiym23)
  • fcc9444 Improve ID3v2 tag reading by incorporating more frame types and simplifying how mappings are used. (@othiym23)
  • 27ee550 Update to @packard/model@3, which uses tags instead of flacTags. (@othiym23)
  • 8da151e Add more tag types based on what's out there in the wild. (@othiym23)
  • b44f31c Warn 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

  • 180470d Burn the boats! Commit to standard! Which I already did! But I forgot to delete .eslintrc! (@othiym23)
  • 5638219 albums and optimize were missing from the command-line summary included in README.md and test/cli-basic.js. (@othiym23)
  • fc9c697 Use files and file tree roots consistently across packard commands. (@othiym23)
  • f7855df Hack around issue with single-track albums as a way of stalling until proper cuesheet parsing can be added. (@othiym23)