diff --git a/src/audio_metadata/formats/flac.py b/src/audio_metadata/formats/flac.py index 5c0a5f4..e896b80 100644 --- a/src/audio_metadata/formats/flac.py +++ b/src/audio_metadata/formats/flac.py @@ -1,3 +1,5 @@ +# https://xiph.org/flac/format.html + __all__ = [ 'FLAC', 'FLACApplication', diff --git a/src/audio_metadata/formats/id3v1.py b/src/audio_metadata/formats/id3v1.py index 7d187e1..b97c3ec 100644 --- a/src/audio_metadata/formats/id3v1.py +++ b/src/audio_metadata/formats/id3v1.py @@ -1,3 +1,5 @@ +# http://id3.org/ID3v1 + __all__ = [ 'ID3v1', 'ID3v1Fields', diff --git a/src/audio_metadata/formats/id3v2.py b/src/audio_metadata/formats/id3v2.py index c99e2c7..12da936 100644 --- a/src/audio_metadata/formats/id3v2.py +++ b/src/audio_metadata/formats/id3v2.py @@ -1,3 +1,5 @@ +# http://id3.org/Developer%20Information + __all__ = [ 'ID3v2', 'ID3v2Flags', diff --git a/src/audio_metadata/formats/id3v2_frames.py b/src/audio_metadata/formats/id3v2_frames.py index 85b96be..599b0e3 100644 --- a/src/audio_metadata/formats/id3v2_frames.py +++ b/src/audio_metadata/formats/id3v2_frames.py @@ -1,3 +1,5 @@ +# http://id3.org/Developer%20Information + __all__ = [ 'ID3v2BaseFrame', 'ID3v2CommentFrame', diff --git a/src/audio_metadata/formats/mp3.py b/src/audio_metadata/formats/mp3.py index 379a136..ca4b0fd 100644 --- a/src/audio_metadata/formats/mp3.py +++ b/src/audio_metadata/formats/mp3.py @@ -1,3 +1,6 @@ +# https://www.mp3-tech.org/programmer/frame_header.html +# http://gabriel.mp3-tech.org/mp3infotag.html + __all__ = [ 'LAMEEncodingFlags', 'LAMEHeader', diff --git a/src/audio_metadata/formats/tables.py b/src/audio_metadata/formats/tables.py index 797ea7b..b5356c0 100644 --- a/src/audio_metadata/formats/tables.py +++ b/src/audio_metadata/formats/tables.py @@ -33,6 +33,7 @@ def __repr__(self): return f'<{self.__class__.__name__}.{self.name}>' +# https://xiph.org/flac/format.html#metadata_block_header class FLACMetadataBlockType(_BaseIntEnum): STREAMINFO = 0 PADDING = 1 @@ -43,6 +44,7 @@ class FLACMetadataBlockType(_BaseIntEnum): PICTURE = 6 +# http://id3.org/id3v2.3.0#Attached_picture class ID3PictureType(_BaseIntEnum): OTHER = 0 FILE_ICON = 1 @@ -77,6 +79,7 @@ class ID3Version(_BaseEnum): v24 = (2, 4) +# https://en.wikipedia.org/wiki/List_of_ID3v1_Genres ID3v1Genres = [ 'Blues', 'Classic Rock', @@ -273,6 +276,7 @@ class ID3Version(_BaseEnum): ID3v2FrameIDs = { + # http://id3.org/id3v2-00 ID3Version.v22: { 'BUF', 'CNT', 'COM', 'CRA', 'CRM', 'ETC', 'EQU', 'IPL', 'LNK', 'MCI', 'MLL', 'PIC', 'POP', 'REV', 'RVA', 'SLT', @@ -283,6 +287,7 @@ class ID3Version(_BaseEnum): 'TT2', 'TT3', 'TXT', 'TXX', 'TYE', 'UFI', 'ULT', 'WAF', 'WAR', 'WAS', 'WCM', 'WCP', 'WPB', 'WXX', }, + # http://id3.org/id3v2.3.0#Declared_ID3v2_frames ID3Version.v23: { 'AENC', 'APIC', 'COMM', 'COMR', 'ENCR', 'EQUA', 'ETCO', 'GEOB', 'GRID', 'IPLS', 'LINK', 'MCDI', 'MLLT', 'OWNE', @@ -296,6 +301,7 @@ class ID3Version(_BaseEnum): 'USER', 'USLT', 'WCOM', 'WCOP', 'WOAF', 'WOAR', 'WOAS', 'WORS', 'WPAY', 'WPUB', 'WXXX', }, + # http://id3.org/id3v2.4.0-frames ID3Version.v24: { 'AENC', 'APIC', 'ASPI', 'COMM', 'COMR', 'ENCR', 'EQU2', 'ETCO', 'GEOB', 'GRID', 'LINK', 'MCDI', 'MLLT', 'OWNE', diff --git a/src/audio_metadata/formats/vorbis.py b/src/audio_metadata/formats/vorbis.py index 15cc346..0b8cb9f 100644 --- a/src/audio_metadata/formats/vorbis.py +++ b/src/audio_metadata/formats/vorbis.py @@ -1,3 +1,5 @@ +# https://xiph.org/vorbis/doc/v-comment.html + __all__ = [ 'VorbisComment', 'VorbisComments', diff --git a/src/audio_metadata/formats/wav.py b/src/audio_metadata/formats/wav.py index 7493da5..a805849 100644 --- a/src/audio_metadata/formats/wav.py +++ b/src/audio_metadata/formats/wav.py @@ -1,3 +1,6 @@ +# http://soundfile.sapp.org/doc/WaveFormat/ +# http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html + __all__ = [ 'RIFFTags', 'WAV', @@ -27,6 +30,7 @@ from ..utils import datareader +# https://www.recordingblogs.com/wiki/list-chunk-of-a-wave-file class RIFFTags(Tags): FIELD_MAP = frozenbidict( {