Descargar fondos de escritorio desde Gnome

Este script descarga la página (index.html) que lista los fondos de escritorio del sitio gnome y recupera todas las urls relacionadas a las imágenes. Luego crea un fichero con estas urls y se lo suministra a wget, quien descarga todas las imágenes que aparecen en él. Lo he preparado para descargar solamente los fondos que tienen que ver con la categoría Naturaleza, con las resoluciones de 1024×768 y 1280×1024 y solo las imágenes nuevas. Todavía se puede mejorar más pero bueno de momento me está resolviendo.

Me gustan mucho estas fotos y generalmente me ponía a guardarlas una a una en mi estación de trabajo, hasta que un buen día decidí ahorrame el tiempo y hacer que la compu lo hiciera por mi😉 . Ahora solo ejecuto el script cuando quiero tener las fotos nuevas que han salido.

Como es un script ejecutable de bash podemos ponerlo en el cron del sistema para que se ejecute a una hora determinada automáticamente y ahorrarnos aun más tiempo🙂.

Seguramente han pensado que bien pude utilizar lftp o el mismo wget para hacer esto, sin necesidad de un script. Pero las urls no vienen claramente disponibles para estas aplicaciones (al menos no me parecio así).

Con wget y la opción -A podríamos hacer un intento pero lamentablemente no funciona porque las imágenes no vienen claramente definidas en la url (ej. http://art.gnome.org/backgrounds/gnome/1952 ).

Podríamos ir un poco más allá y captar la dirección a la que hace referencia cada una de las fotos, y que al hacer click en una de ellas se nos muestra la foto en el navegador. Esa es la url que necesitamos recuperar para todas las imágenes y la que wget entiende claramente.

Así que si tenemos la foto: http://ftp.gnome.org/pub/GNOME/teams/art.gnome.org/backgrounds/NATURE-SunsetAtLakeBalaton_1024x768.png

y dejamos la url en:

http://ftp.gnome.org/pub/GNOME/teams/art.gnome.org/backgrounds/

obtendremos una lista de todas las imágenes que aparecen. Ese es el lugar donde se almacenan las fotos de los fondos de escritorios y que se muestran organizadas en la página de gnome.

Le apliqué un wget con la opcion -A.png a esta última url y no me funcionó, estuve haciendo otras pruebas y nada. Me dió la impresión que la forma en que se representaban los enlaces a las fotos no venían de forma absoluta. Miré el código fuente de la página y efectivamente, solo viene el nombre de la foto con su extensión. wget necesita una url para descargar no un nombre solamente, por un momento pensé que wget armaba la url pero el caso fue que no me funcionó. De esta forma decidí descargar la página completa y luego parsearla con el comando sed para recuperar los nombres de las imágenes y luego anteponerle la url del sitio. Así surgió este script.

Es muy posible que esté completamente equivocado sobre wget. Si conocen otras formas de lograr esto me gustaría saberla.

El script:

#!/bin/bash
#
# Busca nombres de fichero en un fichero.
# Construye url de descarga.
# Almacena urls en un fichero
# Realiza descarga de las urls actualizando directorio.

Path=/home/al4in/imgs/gnome-desktops/
FileIndex=index.html
ImagesDir=imgs/
Url='http://ftp.gnome.org/pub/GNOME/teams/art.gnome.org/backgrounds/'
WgetOpts='-nc -b '
ImageModes='1024x768 1280x1024'
ImageType='NATURE'

cd $Path

# Actualizamos fichero index.html
if [ -f ${FileIndex} ];then
        echo 'Borrando fichero '${FileIndex} '...';
        rm ${FileIndex};
fi

# Descargamos fichero index.html con todos los nombres
echo 'Descargando fichero '$FileIndex '...';
wget $Url;

# Rectificamos existencia del fichero Index
if [ ! -f $FileIndex ]; then
        exit;
fi

# Escapamos Url
Url=`echo $Url | sed -r 's/\//\\\\\//g'`

# Creamos Directorio
if [ ! -d $Path$ImagesDir ];then
        mkdir $Path$ImagesDir
fi

# Buscamos Imagenes y salvamos resultado a disco
grep 'png' $FileIndex | grep 'NATURE' | sed -r 's/^<a href="//' | sed -r 's/">.*$//' | grep '1024x768' | sed -r "s/^/$Url/" > ${Path}${ImagesDir}imgs.url

# Descargamos Ficheros
cd $Path$ImagesDir
wget $WgetOpts -i imgs.url

El proceso de descarga queda registrado en el directorio donde se descargan las imágenes (imgs/) en los ficheros wget.log.N. Donde N = un número de veces que se le suministra el fichero imgs.url a wget para descargar las urls.

Podemos ver el progreso con el comando:

tail -f imgs/wget.log.N

suponiendo que estamos ubicados en el directorio desde el cual ejecutamos el script.

Después de esto las imágenes se irán almacenando en el directorio imgs/. Se archivarán las urls utilizadas y los logs de descarga.

2 respuestas a Descargar fondos de escritorio desde Gnome

  1. solange dice:

    la verdad es qe no veo ningun fondo esto es una gran garchera……………

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: