24 lines
732 B
Go
24 lines
732 B
Go
package oggtag
|
|
|
|
/* oggtag is a naive implementation of OGG tag's reader that is just looking
|
|
for certain tag names ending with an = character, e.g. artist= and title=.
|
|
*/
|
|
|
|
import (
|
|
"bytes"
|
|
)
|
|
|
|
// OggGetTag is searching for a certain tag in a given buffer buf and returns
|
|
// its value.
|
|
//
|
|
// It is a simple implementation that doesn't parse a header and instead just
|
|
// looking for a certain tag preceded with three zero bytes and ends with
|
|
// an = character.
|
|
func OggGetTag(buf []byte, tag string) string {
|
|
tagIdx := bytes.Index(buf, append([]byte{0, 0, 0}, (tag+"=")...)) + 3
|
|
tagNameLen := len(tag) + 1
|
|
valStart := tagIdx + tagNameLen
|
|
valLen := int(buf[tagIdx-4]) - tagNameLen
|
|
return string(buf[valStart : valStart+valLen])
|
|
}
|