This commit is contained in:
Leo Robinovitch 2024-04-13 22:34:12 -07:00
parent ad5dca42cb
commit 4cb24ae691

31
main.go
View file

@ -78,7 +78,7 @@ func (c *PDFComicFile) save(outputPath string) error {
type CBZComicFile struct { type CBZComicFile struct {
zipWriter *zip.Writer zipWriter *zip.Writer
outFile *os.File buffer *bytes.Buffer
numFiles int numFiles int
} }
@ -86,16 +86,13 @@ type CBZComicFile struct {
var _ ComicFile = &CBZComicFile{} var _ ComicFile = &CBZComicFile{}
func newCBZComicFile() (*CBZComicFile, error) { func newCBZComicFile() (*CBZComicFile, error) {
out, err := os.CreateTemp("", "output.tmp.cbz") buffer := new(bytes.Buffer)
if err != nil { zipWriter := zip.NewWriter(buffer)
return nil, err return &CBZComicFile{zipWriter: zipWriter, buffer: buffer, numFiles: 0}, nil
}
zipWriter := zip.NewWriter(out)
return &CBZComicFile{zipWriter: zipWriter, outFile: out, numFiles: 0}, nil
} }
func (c *CBZComicFile) addImage(img []byte) error { func (c *CBZComicFile) addImage(img []byte) error {
f, err := c.zipWriter.Create(fmt.Sprintf("%d.jpg", c.numFiles)) f, err := c.zipWriter.Create(fmt.Sprintf("%010d.jpg", c.numFiles))
if err != nil { if err != nil {
return err return err
} }
@ -108,15 +105,21 @@ func (c *CBZComicFile) addImage(img []byte) error {
} }
func (c *CBZComicFile) save(outputPath string) error { func (c *CBZComicFile) save(outputPath string) error {
err := c.zipWriter.Close() if err := c.zipWriter.Close(); err != nil {
return err
}
file, err := os.Create(outputPath)
if err != nil { if err != nil {
return err return err
} }
err = c.outFile.Close() defer func(file *os.File) {
if err != nil { err := file.Close()
return err if err != nil {
} fmt.Println(err.Error())
err = os.Rename(c.outFile.Name(), outputPath) os.Exit(1)
}
}(file)
_, err = c.buffer.WriteTo(file)
return err return err
} }