How to change the naming structure?

Welcome to PhotoStructure, @ainuke !

Know that PhotoStructure v1.1 currently supports custom directory names (the YYYY/MM bit), but doesn’t currently support custom file basenames (the PhotoDate-PhotoTime.ext bit).

This is an easy feature to add, though, so I just coded it up :tada: : it’ll be available in v2.1, which is currently in pre-alpha.

Until then, know that you can configure the directory format via the assetSubdirectoryDatestampFormat setting:

If you chose to copy assets into your library, they will be copied into <originals directory>/<result of this pattern>/<original imagename>.

  • See the originalsDir system setting for what your is
    (it defaults to your library root directory).
  • Please encode this path with forward-slashes, even if you’re on Windows.
  • If any patterns resolve to including forward-slashes, know that will be interpreted as subdirectories.
  • If you want to add a static path, escape the pathname with single quotes
    (like “‘photos’/y/MM/dd”).
  • This will always be interpreted as a relative path from your
    PhotoStructure library.
  • See https://moment.github.io/luxon/#/formatting?id=table-of-tokens.

The default value is "y/y-MM-dd". You’ll want to change this to "y/MM".

You do that by navigating to the environment variable section in your docker image setup, and PS_ASSET_SUBDIRECTORY_DATESTAMP_FORMAT (or assetSubdirectoryDatestampFormat, PhotoStructure looks in both places) to the new value "y/MM". You’ll need to restart the container for this to take affect, and know that PhotoStructure never renames or moves files that are already in your library directory. More details are here: PhotoStructure | Using environment variables with PhotoStructure

…and after v2.1 ships…

After v2.1 is available, you’ll want to override a brand-new setting, assetPathnameFormat, to "y/MM/ISO.EXT", which will render the PhotoDate-PhotoTime with the ISO 8601 standard.

Here’s the documentation for this new setting:

If you chose to copy assets into your library, they will be copied into
<originals directory>/<result of assetPathnameFormat>.

  • See the originalsDir system setting for what your is
    (it defaults to your library root directory).

  • Please encode this path with forward-slashes, even if you’re on Windows.

  • If any patterns resolve to including forward-slashes, know that will be
    interpreted as subdirectories.

  • If you want to add a static path, escape the pathname with single quotes
    (like “‘photos’/y/MM/dd”).

  • The result of this will always be interpreted as a relative path from your
    PhotoStructure originals directory.

  • Use token “BASE” as a shorthand for the original basename (“photo.jpg” for
    “/path/to/photo.jpg”).

  • Use token “NAME” as a shorthand for the original filename, without the
    file extension (“photo” for “/path/to/photo.jpg”).

  • Use token “PARENT” as a shorthand for the original file’s parent directory
    name (“to” for “/path/to/photo.jpg”).

  • Use token “GRANDPARENT” as a shorthand for the original file’s grandparent
    directory name (“path” for “/path/to/photo.jpg”).

  • Use token “EXT” for the filename’s extension without the “.” prefix (like
    “jpg” for “/path/to/photo.jpg”).

  • Use token “ISO” as a shorthand for "yyyy-MM-dd'T'HH:mm:ss.SSSZZ".

  • You can escape other static text by wrapping with single quotes (like the 'T' in the ISO format above).

  • For other tokens, see
    https://moment.github.io/luxon/#/formatting?id=table-of-tokens.