Skip to content

Add EXIF/metadata extraction provider (#9) - #37

Merged
C0MPL3XDEV merged 1 commit into
mainfrom
feature/exif-extraction
Jun 28, 2026
Merged

Add EXIF/metadata extraction provider (#9)#37
C0MPL3XDEV merged 1 commit into
mainfrom
feature/exif-extraction

Conversation

@C0MPL3XDEV

Copy link
Copy Markdown
Owner

Summary

  • New provider for extracting metadata from images (EXIF: GPS, device, software, camera settings) and PDF documents (author, title, creator, producer)
  • MetadataResult model with typed fields for both file types
  • GPS DMS-to-decimal conversion for geolocation data
  • CLI command with --output, --show-pii, --save-to flags

Files changed

  • eagleosint/providers/metadata.py — new provider with image and PDF extraction
  • eagleosint/models.py — MetadataResult model
  • eagleosint/cli.py — metadata command + menu entry
  • tests/test_metadata.py — 16 tests covering DMS conversion, image/PDF extraction, provider logic
  • pyproject.toml — added Pillow, pdfplumber, piexif, reportlab

Test plan

  • 174 tests pass
  • Image metadata extraction (dimensions, EXIF with GPS/device/software)
  • PDF metadata extraction (author, title, pages, producer)
  • GPS DMS-to-decimal conversion (N/S/E/W, tuples, edge cases)
  • Unsupported file types and missing files handled gracefully

- New MetadataProvider: extract EXIF from images (GPS, device, software) and metadata from PDFs (author, title, producer)
- New MetadataResult model with image and PDF specific fields
- CLI command 'metadata' with --output, --show-pii, --save-to support
- Dependencies: Pillow, pdfplumber
- Dev dependencies: piexif, reportlab (test fixtures)
@C0MPL3XDEV
C0MPL3XDEV merged commit 9e97672 into main Jun 28, 2026
3 checks passed
@C0MPL3XDEV
C0MPL3XDEV deleted the feature/exif-extraction branch June 29, 2026 13:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant