node-id3
node-id3 copied to clipboard
Changes and fixes for new API release
Trying to list the changes and fixes we want to do for the next API release
Public API changes:
- remove support of
string(which is implicetely encoded as UTF8) for thedatamember inprivateframe - align frame types between read and write (make read and write isomorphic)
- separate buffer and file operations
- ~~
noRawoption should also apply for tags Chapters and TOCs (should be recursive)~~ -
Promisesshould only work with files, there is no point having an asynchronous API for Buffers since there are synchronous operations - align all tag aliases names (and terminology) with the ID3 documentation (some tag aliases use a different terminology)
- enable all multiple frames
- unsynchronised lyrics (
USLT) - attached picture (
APIC) - others?
- unsynchronised lyrics (
- support image file links in
APICframe - remove the update function, there are edge-cases especially with multiple frames we can't deal with the function correctly, read and write should enough and more flexible
- read will return an object with
frames(known frames),unknownFrames(with a buffer for each frame) andundecodableFrames, write will consume the same object (unknownFramesandundecodableFramescould be merged in a singleundecodableFrameswhere the reason for un-decodable could be eitherunknownor an error)- define a format for
unknownFramesandundecodableFrames -
undecodableFramesshould have extra information which indicate the failure - should the read function provide extra frame information from the frame header? (frame id, size, etc.) or
- should we provide a utility function to extract information from a frame header (I would say yes)
- define a format for
- have some thoughts of how to deal with identifiers and aliases (remove aliases???)
- write will only accepts identifiers and we provide a converter to convert from aliases to identifiers
- read will only return identifiers and we provide a converter to convert from identifiers to aliases
- this is flexible, robust, composable and simpler
- try to make
zlibandfsdependencies run-time and injectable dependencies to improve portability - maybe provide a write option to choose the string encoding scheme
Possible future public API improvements:
- provide the ability to write custom frame handlers
Internal changes:
- add an option to
FrameBuilderto emit an encoding byte - name "at least"
sizeparameter inFrameBuilderandFrameReaderas very often this is a static value - rename
FRAME_OPTIONStoFRAME_PROPERTIESI think this is more appropriate
Related issues:
- issue #85
- issue #113