Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
[SOLUCIONADO] API AEMET
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje [SOLUCIONADO] API AEMET 
 
¿Alguien tiene experiencia con este asunto?

Por lo que deduzco, hay que conectar con:
<php> "https://opendata.aemet.es/opendata/api/valores/climatologicos/inventarioestaciones/todasestaciones/?api_key=jyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJqbW9udGVyb2dAYWVtZXQuZXMiLCJqdGkiOiI3NDRiYmVhMy02NDEyLTQxYWMtYmYzOC01MjhlZWJlM2FhMWEiLCJleHAiOjE0NzUwNTg3ODcsImlzcyI6IkFFTUVUIiwiaWF0IjoxNDc0NjI2Nzg3LCJ1c2VySWQiOiI3NDRiYmVhMy02NDEyLTQxYWMtYmYzOC01MjhlZWJlM2FhMWEiLCJyb2xlIjoiIn0.xh3LstTlsP9h5cxz3TLmYF4uJwhOKzA0B6-vH8lPGGw",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}


El ejemplo es php de ejemplo de la AEMET.

La consulta adecuada de la API está ya incluida en el código. En el párrafo anterior se solicita el inventario de estaciones pero se podría solicitar la climatología diaria con:
/api/valores/climatologicos/diarios/datos/fechaini/{fechaIniStr}/fechafin/{fechaFinStr}/estacion/{idema}


¿Alguna experiencia? ¿Alguna idea de cómo implementarlo?
 



 
última edición por Grandamakulo el Jueves, 22 Marzo 2018, 21:53; editado 2 veces 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: API AEMET 
 
Grandamakulo:
Citar:
¿Alguien tiene experiencia con este asunto?

No, pero ... ¿has pedido tu key?
https://opendata.aemet.es/centrodedescargas/obtencionAPIKey

Y hay unas especificaciones en :
https://opendata.aemet.es/dist/inde...nes-especificas

Pero dependerá mucho de lo que quieras hacer... (hay un monton de predicciones, observaciones, red de contaminación, etc..)

Citar:
¿Alguna idea de cómo implementarlo?

En la siguiente página hay un monton de ejemplos en varios lenguajes:
https://opendata.aemet.es/centrodedescargas/ejemProgramas?

No deberia de ser dificil, vuott, puso en este enlace
https://foro.gambas-es.org/viewtopic.php?f=1&t=6865&highlight=
un ejemplo de como extraer datos de una web, usando la clase httpclient
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Martes, 13 Marzo 2018, 20:02; editado 3 veces 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: API AEMET 
 
Sí, tengo la clave. Sí, he mirado las especificaciones. Sí, he visto los ejemplos     .El problema es la traducción del ejemplo a Gambas3. Voy a probar con lo que me comentas del ejemplo de @Vuott .
¡Muchas gracias!
 



 
última edición por Grandamakulo el Martes, 13 Marzo 2018, 20:10; editado 1 vez 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: API AEMET 
 
Un documento de "preguntas frecuentes" que te puede aclarar muchas cosas:
https://opendata.aemet.es/centrodedescargas/docs/FAQs150217.pdf
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: API AEMET 
 
Gracias por la información @jsbsan; éste no lo había visto.

Vale, he cogido la «curl» del ejemplo (aquí la he puesto un poco bonita, pero hay que quitar los saltos de línea):

curl -X GET
--header 'Accept: application/javascript'
--header 'api_key: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJjYWxlbmRhcmlvQGFzdHJvZGFpbWllbC5lcyIsImp0aSI6ImFjYjgyZWI1LTViNjgtNDdiZi05MjMzLTUxYjdmYTZjYmYzYSIsImlzcyI6IkFFTUVUIiwiaWF0IjoxNTIwOTY0ODQ1LCJ1c2VySWQiOiJhY2I4MmViNS01YjY4LTQ3YmYtOTIzMy01MWI3ZmE2Y2JmM2EiLCJyb2xlIjoiIn0.yTXK95LZ8Z0jxBx6ddM0lzZUYBBKPtzN56G6ENrPIgA'

'https://opendata.aemet.es/opendata/api/valores/climatologicos/diarios/datos/fechaini/2018-03-01T00%3A00%3A00UTC/fechafin/2018-03-09T00%3A00%3A00UTC/estacion/4121'
 


Y lo he pasado a gambas3:

' gambas module file
Public Const APIKEY As String = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJjYWxlbmRhcmlvQGFzdHJvZGFpbWllbC5lcyIsImp0aSI6ImFjYjgyZWI1LTViNjgtNDdiZi05MjMzLTUxYjdmYTZjYmYzYSIsImlzcyI6IkFFTUVUIiwiaWF0IjoxNTIwOTY0ODQ1LCJ1c2VySWQiOiJhY2I4MmViNS01YjY4LTQ3YmYtOTIzMy01MWI3ZmE2Y2JmM2EiLCJyb2xlIjoiIn0.yTXK95LZ8Z0jxBx6ddM0lzZUYBBKPtzN56G6ENrPIgA"

Private myhttp As New HttpClient As "myhttp"

