Usage (Mac and Linux) - ladyisatis/OnePaceOrganizer GitHub Wiki

For the following, you will need Python 3.13+. Newer Macs should have this already, but you may need Homebrew to install Python. On Linux, refer to your OS's package manager system to install it.

Instructions

Run the following from the OnePaceOrganizer directory in Terminal:

Qt GUI: ./scripts/run.sh gui

Terminal UI: ./scripts/run.sh console

  1. Create a folder containing nothing except the .mkv (or .mp4) files. By default, it'll assume you've made a folder named in in the same directory as the .exe (if using Windows release) or one folder up from src.
  2. Extract the .zip and run the .exe on Windows, or via Python via the instructions above.
  3. There will be a wizard to guide you through the steps on the console version, or options to help guide you in the GUI version.

The first step in the console version will ask for the folder you made in step 1.

For output, this will assume a directory of, for example, /mnt/storage/Anime/One Pace, etc., however keep in mind this won't be the exact path needed. This is going to be the folder that Season 01, Season 02, ...and so on and all of the subsequent video files will be put into.

If you're using Jellyfin, nothing else is necessary, and the program is re-usable for newer One Pace releases, even if it's for a single video file.

If you're using Plex, there will be a two step process: one will move all of the video files to the output directory, so in case your Plex server is on a separate server/computer, this will give you time to transfer everything. Let Plex (incorrectly) index all of said files that get added to Plex. Once that's done, the second step will contact the Plex API to upload posters and edit show, arc/season, and episode metadata.

Headless Mode (No Interaction Mode)

With the environment variable OPO_INTERACTIVE=false you can run this without user input dialogs, especially if you have configuration already set. This way, you can run it automatically without needing to do anything. This requires environment variables to be set, especially if config.json doesn't exist, e.g.:

Environment Variable Description Default
OPO_LOG_LEVEL Log Level (TRACE, DEBUG, INFO, WARNING, ERROR) INFO
OPO_INTERACTIVE Interactive Mode (Show User Dialogs) true
OPO_LOAD_CONFIG Load config.json true
OPO_SAVE_CONFIG Save config.json true
OPO_INPUT_PATH Where to read unsorted .mkv/.mp4 files from
OPO_OUTPUT_PATH Where to put sorted .mkv/.mp4 files (and .nfo/posters if Jellyfin)
OPO_FILE_ACTION Action to take on unsorted file when processing (0 for Move, 1 for Copy, 2 for Symlink, 3 for Hardlink) 0
OPO_WORKERS Worker threads for I/O processses max(8, process_cpu_count)
OPO_PLEX_ENABLED Is Plex Enabled false (Jellyfin mode)
OPO_PLEX_SERVER Plex Server ID
OPO_PLEX_LIBRARY Plex Library Key
OPO_PLEX_SHOW Plex Show GUID
OPO_PLEX_USE_TOKEN Use Authorization Token instead of Username and Password false
OPO_PLEX_AUTH_TOKEN Plex Authorization Token
OPO_PLEX_USERNAME Plex Username
OPO_PLEX_PASSWORD Plex Password
OPO_PLEX_CODE Plex 2-Factor Auth Code (if set on account)
OPO_PLEX_REMEMBER Remember Plex Credentials false
OPO_PLEX_WAIT_SECS Wait number of seconds for file transfers 300

For example with Jellyfin:

$ export OPO_INTERACTIVE=false
$ ./scripts/run.sh console