• Publicidad

Descargar muchas imágenes

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

Descargar muchas imágenes

Notapor lis » 2008-07-27 10:34 @482

Hola a todos, tengo el siguiente script:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/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;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


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.
lis
Perlero nuevo
Perlero nuevo
 
Mensajes: 106
Registrado: 2008-05-27 21:43 @946

Publicidad

Notapor lis » 2008-07-27 11:15 @510

Hola. También tengo este script:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w

#ENERO
if ($mes=1) {
    for ($dia=1;$dia<=9;$dia++) {
        for ($hora=0; $hora<=9; $hora=$hora+3) {
            my $content =`wget  http://www.ncdc.noaa.gov/gibbs/image/GO ... dia-0$hora`;
        }
    }

    for ($dia=10;$dia<=31;$dia++) {
        for ($hora=0; $hora<=9; $hora=$hora+3) {
            {
                my $content =`wget  http://www.ncdc.noaa.gov/gibbs/image/GO ... dia-0$hora`;
            }
        }
    }

    system "(mv 2004-0$mes* 0$mes)";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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.
lis
Perlero nuevo
Perlero nuevo
 
Mensajes: 106
Registrado: 2008-05-27 21:43 @946

Notapor explorer » 2008-07-27 14:52 @661

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:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/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";
        }
    }
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
La salida es:
Código: Seleccionar todo
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...
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


Volver a Básico

¿Quién está conectado?

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