Name | pixe JSON |
Version |
0.7.3
JSON |
| download |
home_page | None |
Summary | A digital helper to keep your files neat and tidy |
upload_time | 2024-05-30 12:06:10 |
maintainer | None |
docs_url | None |
author | Chris Wells |
requires_python | <4.0,>=3.11 |
license | Apache-2.0 |
keywords |
archive
photos
organize
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# pixe
[![flake8](https://github.com/ithuna/pixe/actions/workflows/flake8.yml/badge.svg)](https://github.com/ithuna/pixe/actions/workflows/flake8.yml) [![pytest](https://github.com/ithuna/pixe/actions/workflows/pytest.yml/badge.svg)](https://github.com/ithuna/pixe/actions/workflows/pytest.yml) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
A digital helper to keep your files neat and tidy.
In its most basic invocation: `pixe <directory with files>` `pixe` will copy all JPG files from a source directory into a new set of subdirectories based on capture date. These files will also be renamed based on said capture date and a calculated SHA1 hash.
### subdirectories
Subdirectories will be created, as needed, in the destination folder to match the creation date of the files being processed and will take the following form: `YYYY/M`
### renamed files
Each file (whether moved or copied) will have a new name applied to it based on the following pattern:
`YYYYMMDD_hhmmss_<SHA1SUM>.jpg`
The datetime info is taken from the image capture datetime. The SHA1SUM is calculated based on the image data only (does not include image metadata).
### example
Given a directory of images, `dirA` which contains a few image files:
```
dirA
├── IMG_0001.jpg
├── IMG_0002.jpg
└── IMG_1234.jpg
```
Running `pixe /path/to/dirA` from within a second directory, `dirB` would result in the following directory structure:
```
dirB
├── 2021
│ └── 12
│ └── 20211225_062223_7d97e98f8af710c7e7fe703abc8f639e0ee507c4.jpg
└── 2022
├── 2
│ └── 20220202_123101_447d306060631570b7713ea48e74103c68eab0a3.jpg
└── 3
└── 20220316_232122_321c7d6f5be8739a8974e4c3512e3226eb6704a7.jpg
```
## Installation
`$ pip install pixe`
## Usage
```
Usage: pixe [OPTIONS] SRC
Options:
-d, --dest TEXT desired destination
-r, --recurse recurse into sub-directories (default: off)
--parallel / --serial process files in parallel (default: --parallel)
--move, --mv / --copy, --cp move files into DEST rather than copying
(default: --copy)
--owner TEXT add camera owner to exif tags
--copyright TEXT add copyright string to exif tags
--help Show this message and exit.
```
### Options
#### -d, --dest TEXT
The base directory of where you want the processed files to end up. If this option is not specified,
the current working directory will be used.
#### -r, --recurse
`pixe` will recurse into any subdirectories it finds beneath SRC. The default is to not recurse.
#### --parallel / --serial
Should `pixe` process multiple files at once, in parallel using multiprocessing using all
available cores. If `--serial` is chosen one file will be processed at a time. The default is
to process files in parallel if there is more than one file specified for processing.
#### --move, --mv / --copy, --cp
By default, `pixe` will copy files into DEST and leave the source files untouched. This can be
overridden by specifying `--move`.
#### --owner
A string which will be inserted into the CameraOwnerName EXIF tag [0xa430]
#### --copyright
A string which will be inserted into the Copyright EXIF tag [0x8298]
Raw data
{
"_id": null,
"home_page": null,
"name": "pixe",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.11",
"maintainer_email": null,
"keywords": "archive, photos, organize",
"author": "Chris Wells",
"author_email": "ping@cwlls.dev",
"download_url": "https://files.pythonhosted.org/packages/7c/03/6b46bda818a1c6bb956a48531b9d06ce31abafa6cbb3779dc94a2e3ab160/pixe-0.7.3.tar.gz",
"platform": null,
"description": "# pixe\n[![flake8](https://github.com/ithuna/pixe/actions/workflows/flake8.yml/badge.svg)](https://github.com/ithuna/pixe/actions/workflows/flake8.yml) [![pytest](https://github.com/ithuna/pixe/actions/workflows/pytest.yml/badge.svg)](https://github.com/ithuna/pixe/actions/workflows/pytest.yml) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\nA digital helper to keep your files neat and tidy.\n\nIn its most basic invocation: `pixe <directory with files>` `pixe` will copy all JPG files from a source directory into a new set of subdirectories based on capture date. These files will also be renamed based on said capture date and a calculated SHA1 hash.\n\n### subdirectories\n\nSubdirectories will be created, as needed, in the destination folder to match the creation date of the files being processed and will take the following form: `YYYY/M`\n\n### renamed files\nEach file (whether moved or copied) will have a new name applied to it based on the following pattern:\n`YYYYMMDD_hhmmss_<SHA1SUM>.jpg`\n\nThe datetime info is taken from the image capture datetime. The SHA1SUM is calculated based on the image data only (does not include image metadata).\n\n### example\n\nGiven a directory of images, `dirA` which contains a few image files:\n```\ndirA\n\u251c\u2500\u2500 IMG_0001.jpg\n\u251c\u2500\u2500 IMG_0002.jpg\n\u2514\u2500\u2500 IMG_1234.jpg\n```\n\nRunning `pixe /path/to/dirA` from within a second directory, `dirB` would result in the following directory structure:\n\n```\ndirB\n\u251c\u2500\u2500 2021\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 12\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 20211225_062223_7d97e98f8af710c7e7fe703abc8f639e0ee507c4.jpg\n\u2514\u2500\u2500 2022\n \u251c\u2500\u2500 2\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 20220202_123101_447d306060631570b7713ea48e74103c68eab0a3.jpg\n \u2514\u2500\u2500 3\n \u2514\u2500\u2500 20220316_232122_321c7d6f5be8739a8974e4c3512e3226eb6704a7.jpg\n```\n\n## Installation\n`$ pip install pixe`\n\n## Usage\n```\nUsage: pixe [OPTIONS] SRC\n\nOptions:\n -d, --dest TEXT desired destination\n -r, --recurse recurse into sub-directories (default: off)\n --parallel / --serial process files in parallel (default: --parallel)\n --move, --mv / --copy, --cp move files into DEST rather than copying\n (default: --copy)\n --owner TEXT add camera owner to exif tags\n --copyright TEXT add copyright string to exif tags\n --help Show this message and exit.\n```\n\n### Options\n\n#### -d, --dest TEXT\nThe base directory of where you want the processed files to end up. If this option is not specified, \nthe current working directory will be used.\n\n#### -r, --recurse\n`pixe` will recurse into any subdirectories it finds beneath SRC. The default is to not recurse.\n\n#### --parallel / --serial\nShould `pixe` process multiple files at once, in parallel using multiprocessing using all \navailable cores. If `--serial` is chosen one file will be processed at a time. The default is\nto process files in parallel if there is more than one file specified for processing.\n\n#### --move, --mv / --copy, --cp\nBy default, `pixe` will copy files into DEST and leave the source files untouched. This can be\noverridden by specifying `--move`.\n\n#### --owner\nA string which will be inserted into the CameraOwnerName EXIF tag [0xa430]\n\n#### --copyright\nA string which will be inserted into the Copyright EXIF tag [0x8298]\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A digital helper to keep your files neat and tidy",
"version": "0.7.3",
"project_urls": {
"homepage": "https://cwlls.dev/pixe",
"repository": "https://github.com/cwlls/pixe.git"
},
"split_keywords": [
"archive",
" photos",
" organize"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "85c93d37a32677b13d1ca4d9f74a7c9f1322b2d576181825df2acacd2393796e",
"md5": "75b1aded6852b92cecd9d1c8b3a4134a",
"sha256": "266dd9ead60c358660cd5cea0dda49cbbd55ccba3daf7fff6e75d966997853ef"
},
"downloads": -1,
"filename": "pixe-0.7.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "75b1aded6852b92cecd9d1c8b3a4134a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.11",
"size": 8798,
"upload_time": "2024-05-30T12:06:09",
"upload_time_iso_8601": "2024-05-30T12:06:09.000194Z",
"url": "https://files.pythonhosted.org/packages/85/c9/3d37a32677b13d1ca4d9f74a7c9f1322b2d576181825df2acacd2393796e/pixe-0.7.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7c036b46bda818a1c6bb956a48531b9d06ce31abafa6cbb3779dc94a2e3ab160",
"md5": "88e2d5ba55fa25621f6aac144de065b3",
"sha256": "edd01d5559e557ab0748db1de64aa349e0e2d4e7c604dc94a9d80a204f3992ab"
},
"downloads": -1,
"filename": "pixe-0.7.3.tar.gz",
"has_sig": false,
"md5_digest": "88e2d5ba55fa25621f6aac144de065b3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.11",
"size": 8175,
"upload_time": "2024-05-30T12:06:10",
"upload_time_iso_8601": "2024-05-30T12:06:10.311461Z",
"url": "https://files.pythonhosted.org/packages/7c/03/6b46bda818a1c6bb956a48531b9d06ce31abafa6cbb3779dc94a2e3ab160/pixe-0.7.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-30 12:06:10",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "cwlls",
"github_project": "pixe",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pixe"
}