Public Sub Main()
  Dim Cabeceras As New String[2]
  
  'Private myhttp As New HttpClient As "myhttp"
  myhttp.URL = "https://opendata.aemet.es/opendata/api/valores/climatologicos/diarios/datos/fechaini/2018-03-01T00%3A00%3A00UTC/fechafin/2018-03-09T00%3A00%3A00UTC/estacion/4121"
  Cabeceras[0] = "Accept: application/javascript"
  Cabeceras[1] = "api_key: " & APIKEY
  myhttp.Get(Cabeceras, "/tmp/Pru.txt")
End


No da error, pero el archivo de salida está vacío. ¿Alguna sugerencia?
 



 
última edición por Grandamakulo el Miercoles, 14 Marzo 2018, 08:44; editado 2 veces 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: API AEMET 
 
Ni idea amigo , esperate a ver si algun usuario de los que saben de programación te lo mira.
Veo que es tema de php , algo que nunca toque.

Saludos.
 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: API AEMET 
 
Creo que el problema es el formato de las cabeceras, que en cada ejemplo tiene uno distinto. La documentación de gambas no indica cuál debe ser este formanto, ni tan siquiera pone un ejemplo. Me temo que sí, que hay que esperar a que alguien que conozca el formato adecuado nos lo indique.

 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: API AEMET 
 
Grandamakulo:

He estado probando el ejemplo que viene del lenguaje "Shell", usando el comando curl.

El problema es que la página web tiene el certificado de seguridad (https) caducado (o algo le pasa), que hace que curl de el siguiente error:

Citar:
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.




Entonces lo que hay que hacer es añadir el parametro "--insecure" al final de la linea de comando:
curl --request GET --url 'https://opendata.aemet.es/opendataapi/valores/climatologicos/inventarioestaciones/todasestaciones/?api_key=AquiPonTuKEY' --header 'cache-control: no-cache' --insecure


Esto te va a devolver una salida parecida a esto:
{
  "descripcion" : "exito",
  "estado" : 200,
  "datos" : "https://opendata.aemet.es/opendata/sh/f26e7dbd",
  "metadatos" : "https://opendata.aemet.es/opendata/sh/0556af7a"
}


Los datos que necesitas, los tienes que descargar de https://opendata.aemet.es/opendata/sh/f26e7dbd
 (que podrás usar curl y el parametro --insecure otra vez osea:
curl --url 'https://opendata.aemet.es/opendata/sh/f26e7dbd' --insecure >datos.txt

), donde el archivo datos.txt tiene los datos que se han generado.

Nota:
La direccion que te dan de los datos ("https://opendata.aemet.es/opendata/sh/f26e7dbd"), caduca a los pocos minutos,  sino lo haces acontinuación, te dará una salida como esta:
Citar:
{
  "descripcion" : "datos expirados",
  "estado" : 404
}


Si todo va "bien", la salida que obtienes del ejemplo es algo parecido a esto:
Citar:

[ {
  "latitud" : "431825N",
  "provincia" : "A CORUїA",
  "altitud" : "98",
  "indicativo" : "1387E",
  "nombre" : "A CORUїA AEROPUERTO",
  "indsinop" : "08002",
  "longitud" : "082219W"
}, {
  "latitud" : "432157N",
  "provincia" : "A CORUїA",
  "altitud" : "58",
  "indicativo" : "1387",
  "nombre" : "A CORUїA",
  "indsinop" : "08001",
  "longitud" : "082517W"
}, {
  "latitud" : "430938N",
  "provincia" : "A CORUїA",
  "altitud" : "50",
  "indicativo" : "1393",
  "nombre" : "CABO VILAN",
  "indsinop" : "08006",
  "longitud" : "091239W"
....
....

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: API AEMET 
 
Lo del formato de salida y la segunda consulta más o menos lo tenía claro. Ahora lo que me toca es explorar  «--insecure», a ver cómo narices lo pongo en la consulta con la clase httpclient, o bien hago una consulta curl directamente con Exec.
¡Muchas gracias!
 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: API AEMET 
 
Vislumbro un Jarvis del clima tal vez??
Le podriamos poner Gambux

Gambux, ¿Que temperatura hace en Madrid?

>>>Enseguida señor

[luego aca todo el rollo de este post y zas !!]

>>>Hace 35º ideal para tomarse una caña!

En el caso de Vuott hay que poner birra.

Saludos.
 



 
última edición por tincho el Miercoles, 14 Marzo 2018, 13:50; editado 1 vez 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Problema Con Datediff SOLUCIONADO desoljor Aplicaciones/Fragmentos de Código 5 Viernes, 18 Abril 2014, 12:24 Ver último mensaje
desoljor
No hay nuevos mensajes Input [SOLUCIONADO] Shell General 1 Miercoles, 16 Julio 2014, 20:23 Ver último mensaje
Shell
No hay nuevos mensajes Caracteres De Url [SOLUCIONADO] shordi General 4 Lunes, 23 May 2016, 22:28 Ver último mensaje
vuott
No hay nuevos mensajes Idioma Del Ide [SOLUCIONADO] ahtonio Instalación 12 Martes, 11 Septiembre 2018, 23:41 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron