Naturtag
A tool for nature photographers that adds useful metadata to describe the organisms in your photos.
https://github.com/pyinat/naturtag
Category: Biosphere
Sub Category: Biodiversity Citizen Science
Keywords
biodiversity biodiversity-data cli darwin-core dwc exif hierarchical-keywords inaturalist iptc photography taxonomy xmp
Keywords from Contributors
transformer measur archiving animals compose conversion observation projection optimize humanize
Last synced: about 17 hours ago
JSON representation
Repository metadata
Tag your nature photos with iNat taxonomy and observation metadata
- Host: GitHub
- URL: https://github.com/pyinat/naturtag
- Owner: pyinat
- License: mit
- Created: 2020-05-10T18:52:49.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-03-01T16:43:07.000Z (about 2 months ago)
- Last Synced: 2025-04-17T22:58:53.063Z (9 days ago)
- Topics: biodiversity, biodiversity-data, cli, darwin-core, dwc, exif, hierarchical-keywords, inaturalist, iptc, photography, taxonomy, xmp
- Language: Python
- Homepage: https://naturtag.readthedocs.io
- Size: 114 MB
- Stars: 40
- Watchers: 3
- Forks: 4
- Open Issues: 62
- Releases: 7
-
Metadata Files:
- Readme: README.md
- Changelog: HISTORY.md
- License: LICENSE
README.md
Naturtag
Contents
Summary
Naturtag is a tool for nature photographers that adds useful metadata to describe the organisms in
your photos. It includes a desktop application, a command-line interface, and can also be
used as a python library. It is mainly intended for use with iNaturalist, but can also be used independently.
Naturtag gathers complete observation metadata (for iNaturalist observation photos), or just taxonomy metadata (for everything else). It then embeds this information in your local photo collection using
XMP and
EXIF metadata.
Use Cases
This image metadata has a variety of uses, including:
Local photo organization
Naturtag can tag your photos with hierarchical keywords (aka structured keywords), which
are supported by some photo viewers/editors like
Lightroom,
FastPictureViewer,
Photo Mechanic,
digiKam, and
XnViewMP.
This basically gives you a taxonomic tree for browsing and filtering your photos.
Photo hosting
Naturtag can also simplify tagging photos for photo hosting sites like Flickr. For that use case, this
tool generates semi-structured keywords in the same format as
iNaturalist's Flickr Tagger.
Example search using these tags: https://www.flickr.com/photos/tags/taxonomy:class=arachnida
Other biodiversity tools
Finally, naturtag can improve interoperability with other tools and systems that interact with biodiversity
data. For example, in addition to iNaturalist you might submit some observations to another
platform with a more specific focus, such as eBird, BugGuide, or Mushroom Observer.
For that use case, this tool supports Simple Darwin Core.
Installation
See GitHub Releases for downloads and
Installation
for platform-specific instructions.
To just install naturtag as a python package, run:
pip install naturtag
Usage
GUI
Naturtag is primarily a desktop application. It includes an interface for selecting and tagging images:
And tools to search and browse species to tag your images with:
See Application Guide for more details.
CLI
Naturtag also includes a command-line interface. It takes an observation or species, plus some image
files, and generates EXIF and XMP metadata to write to those images.
Example:
# Tag images with metadata from observation ID 5432
nt tag -o 5432 img1.jpg img2.jpg
# Refresh previously tagged images with latest observation and taxonomy metadata
nt refresh -r ~/observations
You can see it in action here:
See CLI documentation for more details.
Library
You can also import naturtag
as a python library, and use its main features in your own scripts or
applications. Basic example:
from naturtag import tag_images, refresh_tags
# Tag images with full observation metadata
tag_images(['img1.jpg', 'img2.jpg'], observation_id=5432)
# Refresh previously tagged images with latest observation and taxonomy metadata
refresh_tags(['~/observations/'], recursive=True)
See API Reference for more details.
Development Status
- See Issues for planned features and current progress.
- If you have any problems, suggestions, or questions about naturtag, you can:
- Create an issue
- Create a discussion
- Ping me (@jcook) on the iNaturalist Community Forum.
- When I'm not working on this, I'm often working on other libraries that naturtag benefits from, including
pyinaturalist,
pyinaturalist-convert, and
requests-cache.
Owner metadata
- Name: pyinat
- Login: pyinat
- Email:
- Kind: organization
- Description: Python tools for interacting with iNaturalist
- Website: https://pyinaturalist.readthedocs.io
- Location: United States of America
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/105503620?v=4
- Repositories: 6
- Last ynced at: 2024-05-12T00:45:45.872Z
- Profile URL: https://github.com/pyinat
GitHub Events
Total
- Create event: 23
- Release event: 4
- Issues event: 7
- Watch event: 2
- Delete event: 15
- Issue comment event: 31
- Push event: 9
- Pull request event: 32
Last Year
- Create event: 23
- Release event: 4
- Issues event: 7
- Watch event: 2
- Delete event: 15
- Issue comment event: 31
- Push event: 9
- Pull request event: 32
Committers metadata
Last synced: 6 days ago
Total Commits: 614
Total Committers: 3
Avg Commits per committer: 204.667
Development Distribution Score (DDS): 0.01
Commits in past year: 63
Committers in past year: 2
Avg Commits per committer in past year: 31.5
Development Distribution Score (DDS) in past year: 0.032
Name | Commits | |
---|---|---|
Jordan Cook | j****k@p****m | 608 |
dependabot[bot] | 4****] | 5 |
Kian-Meng Ang | k****g@c****g | 1 |
Committer domains:
- cpan.org: 1
- pioneer.com: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 99
Total pull requests: 138
Average time to close issues: 5 months
Average time to close pull requests: 21 days
Total issue authors: 9
Total pull request authors: 3
Average comments per issue: 0.54
Average comments per pull request: 0.64
Merged pull request: 47
Bot issues: 0
Bot pull requests: 115
Past year issues: 15
Past year pull requests: 48
Past year average time to close issues: 14 days
Past year average time to close pull requests: 18 days
Past year issue authors: 5
Past year pull request authors: 2
Past year average comments per issue: 0.93
Past year average comments per pull request: 0.67
Past year merged pull request: 9
Past year bot issues: 0
Past year bot pull requests: 44
Top Issue Authors
- JWCook (88)
- lsaffre (3)
- nevilamos (2)
- mihow (1)
- andrew-taylor (1)
- synrg (1)
- yobboh (1)
- maxogden (1)
- arky (1)
Top Pull Request Authors
- dependabot[bot] (115)
- JWCook (21)
- kianmeng (2)
Top Issue Labels
- ui (39)
- data (26)
- bug (12)
- performance (11)
- cli (10)
- idea (9)
- logistics (8)
- docs (3)
- enhancement (2)
- question (1)
- accessibility (1)
Top Pull Request Labels
- dependencies (99)
- python (90)
- github_actions (9)
- ui (8)
- data (5)
- logistics (5)
- bug (4)
- enhancement (3)
- performance (2)
- cli (1)
Package metadata
- Total packages: 1
-
Total downloads:
- pypi: 376 last-month
- Total dependent packages: 0
- Total dependent repositories: 1
- Total versions: 23
- Total maintainers: 1
pypi.org: naturtag
Tag your nature photos with iNat taxonomy and observation metadata
- Homepage: https://github.com/pyinat/naturtag
- Documentation: https://naturtag.readthedocs.io
- Licenses: MIT
- Latest release: 0.8.1 (published 4 months ago)
- Last Synced: 2025-04-25T13:30:57.385Z (1 day ago)
- Versions: 23
- Dependent Packages: 0
- Dependent Repositories: 1
- Downloads: 376 Last month
-
Rankings:
- Dependent packages count: 10.105%
- Stargazers count: 11.313%
- Forks count: 16.882%
- Average: 18.301%
- Dependent repos count: 21.593%
- Downloads: 31.61%
- Maintainers (1)
Dependencies
- actions/cache v3 composite
- actions/checkout v3 composite
- actions/download-artifact v3 composite
- actions/setup-python v4 composite
- actions/upload-artifact v3 composite
- snok/install-poetry v1.3.3 composite
- softprops/action-gh-release v1 composite
- actions/cache v3 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- pre-commit/action v3.0.0 composite
- snok/install-poetry v1.3.3 composite
- 113 dependencies
- babel >=2.0 develop
- coverage ^7.0 develop
- nox ^2023.4 develop
- nox-poetry ^1.0 develop
- pre-commit ^3.1 develop
- prettyprinter ^0.18.0 develop
- pyinstaller ^5.12 develop
- pytest ^7.3 develop
- pytest-cov >=3.0 develop
- pytest-xdist >=2.2 develop
- attrs >=21.2
- click >=8.0
- click-help-colors >=0.9
- furo ^2023.3
- linkify-it-py ^2.0
- myst-parser ^1.0
- pillow >=10.0
- pyexiv2 >=2.6.2
- pyinaturalist >=0.18
- pyinaturalist-convert >=0.6.1
- pyqtdarktheme ^2.1.0
- pyside6 6.5.0
- python >=3.10,<3.11
- pyyaml >=6.0
- qtawesome ^1.1.1
- sphinx ^5.2
- sphinx-autodoc-typehints ^1.17
- sphinx-copybutton >=0.5
- sphinx-design >=0.2
- sphinxcontrib-apidoc ^0.3
- sqlalchemy ^2.0.8
- tablib ^3.0
Score: 11.658479297571969