Skip to content

DBS06/OlyExifSort

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OlyExifSort

This Script detects and sorts photos which where taken with any Bracketing-Mode with an Olympus/OM-System camera. This script is intended to simplify the sort-out process, after you come back from a photo session. See "Usage/Recommended Workflow" for more information

Usage/Recommended Workflow

I use the script to identify and separate the photo-sequences which where taken with one of the Bracketing-Modes (i.e. HDR- and Focus-Bracketing-Mode). I usually copy the photos from a photo session in one folder and name it i.e. "Vienna", then I start the script. After this, I have the "normal" taken photos and the photos taken with one of the Bracketing-Modes separated.

In short I recommend the following workflow:

  • Create a folder and paste your photos, which you want to sort, inside of this folder.
    Note: Use a folder name which should be final, because the subfolders will be named like that (see "What does this script do" for more information)!
  • Call script with:
    python .\OlyExifSort.py -p "C:\path\to\your\folder"
    or use the GUI
    python .\OlyExifSort_GUI.py"
    or use the corresponding Windows-Executables.
  • GUI (preferred usage):
    • Select the folder where you want to sort the photos and click on Search Sequences
    • After the search is complete you can see inside the LOG-Output and verify the result.
    • If everything seems ok, click on Move Sequences and the found sequences will be moved
  • After the script is finished, start with sorting out your photos.
    Attention: I recommend not to delete or sort out any of the photos before you start the script, especially the photos which where taken with on of the Bracketing-Modes! If you have already done this, the script is useless for you, because you already sorted out the photos already manually. At least the Sequences should not be splitted...

Note: Use the script at your own risk! The script does not delete anything, therefore it shouldn't be risky at all!

What does this script do

This script extracts with the help of exiftool, the EXIF-Data. In specific it looks only at the MakerNotes:DriveMode EXIF-Data and groups the photos based on the Bracketing-Mode.
Note: Depending on the number of photos, pc performance and storage rw speed this takes some time! Even up to a couple of minutes!
After the search is completed, the scripts starts to move the photos to specific folders. You can see an example here:

Example:

Before:

All photos, which should to be sorted, are in the same folder. It doesn't matter if there are photos, which do not belong to a Bracketing-Sequence.

TestPics:
    IMGA2445.ORF
    IMGA2446.ORF
    IMGA2447.ORF
    IMGA2448.JPG
    IMGA2448.ORF
    IMGA2449.JPG
    IMGA2449.ORF
    IMGA2450.JPG
    IMGA2450.ORF
    IMGA2451.JPG
    IMGA2451.ORF
    IMGA2452.JPG
    IMGA2452.ORF
    IMGA2453.JPG
    IMGA2453.ORF
    IMGA2454.JPG
    IMGA2454.ORF
    IMGA2455.JPG
    IMGA2455.ORF
    IMGA2456.JPG
    IMGA2457.JPG
    IMGA2457.ORF
    IMGA2458.JPG
    IMGA2458.ORF
    [...]

After

The photos which do not belong to a sequence are still in the main folder.

  • All photos which where taken with FOC-Bracketing are in [main-folder-name]_FOCs.
  • All photos which where taken with AEA-Bracketing are in [main-folder-name]_HDRs.
  • All photos which where taken with AE-Bracketing are in [main-folder-name]_AEs.
  • All photos which where taken with WB-Bracketing are in [main-folder-name]_WBs.
  • All photos which where taken with FL-Bracketing are in [main-folder-name]_FLs.
  • All photos which where taken with MF-Bracketing are in [main-folder-name]_MFs.
  • All photos which where taken with ISO-Bracketing are in [main-folder-name]_ISOs.

There you can see preview-photos which are named like [...]_FOC_XXX.xxx or [...]_HDR_XXX.xxx and so on.
In case of FOC-Bracketing, this photos are either the camera internal stacked photos, or if this does not exist, the first photo of a sequence. This depends on your camera settings, or the sequence was interrupted or unsuccessful.
In case of AEA-, AE-, WB-, FL-, MF-, ISO-Bracketing-Sequences it is always the first photo of a sequence.
This preview-photos makes it easier and faster to look through the sequences and to identify which folder has which sequence.
In the folders [main-folder-name]_FOC_XXX or [main-folder-name]_HDR_XXX and etc. you will find the single photos of a sequence.

Note: If there are already sorted photos in the main folder, the script starts the numbering with the highest free number.

