A desktop tool that automatically organizes Movies and TV Shows for Plex: detecting titles, fetching metadata (TMDB), renaming files and folders to Plex's naming convention, and previewing every change before it's applied.
Not affiliated with, endorsed by, or associated with Plex Inc. in any way — "Plex" above just names the naming convention this tool's output happens to match, the same way a tool might say it exports to MP4.
Feature-complete for everyday use: folder scanning, TMDB verification (including several show/title/season-episode matching fixes for tricky real-world naming), non-English title translation, apply/undo, folder monitoring, per-file selection, an option to skip sorting into Show/Season folders, dark/light mode, an optional "keep original copies" safety net, remembering the last folder between runs (with automatic TMDB verification on load), and a first-run TMDB key setup flow.
There used to be two front ends sharing the same Core/Infrastructure logic; there's really only one actively-developed one now — see below.
src/MediaFileOrganizer.Core— the innermost layer. Domain models and interfaces only. Depends on nothing else in the solution — that's what lets us swap implementations later without touching business rules.src/MediaFileOrganizer.Infrastructure— concrete implementations of Core's interfaces: talking to the file system, calling TMDB, etc. Depends on Core.src/MediaFileOrganizer.Web— the actively-developed UI. An ASP.NET Core Minimal API backend (depending only on Core and Infrastructure) serving a plain HTML/CSS/JS front end.src/MediaFileOrganizer.App— LEGACY, not maintained. The original WPF desktop UI, from before the move to the web UI above. It still builds, but hasn't tracked any feature added since — see the banner comment at the top ofApp.xaml.csfor the details. Kept for now for reference; may be deleted in a future cleanup.tests/MediaFileOrganizer.Core.Tests— unit tests for Core's logic.
There are two ways to run it — same app either way, just different levels of "do I need a command line."
While developing (requires the .NET SDK):
dotnet run --project src/MediaFileOrganizer.Web
This starts a local server at http://localhost:5250 and opens it in your
default browser automatically. First run will prompt for a TMDB API key
(optional — everything except "Verify with TMDB" works without one).
As a normal application (double-click an icon, no command line, no .NET SDK required on the machine running it) — set up once:
powershell -ExecutionPolicy Bypass -File .\scripts\publish.ps1
powershell -ExecutionPolicy Bypass -File .\scripts\create-desktop-shortcut.ps1
The first script builds a single self-contained .exe (bundles the .NET
runtime, so there's nothing else to install) into a publish\ folder; the
second adds a "Media File Organizer" shortcut to your Desktop pointing at it.
After that, launching the app is just double-clicking that icon — it opens
a small console window (useful for spotting errors) and your browser tab,
exactly like dotnet run does. Re-run publish.ps1 any time you've pulled
or made changes you want the shortcut to pick up; the shortcut itself only
needs to be created once.
The legacy WPF UI (MediaFileOrganizer.App) can still technically be run by
opening MediaFileOrganizer.sln in Visual Studio, setting it as the startup
project, and pressing F5 — but it's not kept in sync with the web UI above,
so don't expect it to reflect current behavior.
MIT — see LICENSE. Use it, modify it, share it, just keep the copyright notice attached.
DISCLAIMER: this is vibecoded with claude
0 comments
log in to comment.