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.
- Host: GitHub
- URL: https://github.com/aryanvbw/exif
- Owner: AryanVBW
- License: mit
- Created: 2022-08-27T06:51:44.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-08-23T14:02:37.000Z (almost 2 years ago)
- Last Synced: 2024-08-23T15:31:44.693Z (almost 2 years ago)
- Topics: aryan-technologies, aryanshop, aryanvbw, data-extraction, image-metadata, image-processing, images-hacking, information-gathering, powered-by-aryan-technologies, vivek
- Language: Python
- Homepage: http://Exif.aryanvbw.live
- Size: 57.6 KB
- Stars: 13
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# πΈ Exif - Comprehensive Metadata Tool
## π 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
### Document Metadata View
---
## π 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
---