initial commit

This commit is contained in:
2025-10-15 00:54:19 +02:00
parent 97c7383cf1
commit 0d4c44ee11
14 changed files with 1242 additions and 0 deletions

53
pkg/epub/open.go Normal file
View File

@@ -0,0 +1,53 @@
package epub
import (
"archive/zip"
)
// Open open a epub file
func Open(fn string) (*Book, error) {
fd, err := zip.OpenReader(fn)
if err != nil {
return nil, err
}
defer fd.Close()
bk := Book{fd: fd}
mt, err := bk.readBytes("mimetype")
if err != nil {
return &bk, err
}
bk.Mimetype = string(mt)
err = bk.readXML("META-INF/container.xml", &bk.Container)
if err != nil {
return &bk, err
}
err = bk.readXML(bk.Container.Rootfile.Path, &bk.Opf)
if err != nil {
return &bk, err
}
for _, mf := range bk.Opf.Manifest {
if mf.ID == bk.Opf.Spine.Toc {
err = bk.readXML(bk.filename(mf.Href), &bk.Ncx)
break
}
}
for _, ncx := range bk.Ncx.Points {
content, err := bk.readBytes(bk.filename(ncx.Content.Src))
if err != nil {
return &bk, err
}
if err := ncx.Content.String(content); err != nil {
return &bk, err
}
}
return &bk, nil
}