{
"info": {
"author": "William Minchin",
"author_email": "w_minchin@hotmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "photosorter\n===========\n\n.. image:: https://img.shields.io/pypi/v/minchin.scripts.photosorter.svg?style=flat\n :target: https://pypi.python.org/pypi/minchin.scripts.photosorter/\n.. image:: https://travis-ci.org/MinchinWeb/minchin.scripts.photosorter.svg?branch=master\n :target: https://travis-ci.org/dbader/photosorter)\n.. image:: https://coveralls.io/repos/MinchinWeb/minchin.scripts.photosorter/badge.svg?branch=master\n :target: https://coveralls.io/r/dbader/photosorter?branch=master\n\nA little Python script to keep my photos from Dropbox organized. Designed to be\nrun intermittently, but will run forever by default.\n\nIt watches a *source directory* for modifications and moves new image files to\na *target directory* depending on when the photo was taken, using EXIF data and\ncreation date as a fallback.\n\nDirectory and file names follow a simple naming convention\n(``YYYY-MM/YYY_MM_DD/YYYY-MM-DD hh:mm:ss.ext``) that keeps everything neatly\norganized. Duplicates are detected and ignored based on their SHA1 hash. Photos\ntaken in the same instant get de-duplicated by adding a suffix (``-1``, ``-2``,\netc) to their filenames.\n\nThe result looks somewhat like this:\n\n \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013-01\n \u00e2\u201d\u201a\u00c2\u00a0\u00c2\u00a0 \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013_01_05\n \u00e2\u201d\u201a \u00e2\u201d\u201a\u00c2\u00a0\u00c2\u00a0 \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013-01-05\\ 13.24.45.jpg\n \u00e2\u201d\u201a \u00e2\u201d\u201a\u00c2\u00a0\u00c2\u00a0 \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013-01-05\\ 14.25.54.jpg\n \u00e2\u201d\u201a \u00e2\u201d\u201a\u00c2\u00a0\u00c2\u00a0 \u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013-01-05\\ 21.28.48-1.jpg\n \u00e2\u201d\u201a\u00c2\u00a0\u00c2\u00a0 \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013_01_06\n \u00e2\u201d\u201a \u00e2\u201d\u201a\u00c2\u00a0\u00c2\u00a0 \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013-01-06\\ 16.05.02.jpg\n \u00e2\u201d\u201a \u00e2\u201d\u201a\u00c2\u00a0\u00c2\u00a0 \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013-01-06\\ 19.59.25.jpg\n \u00e2\u201d\u201a \u00e2\u201d\u201a\u00c2\u00a0\u00c2\u00a0 \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013-01-06\\ 20.40.28.jpg\n \u00e2\u201d\u201a \u00e2\u201d\u201a\u00c2\u00a0\u00c2\u00a0 \u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013-01-06\\ 21.14.38.jpg\n \u00e2\u201d\u201a\u00c2\u00a0\u00c2\u00a0 \u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013_01_08\n \u00e2\u201d\u201a \u00c2\u00a0\u00c2\u00a0 \u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013-01-08\\ 11.45.51.jpg\n \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013-02\n | \u00e2\u201d\u201d\u00e2\u201d\u20ac ...\n \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac ...\n \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2013-12\n \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2014-01\n \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2014-02\n \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac ...\n \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 2014-12\n \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac ...\n\nI use ``C:\\Users\\[windows username\\Dropbox\\Camera Uploads`` as the source\ndirectory and ``Z:\\Photos`` as the target. This allows me to move my photo from\nDropbox to a local drive, and merge them with the rest of my photo collection.\n\nInspired by\n\n- \n- \n- \n- \n\nSetup\n-----\n\nThe easiest way to install the script is through pip:\n\n > pip install minchin.scripts.photosorter\n\nRun\n---\n\nWatch `src_dir` and sort incoming photos into ``dest_dir``:\n\n > photosorter src_dir dest_dir\n\nWhen you're done with it, ``Ctrl + C`` will end the program.\n\nIf you also want to move the existing files in ``src_dir`` (which are, by\ndefault, ignored):\n\n > photosorter src_dir dest_dir --move-existing\n\nRun on System Startup\n---------------------\n\n.. note:: This is currently un-tested.\n\n1. Move `photosorter.conf.example` to `/etc/init` as `photosorter.conf`\n and edit it to suit your needs by replacing the user, source and target\n directories.\n2. Run `$ sudo start photosorter`.\n3. Check the logs at `/var/log/upstart/photosorter.log`.\n\nMeta\n----\n\nDistributed under the MIT license. See ``LICENSE.txt`` for more information.\n\nhttps://github.com/MinchinWeb/minchin.scripts.photosorter\n\nChanges\n------\n\n2.1.0 -- 2017-08-28\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n- also move MP4 files\n- add changelog to readme\n\n2.0.0 -- 2017-08-27\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n- move to ``minchin.scripts.photosorter`` namespace\n- do releases via ``minchin.releaser``\n- add option to move existing files",
"description_content_type": null,
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/MinchinWeb/minchin.scripts.photosorter",
"keywords": "",
"license": "MIT License",
"maintainer": "",
"maintainer_email": "",
"name": "minchin.scripts.photosorter",
"package_url": "https://pypi.org/project/minchin.scripts.photosorter/",
"platform": "any",
"project_url": "https://pypi.org/project/minchin.scripts.photosorter/",
"project_urls": {
"Homepage": "https://github.com/MinchinWeb/minchin.scripts.photosorter"
},
"release_url": "https://pypi.org/project/minchin.scripts.photosorter/2.1.0/",
"requires_dist": null,
"requires_python": "",
"summary": "A Python script to keep my photos from Dropbox organized.",
"version": "2.1.0"
},
"last_serial": 3129616,
"releases": {
"2.0.0": [
{
"comment_text": "",
"digests": {
"md5": "8f8f0ac50e9d04dd6718cdbc5ec0f85a",
"sha256": "6992a1f51ffc737eb47717a0f57532c8db3595b823d3ef6e6548c543db05fc1e"
},
"downloads": -1,
"filename": "minchin.scripts.photosorter-2.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8f8f0ac50e9d04dd6718cdbc5ec0f85a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 5858357,
"upload_time": "2017-08-28T02:19:37",
"url": "https://files.pythonhosted.org/packages/e7/89/14d804f269f594742aa4983ee954e75004b54ca46364607ac3e205e47631/minchin.scripts.photosorter-2.0.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "84dcf74c833cc5750411b81c0484b038",
"sha256": "7e6d1de992c46dd69a754042d43fc1b459b07c84d2e8c6065cc57548c8dc4365"
},
"downloads": -1,
"filename": "minchin.scripts.photosorter-2.0.0.tar.gz",
"has_sig": false,
"md5_digest": "84dcf74c833cc5750411b81c0484b038",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5857101,
"upload_time": "2017-08-28T02:18:53",
"url": "https://files.pythonhosted.org/packages/bb/a8/a7fd6afb6b868583d29dc0fa5ec365b45dd83d51b6d18f85c49c46b3e8f9/minchin.scripts.photosorter-2.0.0.tar.gz"
}
],
"2.1.0": [
{
"comment_text": "",
"digests": {
"md5": "f554af98e77cce7b31c824b1da848fce",
"sha256": "13440ac61d2a52618ffea1c39efc8f05fa08baf5dd479eb9bdc660256bb03e80"
},
"downloads": -1,
"filename": "minchin.scripts.photosorter-2.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f554af98e77cce7b31c824b1da848fce",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 5858566,
"upload_time": "2017-08-28T17:38:16",
"url": "https://files.pythonhosted.org/packages/16/1c/9f74c76d142ea6b3f605ae9484a8d47a3383e7afc01703a85dcce0c62f73/minchin.scripts.photosorter-2.1.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "021682c0698bf2ba42ee65feaf125e00",
"sha256": "b16f237945063c09c1ffc7d9416da59a78e1af6a71f0b95ad9525e2e5aab5d17"
},
"downloads": -1,
"filename": "minchin.scripts.photosorter-2.1.0.tar.gz",
"has_sig": false,
"md5_digest": "021682c0698bf2ba42ee65feaf125e00",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5857247,
"upload_time": "2017-08-28T17:37:36",
"url": "https://files.pythonhosted.org/packages/8b/18/26452697bf9c560d878b8a54fd7227ab62b7c5b6dd61ed9f8289ac3e6f3b/minchin.scripts.photosorter-2.1.0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "f554af98e77cce7b31c824b1da848fce",
"sha256": "13440ac61d2a52618ffea1c39efc8f05fa08baf5dd479eb9bdc660256bb03e80"
},
"downloads": -1,
"filename": "minchin.scripts.photosorter-2.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f554af98e77cce7b31c824b1da848fce",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 5858566,
"upload_time": "2017-08-28T17:38:16",
"url": "https://files.pythonhosted.org/packages/16/1c/9f74c76d142ea6b3f605ae9484a8d47a3383e7afc01703a85dcce0c62f73/minchin.scripts.photosorter-2.1.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "021682c0698bf2ba42ee65feaf125e00",
"sha256": "b16f237945063c09c1ffc7d9416da59a78e1af6a71f0b95ad9525e2e5aab5d17"
},
"downloads": -1,
"filename": "minchin.scripts.photosorter-2.1.0.tar.gz",
"has_sig": false,
"md5_digest": "021682c0698bf2ba42ee65feaf125e00",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5857247,
"upload_time": "2017-08-28T17:37:36",
"url": "https://files.pythonhosted.org/packages/8b/18/26452697bf9c560d878b8a54fd7227ab62b7c5b6dd61ed9f8289ac3e6f3b/minchin.scripts.photosorter-2.1.0.tar.gz"
}
]
}