Skip to content

Dedupe and sort photo and video files based on the date they were created.

License

Notifications You must be signed in to change notification settings

louislang/sortmedia

Repository files navigation

sortmedia

Actions Status MIT License Badge Coverage Status GitHub issues

Dedupe and sort images and video files based on their creation date.

Image of Sorted Files

  • Handles images and video files.
  • Support for heic files (common iOS format).
  • Supports excluding directories.
  • Removes duplicates based on file hash.
  • Organizes files into year/month/day/files.ext.

Installation

pip install sortmedia

Command Line Usage

Sorting a directory of media files, move to destination directory.

Basic usage - processing a directory of media files foo and moving them to the destination directory bar.

sortmedia foo bar

Sorting a directory of media files, copy to destination directory.

Instead of moving files (the default), copy the files leaving the source directory foo intact.

sortmedia -c foo bar

or

sortmedia --copy foo bar

Exclude directory

You can list a set of directories that we should completely ignore. Assuming the following directory structure:

foo/
  ignoreMe/
  ignoreMeToo/
  img1.jpg
  img2.png
  ...

sortmedia --exclude=foo/ignoreMe,foo/ignoreMeToo foo/ bar/

Skip processing for a specified directory - but still move/copy.

If you have directories that are already sorted, that you'd like to skip processing but still move or copy you can mark them as "no process" directories. Assuming the following directory structure:

foo/
  alreadySorted/
  img1.jpg
  img2.png
  ...

sortmedia --noprocess=foo/alreadySorted/ foo/ bar/

This will result in alreadySorted/ being moved to bar/ without analyzing the files under that directory.

Programmatic Usage

The primary interface into sortmedia is the SortMedia class. This class can be instantiated and used as follows:

from sortmedia.sort import SortMedia
sort = SortMedia()
sort.process('src/', 'dst/')

This will process media in src/ and move the files to dst/.

Copying instead of moving

You can set the sorter to copy rather than move (which is the default):

from sortmedia.sort import SortMedia
sort = SortMedia(copy=True)

Specifying directories to ignore

Lets say you have a directory of photos, photos/, with two directories you want to completely ignore: ignoreMe and ignoreMeToo.

from sortmedia.sort import SortMedia
sort = SortMedia(excludes=['photos/ignoreMe', 'photos/ignoreMeToo'])

Move/copy but do not process directory

In some instances you might have a directory of media (e.g. photos/birthday-photos/) that you want to move or copy to the destination directory without processing the files in the directory. You can achieve this by passing a list of directories in the noprocess parameter.

from sortmedia.sort import SortMedia
sort = SortMedia(noprocess=['photos/birthday-photos/`])

About

Dedupe and sort photo and video files based on the date they were created.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages