diff --git a/internal/library/library.go b/internal/library/library.go index 3e1256d..765a3db 100644 --- a/internal/library/library.go +++ b/internal/library/library.go @@ -97,17 +97,33 @@ func (s *Service) FindBook(id string) (*Book, error) { } func (s *Service) CoverBytes(id string) ([]byte, string, error) { - book, err := s.FindBook(id) + if id == "" { + return nil, "", nil + } + + entries, err := os.ReadDir(s.booksDir) if err != nil { + if os.IsNotExist(err) { + return nil, "", nil + } return nil, "", err } - if book == nil { - return nil, "", nil + + for _, e := range entries { + if e.IsDir() { + continue + } + ext := strings.ToLower(filepath.Ext(e.Name())) + if ext != ".epub" { + continue + } + if stableID(e.Name()) != id { + continue + } + return readEPUBCover(filepath.Join(s.booksDir, e.Name())) } - if book.Format != "epub" { - return nil, "", nil - } - return readEPUBCover(book.Path) + + return nil, "", nil } func stableID(input string) string {