fix: allow unencrypted tm0 tm3
This commit is contained in:
parent
2880c63bf7
commit
8fd6763b29
@ -23,28 +23,34 @@ func (d *Decoder) Validate() error {
|
|||||||
if _, err := io.ReadFull(d.raw, header); err != nil {
|
if _, err := io.ReadFull(d.raw, header); err != nil {
|
||||||
return fmt.Errorf("tm read header: %w", err)
|
return fmt.Errorf("tm read header: %w", err)
|
||||||
}
|
}
|
||||||
if !bytes.Equal(magicHeader, header[:len(magicHeader)]) {
|
|
||||||
return errors.New("tm: valid magic header")
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if bytes.Equal(magicHeader, header[:len(magicHeader)]) { // replace m4a header
|
||||||
d.audio = io.MultiReader(bytes.NewReader(replaceHeader), d.raw)
|
d.audio = io.MultiReader(bytes.NewReader(replaceHeader), d.raw)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if _, ok := common.SniffAll(header); ok { // not encrypted
|
||||||
|
d.audio = io.MultiReader(bytes.NewReader(header), d.raw)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return errors.New("tm: valid magic header")
|
||||||
|
}
|
||||||
|
|
||||||
func (d *Decoder) Read(buf []byte) (int, error) {
|
func (d *Decoder) Read(buf []byte) (int, error) {
|
||||||
return d.audio.Read(buf)
|
return d.audio.Read(buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTmDecoder(rd io.ReadSeeker) common.Decoder {
|
func NewTmDecoder(rd io.ReadSeeker) common.Decoder {
|
||||||
return &Decoder{raw: rd}
|
return &Decoder{raw: rd}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// QQ Music IOS M4a
|
// QQ Music IOS M4a (replace header)
|
||||||
common.RegisterDecoder("tm2", false, NewTmDecoder)
|
common.RegisterDecoder("tm2", false, NewTmDecoder)
|
||||||
common.RegisterDecoder("tm6", false, NewTmDecoder)
|
common.RegisterDecoder("tm6", false, NewTmDecoder)
|
||||||
// QQ Music IOS Mp3
|
|
||||||
common.RegisterDecoder("tm0", false, common.NewRawDecoder)
|
// QQ Music IOS Mp3 (not encrypted)
|
||||||
common.RegisterDecoder("tm3", false, common.NewRawDecoder)
|
common.RegisterDecoder("tm0", false, NewTmDecoder)
|
||||||
|
common.RegisterDecoder("tm3", false, NewTmDecoder)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user