imagesort

Organize image files by date taken


Keywords
media
License
MIT
Install
pip install imagesort==0.2.0

Documentation

https://travis-ci.org/leinz/imagesort.svg?branch=master

Organize image files by date taken

All tiff and jpg images under the given source directory are placed in the destination directory under subdirectories with names corresponding to when they are taken. Files with no or invalid exif metadata are put in the unknown directory.

The destination directory have the following structure after processing:

2013/
    2013_12_20/
        1.jpg
2014/
    2014_03_06/
        2.jpg
        3.jpg
    2014_07_01/
        4.jpg
unknown/
    5.jpg

The original filenames are preserved. If a destination filepath already exist, there are two possible outcomes:

  • If the old filepath's content is identical to the new one, the program does nothing and continues to the next image.
  • If the contents of the old and new files are different, it will append an integer until the content of an existing file matches or the path does not already exist. This means that if there are three source files named 1.jpg with identical date metadata but different contents, the final names will be 1.jpg, 1-1.jpg and 1-2.jpg.

Installation

Install with one of the following commands:

$ easy_install imagesort

or alternatively if you have pip installed:

$ pip install imagesort

Usage

Type imagesort -h for a list of available options.

Examples

Copy images from inputdir to outputdir:

$ imagesort copy inputdir outputdir

Use the dry-run flag to see which actions will be performed without actually doing anything:

$ imagesort --dry-run copy inputdir outputdir

Replace copy with move or hardlink to move or hardlink files instead of copying them.

Note

Hardlink operation (os.link) is not available on Windows before Python version 3.2.

Development

Testing

Running the tests during development requires pytest. Install dependencies with

$ pip install -r requirements.txt

and then run tests with

$ py.test

Alternatively, if you have tox installed, just run tests by running:

$ tox