# Photo Importer

[](https://pypi.org/project/photo-importer)
[](https://pepy.tech/project/photo-importer)
[](https://github.com/psf/black)
Command line tools for photo importing/renaming/rotating
### Features:
* Media files scan
* Time when picture was taken detection (by EXIF, by file name, by file attributes)
* Media files moving/copying to configurable hierarchy
* Lossless rotations (via exiftran or jpegtran)
# Photo Importer Server
Standalone web server for fast media import for headless computer
### Features:
* Mounted storages detection (by path mask)
* Storages mount/unmount (via pmount)
* The same as photo-importer but without console
# Installation
### Requirements:
* Python 3.3+
### Supported OS:
* Debian based Linux (other Linux versions not officially supported, but might work)
* Windows 7 and above
* MacOS X and above (with brew installed, only console version)
### Dependencies:
* [PyExifTool](https://pypi.org/project/PyExifTool/)
* [progressbar](https://pypi.org/project/progressbar/)
* [psutil](https://pypi.org/project/psutil/)
* [exiftran](https://linux.die.net/man/1/exiftran) or [jpegtran](https://linux.die.net/man/1/jpegtran)
* [pmount](https://linux.die.net/man/1/pmount) (only for server)
* [pypiwin32](https://pypi.org/project/pypiwin32/) (only for windows)
### Installation Options:
#### Installing via PyPi
```bash
sudo apt install exiftran exiftool pmount pip
sudo pip install photo-importer
```
#### Installing as debian package
```bash
debuild -b
sudo apt install pip python3-exif python3-progressbar exiftran python3-psutil
sudo pip install PyExifTool
sudo dpkg -i ../photo-importer_1.2.5_all.deb
```
#### Installing via setup.py
```bash
sudo apt install exiftran exiftool pmount pip
sudo pip install PyExifTool progressbar psutil
sudo python3 ./setup.py install
```
#### Installing for Windows
Download and install python3 for you Windows distributive
https://www.python.org/downloads/windows/
Download and install exiftool
https://exiftool.org/
Download and extract jpegtran to photo_importer folder
http://sylvana.net/jpegcrop/jpegtran/
Install with python dependencies
```bash
python -m pip install pypiwin32 photo-importer
```
## Usage
### Command-Line Interface
```bash
photo-importer /path/to/media/files
```
Will process files (reanaming/rotating) in-place.

```bash
photo-importer /path/to/media/files /output/path
```
Will import (by default move, but it can be changed in config) files from /path/to/media/files to /output/path with date hierarchy creation and reanaming/rotating

### Web Interface
* attach usb-drive / usert memory card
* open http://servername:8080
* click "Mount"
* click "Import"
* click "Unmount"

### Windows command line
```bash
cd photo_importer
run.py -c ..\photo-importer-win.cfg path\to\media\files \output\path
```
### Windows web
```bash
photo-importer-server.bat
```
## Configuration
The server config file located in /etc/photo-importer.cfg
Command line tool config file located in ~/.photo-importer.cfg
Also config file can be specified by mean of -c command line option.
For options details see comments in the config file.
## Acknowledgements
Thanks to everyone who tested and gave advice.
**Bug reports, suggestions and pull request are welcome!**
## Show your support
Give a ⭐️ if this project helped you!
Raw data
{
"_id": null,
"home_page": "https://github.com/sashacmc/photo-importer",
"name": "photo-importer",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "Alexander Bushnev",
"author_email": "Alexander@Bushnev.pro",
"download_url": "https://files.pythonhosted.org/packages/a3/7d/6a72b3825a0a7866a5c7e559bc99ae6410b6ccb3ea5364a0ddcd0908783e/photo-importer-1.2.6.tar.gz",
"platform": null,
"description": "# Photo Importer\n\n\n[](https://pypi.org/project/photo-importer)\n[](https://pepy.tech/project/photo-importer)\n[](https://github.com/psf/black)\n\nCommand line tools for photo importing/renaming/rotating\n### Features:\n * Media files scan\n * Time when picture was taken detection (by EXIF, by file name, by file attributes)\n * Media files moving/copying to configurable hierarchy \n * Lossless rotations (via exiftran or jpegtran)\n\n# Photo Importer Server\nStandalone web server for fast media import for headless computer\n### Features:\n * Mounted storages detection (by path mask)\n * Storages mount/unmount (via pmount)\n * The same as photo-importer but without console\n\n# Installation\n\n### Requirements:\n\n * Python 3.3+\n\n### Supported OS:\n\n * Debian based Linux (other Linux versions not officially supported, but might work)\n * Windows 7 and above\n * MacOS X and above (with brew installed, only console version)\n\n### Dependencies:\n * [PyExifTool](https://pypi.org/project/PyExifTool/)\n * [progressbar](https://pypi.org/project/progressbar/)\n * [psutil](https://pypi.org/project/psutil/)\n * [exiftran](https://linux.die.net/man/1/exiftran) or [jpegtran](https://linux.die.net/man/1/jpegtran)\n * [pmount](https://linux.die.net/man/1/pmount) (only for server)\n * [pypiwin32](https://pypi.org/project/pypiwin32/) (only for windows)\n\n\n### Installation Options:\n\n#### Installing via PyPi\n```bash\nsudo apt install exiftran exiftool pmount pip\nsudo pip install photo-importer\n```\n#### Installing as debian package\n```bash\ndebuild -b\nsudo apt install pip python3-exif python3-progressbar exiftran python3-psutil\nsudo pip install PyExifTool\nsudo dpkg -i ../photo-importer_1.2.5_all.deb\n```\n#### Installing via setup.py\n```bash\nsudo apt install exiftran exiftool pmount pip\nsudo pip install PyExifTool progressbar psutil\nsudo python3 ./setup.py install\n```\n\n#### Installing for Windows\nDownload and install python3 for you Windows distributive\nhttps://www.python.org/downloads/windows/\n\nDownload and install exiftool\nhttps://exiftool.org/\n\nDownload and extract jpegtran to photo_importer folder\nhttp://sylvana.net/jpegcrop/jpegtran/\n\nInstall with python dependencies\n```bash\npython -m pip install pypiwin32 photo-importer\n```\n\n## Usage\n### Command-Line Interface\n\n```bash\nphoto-importer /path/to/media/files\n```\nWill process files (reanaming/rotating) in-place.\n\n\n```bash\nphoto-importer /path/to/media/files /output/path\n```\nWill import (by default move, but it can be changed in config) files from /path/to/media/files to /output/path with date hierarchy creation and reanaming/rotating\n\n\n\n### Web Interface\n * attach usb-drive / usert memory card\n * open http://servername:8080\n * click \"Mount\"\n * click \"Import\"\n * click \"Unmount\"\n\n\n\n### Windows command line\n```bash\ncd photo_importer\nrun.py -c ..\\photo-importer-win.cfg path\\to\\media\\files \\output\\path\n```\n### Windows web \n```bash\nphoto-importer-server.bat\n```\n\n## Configuration\nThe server config file located in /etc/photo-importer.cfg\n\nCommand line tool config file located in ~/.photo-importer.cfg\n\nAlso config file can be specified by mean of -c command line option.\n\nFor options details see comments in the config file.\n\n## Acknowledgements\nThanks to everyone who tested and gave advice.\n\n**Bug reports, suggestions and pull request are welcome!**\n\n## Show your support\nGive a \u2b50\ufe0f if this project helped you!\n",
"bugtrack_url": null,
"license": "GNU General Public License v3.0",
"summary": "Photo importer tool",
"version": "1.2.6",
"project_urls": {
"Homepage": "https://github.com/sashacmc/photo-importer"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "89c2ff11b299f269c8be4878dce2eaebbeb01110d7e9a98ba71e593330b91943",
"md5": "648f0dc8256bed620b2b8d955be084ce",
"sha256": "d23cd6f1b92426b34617d4b6f9e9420767a86540d50c6761ca653bbd6a02d417"
},
"downloads": -1,
"filename": "photo_importer-1.2.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "648f0dc8256bed620b2b8d955be084ce",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 35698,
"upload_time": "2024-10-31T00:00:19",
"upload_time_iso_8601": "2024-10-31T00:00:19.810966Z",
"url": "https://files.pythonhosted.org/packages/89/c2/ff11b299f269c8be4878dce2eaebbeb01110d7e9a98ba71e593330b91943/photo_importer-1.2.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a37d6a72b3825a0a7866a5c7e559bc99ae6410b6ccb3ea5364a0ddcd0908783e",
"md5": "98d972a9f42c96e8f2170d0647db85f3",
"sha256": "18ddd709192dd055aa061b23617be08a1e3a8a42dfb2bd2711da28f493328dd1"
},
"downloads": -1,
"filename": "photo-importer-1.2.6.tar.gz",
"has_sig": false,
"md5_digest": "98d972a9f42c96e8f2170d0647db85f3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 32892,
"upload_time": "2024-10-31T00:00:21",
"upload_time_iso_8601": "2024-10-31T00:00:21.763163Z",
"url": "https://files.pythonhosted.org/packages/a3/7d/6a72b3825a0a7866a5c7e559bc99ae6410b6ccb3ea5364a0ddcd0908783e/photo-importer-1.2.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-31 00:00:21",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sashacmc",
"github_project": "photo-importer",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "progressbar",
"specs": [
[
"==",
"2.5"
]
]
},
{
"name": "psutil",
"specs": [
[
"==",
"5.9.5"
]
]
},
{
"name": "PyExifTool",
"specs": [
[
"==",
"0.5.5"
]
]
}
],
"lcname": "photo-importer"
}