Skip to main content

S-Organizer

Automatic file organization with PyQt6 GUI.

Features

  • Real-time monitoring - Watch folders and auto-organize files as they appear
  • Rule-based sorting - Define rules to move, copy, rename, or delete files
  • Flexible matching - Match by extension, name pattern, size, age, or content
  • Undo support - Reverse any file operation from history
  • Duplicate detection - Find and handle duplicate files
  • JSON rules - Easy to create, share, and version control rules
  • Auto-update - Built-in check for updates (Help menu in GUI)

Installation

Option 1: Windows Installer (Recommended)

  1. Go to Releases
  2. Download S-Organizer-0.2.0-Setup.exe
  3. Run the installer — it registers in Control Panel > Programs and Features for easy uninstall
  4. Windows Defender Warning: If you see a false positive warning, click "More info" → "Run anyway" or add an exclusion for the file

Option 2: Standalone EXE (Windows)

  1. Go to Releases
  2. Download S-Organizer.exe
  3. Windows Defender Warning: If you see a false positive warning, click "More info" → "Run anyway" or add an exclusion for the file

Option 3: Install with pip

pip install s-organizer

Option 4: From source

git clone https://github.com/Shrestha7/S-Organizer.git
cd s-organizer
pip install -r requirements.txt
# Or install in development mode
pip install -e ".[dev,content]"

Usage

CLI Mode

python -m src.main

Python API

from src.main import FileOrganizer

# Initialize the organizer
organizer = FileOrganizer()

# Add a folder to watch
organizer.add_watched_folder("~/Downloads")

# Start monitoring
organizer.start()

Creating Rules

Create a JSON file in the rules/ directory:

{
  "name": "Move PDFs to Documents",
  "enabled": true,
  "trigger": {
    "folder": "~/Downloads",
    "recursive": false
  },
  "match": {
    "extensions": [".pdf", ".docx"]
  },
  "action": {
    "type": "move",
    "destination": "~/Documents/{extension}/{name}{extension}"
  }
}

Rule Format

Trigger

  • folder: Directory to monitor
  • recursive: Watch subdirectories (default: false)

Match

  • extensions: List of file extensions (e.g., [".pdf", ".txt"])
  • name_pattern: Glob pattern (e.g., ".pdf", "report_")
  • min_size / max_size: Size limits (e.g., "10MB", "1GB")
  • min_age_days / max_age_days: Age limits
  • content_keywords: Search within file contents

Action

  • type: "move", "copy", "rename", or "delete"
  • destination: Target path with placeholders
  • template: New name template (for rename)

Placeholders

  • {name} - File name without extension
  • {extension} / {ext} - File extension
  • {date} - Last modified date (YYYY-MM-DD)
  • {year}, {month}, {day} - Date components
  • {parent} - Parent directory name

Development

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run with coverage
pytest --cov=src

# Lint
ruff check src/

# Type check
mypy src/

Project Structure

s-organizer/
├── src/
│   ├── core/           # File monitoring, rule engine, operations
│   ├── rules/          # Rule definitions and matching
│   ├── gui/            # PyQt6 GUI components
│   └── utils/          # Configuration and helpers
├── tests/              # Test suite
├── rules/              # Sample JSON rule files
├── docs/               # Documentation
└── main.py             # Entry point

License

Apache License 2.0 - see LICENSE for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

s_organizer-0.2.0.tar.gz (37.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

s_organizer-0.2.0-py3-none-any.whl (40.9 kB view details)

Uploaded Python 3

File details

Details for the file s_organizer-0.2.0.tar.gz.

File metadata

  • Download URL: s_organizer-0.2.0.tar.gz
  • Upload date:
  • Size: 37.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.4

File hashes

Hashes for s_organizer-0.2.0.tar.gz
Algorithm Hash digest
SHA256 70bb78a9b530cc0e4404109e6ee1d23166f0277a7651f5c3ab7eea36b219ed58
MD5 9747cfc4241648854905cfd418054609
BLAKE2b-256 7516166129430735f3df203a7ff734d3b52b8df0b19899be873bd8a22a9000e0

See more details on using hashes here.

File details

Details for the file s_organizer-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: s_organizer-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 40.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.4

File hashes

Hashes for s_organizer-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8fccf97ff7772d056c55773be343b162ef516159407dbe7a31c03a902d2422c8
MD5 dcf254eb2bf32464f48b0be3d4bf5e7b
BLAKE2b-256 8ccb8851fdcd66663034245022f75d6846b3c17bfd48f530c412dfed669d4aac

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.8

2 files

0.4.7

2 files

0.4.6

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

This release

0.2.0 This release

2 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