diff --git a/internal/services/media_scanner.go b/internal/services/media_scanner.go index f4952a1..d31bbb6 100644 --- a/internal/services/media_scanner.go +++ b/internal/services/media_scanner.go @@ -953,7 +953,7 @@ func determineReadingDirection(comicInfo *ComicInfo) string { if strings.Contains(tags, "webtoon") || strings.Contains(tags, "manhwa") { return "vertical" // Korean/Chinese webcomics } - if strings.Contains(tags, "manga") && (lang == "ja" || lang == "jpn") { + if strings.Contains(tags, "manga") { return "rtl" // Japanese manga } @@ -1077,33 +1077,37 @@ func (s *MediaScanner) extractMetadata(path string) (*MediaMetadata, error) { switch ext { case ".epub": - metadata, err := s.extractEPUBMetadata(path) + metadata := &MediaMetadata{} + result, err := s.extractEPUBMetadata(path) + if err == nil { + return result, nil + } + if result != nil { + metadata = result + } + // Enhanced format detection for EPUBs + isFixedLayout, detectErr := s.DetectFixedLayoutEPUB(path) + if detectErr == nil && isFixedLayout { + // Override format group for manga EPUBs + metadata.FileFormats = []*FormatInfo{{ + FormatType: "fixed_layout", + FilePath: path, + MimeType: s.getMimeType(path), + }} + } + // Try to extract embedded cover + coverPath, err := s.extractEPUBCover(path) if err != nil { - // Enhanced format detection for EPUBs - isFixedLayout, detectErr := s.DetectFixedLayoutEPUB(path) - if detectErr == nil && isFixedLayout { - // Override format group for manga EPUBs - metadata.FileFormats = []*FormatInfo{{ - FormatType: "fixed_layout", - FilePath: path, - MimeType: s.getMimeType(path), - }} + fmt.Printf("Warning: failed to extract EPUB cover from %s: %v\n", path, err) + } else if coverPath != "" { + metadata.CoverPath = s.getRelativePath(coverPath) + } + // If no embedded cover, try sidecar + if metadata.CoverPath == "" { + sidecarCover := findSidecarCover(path) + if sidecarCover != "" { + metadata.CoverPath = s.getRelativePath(sidecarCover) } - // Try to extract embedded cover - coverPath, err := s.extractEPUBCover(path) - if err != nil { - fmt.Printf("Warning: failed to extract EPUB cover from %s: %v\n", path, err) - } else if coverPath != "" { - metadata.CoverPath = s.getRelativePath(coverPath) - } - // If no embedded cover, try sidecar - if metadata.CoverPath == "" { - sidecarCover := findSidecarCover(path) - if sidecarCover != "" { - metadata.CoverPath = s.getRelativePath(sidecarCover) - } - } - return metadata, nil } return metadata, nil case ".pdf":