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