An open API service indexing awesome lists of open source software.

https://github.com/aryanvbw/exif

ExifTool is a powerful command-line tool that can be used to extract and edit metadata in a wide range of media files, including images, audio, and video. Metadata is information that is stored within a file that describes the file’s content or other attributes.
https://github.com/aryanvbw/exif

aryan-technologies aryanshop aryanvbw data-extraction image-metadata image-processing images-hacking information-gathering powered-by-aryan-technologies vivek

Last synced: 7 months ago
JSON representation

ExifTool is a powerful command-line tool that can be used to extract and edit metadata in a wide range of media files, including images, audio, and video. Metadata is information that is stored within a file that describes the file’s content or other attributes.

Awesome Lists containing this project

README

          

# πŸ“Έ Exif - Comprehensive Metadata Tool


GUI Screenshot

## πŸ”Ž Overview
**Exif** is a powerful metadata extraction and management tool that supports multiple file types including **images, videos, audio, and documents**.
It provides:
- πŸ–₯️ A **modern GUI** for beginners
- πŸ’» A **command-line interface (CLI)** for advanced users

Use Exif to **extract, analyze, edit, and remove metadata** with ease.

---

## πŸ–ΌοΈ GUI Screenshots

### Main Interface


Exif GUI Main Interface

### Document Metadata View


Exif GUI PDF Metadata

---

## πŸš€ Features

### Image Support
- Extract EXIF data (camera model, ISO, shutter speed, etc.)
- View image properties (dimensions, color profile, format)
- Extract GPS data & view location on Google Maps
- Remove metadata for privacy

### Video Support
- Extract video metadata (codec, duration, resolution, frame rate)
- Get audio stream details
- View technical specifications

### Audio Support
- Extract ID3 tags (artist, album, track)
- View bitrate, sample rate, channels
- Manage audio properties

### Document Support
- Extract metadata from **PDF, DOCX, TXT**
- Read author, title, creation/modification dates

### Location Features
- Generate Google Maps links from GPS metadata
- View exact file location in browser

---

## πŸ“‚ Supported File Formats

| Category | Formats |
|------------|---------|
| **Images** | JPG, JPEG, PNG, GIF, BMP, TIFF |
| **Videos** | MP4, AVI, MOV, MKV |
| **Audio** | MP3, WAV, FLAC |
| **Docs** | PDF, DOC/DOCX, TXT |

### πŸ“Š Visualization Dashboard (NEW!)
- **Interactive visualizations** of metadata across multiple files
- **Dark mode dashboard** with Power BI-style layout
- **7+ chart types**: pie charts, bar charts, timelines, scatter plots, histograms, box plots
- **Statistical analysis**: file type distribution, camera usage, ISO/aperture patterns, resolution analysis
- **Export options**: View charts in browser, save as HTML
- **Fully interactive**: Hover for details, zoom, pan, and more

## Installation
---

## ⚑ Installation

### Prerequisites
- Python **3.8+**
- Install dependencies:
```bash
pip install -r requirements.txt
```

### Quick Setup
Run the automated setup script:
```bash
bash setup.sh
```

This will:
- Create a virtual environment
- Install all dependencies
- Set up the project structure
- Configure the environment

### GUI Application
1. Clone the repository:
### GUI Application
```bash
git clone https://github.com/AryanVBW/Exif.git
cd Exif
python exif-gui.py
```

### CLI Tool
```bash
git clone https://github.com/AryanVBW/Exif.git
cd Exif
python exif-cli.py path/to/file
```

---

## πŸ› οΈ Usage Examples

### Extract metadata from image
```bash
python exif-cli.py photo.jpg
```

### πŸ“Š Visualization Dashboard

#### Quick Test (Sample Data)
Run a quick test with automatically generated sample data:
```bash
python test_visualizations.py
```
This will:
- Generate 150 sample files with realistic metadata
- Create 7 interactive visualizations
- Open the dashboard in your browser
- Save charts to `exports/test_visualizations/`

