Bulk upload of images to existing observations

Is there a mechanism or an App to bulk upload or otherwise automate the addition of images to observations previously uploaded in a csv file?

I’ve researched the iNat API and can visualise a way this might be done using observation IDs but writing a Web App is beyond my current coding abilities.

Cheers!

1 Like

hi @mrtnlowr, welcome to the forum! I made a slight tweak to your title to specify it’s about adding images to observations already on the website.

1 Like

i’m not aware of an easy way to do this the way i think you’re describing. you can edit an individual observation and add multiple photos for one observation at a time. or you can use the batch edit functionality (click on your icon in the upper right corner of the website, then select Edit Observations, and then click the Batch Edit button on the resulting page) to upload multiple photos to multiple observations.

but if you have a list of observations in a csv file and want to reuse that as the basis for loading photos, i don’t think that’s easy to do. even if you coded something with the api, you’d need a cross-reference for your photo list and the observation ids (which would not be in the original csv file).

depending on how many observations vs photos you have to load, it might be easier to load the observations as photos, and then manually copy the other information from your csv into the resulting observations created from the photos.

Yes, I’m quite sure there is no way to do so without writing code to interact with the api. It looks like pyinaturalist does get you much of the way there: https://pypi.org/project/pyinaturalist/

Thanks, reuvenm. That’s exactly what I was thinking of, now I just need to port it to a language I’m familiar with :)

Cheers!

You can use the export tool to get a csv file with the IDs and other relevant information for the observations you’ve already uploaded. The IDs from this export file can then be linked to the observations in your original csv file via the date/time and lat/long - which will probably be unique for each observation. Once you have the IDs linked, the rest can be done using the iNat APIs.

It would probably be easier (and more fun) to learn Python. If you already have some knowledge of coding, it would only take a hour or so to learn enough Python to complete this task.