Skip to content

Repository files navigation

Catify

Catify – EXIF Metadata Tool

Catify is a powerful command-line tool to extract, analyze, and report metadata from images, RAW files, and videos. It detects duplicate files via SHA256, extracts GPS coordinates with direct map links, saves embedded thumbnails, and generates beautiful terminal output or export reports in CSV, JSON, or HTML.

Python Version License Core Deps Optional Deps


Features

Feature Description
πŸ“Έ Full metadata extraction Camera make, model, exposure, ISO, datetime, dimensions, and more
🌍 GPS extraction Converts DMS to decimal, provides Google Maps & OpenStreetMap links
πŸ” Duplicate detection SHA256 hash comparison across files
πŸ–ΌοΈ Thumbnail extraction Saves embedded thumbnails to a separate directory
πŸ›‘οΈ EXIF Sanitization Automatically escapes non-printable chars and truncates long values (XSS protection)
πŸ“Š Rich terminal output Colorful tables with live progress bar (via rich)
πŸ“„ Multiple export formats CSV, JSON, HTML (viewable in any browser)
πŸš€ Recursive scanning Process entire folder trees
🧹 Clean & fast Handles large files efficiently with graceful error handling

Supported Formats

Category Extensions Reader Used
Images .jpg .jpeg .tiff .tif exifread (full EXIF + thumbnails + GPS)
Common image formats .png .webp .bmp .gif .heic .heif Pillow (EXIF + GPS + thumbnails)
RAW formats .raw .cr2 .cr3 .nef .arw .dng rawpy (camera, ISO, exposure, dimensions)
Video formats .mp4 .mov .avi .mkv .webm .mts .m2ts pymediainfo (track metadata + GPS)

Formats outside the exifread/core set require the matching optional dependency below. If it's missing, those files will be reported with ERROR status instead of being processed.


Installation

Option 1 β€” Download the full release πŸš€

https://github.com/tc4dy/Catify/releases/tag/Catify

Option 2 β€” Clone the repo

git clone https://github.com/tc4dy/Catify.git
cd Catify

Install dependencies

Dependency Required? Enables
exifread βœ… Required JPEG/TIFF EXIF parsing
rich βœ… Required Terminal tables, colors, progress bar
Pillow βš™οΈ Optional PNG, WEBP, BMP, GIF, HEIC, HEIF support
rawpy βš™οΈ Optional RAW format support (CR2, NEF, ARW, DNG...)
pymediainfo βš™οΈ Optional Video metadata & GPS support

Minimal (JPEG/TIFF only):

pip install exifread rich

Full (all formats):

pip install exifread rich pillow rawpy pymediainfo

πŸ’‘ pymediainfo also requires the MediaInfo library to be installed on your system (e.g. apt install mediainfo on Debian/Ubuntu, or brew install media-info on macOS).

Run the tool

python catify.py --help

πŸš€ Usage

python catify.py -i <INPUT> [OPTIONS]

Required argument

Argument Description
-i, --input PATH Path to a single file or a directory

Optional arguments

Option Description
-r, --recursive Scan subdirectories recursively
--csv FILE Export report to CSV format
--json FILE Export report to JSON format
--html FILE Export report to HTML format
--thumbs DIR Directory to save thumbnails (default: catify_thumbs)
-v, --verbose Print each file name while processing
--version Show version information

πŸ“– Examples

Analyze a single image

python catify.py -i vacation.jpg

Scan a folder (including subfolders) and generate an HTML report

python catify.py -i ./photos -r --html report.html

Full export: CSV, JSON, HTML, with custom thumbnail directory and verbose output

python catify.py -i ./images -r --csv metadata.csv --json exif.json --html report.html --thumbs my_thumbs -v

Only show terminal output (no exports)

python catify.py -i DSC_001.jpg

πŸ“Š Output Examples

Terminal (Rich Table)

  /\_____/\
 /  o   o  \
( ==  ^  == )
 )  C A T  (
(  I F Y   )
 \ ExFin  /
  '-------'
Catify v2.0.0 β€” EXIF Metadata Tool | @tc4dy

5 files found, processing…

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ Summary ──────────────────────────────┐
β”‚  Total files   5                                                    β”‚
β”‚  EXIF OK       4                                                    β”‚
β”‚  No EXIF       0                                                    β”‚
β”‚  Error         1                                                    β”‚
β”‚  Duplicate     2                                                    β”‚
β”‚  With GPS      1                                                    β”‚
β”‚  Thumbnail     3                                                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  photo.jpg                               OK   DUPLICATE              β”‚
β”‚  /home/user/photos/photo.jpg                                         β”‚
β”‚  Size: 2.3 MB  Date: 2024-01-15 14:32:10                             β”‚
β”‚  SHA256: a1b2c3d4e5f6…                                               β”‚
β”‚  Same file: /backup/photo.jpg                                        β”‚
β”‚  GPS: 41.0082, 28.9784  Google Maps  OSM                             β”‚
β”‚  Thumbnail: catify_thumbs/photo_thumb.jpg                            β”‚
β”‚                                                                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ EXIF ──────────────────────────────┐ β”‚
β”‚  β”‚ Tag                    Value                                    β”‚ β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  β”‚ β”‚
β”‚  β”‚ Image Make             Canon                                    β”‚ β”‚
β”‚  β”‚ Image Model            EOS 5D                                   β”‚ β”‚
β”‚  β”‚ EXIF ExposureTime      1/125                                    β”‚ β”‚
β”‚  β”‚ EXIF FNumber           2.8                                      β”‚ β”‚
β”‚  β”‚ EXIF ISO               100                                      β”‚ β”‚
β”‚  └──────────────────────────────────────────────────────────────  β”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Status Badges

Badge Meaning
🟒 OK Metadata read successfully
🟑 NO EXIF File readable, but no metadata found
πŸ”΄ ERROR File couldn't be read (missing dependency or corrupt file)
🟣 DUPLICATE File content matches another file (same SHA256)

HTML Report

Open the generated .html file in any browser. It includes:

  • πŸ“Š Summary statistics cards (total files, OK, duplicates, GPS)
  • πŸ—‚οΈ Each file with metadata table, GPS links, and thumbnail path
  • πŸŒ‘ Dark theme, responsive layout

CSV Export

All metadata tags become columns β€” perfect for Excel or data analysis.

JSON Export

Structured data for programmatic use, including GPS coordinates, hashes, and full tag dictionaries.


Thumbnails

If a file contains an embedded thumbnail (common in JPEGs) or supports thumbnail generation (via Pillow), Catify saves it as {original_name}_thumb.jpg inside the directory specified by --thumbs (default: catify_thumbs).

Format group Thumbnail behavior
JPEG/TIFF Extracted from embedded EXIF thumbnail
PNG/WEBP/BMP/GIF/HEIC/HEIF Generated via Pillow (resized to 160Γ—160)
RAW Not supported
Video Not supported

Requirements Summary

Requirement Notes
Python 3.7+ β€”
exifread Required
rich Required
Pillow Optional, for common image formats
rawpy Optional, for RAW formats
pymediainfo + MediaInfo Optional, for video formats

The previous version (V1) has been further developed to offer improved formatting, broader format support, and more comprehensive metadata extraction.

About

🐱 Catify EXIF-Tool | πŸ‘Ύ EXIF metadata tool. Extract camera settings, GPS coordinates (Google Maps/OSM links), detect duplicates via SHA256, save thumbnails. Generate beautiful terminal tables or export to CSV/JSON/HTML. Supports Videos, Photos, Raw with 23 format. πŸš€πŸ“Έ

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages