diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-18 07:39:43 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-18 07:39:43 +0000 |
| commit | 9748ad2d477b11ebd45b24ad0567506a79040dfa (patch) | |
| tree | c997ca218c994fad246087c45fafcc150b280726 /python-pyinaturalist.spec | |
| parent | 484728e6c27893dc0dc3e53d1378bdd0f8a94e1a (diff) | |
automatic import of python-pyinaturalist
Diffstat (limited to 'python-pyinaturalist.spec')
| -rw-r--r-- | python-pyinaturalist.spec | 738 |
1 files changed, 738 insertions, 0 deletions
diff --git a/python-pyinaturalist.spec b/python-pyinaturalist.spec new file mode 100644 index 0000000..5cbd892 --- /dev/null +++ b/python-pyinaturalist.spec @@ -0,0 +1,738 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pyinaturalist +Version: 0.18.0 +Release: 1 +Summary: iNaturalist API client for python +License: MIT +URL: https://github.com/pyinat/pyinaturalist +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/3f/b5/ff26526213070ac72c4215350a0c641491c3cc66f49ca13febcfae6630cd/pyinaturalist-0.18.0.tar.gz +BuildArch: noarch + +Requires: python3-attrs +Requires: python3-keyring +Requires: python3-platformdirs +Requires: python3-dateutil +Requires: python3-forge +Requires: python3-requests +Requires: python3-requests-cache +Requires: python3-requests-ratelimiter +Requires: python3-rich +Requires: python3-ujson +Requires: python3-furo +Requires: python3-ipython +Requires: python3-linkify-it-py +Requires: python3-myst-parser +Requires: python3-nbsphinx +Requires: python3-sphinx +Requires: python3-sphinx-automodapi +Requires: python3-sphinx-autodoc-typehints +Requires: python3-sphinx-copybutton +Requires: python3-sphinx-design +Requires: python3-sphinxcontrib-apidoc + +%description +# pyinaturalist + +[](https://github.com/pyinat/pyinaturalist/actions) +[](https://codecov.io/gh/pyinat/pyinaturalist) +[](https://pyinaturalist.readthedocs.io) + +[](https://pypi.org/project/pyinaturalist) +[](https://anaconda.org/conda-forge/pyinaturalist) +[](https://pypi.org/project/pyinaturalist) + +[](https://mybinder.org/v2/gh/pyinat/pyinaturalist/main?urlpath=lab/tree/examples) +[](https://open.vscode.dev/pyinat/pyinaturalist) + +<br/> + +[](https://pyinaturalist.readthedocs.io) + +# Introduction +[**iNaturalist**](https://www.inaturalist.org) is a community science platform that helps people +get involved in the natural world by observing and identifying the living things around them. +Collectively, the community produces a rich source of global biodiversity data that can be valuable +to anyone from hobbyists to scientists. + +**pyinaturalist** is a client for the [iNaturalist API](https://api.inaturalist.org/v1) that makes +these data easily accessible in the python programming language. + +- [Features](#features) +- [Quickstart](#quickstart) +- [Next Steps](#next-steps) +- [Feedback](#feedback) +- [Related Projects](#related-projects) + +## Features +* β‘οΈ **Easier requests:** Simplified request formats, easy pagination, and complete request + parameter type annotations for better IDE integration +* β¬
οΈ **Convenient responses:** Type conversions to the things you would expect in python, and an + optional object-oriented inteface for response data +* π **Security:** Keyring integration for secure credential storage +* π **Docs:** Example requests, responses, scripts, and Jupyter notebooks to help get you started +* π **Responsible use:** Follows the + [API Recommended Practices](https://www.inaturalist.org/pages/api+recommended+practices) + by default, so you can be nice to the iNaturalist servers and not worry about rate-limiting errors +* π§ͺ **Testing:** A dry-run testing mode to preview your requests before potentially modifying data + +### Supported Endpoints +Many of the most relevant API endpoints are supported, including: +* π Annotations and observation fields +* π Identifications +* π¬ Messages +* π Observations (multiple formats) +* π· Observation photos + sounds +* π Observation observers, identifiers, histograms, life lists, and species counts +* π Places +* π₯ Projects +* π¦Species +* π€ Users + +## Quickstart +Here are usage examples for some of the most commonly used features. + +First, install with pip: +```bash +pip install pyinaturalist +``` + +Then, import the main API functions: +```python +from pyinaturalist import * +``` + +### Search observations +Let's start by searching for all your own observations. There are +[numerous fields you can search on](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.create_observation), but we'll just use `user_id` for now: +```python +>>> observations = get_observations(user_id='my_username') +``` + +The full response will be in JSON format, but we can use `pyinaturalist.pprint()` to print out a summary: +```python +>>> for obs in observations['results']: +>>> pprint(obs) +ID Taxon Observed on User Location +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +117585709 Genus: Hyoscyamus (henbanes) May 18, 2022 niconoe Calvi, France +117464920 Genus: Omophlus May 17, 2022 niconoe GalΓ©ria, France +117464393 Genus: Briza (Rattlesnake Grasses) May 17, 2022 niconoe GalΓ©ria, France +... +``` + +You can also get +[observation counts by species](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.get_observation_species_counts). +On iNaturalist.org, this information can be found on the 'Species' tab of search results. +For example, to get species counts of all your own research-grade observations: +```python +>>> counts = get_observation_species_counts(user_id='my_username', quality_grade='research') +>>> pprint(counts) + ID Rank Scientific name Common name Count +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +47934 species π Libellula luctuosa Widow Skimmer 7 +48627 species π» Echinacea purpurea Purple Coneflower 6 +504060 species π Pleurotus citrinopileatus Golden Oyster Mushroom 6 +... +``` + +Another useful format is the +[observation histogram](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.get_observation_histogram), +which shows the number of observations over a given interval. The default is `month_of_year`: +```python +>>> histogram = get_observation_histogram(user_id='my_username') +>>> print(histogram) +{ + 1: 8, # January + 2: 1, # February + 3: 19, # March + ..., # etc. +} +``` + +### Create and update observations +To create or modify observations, you will first need to log in. +This requires creating an [iNaturalist app](https://www.inaturalist.org/oauth/applications/new), +which will be used to get an access token. +```python +token = get_access_token( + username='my_username', + password='my_password', + app_id='my_app_id', + app_secret='my_app_secret', +) +``` +See [Authentication](https://pyinaturalist.readthedocs.io/en/latest/user_guide.html#authentication) +for more options including environment variables, keyrings, and password managers. + +Now we can [create a new observation](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.create_observation): +```python +from datetime import datetime + +response = create_observation( + taxon_id=54327, # Vespa Crabro + observed_on_string=datetime.now(), + time_zone='Brussels', + description='This is a free text comment for the observation', + tag_list='wasp, Belgium', + latitude=50.647143, + longitude=4.360216, + positional_accuracy=50, # GPS accuracy in meters + access_token=token, + photos=['~/observations/wasp1.jpg', '~/observations/wasp2.jpg'], +) + +# Save the new observation ID +new_observation_id = response[0]['id'] +``` + +We can then [update the observation](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.update_observation) information, photos, or sounds: +```python +update_observation( + 17932425, + access_token=token, + description='updated description !', + photos='~/observations/wasp_nest.jpg', + sounds='~/observations/wasp_nest.mp3', +) +``` + +### Search species +Let's say you partially remember either a genus or family name that started with **'vespi'**-something. +The [taxa endpoint](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.taxa.html#pyinaturalist.v1.taxa.get_taxa) +can be used to search by name, rank, and several other criteria +```python +>>> response = get_taxa(q='vespi', rank=['genus', 'family']) +``` + +As with observations, there is a lot of information in the response, but we'll print just a few basic details: +```python +>>> pprint(response) +[52747] Family: Vespidae (Hornets, Paper Wasps, Potter Wasps, and Allies) +[92786] Genus: Vespicula +[84737] Genus: Vespina +... +``` + +## Next Steps +For more information, see: + +* [User Guide](https://pyinaturalist.readthedocs.io/en/latest/user_guide.html): + introduction and general features that apply to most endpoints +* [Endpoint Summary](https://pyinaturalist.readthedocs.io/en/latest/endpoints.html): + a complete list of endpoints wrapped by pyinaturalist +* [Examples](https://pyinaturalist.readthedocs.io/en/stable/examples.html): + data visualizations and other examples of things to do with iNaturalist data +* [Reference](https://pyinaturalist.readthedocs.io/en/latest/reference.html): Detailed API documentation +* [Contributing Guide](https://pyinaturalist.readthedocs.io/en/stable/contributing.html): + development details for anyone interested in contributing to pyinaturalist +* [History](https://github.com/pyinat/pyinaturalist/blob/dev/HISTORY.md): + details on past and current releases +* [Issues](https://github.com/pyinat/pyinaturalist/issues): planned & proposed features + +## Feedback +If you have any problems, suggestions, or questions about pyinaturalist, please let us know! +Just [create an issue](https://github.com/pyinat/pyinaturalist/issues/new/choose). +Also, **PRs are welcome!** + +**Note:** pyinaturalist is developed by members of the iNaturalist community, and is not endorsed by +iNaturalist.org or the California Academy of Sciences. If you have non-python-specific questions +about the iNaturalist API or iNaturalist in general, the +[iNaturalist Community Forum](https://forum.inaturalist.org/) is the best place to start. + +## Related Projects +Other python projects related to iNaturalist: + +* [naturtag](https://github.com/pyinat/naturtag): A desktop application for tagging image files with iNaturalist taxonomy & observation metadata +* [pyinaturalist-convert](https://github.com/pyinat/pyinaturalist-convert): Tools to convert observation data to and from a variety of useful formats +* [pyinaturalist-notebook](https://github.com/pyinat/pyinaturalist-notebook): Jupyter notebook Docker image for pyinaturalist +* [dronefly](https://github.com/dronefly-garden/dronefly): A Discord bot with iNaturalist integration, used by the iNaturalist Discord server. + + +%package -n python3-pyinaturalist +Summary: iNaturalist API client for python +Provides: python-pyinaturalist +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pyinaturalist +# pyinaturalist + +[](https://github.com/pyinat/pyinaturalist/actions) +[](https://codecov.io/gh/pyinat/pyinaturalist) +[](https://pyinaturalist.readthedocs.io) + +[](https://pypi.org/project/pyinaturalist) +[](https://anaconda.org/conda-forge/pyinaturalist) +[](https://pypi.org/project/pyinaturalist) + +[](https://mybinder.org/v2/gh/pyinat/pyinaturalist/main?urlpath=lab/tree/examples) +[](https://open.vscode.dev/pyinat/pyinaturalist) + +<br/> + +[](https://pyinaturalist.readthedocs.io) + +# Introduction +[**iNaturalist**](https://www.inaturalist.org) is a community science platform that helps people +get involved in the natural world by observing and identifying the living things around them. +Collectively, the community produces a rich source of global biodiversity data that can be valuable +to anyone from hobbyists to scientists. + +**pyinaturalist** is a client for the [iNaturalist API](https://api.inaturalist.org/v1) that makes +these data easily accessible in the python programming language. + +- [Features](#features) +- [Quickstart](#quickstart) +- [Next Steps](#next-steps) +- [Feedback](#feedback) +- [Related Projects](#related-projects) + +## Features +* β‘οΈ **Easier requests:** Simplified request formats, easy pagination, and complete request + parameter type annotations for better IDE integration +* β¬
οΈ **Convenient responses:** Type conversions to the things you would expect in python, and an + optional object-oriented inteface for response data +* π **Security:** Keyring integration for secure credential storage +* π **Docs:** Example requests, responses, scripts, and Jupyter notebooks to help get you started +* π **Responsible use:** Follows the + [API Recommended Practices](https://www.inaturalist.org/pages/api+recommended+practices) + by default, so you can be nice to the iNaturalist servers and not worry about rate-limiting errors +* π§ͺ **Testing:** A dry-run testing mode to preview your requests before potentially modifying data + +### Supported Endpoints +Many of the most relevant API endpoints are supported, including: +* π Annotations and observation fields +* π Identifications +* π¬ Messages +* π Observations (multiple formats) +* π· Observation photos + sounds +* π Observation observers, identifiers, histograms, life lists, and species counts +* π Places +* π₯ Projects +* π¦Species +* π€ Users + +## Quickstart +Here are usage examples for some of the most commonly used features. + +First, install with pip: +```bash +pip install pyinaturalist +``` + +Then, import the main API functions: +```python +from pyinaturalist import * +``` + +### Search observations +Let's start by searching for all your own observations. There are +[numerous fields you can search on](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.create_observation), but we'll just use `user_id` for now: +```python +>>> observations = get_observations(user_id='my_username') +``` + +The full response will be in JSON format, but we can use `pyinaturalist.pprint()` to print out a summary: +```python +>>> for obs in observations['results']: +>>> pprint(obs) +ID Taxon Observed on User Location +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +117585709 Genus: Hyoscyamus (henbanes) May 18, 2022 niconoe Calvi, France +117464920 Genus: Omophlus May 17, 2022 niconoe GalΓ©ria, France +117464393 Genus: Briza (Rattlesnake Grasses) May 17, 2022 niconoe GalΓ©ria, France +... +``` + +You can also get +[observation counts by species](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.get_observation_species_counts). +On iNaturalist.org, this information can be found on the 'Species' tab of search results. +For example, to get species counts of all your own research-grade observations: +```python +>>> counts = get_observation_species_counts(user_id='my_username', quality_grade='research') +>>> pprint(counts) + ID Rank Scientific name Common name Count +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +47934 species π Libellula luctuosa Widow Skimmer 7 +48627 species π» Echinacea purpurea Purple Coneflower 6 +504060 species π Pleurotus citrinopileatus Golden Oyster Mushroom 6 +... +``` + +Another useful format is the +[observation histogram](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.get_observation_histogram), +which shows the number of observations over a given interval. The default is `month_of_year`: +```python +>>> histogram = get_observation_histogram(user_id='my_username') +>>> print(histogram) +{ + 1: 8, # January + 2: 1, # February + 3: 19, # March + ..., # etc. +} +``` + +### Create and update observations +To create or modify observations, you will first need to log in. +This requires creating an [iNaturalist app](https://www.inaturalist.org/oauth/applications/new), +which will be used to get an access token. +```python +token = get_access_token( + username='my_username', + password='my_password', + app_id='my_app_id', + app_secret='my_app_secret', +) +``` +See [Authentication](https://pyinaturalist.readthedocs.io/en/latest/user_guide.html#authentication) +for more options including environment variables, keyrings, and password managers. + +Now we can [create a new observation](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.create_observation): +```python +from datetime import datetime + +response = create_observation( + taxon_id=54327, # Vespa Crabro + observed_on_string=datetime.now(), + time_zone='Brussels', + description='This is a free text comment for the observation', + tag_list='wasp, Belgium', + latitude=50.647143, + longitude=4.360216, + positional_accuracy=50, # GPS accuracy in meters + access_token=token, + photos=['~/observations/wasp1.jpg', '~/observations/wasp2.jpg'], +) + +# Save the new observation ID +new_observation_id = response[0]['id'] +``` + +We can then [update the observation](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.update_observation) information, photos, or sounds: +```python +update_observation( + 17932425, + access_token=token, + description='updated description !', + photos='~/observations/wasp_nest.jpg', + sounds='~/observations/wasp_nest.mp3', +) +``` + +### Search species +Let's say you partially remember either a genus or family name that started with **'vespi'**-something. +The [taxa endpoint](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.taxa.html#pyinaturalist.v1.taxa.get_taxa) +can be used to search by name, rank, and several other criteria +```python +>>> response = get_taxa(q='vespi', rank=['genus', 'family']) +``` + +As with observations, there is a lot of information in the response, but we'll print just a few basic details: +```python +>>> pprint(response) +[52747] Family: Vespidae (Hornets, Paper Wasps, Potter Wasps, and Allies) +[92786] Genus: Vespicula +[84737] Genus: Vespina +... +``` + +## Next Steps +For more information, see: + +* [User Guide](https://pyinaturalist.readthedocs.io/en/latest/user_guide.html): + introduction and general features that apply to most endpoints +* [Endpoint Summary](https://pyinaturalist.readthedocs.io/en/latest/endpoints.html): + a complete list of endpoints wrapped by pyinaturalist +* [Examples](https://pyinaturalist.readthedocs.io/en/stable/examples.html): + data visualizations and other examples of things to do with iNaturalist data +* [Reference](https://pyinaturalist.readthedocs.io/en/latest/reference.html): Detailed API documentation +* [Contributing Guide](https://pyinaturalist.readthedocs.io/en/stable/contributing.html): + development details for anyone interested in contributing to pyinaturalist +* [History](https://github.com/pyinat/pyinaturalist/blob/dev/HISTORY.md): + details on past and current releases +* [Issues](https://github.com/pyinat/pyinaturalist/issues): planned & proposed features + +## Feedback +If you have any problems, suggestions, or questions about pyinaturalist, please let us know! +Just [create an issue](https://github.com/pyinat/pyinaturalist/issues/new/choose). +Also, **PRs are welcome!** + +**Note:** pyinaturalist is developed by members of the iNaturalist community, and is not endorsed by +iNaturalist.org or the California Academy of Sciences. If you have non-python-specific questions +about the iNaturalist API or iNaturalist in general, the +[iNaturalist Community Forum](https://forum.inaturalist.org/) is the best place to start. + +## Related Projects +Other python projects related to iNaturalist: + +* [naturtag](https://github.com/pyinat/naturtag): A desktop application for tagging image files with iNaturalist taxonomy & observation metadata +* [pyinaturalist-convert](https://github.com/pyinat/pyinaturalist-convert): Tools to convert observation data to and from a variety of useful formats +* [pyinaturalist-notebook](https://github.com/pyinat/pyinaturalist-notebook): Jupyter notebook Docker image for pyinaturalist +* [dronefly](https://github.com/dronefly-garden/dronefly): A Discord bot with iNaturalist integration, used by the iNaturalist Discord server. + + +%package help +Summary: Development documents and examples for pyinaturalist +Provides: python3-pyinaturalist-doc +%description help +# pyinaturalist + +[](https://github.com/pyinat/pyinaturalist/actions) +[](https://codecov.io/gh/pyinat/pyinaturalist) +[](https://pyinaturalist.readthedocs.io) + +[](https://pypi.org/project/pyinaturalist) +[](https://anaconda.org/conda-forge/pyinaturalist) +[](https://pypi.org/project/pyinaturalist) + +[](https://mybinder.org/v2/gh/pyinat/pyinaturalist/main?urlpath=lab/tree/examples) +[](https://open.vscode.dev/pyinat/pyinaturalist) + +<br/> + +[](https://pyinaturalist.readthedocs.io) + +# Introduction +[**iNaturalist**](https://www.inaturalist.org) is a community science platform that helps people +get involved in the natural world by observing and identifying the living things around them. +Collectively, the community produces a rich source of global biodiversity data that can be valuable +to anyone from hobbyists to scientists. + +**pyinaturalist** is a client for the [iNaturalist API](https://api.inaturalist.org/v1) that makes +these data easily accessible in the python programming language. + +- [Features](#features) +- [Quickstart](#quickstart) +- [Next Steps](#next-steps) +- [Feedback](#feedback) +- [Related Projects](#related-projects) + +## Features +* β‘οΈ **Easier requests:** Simplified request formats, easy pagination, and complete request + parameter type annotations for better IDE integration +* β¬
οΈ **Convenient responses:** Type conversions to the things you would expect in python, and an + optional object-oriented inteface for response data +* π **Security:** Keyring integration for secure credential storage +* π **Docs:** Example requests, responses, scripts, and Jupyter notebooks to help get you started +* π **Responsible use:** Follows the + [API Recommended Practices](https://www.inaturalist.org/pages/api+recommended+practices) + by default, so you can be nice to the iNaturalist servers and not worry about rate-limiting errors +* π§ͺ **Testing:** A dry-run testing mode to preview your requests before potentially modifying data + +### Supported Endpoints +Many of the most relevant API endpoints are supported, including: +* π Annotations and observation fields +* π Identifications +* π¬ Messages +* π Observations (multiple formats) +* π· Observation photos + sounds +* π Observation observers, identifiers, histograms, life lists, and species counts +* π Places +* π₯ Projects +* π¦Species +* π€ Users + +## Quickstart +Here are usage examples for some of the most commonly used features. + +First, install with pip: +```bash +pip install pyinaturalist +``` + +Then, import the main API functions: +```python +from pyinaturalist import * +``` + +### Search observations +Let's start by searching for all your own observations. There are +[numerous fields you can search on](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.create_observation), but we'll just use `user_id` for now: +```python +>>> observations = get_observations(user_id='my_username') +``` + +The full response will be in JSON format, but we can use `pyinaturalist.pprint()` to print out a summary: +```python +>>> for obs in observations['results']: +>>> pprint(obs) +ID Taxon Observed on User Location +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +117585709 Genus: Hyoscyamus (henbanes) May 18, 2022 niconoe Calvi, France +117464920 Genus: Omophlus May 17, 2022 niconoe GalΓ©ria, France +117464393 Genus: Briza (Rattlesnake Grasses) May 17, 2022 niconoe GalΓ©ria, France +... +``` + +You can also get +[observation counts by species](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.get_observation_species_counts). +On iNaturalist.org, this information can be found on the 'Species' tab of search results. +For example, to get species counts of all your own research-grade observations: +```python +>>> counts = get_observation_species_counts(user_id='my_username', quality_grade='research') +>>> pprint(counts) + ID Rank Scientific name Common name Count +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +47934 species π Libellula luctuosa Widow Skimmer 7 +48627 species π» Echinacea purpurea Purple Coneflower 6 +504060 species π Pleurotus citrinopileatus Golden Oyster Mushroom 6 +... +``` + +Another useful format is the +[observation histogram](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.get_observation_histogram), +which shows the number of observations over a given interval. The default is `month_of_year`: +```python +>>> histogram = get_observation_histogram(user_id='my_username') +>>> print(histogram) +{ + 1: 8, # January + 2: 1, # February + 3: 19, # March + ..., # etc. +} +``` + +### Create and update observations +To create or modify observations, you will first need to log in. +This requires creating an [iNaturalist app](https://www.inaturalist.org/oauth/applications/new), +which will be used to get an access token. +```python +token = get_access_token( + username='my_username', + password='my_password', + app_id='my_app_id', + app_secret='my_app_secret', +) +``` +See [Authentication](https://pyinaturalist.readthedocs.io/en/latest/user_guide.html#authentication) +for more options including environment variables, keyrings, and password managers. + +Now we can [create a new observation](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.create_observation): +```python +from datetime import datetime + +response = create_observation( + taxon_id=54327, # Vespa Crabro + observed_on_string=datetime.now(), + time_zone='Brussels', + description='This is a free text comment for the observation', + tag_list='wasp, Belgium', + latitude=50.647143, + longitude=4.360216, + positional_accuracy=50, # GPS accuracy in meters + access_token=token, + photos=['~/observations/wasp1.jpg', '~/observations/wasp2.jpg'], +) + +# Save the new observation ID +new_observation_id = response[0]['id'] +``` + +We can then [update the observation](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.observations.html#pyinaturalist.v1.observations.update_observation) information, photos, or sounds: +```python +update_observation( + 17932425, + access_token=token, + description='updated description !', + photos='~/observations/wasp_nest.jpg', + sounds='~/observations/wasp_nest.mp3', +) +``` + +### Search species +Let's say you partially remember either a genus or family name that started with **'vespi'**-something. +The [taxa endpoint](https://pyinaturalist.readthedocs.io/en/stable/modules/pyinaturalist.v1.taxa.html#pyinaturalist.v1.taxa.get_taxa) +can be used to search by name, rank, and several other criteria +```python +>>> response = get_taxa(q='vespi', rank=['genus', 'family']) +``` + +As with observations, there is a lot of information in the response, but we'll print just a few basic details: +```python +>>> pprint(response) +[52747] Family: Vespidae (Hornets, Paper Wasps, Potter Wasps, and Allies) +[92786] Genus: Vespicula +[84737] Genus: Vespina +... +``` + +## Next Steps +For more information, see: + +* [User Guide](https://pyinaturalist.readthedocs.io/en/latest/user_guide.html): + introduction and general features that apply to most endpoints +* [Endpoint Summary](https://pyinaturalist.readthedocs.io/en/latest/endpoints.html): + a complete list of endpoints wrapped by pyinaturalist +* [Examples](https://pyinaturalist.readthedocs.io/en/stable/examples.html): + data visualizations and other examples of things to do with iNaturalist data +* [Reference](https://pyinaturalist.readthedocs.io/en/latest/reference.html): Detailed API documentation +* [Contributing Guide](https://pyinaturalist.readthedocs.io/en/stable/contributing.html): + development details for anyone interested in contributing to pyinaturalist +* [History](https://github.com/pyinat/pyinaturalist/blob/dev/HISTORY.md): + details on past and current releases +* [Issues](https://github.com/pyinat/pyinaturalist/issues): planned & proposed features + +## Feedback +If you have any problems, suggestions, or questions about pyinaturalist, please let us know! +Just [create an issue](https://github.com/pyinat/pyinaturalist/issues/new/choose). +Also, **PRs are welcome!** + +**Note:** pyinaturalist is developed by members of the iNaturalist community, and is not endorsed by +iNaturalist.org or the California Academy of Sciences. If you have non-python-specific questions +about the iNaturalist API or iNaturalist in general, the +[iNaturalist Community Forum](https://forum.inaturalist.org/) is the best place to start. + +## Related Projects +Other python projects related to iNaturalist: + +* [naturtag](https://github.com/pyinat/naturtag): A desktop application for tagging image files with iNaturalist taxonomy & observation metadata +* [pyinaturalist-convert](https://github.com/pyinat/pyinaturalist-convert): Tools to convert observation data to and from a variety of useful formats +* [pyinaturalist-notebook](https://github.com/pyinat/pyinaturalist-notebook): Jupyter notebook Docker image for pyinaturalist +* [dronefly](https://github.com/dronefly-garden/dronefly): A Discord bot with iNaturalist integration, used by the iNaturalist Discord server. + + +%prep +%autosetup -n pyinaturalist-0.18.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-pyinaturalist -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 0.18.0-1 +- Package Spec generated |
