miércoles, septiembre 21, 2005

Los peligros del porno

Hoy he rescatado el script que El Sucio nos brindó en un fantástico alarde de ingenio hace ya algunas semanas, a saber el siguiente:


#!/bin/bash
#Recuperamos la lista de páginas con vídeos
lista=`wget -q -O - http://www.petardas.com/videos | grep "pagina=http://" | sed -e 's/.*pagina=\(.*\)><img.*img.*/\1/'`
i=0

for url in $lista
do
mkdir $i
wget --recursive --accept="*.mpg,*.avi,*.wmv" -nd -q -P $i -l 1 $url
echo -n .
i=`expr $i + 1`
done


Le estaba dando una lección de scripting a unos compañeros en la universidad, demostrando las múltiples virtudes de este producto sin par, pero notábamos que iba demasiado lento, a pesar de tener un canuto más que considerable en la universidad ¿cómo podíamos superar ese escollo? Con la versión paralela:


#!/bin/bash
#Recuperamos la lista de páginas con vídeos
lista=`wget -q -O - http://www.petardas.com/videos | grep "pagina=http://" | sed -e 's/.*pagina=\(.*\)><img.*img.*/\1/'`
i=0

for url in $lista
do
mkdir $i
wget --recursive --accept="*.mpg,*.avi,*.wmv" -nd -q -P $i -l 1 $url &
echo -n .
i=`expr $i + 1`
done


Añadiendo un simple ampersand al final de una línea conseguimos explotar toda la capacidad de bajada que nos ofrecía nuestra red, llegando a bajar 200 MB en unos segundos. Por desgracia, el ordenador no aguantaba tanta tralla y se colapsaba al rato, seguramente porque el /tmp donde estábamos dejando el material sólo tenía unos 500 MB de espacio libre.

Ahora estamos pensando en usar OpenMosix para distribuir la carga computacional y un sistema de ficheros paralelo y distribuido o un RAID1 para almacenar todos los datos... seguiremos informando desde HPPC (High Performance Porn Computing).

7 comentarios:

Pesso dijo...

Asi se produce el avance tecnologico: Surge una necesidad y se soluciona. Cuando esta solucionado se plantea si se puede hacer mejor.

Esto me lleva a reiterar que se echan de menos esos curris. A ver si se anima el dream team, sobre todo ahora que el sucio tiene donde vender la idea.

Anónimo dijo...

Uhm, gran comando wget, de su página de manual:

-b
--background
Go to background immediately after startup. If no output file is
specified via the -o, output is redirected to wget-log.

En cuanto al control de procesos desbocados tienes varias soluciones, quizas lo mas simple sea que antes de lanzar otro wget compruebes el numero de wgets activos con algo asi como "ps a|grep wget|wc -l", y si es mayor del limite esperas un par de segundos antes de volver a comprobar.

--
Jorge Nerin

fortran dijo...

La leche... Jorge Nerin nunca deja de sorprendernos! :-D

la solución provisional que teníamos era limitar la velocidad de descarga con --limit-bandwith
otra idea que se me había ocurrido es volcar la lista de urls a un archivo, dividirlo con split y luego lanzar un wget -i para cada parte... aunque para balancear bien la carga al final supongo que habría que controlar el número de procesos que se lanzan en función del ancho de banda consumido, y eso me parece que es demasiado sofisticado para lo que queremos.

fortran dijo...

por cierto, que me he confundido con el nivel RAID, el 1 es simplemente duplicar la información en dos discos, para el caso los que interesaban eran del 4 para arriba...

Anónimo dijo...

Nada tio, yo creo que lo que mas problemas te da en esta situacion es el numero de procesos, asi que apostaria por tener entre 6 y 10 (dependiendo del ancho de banda de las petardas) y sin limitaciones de ancho de banda.

Con lo que quedaria:

#!/bin/bash
#Recuperamos la lista de páginas con vídeos
lista=`wget -q -O - http://www.petardas.com/videos | grep "pagina=http://" | sed -e 's/.*pagina=\(.*\)><img.*img.*/\1/'`
i=0

for url in $lista
do
salir = 0
until [ $salir = 1 ]
do
if [ `ps a|grep wget|wc -l` -lt 6 ] ; then
mkdir $i
wget -b --recursive --accept="*.mpg,*.avi,*.wmv" -nd -q -P $i -l 1 $url
echo -n .
i=`expr $i + 1`
salir = 1
else
sleep 5
fi
done
done


A disfrutar.

--
Jorge Nerin

el sucio dijo...

Me gusta tu estilo Jorge Nerin, me gusta. Pensaba que el asunto del script para porno aguntaría más en la recámara; tendré que finalizar la versión mejorada que comencé tras las quejas del burgués administrador de este blog ;-)

Sobre los límites, yo no me preocuparía. Mi solución, cuando se trata de porno, es esperar a que aumente el canuto, siempre.

Que conste que a mi los vídeos no me van mucho, no ofrecen argumento. Habría que preguntar al público: fotos, vídeos cortos, historias, dibujos, fakes, ¿otros?.

Sor prendido dijo...

¿Que no tienen argumento? Pero tu has visto anal addicts IV. Aun estoy rallado. No se si quieren implicar a Peter en el asesinato o es que tiene mala memoria.