Skip to content

Release 6.0

Choose a tag to compare

@Toomas633 Toomas633 released this 14 Mar 09:14
bb5e545

Major rewrite — packaged install, subtitle pipeline, test suite

Breaking changes

  • New install method: Plex Organizer is now installed via pipx instead of cloning the repo and running shell scripts. See the FAQ for migration steps from v5.0.
  • Reworked folder & index structure: TV indexes are now stored in the TV library root (tv/) instead of per-show directories. A migration tool is available via plex-organizer --manage → option 7.

New features

  • Subtitle fetching: Searches free online providers (OpenSubtitles, Podnapisi, Gestdown, TVsubtitles) for missing subtitles in configured languages and embeds them into the video container. Configured via [Subtitles] fetch_subtitles and subtitle_providers.
  • Subtitle syncing: Synchronizes embedded subtitle timing to the audio track using ffsubsync. Only text-based streams are synced; bitmap formats (PGS, VobSub) are left unchanged. Controlled by [Subtitles] sync_subtitles.
  • Analyze embedded subtitles toggle: New [Subtitles] analyze_embedded_subtitles option to skip or enable analysis of already-embedded subtitle streams for missing language/SDH tags.
  • Interactive management menu: plex-organizer --manage provides a menu-driven helper for viewing logs, migrating config, generating indexes, killing running instances, and more.
  • Quality detection fallback: When include_quality is enabled but no quality tag is found in the filename, the organizer probes the video stream height via ffprobe and maps it to a standard label (2160p, 1440p, 1080p, 720p, 480p).

Improvements

  • Full test suite: Comprehensive pytest + pytest-cov test coverage mirroring the source package layout.
  • CI pipeline: SonarCloud analysis, pylint, and pytest run automatically on push.
  • Packaged via pyproject.toml: Proper Python packaging with declared dependencies — no more requirements.txt or manual setup.
  • Restructured codebase: Source split into focused modules (pipeline.py, audio/, subs/, ffmpeg_utils.py, indexing.py, dataclass.py, paths.py) for maintainability.
  • Kill running instances: Detect and stop already-running organizer processes via the management menu.

Full Changelog: v5.0...v6.0