maRce10 / suwo

Access nature media repositories through R
4 stars 0 forks source link

API connection with the Observation.org repository #11

Closed ajcanepa closed 5 months ago

ajcanepa commented 1 year ago

The Observation.org repository is the first citizen science platform for multi-taxa Biodiversity into upload datasets to gbif.org, see here.

They had an API documented here, that could be nice to access in order to consult own data (under user's credential) and/or public available data.

The contact mail is: info@observation.org

I'm in contact with the Spanish organising committee, so any doubts, let me know!

maRce10 commented 1 year ago

Tanto su usas la API de Observation como la de GBIF puedes acceder a los datos completos y sus relaciones. Tus consultas deben ir siempre dirigidas a las observaciones (occurrences, en GBIF).

Usando la API de Observation lo tienes todo en https://observation.org/api/v1/docs/observations.md

No soy experto en GBIF, pero con un vistazo rápido a su documentación (https://www.gbif.org/developer/occurrence) veo que también puedes acceder a las occurrences con sonidos fácilmente:

https://api.gbif.org/v1/occurrence/search?dataset_key=8a863029-f435-446a-821e-275f4f641165&media_type=Sound

Luego puedes acceder al detalle de cada occurrence a través de su "key", por ejemplo el primero de todos los resultados:

https://api.gbif.org/v1/occurrence/3733344236

Aquí obtienes los detalles de la observación, y las URLs de los audios asociados.

{ "key": 3733344236, "datasetKey": "8a863029-f435-446a-821e-275f4f641165", "publishingOrgKey": "c8d737e0-2ff8-42e8-b8fc-6b805d26fc5f", "installationKey": "85ccfd1a-a837-48d6-9a87-96c99f6fe012", "publishingCountry": "NL", "protocol": "DWC_ARCHIVE", "lastCrawled": "2022-12-19T16:53:35.234+00:00", "lastParsed": "2023-01-24T22:45:08.811+00:00", "crawlId": 88, "hostingOrganizationKey": "396d5f30-dea9-11db-8ab4-b8a03c50a862", "extensions": { "http://rs.tdwg.org/ac/terms/Multimedia": [ { "http://rs.tdwg.org/ac/terms/variantLiteral": "Best Quality", "http://purl.org/dc/elements/1.1/type": "Sound", "http://rs.tdwg.org/ac/terms/accessURI": "https://observation.org/sounds/152394.mp3", "http://purl.org/dc/terms/format": "audio/mp3", "http://purl.org/dc/terms/identifier": "https://observation.org/sounds/152394/", "http://purl.org/dc/elements/1.1/creator": "Thijs ter Avest 🦆", "http://purl.org/dc/terms/rights": "CC BY-NC-ND 4.0", "http://ns.adobe.com/xap/1.0/rights/Owner": "Thijs ter Avest 🦆" } ] }, "basisOfRecord": "HUMAN_OBSERVATION", "individualCount": 1, "occurrenceStatus": "PRESENT", "lifeStage": "Unknown", "taxonKey": 2490719, "kingdomKey": 1, "phylumKey": 44, "classKey": 212, "orderKey": 729, "familyKey": 5290, "genusKey": 2490714, "speciesKey": 2490719, "acceptedTaxonKey": 2490719, "scientificName": "Turdus merula Linnaeus, 1758", "acceptedScientificName": "Turdus merula Linnaeus, 1758", "kingdom": "Animalia", "phylum": "Chordata", "order": "Passeriformes", "family": "Turdidae", "genus": "Turdus", "species": "Turdus merula", "genericName": "Turdus", "specificEpithet": "merula", "taxonRank": "SPECIES", "taxonomicStatus": "ACCEPTED", "iucnRedListCategory": "LC", "decimalLongitude": 6.45, "decimalLatitude": 51.85, "coordinateUncertaintyInMeters": 5000, "continent": "EUROPE", "stateProvince": "Gelderland", "year": 2022, "month": 1, "day": 1, "eventDate": "2022-01-01T00:00:00", "issues": [ "OCCURRENCE_STATUS_INFERRED_FROM_INDIVIDUAL_COUNT" ], "modified": "2022-01-09T00:00:00.000+00:00", "lastInterpreted": "2023-01-24T22:45:08.811+00:00", "references": "https://data.biodiversitydata.nl/obsint/observation/OBS.231314162", "license": "http://creativecommons.org/licenses/by-nc/4.0/legalcode", "identifiers": [ { "identifier": "231314162@OBS" } ], "media": [ { "type": "Sound", "format": "audio/mpeg", "creator": "Thijs ter Avest 🦆", "license": "http://creativecommons.org/licenses/by-nc-nd/4.0/", "rightsHolder": "Thijs ter Avest 🦆", "identifier": "https://observation.org/sounds/152394.mp3" } ], "facts": [], "relations": [], "gadm": { "level0": { "gid": "DEU", "name": "Germany" }, "level1": { "gid": "DEU.10_1", "name": "Nordrhein-Westfalen" }, "level2": { "gid": "DEU.10.4_1", "name": "Borken" }, "level3": { "gid": "DEU.10.4.8_1", "name": "Isselburg" } }, "isInCluster": false, "recordedBy": "User 141115", "samplingProtocol": "heard", "geodeticDatum": "WGS84", "class": "Aves", "countryCode": "NL", "recordedByIDs": [], "identifiedByIDs": [], "country": "Netherlands", "rightsHolder": "Stichting Observation International", "identifier": "231314162@OBS", "catalogNumber": "OBS.231314162", "vernacularName": "Common Blackbird", "dataGeneralizations": "WGS84 coordinates generalized with formula: coord = floor(coord * 20) / 20", "eventTime": "08:54", "locality": "Breedenbroek", "collectionCode": "Observations", "gbifID": "3733344236", "occurrenceID": "https://observation.org/observation/231314162", "higherClassification": "Animalia|Turdidae" } Te he resaltado en negrita los datos del sonido. Incluyendo sus metadatos

maRce10 commented 1 year ago

No soy experto en GBIF, pero con un vistazo rápido a su documentación (https://www.gbif.org/developer/occurrence) veo que también puedes acceder a las occurrences con sonidos fácilmente:

https://api.gbif.org/v1/occurrence/search?dataset_key=8a863029-f435-446a-821e-275f4f641165&media_type=Sound

Luego puedes acceder al detalle de cada occurrence a través de su "key", por ejemplo el primero de todos los resultados:

https://api.gbif.org/v1/occurrence/3733344236

Aquí obtienes los detalles de la observación, y las URLs de los audios asociados.

ajcanepa commented 1 year ago

No soy experto en GBIF, pero con un vistazo rápido a su documentación (https://www.gbif.org/developer/occurrence) veo que también puedes acceder a las occurrences con sonidos fácilmente:

https://api.gbif.org/v1/occurrence/search?dataset_key=8a863029-f435-446a-821e-275f4f641165&media_type=Sound

Luego puedes acceder al detalle de cada occurrence a través de su "key", por ejemplo el primero de todos los resultados:

https://api.gbif.org/v1/occurrence/3733344236

Aquí obtienes los detalles de la observación, y las URLs de los audios asociados.

Lo interesante de poder acceder a la API de Observation.org, como te sugirió Julio Rabadán , es que los datos que se suben a GBIF son sólo algunos de los datos de Observation.org. Solamente aquellos validados son los que se suben (calidad de investigación o algo así le llaman en iNat); pero antes que validen y suban tus datos a GBIF o en aquellos no validados, la opción de poder trabajar con ellos en observation.org sería genial considerala en el paquete!

maRce10 commented 1 year ago

Gracias @ajcanepa. Lo que estamos viendo es que a traves de GBIF hay acceso a muchos repositorios y esto simplificaria mucho la programacion. Tenes una idea de cual es la proporcion de observaciones que no estan validadas? Que criterios se usan para la validacion?

ajcanepa commented 1 year ago

Hola @maRce10 . Lo de acceder a través de GBIF sin duda es positivo. En el mundillo de la ciencia ciudadana verás que las principales plataformas son eBird (1M) y Observation.org (~70K). Si bien iNaturalist es bastante famosa por la publicidad que posee, no lo es tanto cuando de datos de calidad se trata y en GBIF su aporte es menor a las citadas anteriormente (~56K). Puedes verlo aquí.

Te cuento esto, porque es la escencia de la pregunta de cómo se hacen las validaciones. En Observation.org las validaciones las realizan científicos y expertos en determinados grupos con capacidad para hacer la validación demostrada. Además usan un algoritmo, ojo no informático, sino de pasos lógicos y estructurados en la revisión de una especie, tal que aquellos datos que se van a GBIF son solo aquellos que pasan este filtro. Ahora mismo creo que dentro de Observation se está llegando a los 200K observaciones y 70K + 13K están en GBIF. Lo de los 13K extras, es porque en Bélgica usan la plataforma pero se niegan a traducir los portales y suben los datos de manera independiente (ver aquí), por lo que si hablamos de tecnología; Osbervation aporta al GBIF unos 83K observaciones. No sé como andará, por ejemplo iNat pero recuerdo que en su momento hablaron de 400K yen GBIF solo tienen 56K observaciones, lo que demuestra que el sistema de revisión mucho menos robusto consigue que un % mucho menor llegue al GBIF.

Aún así, creo que sería muy útil poder consultar los datos de Observation, porque recuerdo además del correo que te enviço Julio que sí se puede acceder a los ficheros de audio adjuntos a cada registro, lo que facilitaría bastante las cosas.

Si necesitas un cable me avisas, podría proponer un TFG en la Universidad para Implementar las consultas en esa API.

Saluduos,

Antonio

Jorge-Elizondo-C commented 1 year ago

Hola @ajcanepa , ahorita estamos terminando las funciones que obtienen los datos de bases como Inaturalist y Observation, pero estamos teniendo un problema, porque para accesar los datos de la base de Observation.org, se necesita un token de autorización para poder buscar los datos de observaciones. Sabe de alguna forma de obtener los datos con el API de Observation.org sin tener que utilizar este token?

Ahorita los datos que estaba consultando que necesitan del token son los de la sección de observations que utiliza esto:

curl https://observation.org/api/v1/species/32/observations/ \ -H "Authorization: Bearer < oauth2 token >" Saludos,

Jorge

ajcanepa commented 1 year ago

Hola @Jorge-Elizondo-C , buenas. Estoy preguntándole a Julio Rabadán que es capaz de mirar las tripas de la base de datos, pero aprovecho de hacerte una pregunta. ¿Cómo pensáis manejar el acceso a datos de especies "conflictivas/emblemáticas"? En según qué países hay muchas personas que utilizan estos datos con fines no del todo positivos, incluso sin "querer queriendo", como decía el grande del Chavo. Acá en España pasó cuando llegó (a través de un barco) un Búho nival a la costa de Santander, lo vieron en eBird y en una tarde habían más de 300 birdwatchers pisando las dunas de la cosa durante 4 o 5 días, cosa que causó bastante estupor entre los que somos menos "birders" pero más cercanos a la conservación....

En Observation.org hay bastantes filtros que ocultan los registros de según qué especies (peligro de conservación, nivel de rareza, listado de especies cinegéticas, o incluso ocultación personal). La idea del paquete (me imagino) es que estos niveles de ocultación, se respeten, ¿no?

En cuanto tenga una respuesta, te aviso.

Un Saludo y que estés muy bien.

Toño

PD: Aunque tenga muchas canas, puedes tutearme tranquilamente!

maRce10 commented 1 year ago

Hola @Jorge-Elizondo-C y @ajcanepa

lo de las especies "conflictivas/emblemáticas" es importante tenerlo en cuento. La idea seria respetar los filtros para estas observaciones. Para esto necesitariamos saber que campos muestran esta informacion para que se filtre internamente antes de devolver los resultados al usuario.

saludos

Marcelo

ajcanepa commented 1 year ago

Hola @Jorge-Elizondo-C @maRce10 , buenos días. He estado averiguando lo que me preguntaron del API. Por lo que veo es más sencillo respetar lo de los filtros, porque la propia API solo te permite consultar lo que es "consultable". Esta es una de las ventajas de la plataforma Observation que hizo que nos decantáramos por ella.

Lo que me ha respondido Julio Rabadán respecto de las consultas de la API sería:

Por lo que creo que el tema del Token es algo que se debe explicar y quizás proporcionar el Token de ejemplo que se entrega, pero sobretodo resaltando la importancia de porqué se solicita un "token".

Ahora bien, si quieres solicitar información que incluya registros ajenos de especies que han sido ocultadas (hay 3 mecanismos para ello) has de escribir un correo solicitándolo con un formulario (parecido a la consulta de eBird) y según entendí te enviaban la base de datos (SQLite, creo).

Seguimos!

maRce10 commented 1 year ago

Parece q no es fácil conseguir el token. Eso hace menos probable que la gente se anime a usar la función que busca en ese repositorio. Podemos igual incluirla pero hay q explicar con detalle el proceso necesario para poder buscar.

ajcanepa commented 1 year ago

Hola @maRce10 , ¿Podría pedirte más detalles de porqué no es fácil conseguir el Token? La gente de Holanda a veces es un poco (mucho) "cuadrada" y no entienden según que cosas. En principio la solicitud debería ser tan sencilla como un correo, unos motivos y algo de identificación como nombre de usuario o algo así. Pero si estás teniendo dificultades, te rogaría me las comentaras porque en las reuniones estamos insistiendo mucho en que hay que facilitar el acceso a la investigación y hay algunos desarrolladores que como te digo son un pelín cuadrados...

Quedo atento a que me digas si las dificultades son técnicas y/o humanas!...

Gracias!

maRce10 commented 1 year ago

Esto fue lo que le respondieron a Jorge cuando solicitó el token:

"En general, nuestros datos verificados con calidad para estudios científicos están alojados en GBIF.org. Puedes atacar directamente la API de GBIF sin necesidad de solicitarnos permisos específicos.

Para estudios que requieran de información sensible, que no se exporta a GBIF, u otras circunstancias especiales, disponemos de una API: https://observation.org/api/v1/docs/

Obviamente, por la información a la que se tienen acceso, las solicitudes de uso de la API deben ser revisadas cuidadosamente. Es por esto que necesitamos conocer varios detalles antes de poder facilitar un token:

Entidad y departamento al que perteneces
Nombre del Proyecto para el que se utilizarán los datos
Descripción del proyecto, incluyendo resultado final esperado
¿Es un proyecto comercial? ¿El resultado se va a vender de una u otra manera?
¿Espera recibir algún tipo de fondo o ayuda con el resultado obtenido?

Quedo a la espera de tu respuesta para poder enviar la solicitud a los responsables del acceso a la API."

ajcanepa commented 1 year ago

Hola, Gracias por el correo. A ver, estoy invitando a participar a Julio, porque no veo problema alguno en el mensaje salvo que no es muy amigable e incluso intimidante.

A ver qué me responden y te comento, vale? pero no lo veo tan mal....jeje

maRce10 commented 1 year ago

gracias @ajcanepa. No es que sea bueno o malo. Es relacionado a que tan probable es que la gente decida usar esa herramienta. En el desarrollo de software la idea es hacer las herramientas tan amigables para los usuarios como sea posible. De lo contrario es poco probable que la gente lo use. Si pensás que vamos a tener 3-4 repositorios donde la búsqueda es directa sin solicitar ningún permiso (osea con una sola linea de código, e.g. xeno-canto, gbif), la gente probablemente va a usar esas y evitar otras q requieran intercambiar varios correos. Mas aun al saber que los datos de observation.org también se pueden obtener por gbif (aunque no todos!), con una simple búsqueda. Yo voy a tener mi token y probablemente lo use. Pero lo importante aquí es el uso que le den otras personas. Igual creo q vale la pena intentar, solo que le baja un poco el atractivo en comparación con otros repositorios.

ajcanepa commented 1 year ago

Hola @maRce10 , sí tienes toda la razón. Y no es un tema superfluo el que mencionas, hemos estado hablando hace un tiempo al respecto y son varias aristas las que se han de tocar que, evidentemente, no podemos solventarlas por mensajería. Uno de los temas importantes tiene relación con las normativas vigentes de protección de datos. El anonimizar los registros es "time-consuming" y a veces vulnera la propia idiosincracia de estos proyectos en que la persona que entrega el registro quiere ser reconocida, pero claro accedes a su posición en una fecha/hora determinada. Eso yo sé (como Chileno) que en Sudamérica y en muchos países importa muy poco, pero en Europa las leyes son diferentes y bastante más estrictas y ahora que vivo hace algunos años en España y que mi hijo se ha hecho hiper-fan de ObsIdentify, agradezco que la gente no pueda consultar por donde pasa él registrando a diario porque los patrones son evidentes... Solo menciono esto porque me pilla cerca, pero insisto es algo que no se tiene en cuenta en muchas investigaciones/proyectos/países. Ahora bien, el tema importante son las consecuencias que mencionas que son muy, muy relevantes y es como bien dices tú el dejar de usar (o no) una plataforma por la dificultad de acceso. De momento hay cosas que no podemos cambiar; pero he sugerido a la junta internacional que se flexibilicen las consultas. Por ejemplo que si consultas "tus" datos, sea sólo una línea de código, si quieres consultar todos los datos abiertos que pidas un Token en el que las preguntas se vayan revelando según tus intereses (si es para uso personal, ya está, no deberían preguntarte ni nombre de universidad, ni empresa, etc.) y si quieres consultar la base de datos completa (incluídos los embargos) pues entonces un Token con más atribuciones (como los PAT de Github) en los que firmes un acuerdo de confidencialidad del uso de los datos.....pero claro esto es una propuesta que no podemos más que esperar a que la consideren. Como bien dices, lo importante es intentarlo porque hay mucho usuario con poco o bajo impacto que le dará igual una base de datos que otra y se decantará por lo más sencillo (entendible y está bien que así sea), pero creo que hay otro grupo (tipo) de usuario que sí hará el esfuerzo, porque a lo menos en España se reciben mensualmente del orden de 200 a 500 peticiones de descarga de datos, osea que hay un grupo de usuarios que sí están detrás del dato y les importa consultar diferentes fuentes y de cara a las referencias del artículo como al número de descargas del paquete estaría muy bien considerar este grupo más "dedicado". Sabemos que son principalmente investigadores, técnicos y profesional del área, pero al estar ya integrando en el paquete y con las instrucciones claras de cómo pedir el Token y cómo usarlo, yo creo que sí que se enganchará más gente.

¡Gracias por el esfuerzo y estoy pensando en las aplicaciones!

ajcanepa commented 1 year ago

Esto fue lo que le respondieron a Jorge cuando solicitó el token:

"En general, nuestros datos verificados con calidad para estudios científicos están alojados en GBIF.org. Puedes atacar directamente la API de GBIF sin necesidad de solicitarnos permisos específicos.

Para estudios que requieran de información sensible, que no se exporta a GBIF, u otras circunstancias especiales, disponemos de una API: https://observation.org/api/v1/docs/

Obviamente, por la información a la que se tienen acceso, las solicitudes de uso de la API deben ser revisadas cuidadosamente. Es por esto que necesitamos conocer varios detalles antes de poder facilitar un token:

Entidad y departamento al que perteneces
Nombre del Proyecto para el que se utilizarán los datos
Descripción del proyecto, incluyendo resultado final esperado
¿Es un proyecto comercial? ¿El resultado se va a vender de una u otra manera?
¿Espera recibir algún tipo de fondo o ayuda con el resultado obtenido?

Quedo a la espera de tu respuesta para poder enviar la solicitud a los responsables del acceso a la API."

Hola @maRce10 @Jorge-Elizondo-C , ¿Han podido responder al correo? Me comentaron desde la organización que no han recibido respuesta de vuestra parte. Si en algunos de los campos/preguntas no tienen datos o "no corresponden" no pasa nada, pueden explicar más o menos y enviarlo.

Saludos,

Antonio

Jorge-Elizondo-C commented 1 year ago

Hola Antonio, Sí, ya me contestaron con el token entonces lo que vamos a hacer es desarrollar la función de manera que el usuario tenga la opción de ingresar su token individual si quiere buscar en la base de Observation.org. Igual si quieren consultar los demás datos libres de Observation pueden hacerlo con la función de búsqueda de GBIF que ya está disponible.

Saludos, Jorge

ajcanepa commented 1 year ago

Hola Antonio, Sí, ya me contestaron con el token entonces lo que vamos a hacer es desarrollar la función de manera que el usuario tenga la opción de ingresar su token individual si quiere buscar en la base de Observation.org. Igual si quieren consultar los demás datos libres de Observation pueden hacerlo con la función de búsqueda de GBIF que ya está disponible.

Saludos, Jorge

Gracias @Jorge-Elizondo-C pro el mensaje. Me alegro que te hayan dado el Token y qué podamos incluirlo de la manera que lo proponen ustedes.

Un Saludo!

Jorge-Elizondo-C commented 1 year ago

Hola @ajcanepa,

La función para consultar de la base de Observation.org ya está funcionando. Se le provee el token y un nombre de especie y devuelve las observaciones con imagenes disponibles. Podes probarla utilizando:

library(RCurl)
library(jsonlite)

source("https://raw.githubusercontent.com/maRce10/suwo/master/R/query_observation.R")
source("https://raw.githubusercontent.com/maRce10/suwo/master/R/internal_functions.R")
results <-  results <-  query_observation("phaethornis yaruqui", type = "still image", token = "SU_TOKEN_AQUI")

nrow(results)

El resultado deberia darte 64 filas.

Para descargar las fotos, puede correr:

source("https://raw.githubusercontent.com/maRce10/suwo/master/R/download_media.R")
download_media(results, path = "SU_PATH")

Solo faltaría si pudieran consultar con los de Observation para agregar otro formato de media como mp3 para también accesar sonidos, ya que ahorita no hay audios en la base. Quedo atento a cualquier duda, me avisan si les sirve bien.

Saludos!

ajcanepa commented 1 year ago

Hola @ajcanepa,

La función para consultar de la base de Observation.org ya está funcionando. Se le provee el token y un nombre de especie y devuelve las observaciones con imagenes disponibles. Podes probarla utilizando:

library(RCurl)
library(jsonlite)

source("https://raw.githubusercontent.com/maRce10/suwo/master/R/query_observation.R")
source("https://raw.githubusercontent.com/maRce10/suwo/master/R/internal_functions.R")
results <-  results <-  query_observation("phaethornis yaruqui", type = "still image", token = "SU_TOKEN_AQUI")

nrow(results)

El resultado deberia darte 64 filas.

Para descargar las fotos, puede correr:

source("https://raw.githubusercontent.com/maRce10/suwo/master/R/download_media.R")
download_media(results, path = "SU_PATH")

Solo faltaría si pudieran consultar con los de Observation para agregar otro formato de media como mp3 para también accesar sonidos, ya que ahorita no hay audios en la base. Quedo atento a cualquier duda, me avisan si les sirve bien.

Saludos!

Hola @Jorge-Elizondo-C , muy buenas! Te respondo rápidamente antes de probar las funciones porque estoy saturado de trabajo y no podré probarla hasta dentro de algunos días. Sin embargo, no termino de entender lo de los audios. ¿Dices que no hay audios en Observation.org?, porque si revisas mi página, hay una sección solo de "sonidos" y ahí están todos los audios Mira acá. ¿Es esto a lo que te refieres o a otra cosa?, igual no entendí bien el mensaje. Salduos y gracias!

maRce10 commented 1 year ago

Hola @ajcanepa,

creo que lo que quiso decir Jorge es que el API no devuelve informacion sobre los audios. Que hasta donde recuerdo es lo que vos tambien me habias dicho. Por eso entendia que hay q pedirles que hagan un cambio para tener esa info.

saludos

ajcanepa commented 1 year ago

Hola @maRce10 y @Jorge-Elizondo-C, buenas tardes.

Respondo quizás con otra pregunta, porque si la API no devuelve info sobvre los audios puede deberse a que la API no consulte los audios o bien el token al que estáis consultando no tiene audios de ejemplo.

Mirando rápidamente el siguiente enlace https://observation.org/api/v1/docs/observations.md#media, veo que se menciona lo siguiente:

"In addition to the fields above, the following fields are added to responses, but are read-only (not writable):" y se muestra una tabla donde se detalla que además de las fotos (string de tipo ["https://observation.org/media/photo/330.jpg"]), la siguiente fila es para sonidos con un string bastante similar: ["https://observation.org/media/sound/137.mp3"].

Entonces hasta donde yo entiendo, sí que habría opción de "llamar" a un sonido, no?

Más abajo en esa misma página, veo que en módulo de: JSON-formatted body, el detalle para in registro incluye lo siguiente:

], "species_detail": {"id": 150, "scientific_name": "Turdus merula", "name": "Common Blackbird", "group": 1}, "rarity": 1, "user": 173371, "modified": "2022-01-10T16:17:37.029350", "species_group": 1, "validation_status": "O", "location": 8352, "location_detail": {"id": 8352, "name": "Noordzee - t.h.v. Zuid-Holland", "country_code": "NL", "permalink": "https://observation.org/locations/8352/"}, "photos": [], "sounds": [], "permalink": "https://observation.org/observation/231034545/"

...en el que aparece otra vez el campo "sounds": []; ¿es a esto a lo que os referís?

O será que el Token que os facilitaron está consultando un conjunto d edatos (no la base de datos entera) en la que nadie ha subido algún sonido?

De todas formas voy a re-enviar el mensaje al responsable, pero creo que una posible solución es averiguar qué token estáis usando (¿es uno personal?) y si es así, debería solucionarse en cuanto subáis un registro que tenga un audio.

Saludos y les comento cualquier cosa!

maRce10 commented 1 year ago

Dale, si querés primero revisamos bien para asegurarnos que no estamos obviando esa información de los audios

ajcanepa commented 1 year ago

Dale, si querés primero revisamos bien para asegurarnos que no estamos obviando esa información de los audios

De acuerdo, o incluso que la especie que estáis filtrando tenga registros. No sé cuán común o abuntante es el conjunto de datos acústico para los audios dentro de Observation

ajcanepa commented 1 year ago

Hola nuevamente @maRce10 y @Jorge-Elizondo-C . Me ha respondido el encargado de España, hasta donde él sabe. Quizás, si no es la soución que estában buscando igual había que escribi directamente a info@observation.org. Les copio/pego la respuesta a continuación:

Con el token ven toda la base de datos. Accediendo a una observación, puedes encontrar sus fotos y sonidos. Por ejemplo: https://observation.org/api/v1/observations/265419876/ devuelve esto:

` HTTP 200 OK Allow: GET, HEAD, OPTIONS Content-Type: application/json Vary: Accept

{ "id": 265419876, "species": 79038, "date": "2023-03-08", "time": "11:27", "number": 1, "sex": "U", "point": { "type": "Point", "coordinates": [ -90.3171615600586, -0.69441169500351 ] },

"sounds": [
    "https://observation.org/media/sound/192346.wav"
],
"permalink": "https://observation.org/observation/265419876/"

} `

Ojo, He borrado parte de la respuesta para que no sea muy extensa.

Igualmente, si haces una consulta sobre las observaciones alrededor de un punto, te incluye info sobre si cada observación tiene o no audio. Lo que no se puede hacer es búsquedas sobre los audios desde la API.

Y yo hasta aquí llego.

Espero que esto les haya servido de ayuda, porque yo tampoco sé más ...

ajcanepa commented 9 months ago

Hola @maRce10, @Jorge-Elizondo-C ¿Han podido revisar este tema? Si es así, y ya está resuelto, para que lo cerréis el Issue y de lo contrario por saber si puedo ayudar en algo más.

Ya sabes @maRce10 que me interesa poder acceder a los registros de audio de Observation y poder analizarlos. Creo que bastante gente lo usaría. A todo esto, el curso que estás dando en este 2024 de análsis acústico con R, está abierto a todo el público?

Gracias!