Skip to content

Latest commit

 

History

History
91 lines (71 loc) · 4.47 KB

TEMPLATING.md

File metadata and controls

91 lines (71 loc) · 4.47 KB

Filename Templating

The Export and Scan tabs name files with Jinja2 templates.

Export Sidebar

Available Variables

Variable Description Example Output
{{ original_name }} Source filename without extension. DSC0123
{{ colorspace }} Export color space. sRGB, Adobe RGB
{{ format }} Export file format (JPEG, TIFF, …). JPEG, TIFF
{{ paper_ratio }} Selected aspect ratio. 3:2, Original
{{ size }} Print size in cm. Empty with "Original Resolution". 30cm
{{ dpi }} Export DPI. Empty with "Original Resolution". 300dpi
{{ target_px }} Long-edge size in pixels. Empty unless Pixels mode. 2048px
{{ border }} "border" if the width is > 0, else empty. border
{{ date }} Current date, YYYYMMDD. 20260125
{{ roll }} Scanlight capture roll name (Metadata → Roll), or parsed from a {roll}_Frame{NNN} stem. Not the Roll Analysis card's roll name. Roll001
{{ frame }} Capture frame number (integer), or parsed from the stem. Unset (none) if unknown. Zero-pad with {{ frame|pad(3) }}. "%03d" % frame fails on an unset frame, and the whole pattern falls back to original_name. 12
{{ frame_padded }} Zero-padded frame (012), or empty if unknown. Same as {{ frame|pad(3) }}. 012
{{ camera }} Camera make + model. Mamiya 7
{{ camera_make }} / {{ camera_model }} Camera make / model. Mamiya, 7
{{ lens }} Lens model, or make if the model is empty. 80mm f/4
{{ lens_make }} / {{ lens_model }} Lens make / model.
{{ focal_length }} Focal length in mm. 80
{{ film }} Film stock name. Ektacolor Pro 400
{{ film_iso }} Film ISO. 400
{{ film_manufacturer }} Film manufacturer. Kodak
{{ film_color_type }} Film color type. Color negative
{{ film_format }} Film format (35mm, 120, …). Not the export {{ format }}. 35mm
{{ developer }} Developer. D-76
{{ dilution }} Developer dilution. 1+1
{{ push_pull }} Push/pull as an integer (−3…+3, 0 = Normal). 1
{{ development_time }} Development time, mm-ss. 9-30
{{ development_temperature }} Development temperature in °C. 20
{{ scanning }} Scanning method note. DSLR copy-stand
{{ exposure }} Exposure override text from Metadata. 1/125s f/2.8
{{ capture_date }} Original capture date, YYYYMMDD. A partial date pads to the first day. Empty if unset. 19980714
{{ capture_year }} Original capture year. Empty if unset. 1998

Gear and process values come from the Metadata panel, or from each file's saved metadata in a batch. NegPy strips path-unsafe characters from them.

Examples

Pattern Result
{{ original_name }} DSC0123.jpg
{{ date }}_{{ original_name }}_{{ colorspace }} 20260125_DSC0123_Adobe_RGB.jpg
{{ original_name }}_{{ size }}_{{ dpi }}_{{ border }} DSC0123_30cm_300dpi_border.jpg
PRINT_{{ original_name }}_{{ paper_ratio }} PRINT_DSC0123_3:2.jpg
{{ roll }}_Frame{{ frame|pad(3) }}_{{ film }}_{{ film_iso }} Roll001_Frame012_Portra_400_400.jpg
{{ film }}_{{ camera }}_{{ original_name }} Portra_400_Mamiya_7_DSC0123.jpg

Scan Sidebar

Available Variables

Variable Description Example Output
{{ date }} Current date, YYYYMMDD. 20260125
{{ seq }} Sequence number (integer). 1, 2, …

Zero-pad it with Python's % operator: {{ "%03d" % seq }}.

Examples

Pattern Result
{{ date }}_{{ "%03d" % seq }} 20260125_001.tif
roll_{{ date }}_{{ seq }} roll_20260125_1.tif
plustek_{{ date }}_{{ "%04d" % seq }} plustek_20260125_0001.tif

Auto-increment

The sequence starts at 1 for each scan session and increments until the filename is free, so NegPy never overwrites a file.

Filename cleanup

Both tabs clean up separators:

  • Spaces, dashes and underscores between variables collapse into a single underscore (_).
  • Leading and trailing separators are removed.
  • The separators around an empty variable ({{ border }} with no border set) are removed.
  • {{ original_name }} (export only) goes in verbatim, separators included.

Example pattern: {{ original_name }} - {{ border }} - final

  • With border: DSC0123_border_final.jpg
  • No border: DSC0123_final.jpg