METANOIA/metadata/cddb1.go

38 lines
699 B
Go

package metadata
import (
"encoding/binary"
"encoding/hex"
"time"
)
//https://www.liquisearch.com/cddb/example_calculation_of_a_cddb1_freedb_disc_id
type CDDB1 uint32
func (c CDDB1) GetStartTimeChecksum() int {
return int((c >> 24) & 0xFF)
}
func (c CDDB1) GetDuration() time.Duration {
return time.Second * time.Duration((c>>8)&0xFFFF)
}
func (c CDDB1) GetTrackNumber() int {
return int(c & 0xFF)
}
func NewCDDB1FromString(cddb1 string) CDDB1 {
b, err := hex.DecodeString(cddb1)
if err != nil {
return 0
}
return CDDB1(binary.BigEndian.Uint32(b))
}
func (c CDDB1) String() string {
b := make([]byte, 4)
binary.BigEndian.PutUint32(b, uint32(c))
return hex.EncodeToString(b)
}