⭑⭑ The {plex} binding manual applies equally to the {kodi} and {emby} and {jellyfin} bindings as well. ⭑⭑
Plex Naming Standard
Plex has strict standards for naming and organizing your media files. Please read How do I organize files for Plex? for details.The {plex} binding gives you the appropriate Plex path for movies and TV episodes:
Format: Select all
{ plex }
Code: Select all
Movies/Avatar (2009)/Avatar (2009)
TV Shows/Alias/Season 01/Alias - S01E01 - Truth Be Told
The {plex.id} binding additionally appends the numeric ID to the movie / series folder name to guarantee and speedup movie / series detection:
Format: Select all
{ plex.id }
Code: Select all
TV Shows/Alias {tmdb-2046}/Season 01/Alias - S01E01 - Truth Be Told
Movies/Avatar (2009) {tmdb-19995}/Avatar (2009)
You can reuse some path components and omit others. {plex.name} and {plex.tail} are particularly useful if you want to rename files in place or if you want the {plex} path but without the top-level Movies or TV Shows folder.
e.g. Avatar (2009)
Format: Select all
{ plex.name }
Format: Select all
{ plex.tail }
Format: Select all
{ plex.tail.root } / { plex.name }
e.g. Movies/Avatar (2009)/Avatar (2009) {imdb-tt0499549}
Format: Select all
{ plex.derive{ " {imdb-$imdbid}" } }
Format: Select all
{ plex.derive{ " {tmdb-$id}" } }
Format: Select all
{ plex.derive{ " by $director" }{ " [$vf, $vc, $ac]" }.name }
Advanced {plex} operators
~ ... remove the leading Movies and TV Shows category folder level% ... append values to the file name (but before the part index and subtitle language suffix)
* ... append values to the movie / series folder name
** ... append values to both the file name and the movie / series folder name
<< ... append values to the season folder name
>> ... inject subcategory folder level after the category folder level (but before the movie / series folder level)
^ ... replace subtitle language suffix
id ... add {id-123} tags to the movie folder name / series folder name
year ... {plex} path with Name (Year) pattern for series folder and series name
unix ... {plex} path without file name validation (i.e. allow : colon and ? question mark in file paths)
e.g. Avatar (2009)/Avatar (2009)
Format: Select all
{ ~plex }
Format: Select all
{ ~plex.id }
└ Multiple Editions
Format: Select all
{ ~plex.id ** { " {edition-$edition}" } }
Format: Select all
{ ~plex.id % { " {edition-$edition}" } % { " [$vf, $vc, $ac]" } }
Format: Select all
{ ~plex * " [M$id]" }
Format: Select all
{ ~plex ** " [M$id]" }
Format: Select all
{ ~plex << sy.bounds().joining('-', ' [', ']') }
Format: Select all
{ ~plex ^ { '.'+lang.ISO2 } }
Format: Select all
{ plex ^ null }
Format: Select all
{ plex >> az }
Format: Select all
{ (~plex >> az).ascii() }
Format: Select all
{ plex.id % { " {edition-$edition}" } >> { collection } }
Kodi Naming Standard
The {kodi} binding and the {plex} binding work exactly the same, with slightly different implementation details, e.g. SxE formatting and multi-episode formatting.e.g. TV Shows/Alias (2001) {tmdb=2046}/Season 1/Alias (2001) - 1x01 - Truth Be Told
Format: Select all
{ kodi.id }
Emby Naming Standard
The {emby} binding and the {plex} binding work exactly the same, with slightly different implementation details, e.g. series name and series folder formatting and [tmdbid=12345] ID tag formatting.e.g. TV Shows/Alias (2001) [tmdbid=2046]/Season 01/Alias (2001) - S01E01 - Truth Be Told
Format: Select all
{ emby.id }
Jellyfin Naming Standard
The {jellyfin} binding and the {plex} binding work exactly the same, with slightly different implementation details, e.g. series name and series folder formatting and [tmdbid-12345] ID tag formatting.e.g. TV Shows/Alias (2001) [tmdbid-2046]/Season 01/Alias (2001) - S01E01 - Truth Be Told
Format: Select all
{ jellyfin.id }
Custom Naming Scheme
If you need to make very specific customizations to the standard Plex naming scheme, you'll want you write your own format expression so you have full control over all the bits and pieces. You can get started by copying the following examples and modifying them to your liking.Movies
Format: Select all
Movies/{n} ({y})/{n} ({y}){' CD'+pi}{'.'+lang}
Format: Select all
TV Shows/{n}/{episode.special ? 'Specials' : 'Season '+s.pad(2)}/{n} - {episode.special ? 'S00E'+special.pad(2) : s00e00} - {t.replaceAll(/[`´‘’ʻ]/, /'/).replaceAll(/[!?.]+$/).replacePart(', Part $1')}{'.'+lang}
Format: Select all
Anime/{primaryTitle}/{primaryTitle} - {sxe} - {t.replaceAll(/[!?.]+$/).replaceAll(/[`´‘’ʻ]/, /'/).replacePart(', Part $1')}
Format: Select all
Music/{n}/{album+'/'}{pi.pad(2)+'. '}{artist} - {t}