Skip to main content

A system to sort your files

Project description

wisort :magic_wand:

Your file-sorting wizard :mage: that manages your file magically :crystal_ball:

Requirements

  • python >=3.14
  • uv (heavily recommended)
  • a UNIX OS

Installation

wisort is published on PyPi

# using uv (recommended)
uv tool install wisort

# or with pip
pip install wisort

if you want to just try out and run the project you can use uvx wisort. Make sure to copy the default config.json to $XDG_CONFIG_HOME(fallback to $HOME/.config).

Concept and features

wisort is supposed to be a file sorting cli. Below can be seen my ideas for the project even if they might not be fully implemented yet. To see the progress go read the ROADMAP It has different characters:

  • apprentice
  • magician (coming soon)
  • witch (not fully implemented yet - only deduplication as of now)
  • dragon (coming soon)

These are different magical users so they clean your file system differently. The apprentice is unsure about his work so he leave the most things to you to manually handle (confirmations when deleting etc.). The magician works way more autonomously but is very calm and doesn't destroy anything. This means a lot of capabilties with a good amount of safety. The witch is a brazen sorcerer not afraid of destruction. She cleans your filesystem very very thoroughly.

(As of now magician and witch are not implemented)

The :sparkles: magic :sparkles:

  • smart unzip: archives can be automatically unpacked before being moved. they get moved into a new folder or directly to the destination depending on the content
  • file duplicate removal strategies
    • replace the (older) duplicate by symlink
    • matching exact contents
    • diffing contents
    • intentional duplicate recognition -> diffing file names
  • auto-remove empty files
  • automatic move conflict resolution when the programm wants to move a file somewhere where a file with the same name already exist it can handle that automatically

Config

Configuration is done through config.json file in $XDG_CONFIG_HOME/wisort/

Example:

{
	"runes": {
		"images": ["png", "jpeg", "jpg"]
	},
	"libraries": {
		"pics": {
			"destination": "~/Pictures/",
			"filetypes": "@images",
			"flatten": true
		}
	},
	"orders": {
		"recurse": true,
		"honor_gitignore": true,
		"ignore_dotfiles": true
	},
	"args": {
		"quiet": true,
		"force": false
	}
}

"runes"

Runes are like a key-value store for your config file to create shorthands like above. This works with all filetypes supported by json as values.

"orders" - Specify wisort's behaviour

Order Default Description
"recurse" true Enables recursion through subdirectories of the target directory
"dedupe_strategy" "portal" Specifies how to resolve duplicates. "portal" replaces the duplicate files by symlinks to the original. "remove" deletes the duplicates.
"move_strategy" "flatten" By default this flattens out the file structure in the destination and doesn't preserve the file structure
"honor_gitignore" true This option specifies wether to ignore files as specified in the respective .gitignore files
"delete_empty_files true Wether to delete empty files on deduplication or not

"args" - Default overwrite for CLI arguments

Argument Default Description
"quiet" false Disable dialog and non critical messages
"force" false Overwrites move_conflict_strategy to remove
"verbose" false Shows more information

Usage

For the exact CLI usage do wisort --help

Project details


Download files

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

Source Distribution

wisort-0.3.0.tar.gz (23.2 kB view details)

Uploaded Source

Built Distribution

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

wisort-0.3.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file wisort-0.3.0.tar.gz.

File metadata

  • Download URL: wisort-0.3.0.tar.gz
  • Upload date:
  • Size: 23.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wisort-0.3.0.tar.gz
Algorithm Hash digest
SHA256 7435b164ada713784f3dd668d48e0109e216b01f9c0066d259a973051627046f
MD5 df22cc28054c82b4d41f95d9e45284c8
BLAKE2b-256 c90df03355966b71c9c926cfaadfa059ae2b3a36e9485bf15ef49f20bae21a0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for wisort-0.3.0.tar.gz:

Publisher: release.yml on vividsystem/wisort

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wisort-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: wisort-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wisort-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 49b53a0a95a70c6b035f4d5af39f3af88df87844f022e5ff434363141f434ec5
MD5 e7a87f7130cdee3c3034860a994278ff
BLAKE2b-256 8c022b541ee9527e919a1e7501f572f44b9f95c347458121482e013ae1948b1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for wisort-0.3.0-py3-none-any.whl:

Publisher: release.yml on vividsystem/wisort

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page