TestPics
│   IMGA2445.ORF
│   IMGA2446.ORF
│   IMGA2447.ORF
│   IMGA2600.ORF
│   IMGA2601.ORF
│   IMGA2602.ORF
│   IMGA2603.ORF
│   [...]
│   IMGP7717.ORF
│   IMGP7718.ORF
│
├───TestPics_FOCs
│   │   IMGA2456_FOC_001.JPG
│   │   IMGA2472_FOC_002.JPG
│   │   IMGA2488_FOC_003.JPG
│   │   [...]
│   │   IMGP7697_FOC_063.JPG
│   │
│   ├───TestPics_FOC_001
│   │       IMGA2448.JPG
│   │       IMGA2448.ORF
│   │       IMGA2449.JPG
│   │       IMGA2449.ORF
│   │       IMGA2450.JPG
│   │       IMGA2450.ORF
│   │       IMGA2451.JPG
│   │       IMGA2451.ORF
│   │       IMGA2452.JPG
│   │       IMGA2452.ORF
│   │       IMGA2453.JPG
│   │       IMGA2453.ORF
│   │       IMGA2454.JPG
│   │       IMGA2454.ORF
│   │       IMGA2455.JPG
│   │       IMGA2455.ORF
│   │       IMGA2456.JPG
│   │
│   ├───TestPics_FOC_002
│   │       IMGA2457.JPG
│   │       IMGA2457.ORF
│   │       IMGA2458.JPG
│   │       IMGA2458.ORF
│   │       IMGA2459.JPG
│   │       IMGA2459.ORF
│   │       IMGA2460.JPG
│   │       IMGA2460.ORF
│   │       IMGA2461.JPG
│   │       IMGA2461.ORF
│   │       IMGA2462.JPG
│   │       IMGA2462.ORF
│   │       IMGA2463.JPG
│   │       IMGA2463.ORF
│   │       IMGA2464.JPG
│   │       IMGA2464.ORF
│   │       IMGA2465.JPG
│   │       IMGA2465.ORF
│   │       IMGA2466.JPG
│   │       IMGA2466.ORF
│   │       IMGA2467.JPG
│   │       IMGA2467.ORF
│   │       IMGA2468.JPG
│   │       IMGA2468.ORF
│   │       IMGA2469.JPG
│   │       IMGA2469.ORF
│   │       IMGA2470.JPG
│   │       IMGA2470.ORF
│   │       IMGA2471.JPG
│   │       IMGA2471.ORF
│   │       IMGA2472.JPG
│   │
│   ├───TestPics_FOC_003
│   │       IMGA2473.JPG
│   │       IMGA2473.ORF
│   │       IMGA2474.JPG
│   │       IMGA2474.ORF
│   │       IMGA2475.JPG
│   │       IMGA2475.ORF
│   │       IMGA2476.JPG
│   │       IMGA2476.ORF
│   │       IMGA2477.JPG
│   │       IMGA2477.ORF
│   │       IMGA2478.JPG
│   │       IMGA2478.ORF
│   │       IMGA2479.JPG
│   │       IMGA2479.ORF
│   │       IMGA2480.JPG
│   │       IMGA2480.ORF
│   │       IMGA2481.JPG
│   │       IMGA2481.ORF
│   │       IMGA2482.JPG
│   │       IMGA2482.ORF
│   │       IMGA2483.JPG
│   │       IMGA2483.ORF
│   │       IMGA2484.JPG
│   │       IMGA2484.ORF
│   │       IMGA2485.JPG
│   │       IMGA2485.ORF
│   │       IMGA2486.JPG
│   │       IMGA2486.ORF
│   │       IMGA2487.JPG
│   │       IMGA2487.ORF
│   │       IMGA2488.JPG
│   │
[...]
│   └───TestPics_FOC_063
│           IMGP7687.JPG
│           IMGP7687.ORF
│           IMGP7688.JPG
│           IMGP7688.ORF
│           IMGP7689.JPG
│           IMGP7689.ORF
│           IMGP7690.JPG
│           IMGP7690.ORF
│           IMGP7691.JPG
│           IMGP7691.ORF
│           IMGP7692.JPG
│           IMGP7692.ORF
│           IMGP7693.JPG
│           IMGP7693.ORF
│           IMGP7694.JPG
│           IMGP7694.ORF
│           IMGP7695.JPG
│           IMGP7695.ORF
│           IMGP7696.JPG
│           IMGP7696.ORF
│           IMGP7697.JPG
│
└───TestPics_HDRs
    │   IMGP7676_HDR_001.ORF
    │   IMGP7679_HDR_002.ORF
    │
    ├───TestPics_HDR_001
    │       IMGP7676.ORF
    │       IMGP7677.ORF
    │       IMGP7678.ORF
    │
    └───TestPics_HDR_002
            IMGP7679.ORF
            IMGP7680.ORF
            IMGP7681.ORF
            IMGP7682.ORF
            IMGP7683.ORF
            IMGP7684.ORF
            IMGP7685.ORF

Installation

Via Script (Windows, Mac, Linux):

Note: I tested it only for Windows, but it should work for other operation systems as well.

  • Install Python 3.x (see Python https://www.python.org/downloads/)
  • Install wxPython (only needed for GUI) (taken from https://www.wxpython.org/pages/downloads/):
    pip install -U --pre -f https://wxpython.org/Phoenix/snapshot-builds/ wxPython
    pip install -U wxPython
  • Install ExifTool:
    • I recommend using the exiftool version, which I deliver within the package, if this is not whished or you are using a Mac download exiftool from https://exiftool.org/. Nevertheless the folder of the exiftool.exe or binary is (within the script it is under ./bin/exiftool.exe), must be added to System-Path.
  • Install PyExifTool (https://pypi.org/project/PyExifTool/):
    python -m pip install -U pyexiftool
  • clone or download repository.

Via Executable (Windows):

  • download OlyExifSort_Win.zip and extract it anywhere.
  • I recommend using the exiftool version, which I deliver within the package, if this is not whished download exiftool from https://exiftool.org/. Nevertheless the folder of the exiftool.exe, must be added to System-Path.

Via Executable (Mac)

  • I don't have access to a Mac, therefore I am not able to create an executable for Mac. But if you want to have an executable for Mac please follow this steps (taken from https://datatofish.com/executable-pyinstaller/):
  • pip install pyinstaller
    • For script with GUI:
      pyinstaller --noconsole --onefile OlyExifSort_GUI.py
    • For the shell script only:
      pyinstaller --onefile OlyExifSort.py

Tested Cameras

  • Olympus OM-D E-M1 Mark II
  • Olympus OM-D E-M1 Mark III
  • OM-System OM1

I am not able to test this with different Olympus/OM-System cameras, because I don't have access to another model. But I am pretty sure this script works for nearly all of the Olympus/OM-System cameras

Nice 2 Have

  • sort Interval Sh./Time Lapse Sequences (I wasn't able to differentiate the time-lapse sequences from normal taken photos via EXIF-Infos)

Support

If you want to support me, I would really happy if you would add me on 500px and/or like my photos 😊