FileOrganizer.UI v0.4.0 — Smart Sort + Duplicates + Fonts + Source Code + Subtitles
FileOrganizer.UI v0.4.0 — Smart Sort + 4 more live pages (Wave 2)
The shell goes from 6 to 11 live pages. The headline is Smart
Sort — drop a folder, get an organized library — which auto-routes
every file to the right pipeline using each media-type sidecar's
helpers in a single Python process.
New live pages
| Page | Sidecar | Pillaged from | What it does |
|---|---|---|---|
| Smart Sort ⭐ | smart_run.py |
tfeldmann/organize ten-bucket model + Picard / FileBot / Calibre helpers | Walks a source folder, classifies every file by extension into ten buckets (audio · video · image · book · pdf · font · archive · code · document · other), then delegates the destination naming to the matching media-type sidecar's pure-Python helpers — one process for the entire run. preview shows the planned tree, apply moves (or copies). Live category-count strip updates as it walks. |
| Duplicates | dedup_run.py |
Czkawka | Two engines: byte-identical Czkawka-style (size → 4 KB-prefix SHA-256 → full SHA-256), or BK-tree perceptual pHash for near-duplicate images via pybktree (sublinear similarity search, configurable Hamming threshold). Grouped result cards highlight the keeper (shortest path) per cluster. |
| Fonts | fonts_run.py |
fontTools name + OS/2 tables | TTF / OTF / WOFF / WOFF2 / TTC / OTC reader. Reports family, subfamily (style), OS/2 weight class, italic / monospace flags, designer, foundry, version. Optional rename into Fonts/{family}/{family} - {style}.{ext}. |
| Source Code | code_run.py |
github-linguist marker-file model | Detects each immediate child folder as a code project by marker files (package.json, Cargo.toml, pyproject.toml, go.mod, pom.xml, build.gradle, *.sln, .git, …). Walks the tree to count file extensions, then picks the primary language from ~70 known extensions across ~30 languages. Optional rename into Code/{language}/{name}. |
| Subtitles | subtitles_run.py |
Subliminal | Auto-fetches .srt per requested language(s) from Subliminal's provider chain. Skips MKVs that already have embedded subs (via enzyme). Configurable min-score threshold. Saves next to the video. |
Smart Sort's destination tree
{dest}/
├── Music/{albumartist}/{album}/{disc:02}-{track:02} {title}.{ext} ← via music_run helpers
├── TV/{title}/Season {season:02}/{title} - S{season:02}E{episode:02}.{ext} ← via video_run
├── Movies/{title} ({year})/{title} ({year}).{ext} ← via video_run
├── Books/{author}/{series} #{n} - {title}.{ext} ← via books_run
├── Pictures/<original-name>
├── PDFs/<original-name>
├── Fonts/{family}/{family} - {style}.{ext} ← via fonts_run
├── Archives/<original-name>
├── Code/<original-name>
├── Documents/<original-name>
└── Other/<original-name>
Download
FileOrganizer-UI-v0.4.0-win-x64.zip — self-contained Windows x64 build,
~64 MB compressed / ~160 MB extracted. Bundles WinUI 3 + Windows App SDK
runtime, all 11 Python sidecars, plus the fileorganizer/ package.
SHA256: 1105EB762125A7C6F958DD0C90A837E1B1CB4B8E7008D37E89E90A52C21B7650
Pillaged from
Czkawka (BK-tree dedup, MIT) · Subliminal (subtitle matching, MIT) ·
tfeldmann/organize (ten-bucket category model, MIT) · plus carry-over
from v0.3.0: MusicBrainz Picard (GPL), beets (MIT), FileBot logic,
Sonarr / Radarr (GPL), Calibre (GPL), Komga / Kavita.
Source
Tag: ui-v0.4.0.