#!/usr/bin/perl

#--------------------------------------------------------------------
# Fichero:  ecm.pl
# Objetivo: Extraer del cache de Mozilla imágenes grandes
# Autor:    Pedro Reina <pedro@pedroreina.net>
# Fecha:    J.13.5.2004
#--------------------------------------------------------------------

#---------------------------------
# Declaración de módulos
#---------------------------------

use Image::Size;
use File::Copy;

#---------------------------------
# Variables para personalizar
# el programa a tu entorno
#---------------------------------

# Directorio caché de Mozilla. Puedes saber cuál es escribiendo
# en la barra de dirección de Mozilla about:cache
$DirectorioCache = "/home/-----/.mozilla/-----/-----/Cache/";

# Directorio en el que deseas copiar las imágenes
$DirectorioDestino = "/home/-----/tmp/";

# Dimensiones mínimas para copiar una imagen
$MinAnchura = 150;
$MinAltura  = 150;

#---------------------------------
# Declaración de variables
#---------------------------------

$i = 0;                  # Indice
$Anchura = 0;            # Anchura
$Altura  = 0;            # Altura
$Total = 0;              # Total de archivos en cache
$Numero = 1;             # Número de imagen recuperado
$Nombre = "";            # Nombre de un archivo en cache
$NombreCompleto = "";    # Directorio + nombre en cache
$NombreFinal = "";       # Directorio destino + nombre
@Listado;                # Lista de archivos en cache

#---------------------------------
# Programa principal
#---------------------------------

# Presentación
print "\necm";
print "\n====";

print "\nDirectorio de la cache: $DirectorioCache";
print "\nDirectorio destino: $DirectorioDestino";
print "\nAnchura mínima: $MinAnchura";
print "\nAltura mínima : $MinAltura";

# Abrimos el directorio cache
opendir (CACHE, $DirectorioCache);

# Leemos su contenido
@Listado = readdir (CACHE);

# Y cerramos el directorio
closedir (CACHE);

# Vemos cuántos archivos hay
$Total = @Listado;
print "\nNúmero de archivos : $Total";

# Nos preparamos para copiar
print "\nCopiando: ";

# Estudiamos cada archivo
for ( $i = 0 ; $i < $Total ; ++$i )
  {
  $Nombre = $Listado[$i];
  $NombreCompleto = $DirectorioCache . $Nombre;

  # Vemos qué tipo de archivo es
  $Tipo = qx (file $NombreCompleto);

  # Si es JPEG, nos interesa
  if ( $Tipo =~ /JPEG/ )
    {
    # Vemos el tamaño que tiene
    ($Anchura, $Altura) = imgsize($NombreCompleto);

    # Si es grande, lo guardamos
    if ( ($Anchura > $MinAnchura) && ($Altura > $MinAltura) )
      {
      # Informamos al usuario
      print "$Numero ";
      $Numero++;

      # Preparamos un nombre nuevo
      ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
      $atime,$mtime,$ctime,$blksize,$blocks)
        = stat($NombreCompleto);
      $NombreFinal = $DirectorioDestino . $mtime . ".jpg";

      # Copiamos el archivo
      copy ($NombreCompleto, $NombreFinal);
      }
    }
  }

# Despedida
print "\nTerminado\n";
