feat: add image sniffer

This commit is contained in:
Unlock Music Dev
2022-11-22 06:45:18 +08:00
parent e9e63ce175
commit c878bb8ca4
3 changed files with 51 additions and 1 deletions

View File

@ -2,6 +2,7 @@ package main
import (
"bytes"
"context"
"errors"
"fmt"
"io"
@ -208,6 +209,25 @@ func tryDecFile(inputFile string, outputDir string, allDec []common.NewDecoderFu
return err
}
if coverGetter, ok := dec.(common.CoverImageGetter); ok {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
cover, err := coverGetter.GetCoverImage(ctx)
if err != nil {
logger.Warn("get cover image failed", zap.Error(err))
} else if imgExt, ok := sniff.ImageExtension(cover); !ok {
logger.Warn("sniff cover image type failed", zap.Error(err))
} else {
coverPath := filepath.Join(outputDir, inFilename+imgExt)
err = os.WriteFile(coverPath, cover, 0644)
if err != nil {
logger.Warn("write cover image failed", zap.Error(err))
}
}
}
// if source file need to be removed
if removeSource {
err := os.RemoveAll(inputFile)