Skip to main content

A Python script to keep my photos from Dropbox organized.

Project description

photosorter
===========

.. image:: https://img.shields.io/pypi/v/minchin.scripts.photosorter.svg?style=flat
:target: https://pypi.python.org/pypi/minchin.scripts.photosorter/
.. image:: https://travis-ci.org/MinchinWeb/minchin.scripts.photosorter.svg?branch=master
:target: https://travis-ci.org/dbader/photosorter)
.. image:: https://coveralls.io/repos/MinchinWeb/minchin.scripts.photosorter/badge.svg?branch=master
:target: https://coveralls.io/r/dbader/photosorter?branch=master

A little Python script to keep my photos from Dropbox organized. Designed to be
run intermittently, but will run forever by default.

It watches a *source directory* for modifications and moves new image files to
a *target directory* depending on when the photo was taken, using EXIF data and
creation date as a fallback.

Directory and file names follow a simple naming convention
(``YYYY-MM/YYY_MM_DD/YYYY-MM-DD hh:mm:ss.ext``) that keeps everything neatly
organized. Duplicates are detected and ignored based on their SHA1 hash. Photos
taken in the same instant get de-duplicated by adding a suffix (``-1``, ``-2``,
etc) to their filenames.

The result looks somewhat like this:

├── 2013-01
│   ├── 2013_01_05
│ │   ├── 2013-01-05\ 13.24.45.jpg
│ │   ├── 2013-01-05\ 14.25.54.jpg
│ │   └── 2013-01-05\ 21.28.48-1.jpg
│   ├── 2013_01_06
│ │   ├── 2013-01-06\ 16.05.02.jpg
│ │   ├── 2013-01-06\ 19.59.25.jpg
│ │   ├── 2013-01-06\ 20.40.28.jpg
│ │   └── 2013-01-06\ 21.14.38.jpg
│   └── 2013_01_08
│    └── 2013-01-08\ 11.45.51.jpg
├── 2013-02
| └─ ...
├── ...
├── 2013-12
├── 2014-01
├── 2014-02
├── ...
├── 2014-12
├── ...

I use ``C:\Users\[windows username\Dropbox\Camera Uploads`` as the source
directory and ``Z:\Photos`` as the target. This allows me to move my photo from
Dropbox to a local drive, and merge them with the rest of my photo collection.

Inspired by

- <http://simplicitybliss.com/exporting-your-iphoto-library-to-dropbox/>
- <https://github.com/wting/exifrenamer>
- <http://chambersdaily.com/learning-to-love-photo-management/>
- <https://dbader.org/blog/how-to-store-photos-in-the-cloud-and-avoid-vendor-lock-in>

Setup
-----

The easiest way to install the script is through pip:

> pip install minchin.scripts.photosorter

Run
---

Watch `src_dir` and sort incoming photos into ``dest_dir``:

> photosorter src_dir dest_dir

When you're done with it, ``Ctrl + C`` will end the program.

If you also want to move the existing files in ``src_dir`` (which are, by
default, ignored):

> photosorter src_dir dest_dir --move-existing

Run on System Startup
---------------------

.. note:: This is currently un-tested.

1. Move `photosorter.conf.example` to `/etc/init` as `photosorter.conf`
and edit it to suit your needs by replacing the user, source and target
directories.
2. Run `$ sudo start photosorter`.
3. Check the logs at `/var/log/upstart/photosorter.log`.

Meta
----

Distributed under the MIT license. See ``LICENSE.txt`` for more information.

https://github.com/MinchinWeb/minchin.scripts.photosorter

Changes
------

2.1.0 -- 2017-08-28
"""""""""""""""""""

- also move MP4 files
- add changelog to readme

2.0.0 -- 2017-08-27
"""""""""""""""""""

- move to ``minchin.scripts.photosorter`` namespace
- do releases via ``minchin.releaser``
- add option to move existing files

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

minchin.scripts.photosorter-2.1.0.tar.gz (5.9 MB view details)

Uploaded Source

Built Distribution

File details

Details for the file minchin.scripts.photosorter-2.1.0.tar.gz.

File metadata

File hashes

Hashes for minchin.scripts.photosorter-2.1.0.tar.gz
Algorithm Hash digest
SHA256 b16f237945063c09c1ffc7d9416da59a78e1af6a71f0b95ad9525e2e5aab5d17
MD5 021682c0698bf2ba42ee65feaf125e00
BLAKE2b-256 8b1826452697bf9c560d878b8a54fd7227ab62b7c5b6dd61ed9f8289ac3e6f3b

See more details on using hashes here.

File details

Details for the file minchin.scripts.photosorter-2.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for minchin.scripts.photosorter-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 13440ac61d2a52618ffea1c39efc8f05fa08baf5dd479eb9bdc660256bb03e80
MD5 f554af98e77cce7b31c824b1da848fce
BLAKE2b-256 161c9f74c76d142ea6b3f605ae9484a8d47a3383e7afc01703a85dcce0c62f73

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page