Python client for the iNaturalist APIs
Project description
Python client for the iNaturalist APIs.
Status
Work in progress: features are implemented one by one, as time allows and as the authors needs them.
That being said, many things are already possible (searching observations, creating a new observation, …) and contributions are welcome!
Python 3 only.
Examples
Search all observations matching a criteria:
from pyinaturalist.node_api import get_all_observations
obs = get_all_observations(params={'user_id': 'niconoe'})
see available parameters.
For authenticated API calls, you first need to obtain a token for the user:
from pyinaturalist.rest_api import get_access_token
token = get_access_token(username='<your_inaturalist_username>', password='<your_inaturalist_password>',
app_id='<your_inaturalist_app_id>',
app_secret=<your_inaturalist_app_secret>)
Note: you’ll need to create an iNaturalist app.
Create a new observation:
from pyinaturalist.rest_api import create_observations
params = {'observation':
{'taxon_id': 54327, # Vespa Crabro
'observed_on_string': datetime.datetime.now().isoformat(),
'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, # meters,
# sets vespawatch_id (an observation field whose ID is 9613) to the value '100'.
'observation_field_values_attributes':
[{'observation_field_id': 9613,'value': 100}],
},
}
r = create_observations(params=params, access_token=token)
new_observation_id = r[0]['id']
Upload a picture for this observation:
from pyinaturalist.rest_api import add_photo_to_observation
r = add_photo_to_observation(observation_id=new_observation_id,
file_object=open('/Users/nicolasnoe/vespa.jpg', 'rb'),
access_token=token)
Update an existing observation of yours:
from pyinaturalist.rest_api import update_observation
p = {'ignore_photos': 1, # Otherwise existing pictures will be deleted
'observation': {'description': 'updated description !'}}
r = update_observation(observation_id=17932425, params=p, access_token=token)
Get a list of all (globally available) observation fields:
from pyinaturalist.rest_api import get_all_observation_fields
r = get_all_observation_fields(search_query="DNA")
Sets an observation field value to an existing observation:
from pyinaturalist.rest_api import put_observation_field_values
put_observation_field_values(observation_id=7345179,
observation_field_id=9613,
value=250,
access_token=token)
History
0.6.0 (2018-11-15)
New function: rest_api.delete_observation()
0.5.0 (2018-11-05)
New function: node_api.get_observation()
0.4.0 (2018-11-05)
create_observation() now raises exceptions in case of errors.
0.3.0 (2018-11-05)
update_observation() now raises exceptions in case of errors.
0.2.0 (2018-10-31)
Better infrastructure (type annotations, documentation, …)
Dropped support for Python 2.
New function: update_observation()
rest_api.AuthenticationError is now exceptions.AuthenticationError
0.1.0 (2018-10-10)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyinaturalist-0.6.0.tar.gz
.
File metadata
- Download URL: pyinaturalist-0.6.0.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f2cd716da97866f9e30b532111de7cbc1053da981fb689e009655a7e6050513 |
|
MD5 | ce25e8462e3f1f475570542694fb7ef7 |
|
BLAKE2b-256 | a25f85b4eaabdc9d2d2e2aa740decadf59cb2470991eaa5f598062b644965400 |
File details
Details for the file pyinaturalist-0.6.0-py2.py3-none-any.whl
.
File metadata
- Download URL: pyinaturalist-0.6.0-py2.py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e68fcdb865afa5d9cb815deb453f1a8921b5db7e9749d1f8200594848a75d834 |
|
MD5 | 0e68ae488ae338b35479d1a5f9876417 |
|
BLAKE2b-256 | a24dd996fff11b1460c4a53c10f85e9b7080e3445534fc9e8af8b29c5934bb04 |