diff --git a/internal/services/media_scanner.go b/internal/services/media_scanner.go index 6755624..367bfdc 100644 --- a/internal/services/media_scanner.go +++ b/internal/services/media_scanner.go @@ -1077,7 +1077,7 @@ func (s *MediaScanner) extractMetadata(path string) (*MediaMetadata, error) { ext := strings.ToLower(filepath.Ext(path)) switch ext { - case ".epub": + case ".epub", ".kepub": metadata := &MediaMetadata{} result, err := s.extractEPUBMetadata(path) if err == nil { @@ -1113,6 +1113,24 @@ func (s *MediaScanner) extractMetadata(path string) (*MediaMetadata, error) { return metadata, nil case ".pdf": return s.extractPDFMetadata(path) + case ".cbz", ".cbr", ".cb7", ".cbt": + metadata, err := s.mergeMetadata(path, nil) + if err != nil { + return &MediaMetadata{ + Title: strings.TrimSuffix(filepath.Base(path), ext), + }, nil + } + if metadata.Title == "" { + metadata.Title = strings.TrimSuffix(filepath.Base(path), ext) + } + // If no cover from archive, try sidecar + if metadata.CoverPath == "" { + sidecarCover := findSidecarCover(path) + if sidecarCover != "" { + metadata.CoverPath = s.getRelativePath(sidecarCover) + } + } + return metadata, nil default: // For other formats, return basic metadata return &MediaMetadata{