Evidex Metadata Extractors

Detailed documentation on Evidex's polymorphic metadata extraction system.

MetadataExtractor Interface

type MetadataExtractor interface {
    CanHandle(filePath string) bool
    Extract(filePath string, logger CommandLogger) interface{}
    GetType() string
}

Image Extractors

JPEGExtractor

Extends ImageMetadata:

type ImageMetadata struct {
    Format    string // "JPEG"
    Width     int
    Height    int
    ColorSpace string
    BitDepth  int
    HasEXIF   bool
    EXIF      map[string]string
}

PNGExtractor / GIFExtractor

Similar structure with format-specific fields.

Video Extractors

MP4Extractor

type VideoMetadata struct {
    Format          string
    Duration       string
    DurationSeconds float64
    VideoCodec     string
    AudioCodec     string
    Width          int
    Height         int
    FrameRate      float64
    BitRate        int64
}

Adding Custom Extractors

type CustomExtractor struct {
    logger CommandLogger
}

func (e *CustomExtractor) CanHandle(filePath string) bool {
    ext := strings.ToLower(filepath.Ext(filePath))
    return ext == ".custom"
}

func (e *CustomExtractor) Extract(filePath string, logger CommandLogger) interface{} {
    return &CustomMetadata{...}
}

func (e *CustomExtractor) GetType() string {
    return "CustomType"
}

// Register it
registry.Register(&CustomExtractor{logger: logger})