• Publicidad

Instalar y ejecutar módulo

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Instalar y ejecutar módulo

Notapor explorer » 2014-06-21 00:42 @071

¿Seguro que es el mismo código? Según la segunda captura, tienen tamaño distinto.

Compara las dos versiones. Si aun así no ves las diferencias, publica aquí el código del programa, a ver si vemos el error.

En cuanto a lo de la clave de acceso a la API, necesitas solicitar una clave para que el programa pueda acceder a la API de esa web. Más información aquí (resumen).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Re: Instalar y ejecutar módulo

Notapor 19ctrj88 » 2014-06-21 00:53 @079

Como diga, señor.

Se encuentra en este enlace:

http://search.cpan.org/~avenj/Weather-O ... therMap.pm

*******************************************************************

use Weather::OpenWeatherMap;

my $api_key = 'foo';

my $wx = Weather::OpenWeatherMap->new(
api_key => $api_key,
);

# Current conditions:
my $current = $wx->get_weather(
location => 'Manchester, NH',
);
my $tempf = $current->temp_f;
my $wind = $current->wind_speed_mph;
# (see Weather::OpenWeatherMap::Result::Current)

# Forecast conditions:
my $forecast = $wx->get_weather(
location => 'Manchester, NH',
forecast => 1,
days => 3,
);
for my $day ($forecast->list) {
my $date = $day->dt->mdy;
my $temp_lo = $day->temp_min_f,
my $temp_hi = $day->temp_max_f,
# (see Weather::OpenWeatherMap::Result::Forecast::Day)
}
# (see Weather::OpenWeatherMap::Result::Forecast)

# Find a city:
my $search = $wx->get_weather(
location => 'Manchester',
find => 1,
max => 5,
);
for my $place ($search->list) {
my $region = $place->country;
# ...
}
# (see Weather::OpenWeatherMap::Result::Find)

********************************************************
19ctrj88
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2014-06-20 18:52 @828

Re: Instalar y ejecutar módulo

Notapor explorer » 2014-06-21 01:18 @096

Como dice en la página de manual de Weather::OpenWeatherMap, de donde sacaste el código, tienes que registrarte en la web de OpenWeatherMap para poder obtener una clave API, y luego ponerla en el código, en el lugar donde pone 'foo'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Instalar y ejecutar módulo

Notapor 19ctrj88 » 2014-06-21 01:46 @115

¡Qué mala suerte...! Todavía no me devuelve nada...

En lugar de 'foo' puse la clave y no pasa nada.

La puse con comillas simples, dobles, etc... Y nada :(

¿Qué puede estar pasando?
19ctrj88
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2014-06-20 18:52 @828

Re: Instalar y ejecutar módulo

Notapor explorer » 2014-06-21 09:21 @431

Pues... no lo sé... si no salen mensajes de error, poco podemos hacer.

Pero, podemos investigar.

A través de la página de la distribución llegamos a que hay una carpeta de ejemplos. En ella hay tres programas de ejemplo. En uno de ellos veo cómo mostrar en pantalla los errores, para saber qué pasa si algo anda mal:

die "Error: " . $wx->error unless $wx->is_success;

Esta línea la debes poner después de la línea del new(), otra copia detrás de la del get_weather(). Si ocurre un error, saldrá en pantalla.

Otra cosa... He leído en la página de OpenWeatherMap que solo se puede hacer una petición de temperatura cada diez minutos, y por dispositivo, para evitar abusos (y por que además, la temperatura no suele cambiar tanto). En cuanto veas el primer resultado, deberás esperar ese tiempo para hacer la siguiente consulta.

Otra cosa que veo en los ejemplos es que se puede intentar hacer una petición sin envío de la clave API. Échales un vistazo.

Yo me he instalado el módulo, y he copiado uno de los ejemplos y lo he modificado así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strictures 1;
  3.  
  4. use Weather::OpenWeatherMap;
  5.  
  6. #my $location = shift @ARGV || die "No location specified\n";
  7. my $location = 'Valladolid, ES';
  8. #my $api_key  = shift @ARGV;
  9. my $api_key;
  10.  
  11.  
  12. warn "Attempting to continue without API key\n" unless $api_key;
  13.  
  14. my $result =
  15.   Weather::OpenWeatherMap->new(
  16.       ( $api_key ? (api_key => $api_key) : () )
  17.   )
  18.     ->get_weather(
  19.         location => $location,
  20.     );
  21.    
  22. die "Error: ".$result->error unless $result->is_success;
  23.  
  24. my $place = $result->name;
  25. my $temp  = $result->temp_c;
  26. my $wind  = $result->wind_speed_kph;
  27. my $direc = $result->wind_direction;
  28.  
  29. print "$place -> ${temp} C wind ${wind} kph $direc\n";
  30.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
He modificado las líneas de $location y $api_key para que, en lugar de pasarlos como argumentos, los escribo directamente en el programa. He puesto 'Valladolid, ES' para la posición, y nada para la clave de la API (por hacer una prueba). También cambié (por intuición) el nombre del método temp_f() por temp_c(), y el de wind_speed_mph() por wind_speed_kph(), a ver si hay suerte y devuelve los datos en el sistema internacional de unidades.

Lo he grabado y ejecutado, y sale esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ perl weather.pl
  2. Attempting to continue without API key
  3. Valladolid -> 25 C wind 6 kph SW
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Y sí... ha funcionado.

Los nombres de los métodos que puedes usar debes consultarlos en la documentación de la API de OpenWeatherMap.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados