-
π‘ Notes on how to print mp3 tags using other tools:
mid3v2 --list-raw spec/03.\ Kaste.mp3
mp3info spec/03.\ Kaste.mp3
exiftool -json spec/03.\ Kaste.mp3
ffprobe spec/03.\ Kaste.mp3
-
π‘ Replace all inspect with pretty_print
-
π‘ Read apev2 tags (https://mutagen-specs.readthedocs.io/en/latest/apev2/)apev2.html
-
π‘ Calculate length of mp3 file (lazily)
-
π‘β Should TaggedFile shortcut genre return string or the V1 genre enum?
-
π‘π Security: Validate sizes (configurable): max for tag is 256MB, max for frame is 16MB
-
π‘ Add more test files
-
Checklist: https://stackoverflow.com/questions/63578757/id3-parser-and-editor
-
π£ V2
- π’ Read header
- π’ Read text frames
- π’ Cli command to print info and frames of a file
- π’ Logging
- π‘ Read all V2 tags (2.2, 2.3, 2.4)
- π‘ Eager load most common frames, lazily load uncommon frames and frames with a lot of data
- π‘ Validate 3 character frame ids for 2.2
- π‘ Tag ids for 2.2 are different, so SHORTCUTS have to be different: title: TT2 artist: TP1 album: TAL year: TYE track: TRK comment: COM genre: TCO
- π‘ Better exceptions that show at which step or which frame an error occurred
- π‘ Strict and graceful mode: stop reading frames when there is an error, but dont raise
- π‘ Specs for 2.2/2.3
- π‘ Unicode
- π‘ Unicode strings must begin with the Unicode BOM
- π‘ Terminated strings are terminated with $00 00 if encoded as unicode
- π‘ Any empty Unicode strings which are NULL-terminated may have the Unicode BOM followed by a Unicode NULL
- π‘ Frames that allow different types of text encoding have a text encoding description byte directly after the frame size
- π‘ General Frame
- π‘ raw_flags
- π‘ raw_content / content
- π‘ Read common frames
- π‘ TCON with special encoding of id3v1 genres etc
-
π£ V1
- π’ Read title/artist etc
- π’ Read genre
- π‘ Fast read method: only load V1 if no V2 tag exists or is incomplete?
- Always leave reader in position after V2 tag
-
π§
-
πππ¨ππππββπ©π¬π§
-
ββ ββπ²βπ«βοΈ
-
π΄π π‘π’π΅π£π€β«βͺ
-
ππππ‘
-
π π§π’πͺ²β‘π₯π₯π©Έπ©Ήπͺ¦