# CameraHub Tagger
CameraHub Tagger is a companion command-line app for [CameraHub](https://camerahub.info/) to tag JPG
scans of negatives with EXIF metadata from the CameraHub API. This means you can organise your film
scans in a digital photo management app with full metadata.
To use CameraHub Tagger, you must already have entered your cameras, lenses, films and negatives into CameraHub. When you scan your negatives, name them consistently like `{FILM}-{FRAME}-IMG0001.jpg` (for example `45-12-IMG0001.jpg` is frame 12 on film 45).
Run CameraHub Tagger in the same directory. CameraHub Tagger will attempt to match the JPGs with the
negatives by using the filename (it will ask you if it can't figure it out). It will then generate a
unique ID for that scanned JPG to tie it conclusively to the negative. Once the link is made, CameraHub
Tagger will retrieve all data about that negative, film, lens and camera and use it to generate EXIF
metadata, the same as digital cameras do. It is safe to run CameraHub Tagger multiple times on the same
files, as only changed tags are written.
When your images have been tagged, any digital photo app will read and display these tags in the same
way as digital photos.
## Installation
Install from [PyPI](https://pypi.org/project/camerahub-tagger/) with Pip:
```console
pip install camerahub-tagger
```
This installs a `tagger` binary in your `$PATH`.
## Usage
```console
tagger [-h] [-r] [-a] [-y] [-d] [-f FILE] [-p PROFILE]
```
### `-h --help`
Display help message and exit
### `-r --recursive`
Search for scans recursively from current directory
### `-a --auto`
Don't prompt user to identify scans, only guess based on filename
### `-y --yes`
Accept all changes without confirmation
### `-d --dry-run`
Don't write any tags to image files
### `-f --file FILE`
Image file to be tagged. If not supplied, tag everything in the current directory.
### `-p --profile PROFILE`
CameraHub connection profile. Default: `prod`.
### `-c --clear`
Clear existing EXIF metadata from the image file.
## Config
CameraHub Tagger needs some basic connection details to connect to CameraHub.
On first run, it will ask for credentials for CameraHub and save them for future use.
If you need multiple profiles (e.g. if you have multiple users, or you need to connect to
a development instance of CameraHub) you can configure the extra profiles manually by editing
`~/camerahub.ini` and adding more blocks.
The names of each profile are arbitrary, but CameraHub Tagger will automatically use the `prod` profile
unless you override it with the `--profile` option. Here's an example:
```ini
[prod]
server = https://camerahub.info/api
username = anseladams
password = yosemite
[dev]
server = https://dev.camerahub.info/api
username = annieleibovitz
password = johnandyoko
[local]
server = http://127.0.0.1:8000/api
username = admin
password = admin
```
Raw data
{
"_id": null,
"home_page": "https://camerahub.info/",
"name": "camerahub-tagger",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9,<4.0",
"maintainer_email": "",
"keywords": "EXIF,photography,CameraHub,metadata",
"author": "Jonathan Gazeley",
"author_email": "me@jonathangazeley.com",
"download_url": "https://files.pythonhosted.org/packages/43/29/8240e81ba2f5cf72f65e5b77f697d6bb796d5683f0e83824e2c98a7b49bd/camerahub_tagger-0.5.0.tar.gz",
"platform": null,
"description": "# CameraHub Tagger\n\nCameraHub Tagger is a companion command-line app for [CameraHub](https://camerahub.info/) to tag JPG\nscans of negatives with EXIF metadata from the CameraHub API. This means you can organise your film\nscans in a digital photo management app with full metadata.\n\nTo use CameraHub Tagger, you must already have entered your cameras, lenses, films and negatives into CameraHub. When you scan your negatives, name them consistently like `{FILM}-{FRAME}-IMG0001.jpg` (for example `45-12-IMG0001.jpg` is frame 12 on film 45).\n\nRun CameraHub Tagger in the same directory. CameraHub Tagger will attempt to match the JPGs with the\nnegatives by using the filename (it will ask you if it can't figure it out). It will then generate a\nunique ID for that scanned JPG to tie it conclusively to the negative. Once the link is made, CameraHub\nTagger will retrieve all data about that negative, film, lens and camera and use it to generate EXIF\nmetadata, the same as digital cameras do. It is safe to run CameraHub Tagger multiple times on the same\nfiles, as only changed tags are written.\n\nWhen your images have been tagged, any digital photo app will read and display these tags in the same\nway as digital photos.\n\n## Installation\n\nInstall from [PyPI](https://pypi.org/project/camerahub-tagger/) with Pip:\n\n```console\npip install camerahub-tagger\n```\n\nThis installs a `tagger` binary in your `$PATH`.\n\n## Usage\n\n```console\ntagger [-h] [-r] [-a] [-y] [-d] [-f FILE] [-p PROFILE]\n```\n\n### `-h --help`\n\nDisplay help message and exit\n\n### `-r --recursive`\n\nSearch for scans recursively from current directory\n\n### `-a --auto`\n\nDon't prompt user to identify scans, only guess based on filename\n\n### `-y --yes`\n\nAccept all changes without confirmation\n\n### `-d --dry-run`\n\nDon't write any tags to image files\n\n### `-f --file FILE`\n\nImage file to be tagged. If not supplied, tag everything in the current directory.\n\n### `-p --profile PROFILE`\n\nCameraHub connection profile. Default: `prod`.\n\n### `-c --clear`\n\nClear existing EXIF metadata from the image file.\n\n## Config\n\nCameraHub Tagger needs some basic connection details to connect to CameraHub.\nOn first run, it will ask for credentials for CameraHub and save them for future use.\n\nIf you need multiple profiles (e.g. if you have multiple users, or you need to connect to\na development instance of CameraHub) you can configure the extra profiles manually by editing\n`~/camerahub.ini` and adding more blocks.\n\nThe names of each profile are arbitrary, but CameraHub Tagger will automatically use the `prod` profile\nunless you override it with the `--profile` option. Here's an example:\n\n```ini\n[prod]\nserver = https://camerahub.info/api\nusername = anseladams\npassword = yosemite\n\n[dev]\nserver = https://dev.camerahub.info/api\nusername = annieleibovitz\npassword = johnandyoko\n\n[local]\nserver = http://127.0.0.1:8000/api\nusername = admin\npassword = admin\n```",
"bugtrack_url": null,
"license": "",
"summary": "EXIF tagger for CameraHub",
"version": "0.5.0",
"project_urls": {
"Homepage": "https://camerahub.info/",
"Repository": "https://github.com/camerahub/tagger"
},
"split_keywords": [
"exif",
"photography",
"camerahub",
"metadata"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e6a92df9bf07a1fa5c31ba9d9abe93588373f4d5281e5b0d3f16e72b54b9f0db",
"md5": "4d55caef90ee0e6235541ce33b80f942",
"sha256": "f1e50a9a9b4efe641552bc987544c6d22a413050d2ecd41fbe5d3266e84389dd"
},
"downloads": -1,
"filename": "camerahub_tagger-0.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4d55caef90ee0e6235541ce33b80f942",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9,<4.0",
"size": 10177,
"upload_time": "2023-05-11T14:28:42",
"upload_time_iso_8601": "2023-05-11T14:28:42.927128Z",
"url": "https://files.pythonhosted.org/packages/e6/a9/2df9bf07a1fa5c31ba9d9abe93588373f4d5281e5b0d3f16e72b54b9f0db/camerahub_tagger-0.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "43298240e81ba2f5cf72f65e5b77f697d6bb796d5683f0e83824e2c98a7b49bd",
"md5": "d07ea8d1447488f00a49ecf4054eb1ce",
"sha256": "2d2d9b3a1c1aba12c5311507525b87a7b3b678964c960f465e5da2b66ed3b0dd"
},
"downloads": -1,
"filename": "camerahub_tagger-0.5.0.tar.gz",
"has_sig": false,
"md5_digest": "d07ea8d1447488f00a49ecf4054eb1ce",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9,<4.0",
"size": 9342,
"upload_time": "2023-05-11T14:28:44",
"upload_time_iso_8601": "2023-05-11T14:28:44.434866Z",
"url": "https://files.pythonhosted.org/packages/43/29/8240e81ba2f5cf72f65e5b77f697d6bb796d5683f0e83824e2c98a7b49bd/camerahub_tagger-0.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-11 14:28:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "camerahub",
"github_project": "tagger",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "camerahub-tagger"
}