A macOS app that automatically renames media folders and files to follow Plex-optimized naming conventions, including IMDb IDs and optional edition tags.
- π¬ Movie Support: Rename movie folders with IMDb IDs and optional edition tags
- πΊ TV Show Support: Organize TV shows with season folders and episode naming
- π IMDb Lookup: Automatic IMDb ID lookup via TMDb API with local caching
- βοΈ Manual Override: Manually enter IMDb IDs when needed
- π¨ Dark Plex Theme: Beautiful dark UI inspired by Plex
- π Safe Renaming: Preview changes before applying, with automatic rollback on errors
- π Smart Detection: Automatically detects movies vs TV shows and excludes extras/featurettes
- macOS 13.0 (Ventura) or later
- TMDb API key (free at themoviedb.org)
- Download the latest
Plexify.appfrom the Releases page. - Drag it to your
/Applicationsfolder. - Right-click > Open on first launch (Gatekeeper).
Plexify uses TMDb to look up IMDb IDs.
- Sign up at themoviedb.org
- Go to Settings > API
- Request an API key (free)
- Open Plexify Settings (gear icon) and paste the key
The key is stored securely in your Keychain.
- Launch Plexify
- Drag and drop a media folder or a single media file onto the drop zone
- Review the rename preview (folder name, files, warnings)
- Edit IMDb ID if needed (optional)
- Click "Apply Rename" to execute the changes
- Basic:
MovieName (Year) {imdb-ttXXXXXXX} - With Edition:
MovieName (Year) {edition-Director's Cut} {imdb-ttXXXXXXX} - Example:
The Matrix (1999) {imdb-tt0133093}
- Season-Based:
ShowName (Year) {imdb-ttXXXXXXX}/Season 01/ShowName (Year) - s01e01 - Episode Title.ext - Date-Based:
ShowName (Year) - YYYY-MM-DD - Episode Title.ext - Example:
Band of Brothers (2001) {imdb-tt0185906}/Season 01/Band of Brothers (2001) - s01e01 - Currahee.mkv
For detailed naming rules, see rules.md. For supported patterns and limitations, see requirements.md.
Plexify/
βββ Plexify/
β βββ Models/ # Data models (MediaItem, Episode, RenamePlan)
β βββ Services/ # Business logic (FolderRenamer, FolderScanner, ImdbLookupClient)
β βββ ViewModels/ # App state management (PlexifyViewModel)
β βββ Views/ # UI components (PreviewView, ProgressView)
β βββ Utilities/ # Helpers (PathSanitizer, PlexColors)
β βββ DragDrop/ # Drop zone component
βββ PlexifyTests/ # Unit tests
βββ PlexifyUITests/ # UI tests
Plexify uses TMDb (The Movie Database) to look up IMDb IDs. You need a free API key:
- Sign up at themoviedb.org
- Go to Settings > API
- Request an API key (free)
- Open Plexify Settings and paste the API key (stored securely in Keychain)
- (Optional) Add it as an environment variable for local dev (see Quick Start above)
The API key is only used for IMDb lookups and is never stored or transmitted except to TMDb's servers.
IMDb lookup results are cached locally at:
~/Library/Application Support/Plexify/imdb_cache.json
You can delete this file to clear the cache.
Run unit tests:
xcodebuild -scheme Plexify testOr in Xcode: Cmd+U
- β Naming rules (movies and TV shows)
- β Path sanitization
- β Folder scanning and classification
- β IMDb lookup (stub and cache)
- β Rename plan building
- β Rollback functionality
-
Archive the app
xcodebuild -scheme Plexify -configuration Release archive \ -archivePath ./build/Plexify.xcarchive
-
Export the app
xcodebuild -exportArchive \ -archivePath ./build/Plexify.xcarchive \ -exportPath ./build/export \ -exportOptionsPlist ExportOptions.plist
For distribution outside the Mac App Store:
- Developer ID Certificate: Required for notarization
- App-specific password: For notarization with Apple
- Hardened Runtime: Enabled in build settings
- Entitlements: Configured for file access
Note: For personal use, you can build and run without signing. For distribution, you'll need:
- Apple Developer account ($99/year)
- Code signing certificate
- Notarization (required for macOS Gatekeeper)
# Create DMG with create-dmg (install via Homebrew: brew install create-dmg)
create-dmg \
--volname "Plexify" \
--window-pos 200 120 \
--window-size 600 300 \
--icon-size 100 \
--icon "Plexify.app" 175 120 \
--hide-extension "Plexify.app" \
--app-drop-link 425 120 \
"Plexify.dmg" \
"./build/export/Plexify.app"- UI Components: Add to
Plexify/Views/ - Business Logic: Add to
Plexify/Services/ - Models: Add to
Plexify/Models/ - Tests: Add to
PlexifyTests/
- Follow Swift API Design Guidelines
- Use
PascalCasefor types,camelCasefor variables/functions - Keep files focused and small
- Write tests for new functionality
- macOS Only: Windows and Linux are not supported
- Single Folder: Processes one folder at a time
- No Episode Parsing: TV shows require manual episode data (future enhancement)
- TMDb Dependency: Requires internet connection for IMDb lookups (cached locally)
- Ensure
TMDB_API_KEYis set in your Xcode scheme's environment variables - Restart Xcode after adding the environment variable
- Ensure the folder contains video files (mp4, mkv, avi, etc.)
- Check that files aren't in excluded folders (Featurettes, Extras, etc.)
- Check file permissions
- Ensure no other apps are using the files
- The app will automatically rollback on failure
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
License information to be added
- Requirements - Supported patterns and out-of-scope items
- Rules - Naming rules and token definitions
- Project Plan - Development roadmap
