package v2 import ( "io" "github.com/Unbewohnte/id3ed/util" ) //////////////////////////////////////////////////////////////////////////// //(ᗜˬᗜ)~⭐//Under construction//Please don`t use it in this verison//(ᗜ‸ᗜ)/// //////////////////////////////////////////////////////////////////////////// type FrameHeader struct { ID string FrameSize int64 Flags int } type Frame struct { Header FrameHeader Contents string } // Reads ID3v2.3.0 or ID3v2.4.0 frame func ReadFrame(rs io.Reader, version uint) (*Frame, error) { var frameHeader FrameHeader var frame Frame // ID identifier, err := util.ReadToString(rs, 4) if err != nil { return nil, err } frameHeader.ID = identifier // Size framesizeBytes, err := util.Read(rs, 4) if err != nil { return nil, err } framesize, err := util.BytesToIntIgnoreFirstBit(framesizeBytes) if err != nil { return nil, err } frameHeader.FrameSize = framesize // Flags frameFlagsBytes, err := util.Read(rs, 2) if err != nil { return nil, err } frameFlags, err := util.BytesToInt(frameFlagsBytes) if err != nil { return nil, err } frameHeader.Flags = int(frameFlags) // Body frameContents, err := util.Read(rs, uint64(framesize)) if err != nil { return nil, err } frame.Header = frameHeader frame.Contents = string(frameContents) return &frame, nil }