Releases: Hospes/plexify
0.1.3
Summary
Plexify now officially supports Linux on ARM64 architectures! If you are hosting your Plex or Jellyfin media server on a Raspberry Pi, an ARM-based NAS, or an ARM cloud server, you can now download a natively optimized binary specifically for your hardware. Under the hood, we have also streamlined our automated release pipeline to build these new architectures simultaneously, ensuring faster and more efficient tool updates in the future.
Installation
Download the binary for your platform from the Assets section below.
| Platform | File |
|---|---|
| Windows | plexify-windows.exe |
| Linux | plexify-linux |
Linux: Make the binary executable after download:
chmod +x plexify-linux
β¨ New Features
- [Linux] Added official pre-compiled native release binaries for Linux ARM64 architectures, expanding hardware compatibility to devices like the Raspberry Pi and ARM-based NAS systems.
π οΈ Technical & Internal Changes
- [Linux] Updated the GitHub Actions release workflow to utilize a build matrix strategy, enabling Linux
x64andarm64executables to be compiled and packaged concurrently. - [Linux] Adjusted Gradle build tasks (
linkReleaseExecutableLinuxX64andlinkReleaseExecutableLinuxArm64) and archive packaging scripts to correctly route and upload architecture-specific build outputs.
Full Changelog: 0.1.2...0.1.3
0.1.2
Summary
This release brings major improvements to how Plexify identifies, parses, and organizes your media. We've introduced a new "dry run" mode (--test) that lets you safely preview exactly how your library will be organized without modifying any actual files on your disk. Media filename parsing is now significantly smarterβit accurately detects complex episode naming formats, correctly identifies HDR versions, and extracts special editions (like Director's Cuts) for your file tags. Additionally, TV show processing is now much faster thanks to new season-level metadata fetching, and we've refined our Jellyfin naming templates to ensure maximum compatibility with modern servers.
Installation
Download the binary for your platform from the Assets section below.
| Platform | File |
|---|---|
| Windows | plexify-windows.exe |
| Linux | plexify-linux |
Linux: Make the binary executable after download:
chmod +x plexify-linux
β¨ New Features
- [Windows & Linux] Dry Run Mode (
--test): Added a new command-line flag to simulate the organization process. When enabled, Plexify will scan, parse, and look up metadata to show you exactly what changes would be made, all without moving, copying, or linking any files.
π Enhancements & Improvements
- [Windows & Linux] Advanced Episode Parsing: Completely overhauled the episode filename parser to support much more complex naming conventions. It now recognizes bracketed episode numbers (e.g.,
[01]),Season Nkeywords, and can safely infer season numbers from parent directory names. - [Windows & Linux] HDR & Edition Detection: The parser now reliably identifies HDR formats (HDR10+, DV, HLG, SDR) and multi-word movie editions (e.g., "Director's Cut", "Special Edition", "IMAX"). These are accurately formatted and injected into the
{version}template placeholder. - [Windows & Linux] Faster TV Show Processing: Upgraded metadata fetching to request entire seasons at once from TMDb instead of pulling episodes individually. This dramatically speeds up the processing of large TV show directories and reduces API calls.
- [Windows & Linux] Recursive Directory Scanning: Replaced flat directory scanning with recursive traversal. Plexify will now deeply scan your source folders to find all nested media files automatically.
- [Windows & Linux] Smarter Title Matching: Improved matching accuracy by normalizing titles before comparison (e.g., matching "Spider-Man" with "Spiderman") and introducing a more rigorous scoring system based on release years.
- [Windows & Linux] Jellyfin Naming Strategy Updates: Refined the Jellyfin folder templates to conditionally support TVDb IDs alongside TMDb IDs, ensuring excellent metadata compatibility regardless of which provider is matched.
π Bug Fixes
- [Windows & Linux] Hardlink Error Handling: Added explicit error capture and user-friendly warning messages for hardlink failures, such as attempting to link files across different hard drives or partitions.
- [Windows & Linux] Filename Delimiter Normalization: Fixed an issue where dots and underscores in filenames were preventing accurate keyword matches. The parser now properly normalizes these into spaces before analysis.
- [Windows & Linux] Missing Season Fallback: Fixed an issue where TV show filenames missing a season number would fail to parse. Plexify now correctly infers the season or safely defaults to Season 1.
β οΈ Breaking Changes
- [Windows & Linux] Template Format Changes: Removed the leading space before the
{version}placeholder in both Plex and Jellyfin templates. This prevents files from ending with a trailing space before the extension when no version info is present. Additionally, the Jellyfin movie folder template no longer includes theimdbidtag, standardizing solely around TMDb IDs. Impact: Existing library folders or files matched with the old templates may not perfectly align with newly processed files.
π οΈ Technical & Internal Changes
- [Windows & Linux] Architecture Refactoring: Extracted metadata API logic from the
MediaProcessorinto a dedicatedMetadataServicefor cleaner separation of concerns and more robust provider fallback logic. - [Windows & Linux] Context-Aware Logging: Implemented a new custom logging utility leveraging Kotlin's experimental context parameters to provide automatic, thread-safe log indentation for easier debugging.
- [Linux] Linux ARM64 Target: Added
linuxArm64to the Kotlin Multiplatform build targets, laying the groundwork for native Raspberry Pi and ARM server support. - [Windows & Linux] Dependency Updates: Bumped Kotlin to
2.3.21, Ktor to3.4.3, kotlinx-serialization to1.11.0, and upgraded the Gradle wrapper to9.4.1. - [Windows & Linux] Build Optimizations: Enabled Gradle parallel builds, configuration caching, and incremental native compilation to significantly speed up compilation times.
Full Changelog: 0.1.1...0.1.2
0.1.1
Intelligent Matching & Performance Boost
This release marks a significant leap forward for Plexify, introducing a completely revamped media matching engine for superior accuracy and a new caching layer for a dramatic performance increase, especially when processing TV shows.
π Features & Enhancements
π§ Intelligent Media Matching Algorithm
The core logic for identifying movies and TV shows has been rebuilt from the ground up. Instead of a simple scoring system, Plexify now uses a sophisticated confidence scoring algorithm to find the best possible match for your media files.
- Title Similarity Scoring: The new engine calculates the Levenshtein distance between the filename and the search results, ensuring that titles like "The Dark Knight" and "Batman The Dark Knight" are correctly identified as strong matches.
- Multi-Factor Confidence: The final score is a weighted calculation based on:
- Title similarity.
- A significant bonus for matching the year parsed from the filename.
- A bonus for consensus between multiple metadata providers (e.g., TMDB and IMDb).
- Minimum Confidence Threshold: To prevent false positives, a minimum confidence score is now required. Files that don't find a sufficiently high-quality match will be skipped, avoiding incorrect organization.
- Enhanced Logging: The console output is now more verbose during the matching process, showing the different candidates and their calculated scores so you can see exactly why a specific match was chosen.
β‘ Performance Boost with Metadata Caching
Plexify is now much faster when processing directories containing multiple episodes of the same TV show.
- In-Memory Cache: A new in-memory caching layer has been introduced. When the first episode of a show is processed, its metadata is fetched and cached.
- Reduced API Calls: Subsequent episodes from the same show will use the cached data, eliminating redundant API calls and significantly speeding up the overall process. The cache is active for a single run of the application.
πΊ Expanded Media Support
- IMDb TV Mini-Series: Plexify now correctly identifies and processes "TV Mini-Series" from IMDb, treating them as standard TV Shows for organizational purposes.
β οΈ BREAKING CHANGES
Configuration Variable Renamed
The configuration property for the TMDB Access Token has been renamed for clarity and consistency.
- Old Name:
TMDB_API_READ_ACCESS_TOKEN - New Name:
TMDB_API_ACCESS_TOKEN
Action Required: You must update your local.properties file and any environment variables you have set.
Example local.properties update:
# Required for TMDB (The Movie Database)
TMDB_API_KEY="your_tmdb_api_key"
-TMDB_API_READ_ACCESS_TOKEN="your_tmdb_access_token"
+TMDB_API_ACCESS_TOKEN="your_tmdb_access_token"βοΈ Other Changes & Fixes
- Command-line arguments can now be supplemented or overridden by environment variables (e.g.,
TMDB_API_KEY,TMDB_API_ACCESS_TOKEN). - The
matchConfidencescore in the internal data models has been changed fromInttoDoubleto allow for more granular scoring. - The
.gitignorefile has been updated to ignore thetemplates/directory. - Internal code has been hardened to prevent incorrect object types from being passed to certain functions.
Full Changelog: 0.1.0...0.1.1
0.1.0
π Plexify v0.1.0 - Initial Release!
We are thrilled to announce the first public release of Plexify! This release marks the culmination of initial development, bringing a powerful, cross-platform command-line tool designed to automatically organize your movie and TV show collections into a clean, structured library, perfect for media servers like Plex, Jellyfin, and Emby.
This initial version is packed with features to take the headache out of managing your media library. Pre-compiled native executables for Linux and Windows are available for download in the assets section below.
β¨ Key Features
- π€ Automatic Media Organization: Processes entire directories or individual files, sorting them into a clean library structure.
- π Advanced Filename Parsing: Intelligently extracts title, year, season, episode, resolution, and quality from even the most complex filenames.
- βοΈ Multi-Source Metadata: Fetches and verifies media information from multiple databases (TMDB, IMDb) to find the most accurate match.
- π§ Intelligent Consolidation: Compares search results from all providers, scores them, and selects the best "golden record" for your media.
- π¨ Customizable Naming: Comes with pre-configured, optimal naming templates for Plex and Jellyfin. You can also define your own powerful custom templates.
- π Flexible File Operations: Choose to either
MOVEyour files or createHARDLINKs, preserving your original files for seeding or backup. - π₯οΈ Cross-Platform: Built with Kotlin/Native to run as native executables on Linux and Windows.
π Automated Release Workflow
This release introduces a brand new GitHub Actions workflow that automatically builds and packages the application whenever a new release is published. This means you get ready-to-use binaries for Linux (.tar.gz) and Windows (.zip) attached directly to each release.
π₯οΈ Usage Example
Organize a downloads folder using hardlinks (the default mode) and the Jellyfin naming convention:
./plexify "/path/to/downloads" "/path/to/Media Library"Move a single movie file and use the Plex naming convention:
./plexify --mode MOVE --template-plex "/downloads/The.Matrix.1999.mkv" "/movies"For more details on custom templates and advanced usage, check out the new README.md!
π οΈ What's New in This Release
This is the foundational release of Plexify. Everything is new!
Project & Build System
- Kotlin/Native Setup: Project initialized as a Kotlin Multiplatform application targeting
linuxX64andmingwX64(Windows). - Gradle Build Logic:
- Configured dependencies using
libs.versions.toml, including Clikt, Ktor, Kotlinx Serialization, Coroutines, and IO. - Integrated the
build-configplugin to securely manage API keys from environment variables or alocal.propertiesfile. - Implemented dynamic versioning based on
git describe.
- Configured dependencies using
- CI/CD: Added a GitHub Actions workflow (
release.yml) to automate the build, packaging, and upload of release assets.
Application Core
- CLI Interface: A user-friendly command-line interface built with Clikt, supporting sources, destination, operation mode, and naming templates.
- Media Processing Pipeline:
- Parse: A robust
MediaFilenameParserto deconstruct filenames. - Search:
MetadataProviderinterface with implementations for TMDB and IMDb. - Consolidate: Logic to score and select the best metadata match.
- Format: A powerful
PathFormatterthat supports placeholders, padding, and conditional blocks in naming templates. - Organize: A
FileOrganizerthat handles file operations (MOVE/HARDLINK) and directory creation.
- Parse: A robust
- Platform-Specific Code: Implemented platform-native functions for creating hardlinks on both Linux and Windows.
Documentation & Licensing
- Comprehensive README: Added a detailed
README.mdcovering features, setup, usage, and custom templates. - MIT License: The project is now licensed under the permissive MIT License.
Full Changelog: 0.0.0...0.1.0