iamsanmith/MetaSort
๐ธ Smart Google Photos organizer! Clean files, extract dates, embed metadata, sort by date, generate reports. Supports 50+ formats including RAW.
MetaSort v1.0.0
๐ Google Photos Takeout Organizer
Transform your messy Google Photos Takeout into beautifully organized media libraries!
๐ฏ What is MetaSort?
MetaSort is your all-in-one solution for organizing Google Photos Takeout exports (or any messy media folder). It's lightning-fast, user-friendly, and works on both macOS and Windows.
โจ What MetaSort Does:
- ๐งน Cleans up filenames and removes .json clutter
- ๐ Extracts dates from filenames, JSON metadata, or file timestamps
- ๐ท๏ธ Embeds metadata (date, camera, GPS) directly into your photos/videos
- ๐ฆ Sorts everything into organized folders by year/month/type
- ๐ฌ Separates WhatsApp & Screenshots (optional)
- ๐ Generates beautiful reports (CSV + HTML)
- ๐จ Beautiful UI with progress bars and emoji-rich feedback
๐ Quick Start (5 Minutes)
For Non-Technical Users:
macOS:
- Download MetaSort from GitHub
- Open Terminal and run:
./scripts/build_macos.sh
- Double-click
Run_MetaSort.commandto start!
Windows:
- Download MetaSort from GitHub
- Right-click
scripts/install_windows.batโ "Run as administrator" - Follow the prompts - it will install everything automatically!
For Developers:
# Clone and build
git clone https://github.com/iamsanmith/MetaSort.git
cd MetaSort
cargo build --release
cargo run --release๐ Support & Donations
If MetaSort saved you hours, please consider supporting the project!
Every contribution, no matter how small, makes a difference and helps keep MetaSort free and actively maintained.
๐ Requirements
System Requirements:
- macOS 10.13+ or Windows 10+
- 4GB RAM (recommended)
- 500MB free space for the application
Dependencies:
- ExifTool - For metadata extraction and embedding
- Rust - For building the application
๐ก Don't worry! Our installation scripts handle all dependencies automatically.
๐ ๏ธ Detailed Installation
macOS Installation
Option 1: Automated (Recommended)
# Download and extract MetaSort
git clone https://github.com/iamsanmith/MetaSort.git
cd MetaSort
# Build and create launchers
./scripts/build_macos.shOption 2: Manual Installation
# 1. Install Homebrew (if not installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2. Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Press 1 when prompted, then restart Terminal
# 3. Install ExifTool
brew install exiftool
# 4. Build MetaSort
git clone https://github.com/iamsanmith/MetaSort.git
cd MetaSort
cargo build --releaseWindows Installation
Option 1: Automated (Recommended)
# Run PowerShell installer
powershell -ExecutionPolicy Bypass -File scripts/install_windows.ps1
# Or run batch installer
scripts/install_windows.batOption 2: Manual Installation
# 1. Install Rust from https://rustup.rs/
# 2. Install ExifTool
winget install ExifTool.ExifTool
# 3. Build MetaSort
git clone https://github.com/iamsanmith/MetaSort.git
cd MetaSort
cargo build --release๐ฎ How to Use MetaSort
Step 1: Launch MetaSort
- macOS: Double-click
Run_MetaSort.command - Windows: Run
cargo run --releaseor use the generated executable
Step 2: Select Your Folder
- Drag and drop your Google Photos Takeout folder
- Or type the path to your media folder
- MetaSort works with any folder containing photos/videos!
Step 3: Choose Options
- Separate WhatsApp/Screenshots? (Recommended: Yes)
- Metadata embedding method (Recommended: Auto-detect)
- Output directory (Default:
MetaSort_Output)
Step 4: Watch the Magic! โจ
MetaSort will:
- ๐ Scan your files
- ๐งน Clean up filenames
- ๐ Extract dates
- ๐ท๏ธ Embed metadata
- ๐ฆ Sort into folders
- ๐ Generate reports
Step 5: Enjoy Your Organized Media! ๐
- Photos/Videos:
MetaSort_Output/Media Files/ - Reports:
MetaSort_Output/Technical Files/ - HTML Summary: Open
MetaSort_Output/Technical Files/report.html
๐ Output Structure
After processing, you'll find:
MetaSort_Output/
โโโ Media Files/
โ โโโ 2023/
โ โ โโโ 01_January/
โ โ โ โโโ Photos/
โ โ โ โโโ Videos/
โ โ โ โโโ Screenshots/
โ โ โโโ 02_February/
โ โโโ 2024/
โโโ Technical Files/
โ โโโ report.html # Beautiful summary report
โ โโโ processing_log.csv # Detailed processing log
โ โโโ metadata_summary.csv # Metadata statistics
โ โโโ error_log.txt # Any issues encountered
โโโ Original Files/ # Backup of original structure
๐ฏ Supported File Types
Media Files:
- Photos: JPG, JPEG, PNG, WEBP, HEIC, HEIF, BMP, TIFF, GIF, AVIF, JXL, JFIF
- Raw Formats: RAW, CR2, NEF, ORF, SR2, ARW, DNG, PEF, RAF, RW2, SRW, 3FR, ERF, K25, KDC, MEF, MOS, MRW, NRW, SRF, X3F
- Design Files: SVG, ICO, PSD, AI, EPS
- Videos: MP4, MOV, MKV, AVI, WEBM, 3GP, M4V, MPG, MPEG, MTS, M2TS, TS, FLV, F4V, WMV, ASF, RM, RMVB, VOB, OGV, MXF, DV, DIVX, XVID
Metadata Sources:
- JSON files (Google Photos metadata)
- Filename patterns (WhatsApp, Screenshots, etc.)
- EXIF data (embedded in files)
- File timestamps (fallback)
๐ Smart Date Detection
MetaSort can extract dates from countless filename patterns:
๐ฑ Mobile Apps:
- WhatsApp:
IMG-20220101-WA0001.jpgโ2022:01:01 00:00:00 - Screenshots:
Screenshot_2023-01-01-12-00-00.pngโ2023:01:01 12:00:00 - Telegram:
photo_2023-01-01 12.00.00.jpgโ2023:01:01 12:00:00
๐ท Cameras & Phones:
- Samsung/Android:
20230101_123456.jpgโ2023:01:01 12:34:56 - Google Photos:
PXL_20230101_123456789.jpgโ2023:01:01 12:34:56 - Sony Camera:
DSC01234_20230101_123456.JPGโ2023:01:01 12:34:56 - MIUI:
IMG_20230101_120000.jpgโ2023:01:01 12:00:00
๐ฏ Custom Patterns:
wallpaper - IMG_20240113_143213Jan 13 2024โ2024:01:13 14:32:13San-1 Oct 2024.jxlโ2024:10:01 00:00:00RMLmc20250531_115820_RMlmc.7โ2025:05:31 11:58:20
๐ก MetaSort is smart! If your filename contains a date, it will likely find it!
๐ ๏ธ Advanced Features
๐ง Command Line Options
# Run with specific options
cargo run --release -- --help
# Process specific folder
cargo run --release -- --input "/path/to/folder"
# Custom output directory
cargo run --release -- --output "/path/to/output"๐ Report Customization
- HTML Report: Beautiful web-based summary with statistics
- CSV Reports: Detailed logs for spreadsheet analysis
- Error Logs: Track any issues during processing
๐ Batch Processing
- Process multiple folders
- Resume interrupted operations
- Skip already processed files
๐ Troubleshooting
Common Issues:
"ExifTool not found"
macOS:
brew install exiftoolWindows:
winget install ExifTool.ExifTool"Permission denied"
macOS:
chmod +x scripts/build_macos.shWindows:
- Right-click script โ "Run as administrator"
"Rust not found"
macOS:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shWindows:
- Download from https://rustup.rs/
"App won't open" (macOS)
- Use
Run_MetaSort.commandinstead of app bundles - Right-click โ Open (if needed)
Getting Help:
- Check the error logs in
MetaSort_Output/Technical Files/ - Ensure ExifTool is installed and accessible
- Try running in terminal for detailed error messages
- Open an issue on GitHub with error details
๐๏ธ Project Structure
MetaSort/
โโโ ๐ src/ # Source code
โ โโโ main.rs # Main application
โ โโโ platform.rs # Cross-platform compatibility
โ โโโ ui.rs # User interface & progress bars
โ โโโ media_cleaning.rs # File cleaning & organization
โ โโโ metadata_extraction.rs # JSON metadata extraction
โ โโโ metadata_embed.rs # Metadata embedding
โ โโโ sort_to_folders.rs # File sorting & folder creation
โ โโโ csv_report.rs # CSV report generation
โ โโโ html_report.rs # HTML report generation
โ โโโ filename_date_guess.rs # Date extraction from filenames
โ โโโ utils.rs # Utility functions
โโโ ๐ scripts/ # Build & installation scripts
โ โโโ build_macos.sh # macOS build script
โ โโโ build_windows.bat # Windows build script
โ โโโ install_windows.ps1 # Windows installer (PowerShell)
โ โโโ install_windows.bat # Windows installer (Batch)
โโโ ๐ docs/ # Documentation
โ โโโ SIMPLE_INSTALL.md # Non-technical user guide
โ โโโ CROSS_PLATFORM_CHANGES.md # Technical details
โโโ ๐ assets/ # Resources
โ โโโ logo.png # MetaSort logo
โ โโโ upi.png # UPI QR code
โโโ ๐ Run_MetaSort.command # Easy launcher (macOS)
โโโ ๐ MetaSort.command # Advanced launcher (macOS)
โโโ ๐ README.md # This file
โโโ ๐ LICENSE.txt # Apache 2.0 License
โโโ ๐ Cargo.toml # Rust project configuration
๐ค Contributing
We welcome contributions! Here's how you can help:
๐ Report Bugs
- Check existing issues first
- Provide detailed error messages
- Include your OS and MetaSort version
๐ก Suggest Features
- Describe the feature clearly
- Explain why it would be useful
- Consider implementation complexity
๐ง Submit Code
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
๐ Documentation
- Improve README sections
- Add examples
- Fix typos or unclear instructions
๐ License
MetaSort is licensed under the Apache License 2.0 - see the LICENSE.txt file for details.
This means you can:
- โ Use MetaSort for personal or commercial projects
- โ Modify and distribute MetaSort
- โ Use MetaSort in proprietary software
- โ Distribute modified versions
Requirements:
- Include the original license and copyright notice
- State any changes you made
๐ Acknowledgments
- ExifTool - For powerful metadata handling
- Rust Community - For the amazing ecosystem
- All Contributors - For making MetaSort better
- You - For using and supporting MetaSort!
Transform your digital memories into organized treasures!