diff --git a/cmd/convert_cbz_command.go b/cmd/convert_cbz_command.go index 6f09841..c18b87b 100644 --- a/cmd/convert_cbz_command.go +++ b/cmd/convert_cbz_command.go @@ -50,6 +50,11 @@ func ConvertCbzCommand(cmd *cobra.Command, args []string) error { if err != nil { return fmt.Errorf("failed to get chapterConverter: %v", err) } + + err = chapterConverter.PrepareConverter() + if err != nil { + return fmt.Errorf("failed to prepare converter: %v", err) + } // Channel to manage the files to process fileChan := make(chan string) diff --git a/converter/converter.go b/converter/converter.go index 0b33760..b3b2a2d 100644 --- a/converter/converter.go +++ b/converter/converter.go @@ -13,6 +13,7 @@ type Converter interface { // Format of the converter Format() (format constant.ConversionFormat) ConvertChapter(chapter *packer.Chapter, quality uint8, progress func(string)) (*packer.Chapter, error) + PrepareConverter() error } var converters = map[constant.ConversionFormat]Converter{ diff --git a/converter/webp/webp_converter.go b/converter/webp/webp_converter.go index edab707..48812ca 100644 --- a/converter/webp/webp_converter.go +++ b/converter/webp/webp_converter.go @@ -21,6 +21,7 @@ import ( type Converter struct { maxHeight int cropHeight int + isPrepared bool } func (converter *Converter) Format() (format constant.ConversionFormat) { @@ -32,11 +33,24 @@ func New() *Converter { //maxHeight: 16383 / 2, maxHeight: 4000, cropHeight: 2000, + isPrepared: false, } } -func (converter *Converter) ConvertChapter(chapter *packer2.Chapter, quality uint8, progress func(string)) (*packer2.Chapter, error) { +func (converter *Converter) PrepareConverter() error { + if converter.isPrepared { + return nil + } err := PrepareEncoder() + if err != nil { + return err + } + converter.isPrepared = true + return nil +} + +func (converter *Converter) ConvertChapter(chapter *packer2.Chapter, quality uint8, progress func(string)) (*packer2.Chapter, error) { + err := converter.PrepareConverter() if err != nil { return nil, err }