Skip to content

FileFlow your memory efficient File sorter

License

Notifications You must be signed in to change notification settings

AryanSLAYERRR/FileFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0456146Β Β·Β Β· Aug 15, 2025

History

18 Commits
Aug 14, 2025
Aug 15, 2025
Aug 15, 2025
Aug 14, 2025
Aug 15, 2025
Aug 15, 2025

Repository files navigation

πŸ“‚ FileFlow

Fast, Simple, and Safe File Sorting β€” Organize your downloads in seconds.


✨ Features

  • πŸ”Ž Live Preview β€” See planned actions (MOVE, SKIP, CONFLICT) before touching files.
  • πŸ—‚ Smart Organization β€” Sort by type: Images, Docs, Videos, Audio, Archives, Code, and more.
  • 🧩 Custom Rules β€” Map extensions (.pdf, .jpg, etc.) to folders via the built-in Rules Editor.
  • πŸ›‘ Safe Moves β€” Hash-based duplicate detection + conflict resolution (skip or suffix).
  • πŸ§ͺ Dry Run β€” Test sorting without moving a single file.
  • βͺ Undo β€” Restore everything from the last batch with one click.
  • 🧱 Filters β€” Ignore clutter (node_modules, .git, hidden/system files, etc.).
  • πŸ–₯ Cross-Platform UX β€” Open/reveal files in Explorer (Win), Finder (macOS), or xdg-open (Linux).

πŸ“¦ Project Structure

.
β”œβ”€ main.py
└─ src/
   β”œβ”€ gui.py           # Tkinter UI: Dashboard, Preview, Settings, Rules
   β”œβ”€ preview.py       # Live preview generator
   β”œβ”€ apply_moves.py   # Move execution, conflict handling, undo
   β”œβ”€ scanner.py       # Recursive file scanning with exclusions
   β”œβ”€ rules.py         # Extension β†’ folder resolution
   β”œβ”€ config.py        # Defaults, validation, persistence
   β”œβ”€ types_map.py     # Default categories
   β”œβ”€ worker.py        # Background worker threads
   └─ utils/
      β”œβ”€ hash_utils.py # Buffered file hashing
      └─ os_ops.py     # OS-specific open/reveal actions
veal actions

πŸš€ Running from Source

Requirements

  • Python 3.10+
  • Tkinter (Linux: sudo apt-get install python3-tk)
  • Linux file opening: sudo apt-get install xdg-utils
  • Clone this repo: git clone https://github.com/AryanSLAYERRR/FileFlow
  • cd into Fileflow

Windows (PowerShell)

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python n -m pip install --upgrade pip wheel setuptools
python main.pyy

macOS / Linux (not tested should work though)

python3 -m venv .venv

source .venv/bin/activate
python3 main.pyy

🧭 How to Use

  1. Configure in Settings:
    • Include paths (e.g., Downloads)
    • Optional destination roots ( where the folders will be created to sort, multiple can be set for multiple paths)
    • Exclude patterns + conflict policy
    • Add folders you want to exclude from scanning <<<<<<< HEAD<<<< HEADD
  2. Scan β€” Select β€œScan / Preview” to analyze files.
    • Press Scan/Preview to Scan the files to move
    • Check the Subfolder BOX to scan folders in the DIR
    • Scan is very memory efficient, it seamlessly scans 80k+ files with less than 30mb ram consumption
  3. Review β€” Watch planned actions in real time (MOVE, SKIP, CONFLICT).
  4. Rules β€” Map .ext β†’ folder (e.g., .jpg β†’ Pictures). Falls back to defaults.
  5. Sort β€” Use β€œDry Run” to test; β€œSort Now” to apply moves.
  6. Undo β€” β€œUndo ALL” restores from the last journaled batch.
    • May become unresponsive if the sum of files to undo is large, just wait for it to become responsive again ========
  7. Scan β€” Select β€œScan / Preview” to analyze files.
  8. Review β€” Watch planned actions in real time (MOVE, SKIP, CONFLICT).
  9. Rules β€” Map .ext β†’ folder (e.g., .jpg β†’ Pictures). Falls back to defaults.
  10. Sort β€” Use β€œDry Run” to test; β€œSort Now” to apply moves.
  11. Undo β€” β€œUndo ALL” restores from the last journaled batch.

e7d2d9a5450bd4834637127abd78f6c39e453e4b

πŸ’‘ Pro tips:

  • Double-click a row β†’ open folder
  • Right-click a row β†’ open/reveal/copy paths

🧰 Building Native Executables (PyInstaller)

Perform these in project root DIR

Windows

pip install pyinstaller
pyinstaller --noconsole --name FileFlow --add-data  "src;src" main.py

macOS

pip install pyinstaller
pyinstaller --windowed --name FileFlow --add-data  "src:src" main.py

Linux

pip install pyinstaller
pyinstaller --windowed --name fileflow --add-data  "src:src" main.py

β„Ή Tip: Use --onefile for a single self-extracting binary (slower startup).


βš™οΈ Default Configuration

  • Include Paths: Downloads folder by default
  • Exclusions: .git, node_modules, __pycache__, .DS_Store, etc.
  • Conflict Policy:
    • skip β€” Leave duplicates untouched
    • suffix β€” Append (1), (2), etc.
  • Categories: Images, Docs, Videos, Audio, Archives, Code, Other

πŸ”’ Safety & UndoUndo

  • Duplicate detection: Hash-based to avoid redundant copies
  • Journal: .fileflow_journal.jsonl in the first include path
  • Undo: β€œUndo ALL” reverses the last batch

πŸ“„ License

This project is licensed under the MIT License β€” see LICENSE for details.


✨ Made with care for tidy folders ✨

About

FileFlow your memory efficient File sorter

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages