Skip to main content

Python PyPI Downloads

📁 File swirl

Now Organizes files from chaos to order with just one command. Organize photos, videos, documents, and more — cleanly and efficiently — using flexible sorting rules. Can easily process 100 GB +

✨ Organize Features

  • 📅 Sort by Date — Organize files into folders by creation or modified date.
  • 🧩 Filter by File Extension — Group files like .jpg, .mp4, .pdf, etc
  • 🏷️ Sort by Camera Make (EXIF.make) — Useful for photographers to group by device brand.
  • 🔍 Sort by File Type (MIME) — Organize images, videos, documents, etc.
  • 🗂️ Nested Sorting — Apply multi-level sort: e.g., Date → Extension → Make.
  • ⚙️ Custom Sort Key Chains — Chain any supported keys in any order.
  • 🎛️ Parallel Processing Support — Fast sorting using multi-threading.

Also supports to arranges file in nested folder structure like Output/Data/Make/Model for all the options mentioned above.

This scripts lets you filter out specific file extensions while sorting. e.g Sort only .mp4 files from source dir into destination dir

System requriments.

  • Python3.10+
  • ExifTool

✅ Supports

  • Windows 11 x64
  • Linux Ubuntu
  • Cli & Gui

📸 Screenshot

FileSwirl UI

Run Gui *

> python -m file_swirl.gui

Project setup

- git clone https://github.com/NishantGhanate/FileSwirl.git
- cd FileSwirl
- python -m venv venv
- [Win] > venv\Scripts\activate
- [Linux] $ venv/bin/activate
- pip install -r requriments.txt

Download this tool

- Download & Install: https://exiftool.org/
- For Windows Installer: https://oliverbetz.de/pages/Artikel/ExifTool-for-Windows

To install project locally

For development
> pip install -e .

For final build testing
> python -m pip install .

Pypi Installer:

pip install file-swirl

To build project locally

> python -m build
> pip install dist/file_swirl-0.0.10-py3-none-any.whl

HELP

> python -m file_swirl.cli -h

Run cli: default command

> python -m file_swirl.cli --input_paths "E:\\src" --output_path "E:\\dest"

Defaults Args for cli

--shift_type copy
--nested_order date
--process_type linear
--file_extensions "{pre-defined inside constants}"

Args and its values

--shift_type : copy | move
--nested_order : alphabet date file_extension file_extension_group make model
--process_type : linear | parallel
--file_extensions "{pre-defined inside constants all basic formats}"

Examples:

🔁 Move files from a source to a destination

python -m file_swirl.cli \
  --input_paths "E:\\src" \
  --output_path "E:\\dest" \
  --shift_type "move"

🗃️ Move files and organize by nested folders: date file_extension

python -m file_swirl.cli \
  --input_paths "E:\\src" \
  --output_path "E:\\dest" \
  --shift_type "move" \
  --nested_order date file_extension

🏷️ Organize files by camera make/brand

python -m file_swirl.cli \
  --input_paths "E:\\src" \
  --output_path "E:\\dest" \
  --nested_order make

⚡ Copy from multiple folders in parallel mode

python -m file_swirl.cli \
  --input_paths "E:\\src" "E:\\temp" \
  --output_path "E:\\dest" \
  --shift_type "copy" \
  --process_type "parallel

🧱 Architecture:

Currently its limited to 1 producer and 4 q each thread will consume from this q

+-----------------+       +------------------+
|   Producer(s)   | --->  |  Queue (Stream)  | ---> [Processor 1]
| (dir scanners)  |       |  file paths      | ---> [Processor 2]
+-----------------+       +------------------+ ---> [Processor N]

Set to test code locally

Linux : export PYTHONPATH=.
WIN: set PYTHONPATH=.

📌 Project Roadmap

  • See the full RoadMap for upcoming features and ideas.

Metadata

Release files for file-swirl 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for file-swirl 0.1.0
File Size Uploaded
file_swirl-0.1.0.tar.gz 29.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for file-swirl 0.1.0
File Interpreter ABI Platform
file_swirl-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 65.8 kB

Release files / file_swirl-0.1.0.tar.gz

Download URL file_swirl-0.1.0.tar.gz
Size 29.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a1c00c9ff239d6a303d79bb076d68791f7abe42d1d0834cc280b89ca03099b94
BLAKE2b-256 checksum
How to use checksums
105eba6fb5de33d635e923cba023d783ad9e7bbb978973f8b0d4199ecad45a28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.18

Release files / file_swirl-0.1.0-py3-none-any.whl

Download URL file_swirl-0.1.0-py3-none-any.whl
Size 36.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3a6970efb208f1c70e63afade164cde0737e5152006871761e83da5a4e98d3e1
BLAKE2b-256 checksum
How to use checksums
0a60d01a3b1247db90ef923ea43372015564404d2e2a0fb966f6116406589e60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.18

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page