mirror of
https://git.um-react.app/um/cli.git
synced 2025-11-28 03:33:02 +00:00
refactor: improve mmkv logic
This commit is contained in:
@@ -6,7 +6,6 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
@@ -133,14 +132,15 @@ func (d *Decoder) searchKey() (err error) {
|
||||
}
|
||||
fileSize := int(fileSizeM4) + 4
|
||||
|
||||
//goland:noinspection GoBoolExpressions
|
||||
if runtime.GOOS == "darwin" && !strings.HasPrefix(d.params.Extension, ".qmc") {
|
||||
d.decodedKey, err = readKeyFromMMKV(d.params.FilePath, d.logger)
|
||||
if key, ok := d.params.CryptoParams.QmcKeys.Get(d.params.FilePath); ok {
|
||||
d.logger.Debug("QQMusic Mac Legacy file", zap.String("file", d.params.FilePath), zap.String("key", key))
|
||||
d.decodedKey, err = deriveKey([]byte(key))
|
||||
if err == nil {
|
||||
d.audioLen = fileSize
|
||||
return
|
||||
return nil
|
||||
}
|
||||
d.logger.Warn("read key from mmkv failed", zap.Error(err))
|
||||
d.decodedKey = nil
|
||||
d.logger.Warn("could not derive key, skip", zap.Error(err))
|
||||
}
|
||||
|
||||
suffixBuf := make([]byte, 4)
|
||||
@@ -153,17 +153,17 @@ func (d *Decoder) searchKey() (err error) {
|
||||
return d.readRawMetaQTag()
|
||||
case "STag":
|
||||
return errors.New("qmc: file with 'STag' suffix doesn't contains media key")
|
||||
// MusicEx\0
|
||||
case "cex\x00":
|
||||
footer, err := NewMusicExTag(d.raw)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
d.audioLen = fileSize - int(footer.TagSize)
|
||||
d.decodedKey, err = readKeyFromMMKVCustom(footer.MediaFileName)
|
||||
if err != nil {
|
||||
return err
|
||||
if key, ok := d.params.CryptoParams.QmcKeys.Get(footer.MediaFileName); ok {
|
||||
d.decodedKey, err = deriveKey([]byte(key))
|
||||
}
|
||||
return nil
|
||||
return err
|
||||
default:
|
||||
size := binary.LittleEndian.Uint32(suffixBuf)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user