Releases: thebigmunch/audio-metadata
Releases · thebigmunch/audio-metadata
0.11.1
0.11.0
Added
ID3v2Disc
.ID3v2DiscFrame
.ID3v2Track
.ID3v2TrackFrame
.ID3v2TPROFrame
.- Support for ID3v2 Popularimeter frames.
ID3v2Popularimeter
.ID3v2PopularimeterFrame
.
ID3v2PodcastFrame
.- Support for Apple
GRP1
andTCAT
ID3v2 frames. ID3v2AudioEncryptionFrame
.- Support for ID3v2 play counter frames.
ID3v2PlayCounterFrame
.
- Support for ID3v2 recommended buffer frames.
ID3v2RecommendedBuffer
.ID3v2RecommendedBufferFrame
.
- Support for ID3v2 event timing codes frames.
ID3v2Event
.ID3v2Events
.ID3v2EventTypes
.ID3v2EventTimingCodesFrame
.
Changed
ID3v2NumberFrame
value is not the appropriate class
(ID3v2Disc
orID3v2Track
) rather than having
the number/total abstraction on the frame class itself.- Use a single enum for ID3v2 timestamp format.
- Remove
ID3v2LyricsTimestampFormat
. - Remove
ID3v2TempoTimestampFormat
.
- Remove
Removed
ID3v2LyricsTimestampFormat
.ID3v2TempoTimestampFormat
.
Fixed
- Missing maxsplit argument in
ID3v2UniqueFileIdentiferFrame
parsing.
0.10.0
Added
WAVSubchunk
.audio_format
attribute toWAVEStreamInfo
.WAVEAudioFormat
enum.- Audio format extension data to
WAVEStreamInfo
. - Support for bitmap images.
- Properly support ID3v2 header flag differences between versions.
- Support for ID3v2 unsynchronization and frame flags.
encode_synchsafe_int
.
Changed
- 'WAV' -> 'WAVE' to match the name rather than extension.
- Refactor
WAVE.parse
.- Move subchunk parsing into separate method.
- Add
WAVESubchunk
.
- Keep unhandled WAVE subchunks.
- Store
ID3v2
inFLAC
in_id3
attribute. - Emit warning when ignoring ID3v2 frames with bad values.
- Ignore ID3v2 frames with no value.
- Catch and raise more exceptions when parsing ID3v2 frames.
- Raise exception when decoding too large synchsafe integer.
Fixed
- Invalid duration calculation for
WAV
. - Properly handle invalid comment, involved people list, and TMCL frames
- Properly support ID3v2.2
PIC
frames. - Make
apply_unsynchronization
/remove_unsynchronization
functions fully comply with the ID3v2 unsynchronization scheme.
0.9.0
Added
Tag
.RIFFTag
.ID3v1Field
.ID3v1AlbumField
.ID3v1ArtistField
.ID3v1CommentField
.ID3v1GenreField
.ID3v1TitleField
.ID3v1TrackNumberField
.ID3v1YearField
.- `ID3v2InvolvedPeopleListFrame
as subclass of
ID3v2PeopleListFrame``. ID3v2TMCLFrame
as subclass ofID3v2PeopleListFrame
.FormatError
.TagError
.FLACVorbisComments
.- Support for ID3v2 unique file identifier frames.
ID3v2UniqueFileIdentifier
.ID3v2UniqueFileIdentifierFrame
.
- Support for ID3v2 synchronized tempo codes frames.
ID3v2TempoTimestampFormat
,ID3v2SynchronizedTempoCodes
.ID3v2SynchronizedTempoCodesFrame
.
- Support for multiple text strings in ID3v2 user text frames.
- Support for ID3v2
USER
frames.ID3v2TermsOfUse
.ID3v2USERFrame
.
- Support for ID3v2
GRID
frames.ID3v2GroupID
.ID3v2GRIDFrame
.
- Support for ID3v2
OWNE
frames.ID3v2OwnershipTransaction
.ID3v2OWNEFrame
.
Changed
- Rename
value
attribute ofID3v2GeneralEncapsulatedObject
toobject
. - Make
VorbisComment
subclassTag
. - Refactor ID3v1 to use tag classes.
ID3v1Field
.ID3v1AlbumField
.ID3v1ArtistField
.ID3v1CommentField
.ID3v1GenreField
.ID3v1TitleField
.ID3v1TrackNumberField
.ID3v1YearField
.
- Rename
ID3v2MappingListFrame
toID3v2PeopleListFrame
. - Use
ID3v2Frame
as base class for all ID3v2 frame classes. - Make
ID3v2Frame
subclassTag
. - Refactor ID3v2 frame parsing.
- Add
_parse_frame_header
helper method onID3v2Frame
. - Add
_parse_frame_data
helper method to all ID3v2 frame classes. ID3v2Frame.parse
calls into helper methods for appropriate subclass.
- Add
- Revise exceptions.
- Check for framing bit in Ogg Vorbis comments.
- Check for invalid characters in Vorbis comment field names.
- Rename some ID3v2 frame classes:
ID3v2GEOBFrame
->ID3v2GeneralEncapsulatedObjectFrame
.ID3v2TDATFrame
->ID3v2DateFrame
.ID3v2TIMEFrame
->ID3v2TimeFrame
.
- Refactor
FLAC.parse
.- Move metadata block parsing into separate method.
- Add
FormatError
exceptions where needed.
Removed
ID3v2BaseFrame
.InvalidBlock
.InvalidChunk
.InvalidComment
.InvalidFormat
.InvalidFrame
.InvalidHeader
.
Fixed
ID3v2BinaryDataFrame
not inheriting fromID3v2BaseFrame
.- Support for ID3v2 frames with more than 2 values.
- ID3v2 genre frame parsing.
0.8.0
Added
- Support for ID3v2 involved people list frames.
ID3v2InvolvedPerson
.ID3v2MappingListFrame
.
ID3v2Comment
.- Ogg machinery.
Ogg
.OggPage
.OggPageHeader
.OggPageSegments
.
- Ogg Opus load(s) support.
OggOpus
.OggOpusStreaminfo
.OggOpusVorbisComments
.
AudioMetadataWarning
.ID3v2BinaryDataFrame
.- Support for MCDI ID3v2 frame.
- Finish support for ID3v2.4 timestamp frames.
TDEN
.TDOR
.TDRC
.TDRL
.TDTG
.
- Support for TMCL ID3v2.4 frame.
ID3v2Performer
.
- Ogg Vorbis load(s) support.
OggVorbis
.OggVorbisStreamInfo
.OggOpusVorbisComments
.
ID3v2GeneralEncapsulatedObject
.ID3v2PrivateInfo
.ID3v2UserURLLink
.ID3v2UserText
.ID3v2Lyrics
.ID3v2SynchronizedLyrics
.ID3v2UnsynchronizedLyrics
.ID3v2LyricsFrame
.ID3v2LyricsContentType
.ID3v2LyricsTimestampFormat
.ID3v2FrameAliases
.ID3v2FrameTypes
.
Changed
- Make all attrs classes require keyword arguments.
- Rework ID3v2 comments abstractions.
- Add
ID3v2Comment
class to encapsulate each comment. - Change
ID3v2CommentFrame
to have only value attribute
that contains a single comment. - Change
ID3v2Frames
to present a list of comments forcomment
key.
- Add
- Rename
formats.vorbis
module toformats.vorbis_comments
. - Load most commonly used unoffical ID3v2 frames.
- Rename class builder methods to
parse
. - Rework ID3v2 general encapsulated object abstractions.
- Add
ID3v2GeneralEncapsulatedObject
class. - Change
ID3v2GEOBFrame
to have only value attribute
that contains a single general encapsulated object. - Change
ID3v2Frames
to present a list of general
encapsulated objects forGEOB
key.
- Add
- Rework ID3v2 private information frame abstractions.
- Add
ID3v2PrivateInfo
class. - Change
ID3v2PrivateFrame
to have only value attribute
that contains a single private information object. - Change
ID3v2Frames
to present a list of private info
objects forPRIV
key.
- Add
- Rework ID3v2 user URL link frame abstractions.
- Add
ID3v2UserURLLink
class. - Change
ID3v2UserURLLinkFrame
to have only value attribute
that contains a single user URL link object. - Change
ID3v2Frames
to present a list of user URL link
objects forWXXX
key.
- Add
- Rework ID3v2 user text frame abstractions.
- Add
ID3v2UserText
class. - Change
ID3v2UserTextFrame
to have only value attribute
that contains a single user text object. - Change
ID3v2Frames
to present a list of user text
objects forTXXX
key.
- Add
- Rework ID3v2 lyrics frames abstractions.
- Add
ID3v2Lyrics
,ID3v2SynchronizedLyrics
,
andID3v2UnsynchronizedLyrics
classes. - Change
ID3v2SynchronizedLyricsFrame
andID3v2UnsynchronizedLyricsFrame
to have only value attribute
that contains a single lyrics object. - Change
ID3v2Frames
to present a list of lyrics
objects forSYLT
/USLT
keys.
- Add
- Move ID3v2 frame alias map out of
ID3v2Frames
. - Move ID3v2 frame type map out of
ID3v2Frame
.
Removed
- Move
DataReader
class anddatareader
decorator totbm-utils
.
Fixed
- Apply CBR bitrate mode check to MP3s with non-LAME Xing headers.
- Properly determine UTF-16 encodings in ID3v2 frames.
0.7.0
Added
- ID3 version as attribute on
ID3v2Frames
. VorbisComment
.InvalidComment
exception.
Changed
- Set
FIELD_MAP
on instance rather than class inID3v2Frames.load
. - Convert
LAMEHeader.unwise_settings_used
to boolean. - Handle ID3 frames not valid for ID3 header version.
Ignore them and emit a warning to the user. - Move models module to top level.
vorbis.VorbisPicture
->flac.FLACPicture
.
Fixed
RIFFTags
field values are now lists.- Regression with
MP3StreamInfo.find_mpeg_frames
caching.
0.6.0
Added
InvalidChunk
exception.- Support for VBRI headers in MP3.
LAMEEncodingFlags
.ID3v2Flags
.- ABR presets to
LAMEPreset
enum. InvalidBlock
exception.
Changed
- Refactor high-level API functions and
DataReader
to handle
various inputs better, especially file-like objects. - Support 0-duration FLAC files.
- Raise proper exception if WAV stream info not found.
- Make LAMEReplayGain contain both track and album gains.
- Attributes are now:
peak, track_type, track_origin, track_adjustment, album_type, album_origin, album_adjustment
- LAMEHeader attributes from
album_gain, track_gain
to
replay_gain
.
- Attributes are now:
- Use MusicBrainz Picard tag mappings.
- RIFFTags loading.
It now expectsINFO
at start and raises an exception if not. - Use find_mp3_frames for all possible MP3 inputs in determine_format.
This prevents some misidentification, specifically
in the case of little-endian BOM of UTF-16-encoded text. - Rename
XingTOC
toXingToC
. - Improve load(s) performance:
* Usefunctools.lru_cache
to remove penalty
of callingMP3Streaminfo.find_mpeg_frames
once when determining format of MP3s and
again when loading the MP3.
* Usebitstruct
C extension when available.
Removed
extension
parameter fromdetermine_format
.
The purpose it served is no longer necessary.
Fixed
- APEv2/ID3v1 searching for MP3 causing load failures in some cases.
0.5.0
Added
bit_depth
toWAVStreamInfo
.- Support for RIFF tags to WAV.
Changed
- Expose full ID2v2 object in MP3 instead of just the header.
- Use ID3v1.1 format instead of ID3v1.0.
determine_format
extension check:- Force lowercase comparison.
- Don't require period.
- Rename
VorbisComment
toVorbisComments
. - Improve MP3 frame detection.
Fixed
- Actually check if a bytes-like object was given to
loads
.