mirror of
https://github.com/celogeek/go-comic-converter.git
synced 2025-05-24 07:42:37 +02:00
reorg
This commit is contained in:
parent
7a27473cb3
commit
260e6b6347
@ -19,13 +19,6 @@ import (
|
|||||||
imageconverter "go-comic-converter/internal/image-converter"
|
imageconverter "go-comic-converter/internal/image-converter"
|
||||||
)
|
)
|
||||||
|
|
||||||
type image struct {
|
|
||||||
Id int
|
|
||||||
Data *imageData
|
|
||||||
Width int
|
|
||||||
Height int
|
|
||||||
}
|
|
||||||
|
|
||||||
type EpubOptions struct {
|
type EpubOptions struct {
|
||||||
Input string
|
Input string
|
||||||
Output string
|
Output string
|
||||||
@ -49,6 +42,13 @@ type ePub struct {
|
|||||||
templateProcessor *template.Template
|
templateProcessor *template.Template
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type image struct {
|
||||||
|
Id int
|
||||||
|
Data *imageData
|
||||||
|
Width int
|
||||||
|
Height int
|
||||||
|
}
|
||||||
|
|
||||||
type epubPart struct {
|
type epubPart struct {
|
||||||
Cover *image
|
Cover *image
|
||||||
Images []*image
|
Images []*image
|
||||||
@ -137,12 +137,12 @@ func (e *ePub) loadCBZ() error {
|
|||||||
|
|
||||||
e.imagesCount = len(images)
|
e.imagesCount = len(images)
|
||||||
|
|
||||||
type Todo struct {
|
type task struct {
|
||||||
Id int
|
Id int
|
||||||
FZ *zip.File
|
FZ *zip.File
|
||||||
}
|
}
|
||||||
|
|
||||||
todo := make(chan *Todo)
|
tasks := make(chan *task)
|
||||||
|
|
||||||
e.processingImages = func() chan *image {
|
e.processingImages = func() chan *image {
|
||||||
// defer r.Close()
|
// defer r.Close()
|
||||||
@ -152,8 +152,8 @@ func (e *ePub) loadCBZ() error {
|
|||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
for task := range todo {
|
for imgTask := range tasks {
|
||||||
reader, err := task.FZ.Open()
|
reader, err := imgTask.FZ.Open()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@ -164,12 +164,12 @@ func (e *ePub) loadCBZ() error {
|
|||||||
e.ViewHeight,
|
e.ViewHeight,
|
||||||
e.Quality,
|
e.Quality,
|
||||||
)
|
)
|
||||||
name := fmt.Sprintf("OEBPS/Images/%d.jpg", task.Id)
|
name := fmt.Sprintf("OEBPS/Images/%d.jpg", imgTask.Id)
|
||||||
if task.Id == 0 {
|
if imgTask.Id == 0 {
|
||||||
name = "OEBPS/Images/cover.jpg"
|
name = "OEBPS/Images/cover.jpg"
|
||||||
}
|
}
|
||||||
results <- &image{
|
results <- &image{
|
||||||
task.Id,
|
imgTask.Id,
|
||||||
newImageData(name, data),
|
newImageData(name, data),
|
||||||
w,
|
w,
|
||||||
h,
|
h,
|
||||||
@ -179,9 +179,9 @@ func (e *ePub) loadCBZ() error {
|
|||||||
}
|
}
|
||||||
go func() {
|
go func() {
|
||||||
for i, fz := range images {
|
for i, fz := range images {
|
||||||
todo <- &Todo{i, fz}
|
tasks <- &task{i, fz}
|
||||||
}
|
}
|
||||||
close(todo)
|
close(tasks)
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
r.Close()
|
r.Close()
|
||||||
close(results)
|
close(results)
|
||||||
@ -228,12 +228,12 @@ func (e *ePub) loadDir() error {
|
|||||||
|
|
||||||
e.imagesCount = len(images)
|
e.imagesCount = len(images)
|
||||||
|
|
||||||
type Todo struct {
|
type task struct {
|
||||||
Id int
|
Id int
|
||||||
Path string
|
Path string
|
||||||
}
|
}
|
||||||
|
|
||||||
todo := make(chan *Todo)
|
tasks := make(chan *task)
|
||||||
|
|
||||||
e.processingImages = func() chan *image {
|
e.processingImages = func() chan *image {
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
@ -242,8 +242,8 @@ func (e *ePub) loadDir() error {
|
|||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
for task := range todo {
|
for imgTask := range tasks {
|
||||||
reader, err := os.Open(task.Path)
|
reader, err := os.Open(imgTask.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@ -254,12 +254,12 @@ func (e *ePub) loadDir() error {
|
|||||||
e.ViewHeight,
|
e.ViewHeight,
|
||||||
e.Quality,
|
e.Quality,
|
||||||
)
|
)
|
||||||
name := fmt.Sprintf("OEBPS/Images/%d.jpg", task.Id)
|
name := fmt.Sprintf("OEBPS/Images/%d.jpg", imgTask.Id)
|
||||||
if task.Id == 0 {
|
if imgTask.Id == 0 {
|
||||||
name = "OEBPS/Images/cover.jpg"
|
name = "OEBPS/Images/cover.jpg"
|
||||||
}
|
}
|
||||||
results <- &image{
|
results <- &image{
|
||||||
task.Id,
|
imgTask.Id,
|
||||||
newImageData(name, data),
|
newImageData(name, data),
|
||||||
w,
|
w,
|
||||||
h,
|
h,
|
||||||
@ -269,9 +269,9 @@ func (e *ePub) loadDir() error {
|
|||||||
}
|
}
|
||||||
go func() {
|
go func() {
|
||||||
for i, path := range images {
|
for i, path := range images {
|
||||||
todo <- &Todo{i, path}
|
tasks <- &task{i, path}
|
||||||
}
|
}
|
||||||
close(todo)
|
close(tasks)
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
close(results)
|
close(results)
|
||||||
}()
|
}()
|
||||||
@ -340,7 +340,7 @@ func (e *ePub) Write() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
type ZipContent struct {
|
type zipContent struct {
|
||||||
Name string
|
Name string
|
||||||
Content any
|
Content any
|
||||||
}
|
}
|
||||||
@ -363,7 +363,7 @@ func (e *ePub) Write() error {
|
|||||||
}
|
}
|
||||||
defer wz.Close()
|
defer wz.Close()
|
||||||
|
|
||||||
zipContent := []ZipContent{
|
content := []zipContent{
|
||||||
{"META-INF/container.xml", containerTmpl},
|
{"META-INF/container.xml", containerTmpl},
|
||||||
{"OEBPS/content.opf", e.render(contentTmpl, map[string]any{"Info": e, "Images": part.Images})},
|
{"OEBPS/content.opf", e.render(contentTmpl, map[string]any{"Info": e, "Images": part.Images})},
|
||||||
{"OEBPS/toc.ncx", e.render(tocTmpl, map[string]any{"Info": e, "Image": part.Images[0]})},
|
{"OEBPS/toc.ncx", e.render(tocTmpl, map[string]any{"Info": e, "Image": part.Images[0]})},
|
||||||
@ -379,7 +379,7 @@ func (e *ePub) Write() error {
|
|||||||
if err = wz.WriteMagic(); err != nil {
|
if err = wz.WriteMagic(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for _, content := range zipContent {
|
for _, content := range content {
|
||||||
if err := wz.WriteFile(content.Name, content.Content); err != nil {
|
if err := wz.WriteFile(content.Name, content.Content); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
4
main.go
4
main.go
@ -43,7 +43,9 @@ func (o *Option) String() string {
|
|||||||
limitmb = fmt.Sprintf("%d Mb", o.LimitMb)
|
limitmb = fmt.Sprintf("%d Mb", o.LimitMb)
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf(`Options:
|
return fmt.Sprintf(`Go Comic Converter
|
||||||
|
|
||||||
|
Options:
|
||||||
Input : %s
|
Input : %s
|
||||||
Output : %s
|
Output : %s
|
||||||
Profile: %s - %s - %dx%d
|
Profile: %s - %s - %dx%d
|
||||||
|
Loading…
x
Reference in New Issue
Block a user