Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - h4x0r/nameback: Give meaningful names to recovered files (normally only got placeholder names), based on their embedded metadata and/or contents extracted using OCR
Nothing Special   »   [go: up one dir, main page]

Skip to content
/ nameback Public

Give meaningful names to recovered files (normally only got placeholder names), based on their embedded metadata and/or contents extracted using OCR

License

Notifications You must be signed in to change notification settings

h4x0r/nameback

Repository files navigation

nameback

Rename files based on their metadata. Automatically extracts titles, dates, and descriptions from your files to give them meaningful names.

Available Tools:

  • πŸ–₯️ CLI - Command-line tool for automation and scripting (Windows, macOS, Linux)
  • 🎨 GUI - Visual dual-pane interface (Midnight Commander style) for all platforms

What it does

Transforms meaningless filenames into descriptive ones using embedded metadata:

IMG_2847.jpg           β†’ 2024-03-15_sunset.jpg
document.pdf           β†’ Annual_Report_2024.pdf
screenshot_20241015.png β†’ θΌΈε…₯_姓名.png (Chinese OCR)
VID_20241015.mp4       β†’ Product_Demo_Video.mp4 (frame OCR)
IMG_3847.heic          β†’ Family_Reunion_2024.heic

Installation

macOS

brew tap h4x0r/nameback
brew install nameback

Automatically installs all dependencies (exiftool, tesseract, ffmpeg, imagemagick).

Windows

Download and install nameback-x86_64-pc-windows-msvc.msi from releases

What you get:

  • CLI: Type nameback in any terminal (automatically added to PATH)
  • GUI: Launch from Start Menu β†’ nameback

Alternative: Portable Executables

For portable use without installation, download individual executables from releases:

  • CLI: nameback-x86_64-pc-windows-msvc.exe
  • GUI: nameback-gui-x86_64-pc-windows-msvc.exe

Then install dependencies:

nameback --install-deps

Linux

cargo install nameback
nameback --install-deps

See all installation options

Quick Start

CLI (Command-line)

# Preview what will change (safe, no modifications)
nameback ~/Pictures --dry-run

# Rename the files
nameback ~/Pictures

GUI (All Platforms)

Windows: Launch nameback from Start Menu macOS/Linux: Run ./nameback-gui (download from releases)

  1. Click "πŸ“ Select Directory" to choose a folder
  2. Review proposed renames in the right pane (original names on left)
  3. Check/uncheck files to rename
  4. Click "βœ… Rename X Files" to apply changes

Features:

  • πŸ“‚ Visual dual-pane interface (Midnight Commander style)
  • βœ… Checkbox selection for individual files
  • πŸ”„ Real-time preview before renaming
  • βœ”οΈ Color-coded status (pending, success, error)

Common Examples

# Organize recovered files from data recovery
nameback /tmp/photorec --dry-run

# Process screenshots folder with OCR
nameback ~/Desktop/Screenshots --verbose

# Clean up iPhone photo exports (HEIC support)
nameback ~/Desktop/iPhone_Export

# Organize downloaded documents
nameback ~/Downloads --dry-run

Features

  • Intelligent Naming Heuristics - Quality scoring system to choose the best name from multiple sources
  • Smart Photo Renaming - Uses EXIF data (date, description, GPS location) from JPEG, PNG, HEIC/HEIF
  • PDF Intelligence - Extracts titles from metadata or document content, with OCR for scanned PDFs
  • Enhanced Text Extraction - Markdown frontmatter, CSV semantic columns, nested JSON/YAML fields
  • Context-Aware Naming - Leverages directory structure and filename analysis for better names
  • Multi-Frame Video Analysis - Extracts multiple frames (1s, 5s, 10s) and picks the best OCR result
  • Series Detection - Automatically detects and maintains file series numbering (e.g., vacation_001.jpg, vacation_002.jpg)
  • Format-Specific Handlers - Email files (.eml), web archives (.html), archives (.zip, .tar), source code docstrings
  • Location & Timestamp Enrichment - Optional GPS coordinates and formatted timestamps in filenames
  • Multi-Language OCR - Supports Traditional Chinese, Simplified Chinese, English (and 160+ more languages)
  • Advanced Filtering - Automatically rejects low-quality names (errors, device names, generic placeholders)
  • HEIC Support - Native support for Apple's High Efficiency Image Format
  • Safe & Secure - Preview mode, no overwrites, blocks root execution, same-directory only

Options

nameback <directory>                        # Rename files
nameback <directory> --dry-run              # Preview changes only
nameback <directory> --verbose              # Show detailed progress
nameback <directory> --skip-hidden          # Skip hidden files
nameback <directory> --include-location     # Add GPS coordinates to photo/video names
nameback <directory> --include-timestamp    # Add formatted timestamps to names
nameback <directory> --multiframe-video     # Use multi-frame video analysis (slower but better)
nameback --check-deps                       # Check dependencies
nameback --install-deps                     # Install dependencies

Building from Source

This project uses a Cargo workspace with 3 crates:

  • nameback-core - Shared library with core rename logic
  • nameback-cli - Command-line tool
  • nameback-gui - GUI application (egui-based)

Build All

# Build everything
cargo build --release

# Binaries:
# target/release/nameback (CLI)
# target/release/nameback-gui (GUI)

Build Individual Tools

# CLI only
cargo build --release -p nameback

# GUI only
cargo build --release -p nameback-gui

# Core library only
cargo build --release -p nameback-core

Running Tests

cargo test --workspace

Learn More

License

MIT License - see LICENSE file for details

Created by Albert Hui (@4n6h4x0r)

Built with Claude Code

About

Give meaningful names to recovered files (normally only got placeholder names), based on their embedded metadata and/or contents extracted using OCR

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  
0