#### Full Demo (Your Files)
Process your actual media files and create visualizations:
```bash
python demo_visualizations.py
```
This will:
- Scan your `media/` directory for files
- Extract metadata from all supported file types
- Perform statistical analysis
- Generate comprehensive visualizations
- Create an interactive dashboard
- Save to `exports/` directory

#### Dashboard Features
The visualization dashboard includes:
- **File Types**: Pie chart showing file type distribution
- **Camera Models**: Bar chart of most-used cameras
- **Timeline**: Line chart of files over time
- **File Sizes**: Histogram with size distribution
- **Resolution**: Scatter plot of image dimensions
- **ISO Settings**: Distribution of ISO values
- **Aperture**: Box plot of aperture settings by camera

All charts are **fully interactive**:
- Hover to see detailed information
- Click and drag to zoom into specific areas
- Double-click to reset the view
- Use toolbar to save charts as PNG
- Click "β€’" icon to open chart in new tab

## Supported File Types

### Images
- JPG/JPEG
- PNG
- GIF
- BMP
- TIFF

### Videos
- MP4
- AVI
- MOV
- MKV

### Audio
- MP3
- WAV
- FLAC

### Documents
- PDF
- DOC/DOCX
- TXT

## Requirements

### Core Dependencies
- Python 3.8+
- Pillow
- exifread
- moviepy
- eyed3
- python-magic
- ffmpeg
- pdfplumber
- python-docx
- mutagen
- rich

### Visualization Dependencies
- plotly (5.11+) - Interactive charts
- pandas - Data manipulation
- numpy - Numerical operations
- matplotlib - Static visualizations
- seaborn - Statistical graphics

### Installation
All dependencies can be installed with:
```bash
pip install -r requirements.txt
pip install -r requirements-dashboard.txt
```

Or use the automated setup:
```bash
bash setup.sh
```

## Project Structure

```
Exif/
β”œβ”€β”€ exif-gui.py # GUI application (tkinter-based)
β”œβ”€β”€ exif-cli.py # Command-line interface tool
β”œβ”€β”€ exif-main.py # Main CLI script
β”œβ”€β”€ exif.py # Terminal output version
β”œβ”€β”€ remove-exif.py # Remove EXIF data from images
β”œβ”€β”€ test_visualizations.py # Quick test with sample data
β”œβ”€β”€ demo_visualizations.py # Full demo with your files
β”œβ”€β”€ setup.sh # Automated setup script
β”œβ”€β”€ requirements.txt # Core dependencies
β”œβ”€β”€ requirements-dashboard.txt # Visualization dependencies
β”œβ”€β”€ core/ # Core modules
β”‚ β”œβ”€β”€ data_models.py # Data structures (Pydantic models)
β”‚ β”œβ”€β”€ metadata_aggregator.py # Batch processing & extraction
β”‚ └── data_storage.py # SQLite database operations
β”œβ”€β”€ analysis/ # Analysis modules
β”‚ └── statistical_analyzer.py # Statistical analysis
β”œβ”€β”€ visualization/ # Visualization modules
β”‚ └── visualizer.py # Chart generation (Plotly)
β”œβ”€β”€ exports/ # Generated visualizations
β”œβ”€β”€ media/ # Your media files (for processing)
└── data/ # Database storage
```

## Usage Examples

### Extract Metadata from Single File
```bash
python exif-cli.py photo.jpg
```

### Process Multiple Files
```bash
python demo_visualizations.py
```

### View in GUI
```bash
python exif-gui.py
```

### Quick Visualization Test
```bash
python test_visualizations.py
```

## Dashboard Screenshots
The visualization dashboard provides a modern, dark-mode interface similar to Power BI:
- All charts visible at once (no scrolling)
- 4x2 grid layout on desktop
- Fully responsive design
- Interactive tooltips and zoom
- Professional dark theme

