Dom Jul 27, 2008 9:34 am
|
 |
lis
Perlero Nuevo

|
Registrado: 27 May 2008
Mensajes: 29
|
|
| Descargar muchas imágenes |
|
|
Hola a todos, tengo el siguiente script:
| Perl: | #!/usr/bin/perl -w
use strict;
use Image:: Grab;
my $img = new Image:: Grab;
$img-> url('http://www.ncdc.noaa.gov/gibbs/image/GOE-12/IR/2004-01-01-00');
$img-> grab;
#Salvamos la imagen al disco
open(IMAGEN, ">2004-01-01-00.jpg") || die"No se pudo crear archivo: $!";
print IMAGEN $img-> image;
close IMAGEN; |
Esto está bien ya que me descarga la imagen, pero yo quiero descargar las imágenes de un año entero, y hago un ciclo for y no me reconoce nada.
Si tienen alguna sugerencia se los agradezco mucho. |
|
|
|

Dom Jul 27, 2008 10:15 am
|
 |
lis
Perlero Nuevo

|
Registrado: 27 May 2008
Mensajes: 29
|
|
|
|
|
Hola. También tengo este script:
Es mucho más largo pero solo a modo de ejemplo, solo copié para el mes de enero. Este script me descarga las imágenes y las puedo ver. El problema es que me las baja sin formato (ya sea .jpg o .jpeg).
Ayúdenme, por favor y muchas gracias. |
|

Dom Jul 27, 2008 1:52 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4142
Ubicación: Valladolid, España
|
|
|
|
|
Yo veo varios problemas:
* El primer if está mal. No estás haciendo una comparación, sino una asignación, por lo que siempre se ejecutará $mes = 1
* Me sobra una llave de apertura y una llave de cierre
Otros detalles:
* Si usas Perl como si fuera un script shell, casi mejor usa un script shell.
En cuanto al programa, se puede simplificar mucho, ya que las direcciones a las imágenes son fácilmente reproducibles.
Esta es mi solución:
| Perl: | #!/usr/bin/perl
#
# Descripción:
# Bajar las imágenes de infrarojo del satélite GOES
# para un año determinado, desde la web de NOAA.
# Se añade la extensión '.jpg' a los ficheros bajados.
# Antes de bajar un fichero, se comprueba que no haya sido bajado antes.
#
# Argumentos
# El año se pasa como primer argumento.
#
# Joaquín Ferrero, julio 2008.
#
use LWP:: Simple;
use strict;
use warnings;
# Constantes
my $URL_BASE = 'http://www.ncdc.noaa.gov/gibbs/image/GOE-12/IR';
my $IMG_FMT = '%04d-%02d-%02d-%02d';
$|++;
# Año de bajada
if ( ! @ARGV ) {
die "Uso: $0 <año a bajar>\n";
}
my $anno = $ARGV[0];
if ( $anno < 100 ) {
$anno += 2000;
}
# Bajar los imágenes
foreach my $mes ( 1 .. 12 ) {
foreach my $dia ( 1 .. 31 ) {
foreach my $hora ( 0, 3, 6, 9, 12, 15, 18, 21 ) {
my $imagen = sprintf $IMG_FMT, $anno, $mes, $dia, $hora;
print "Bajando fichero $imagen... ";
mirror ( "$URL_BASE/$imagen", "$imagen.jpg" );
print "Ok\n";
}
}
} | La salida es:
| Código: |
explorer@portatil:~/Documents/Desarrollo> ./ir_goes.pl
Uso: ./ir_goes.pl <año a bajar>
explorer@portatil:~/Documents/Desarrollo> ./ir_goes.pl 2004
Bajando fichero 2004-01-01-00...
Bajando fichero 2004-01-01-03...
Bajando fichero 2004-01-01-06...
Bajando fichero 2004-01-01-09...
Bajando fichero 2004-01-01-12...
Bajando fichero 2004-01-01-15... |
|
|

Powered by phpBB © 2001, 2005 phpBB Group
|