kopia lustrzana https://github.com/jcs/id3-go
add support for deleting a single frame
rodzic
0456e6a0ea
commit
db0dbebd68
1
id3.go
1
id3.go
|
@ -30,6 +30,7 @@ type Tagger interface {
|
|||
AllFrames() []v2.Framer
|
||||
Frames(string) []v2.Framer
|
||||
Frame(string) v2.Framer
|
||||
DeleteFrame(v2.Framer) []v2.Framer
|
||||
DeleteFrames(string) []v2.Framer
|
||||
AddFrames(...v2.Framer)
|
||||
Bytes() []byte
|
||||
|
|
13
v1/id3v1.go
13
v1/id3v1.go
|
@ -140,9 +140,10 @@ func (t Tag) Version() string {
|
|||
}
|
||||
|
||||
// Dummy methods to satisfy Tagger interface
|
||||
func (t Tag) Padding() uint { return 0 }
|
||||
func (t Tag) AllFrames() []v2.Framer { return []v2.Framer{} }
|
||||
func (t Tag) Frame(id string) v2.Framer { return nil }
|
||||
func (t Tag) Frames(id string) []v2.Framer { return []v2.Framer{} }
|
||||
func (t Tag) DeleteFrames(id string) []v2.Framer { return []v2.Framer{} }
|
||||
func (t Tag) AddFrames(f ...v2.Framer) {}
|
||||
func (t Tag) Padding() uint { return 0 }
|
||||
func (t Tag) AllFrames() []v2.Framer { return []v2.Framer{} }
|
||||
func (t Tag) Frame(id string) v2.Framer { return nil }
|
||||
func (t Tag) Frames(id string) []v2.Framer { return []v2.Framer{} }
|
||||
func (t Tag) DeleteFrames(id string) []v2.Framer { return []v2.Framer{} }
|
||||
func (t Tag) DeleteFrame(f v2.Framer) []v2.Framer { return []v2.Framer{} }
|
||||
func (t Tag) AddFrames(f ...v2.Framer) {}
|
||||
|
|
24
v2/id3v2.go
24
v2/id3v2.go
|
@ -189,6 +189,30 @@ func (t *Tag) DeleteFrames(id string) []Framer {
|
|||
return frames
|
||||
}
|
||||
|
||||
// Delete the specified frame
|
||||
func (t *Tag) DeleteFrame(delFrame Framer) []Framer {
|
||||
frames := t.AllFrames()
|
||||
if frames == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
diff := 0
|
||||
i := 0
|
||||
for i < len(t.frames) {
|
||||
frame := t.frames[i]
|
||||
if frame == delFrame {
|
||||
frame.setOwner(nil)
|
||||
diff += t.frameHeaderSize + int(frame.Size())
|
||||
t.frames = append(t.frames[:i], t.frames[i+1:]...)
|
||||
} else {
|
||||
i++
|
||||
}
|
||||
}
|
||||
t.changeSize(-diff)
|
||||
|
||||
return frames
|
||||
}
|
||||
|
||||
// Add frames
|
||||
func (t *Tag) AddFrames(frames ...Framer) {
|
||||
for _, frame := range frames {
|
||||
|
|
Ładowanie…
Reference in New Issue