## License
This project is licensed under the MIT License - see the LICENSE file for details.

## Credits
Created by AryanVBW

## Features
- Extract exif data of images jpg, jpeg, png.
- Clear exif data of images.
- Save data in a text file.
- Modern GUI application for easy metadata extraction.
- Support for multiple file types including images, videos, and audio.
## Supported Formats
- Images:
- PNG, JPG, JPEG, GIF, BMP, TIFF
- **Videos** :
- MP4, MKV, AVI, MOV
- **Audio** :
- MP3 (limited support, additional library may be required)
- OutputThe script will display metadata information for each file.If the output is set to a file, the results will be saved in exif_data.txt.
## Installation and usage instructions:

### Command Line Usage
- Add .jpg to subfolder ./images from where the script is stored.
- Note: Most social media sites strip exif data from uploaded photos.

### GUI Application Usage
1. Install the required dependencies:
### Save metadata to JSON
```bash
python exif-cli.py video.mp4 --format json --save metadata.json
```

### Remove EXIF data from image
```bash
python remove-exif.py image.jpg
```

### Auto-open GPS in Google Maps
```bash
python exif-cli.py photo.jpg --open-maps
```

### Batch process multiple files
```bash
python exif-cli.py *.jpg --format json
```

---

## πŸ“– Command Reference

| Command | Description | Example |
|---------|-------------|---------|
| `--format json` | Export metadata in JSON format | `python exif-cli.py file.jpg --format json` |
| `--save file.json` | Save metadata to file | `python exif-cli.py file.mp4 --save meta.json` |
| `--open-maps` | Open GPS location in Google Maps | `python exif-cli.py photo.jpg --open-maps` |
| `-all=` | Remove all metadata from file | `python remove-exif.py file.jpg` |
| `-overwrite_original` | Overwrite files without backup | `python exif-cli.py file.jpg -overwrite_original` |

---

## 🏷️ Metadata Fields Explained

- **EXIF (Exchangeable Image File Format)** β†’ Camera settings (aperture, shutter speed, ISO, flash, orientation)
- **IPTC (International Press Telecommunications Council)** β†’ Captions, copyright, creator, keywords
- **XMP (Extensible Metadata Platform)** β†’ Adobe fields (title, description, author, subject)
- **GPS Metadata** β†’ Latitude, longitude, altitude, timestamp
- **Audio Tags (ID3, Vorbis, etc.)** β†’ Artist, album, track number, genre

---

## πŸ›‘ Troubleshooting

| Problem | Solution |
|---------|----------|
| `Permission denied` | Run with `sudo` on Linux/macOS |
| Backup files clutter folder (`_original`) | Use `-overwrite_original` flag |
| Missing metadata fields | Not all file formats support every tag |
| Garbled characters in output | Use UTF-8 encoding: `exiftool -charset UTF8 file.jpg` |
| GUI not starting | Ensure all dependencies from `requirements.txt` are installed |

---

## ❓ FAQ

**Q1: Is Exif safe to use?**
βœ… Yes, but always back up your files before modifying metadata.

**Q2: Does Exif overwrite files?**
By default, backups are created. Use `-overwrite_original` to skip them.

**Q3: Is it cross-platform?**
Yes, works on **Windows, macOS, and Linux**.

**Q4: Can Exif handle videos and audio files?**
Yes, basic metadata extraction is supported for video and audio formats.

**Q5: How can I see all available metadata fields in a file?**
Run:
```bash
python exif-cli.py file.jpg --format json
```

---

## πŸ“œ License
This project is licensed under the MIT License – see [LICENSE](LICENSE).

---

## πŸ‘¨β€πŸ’» Credits
- Developed by **AryanVBW**
- Inspired by David Bombal’s [Exif script](https://github.com/davidbombal/red-python-scripts/blob/main/exif.py)
- Thanks to the open-source community for contributions and testing

---