Script para bajar todas las canciones de ultrastar-es.org
Debido a la aventura que me ha sido encomendada para la despedida de Coto a.k.a. “Despedida Legendaria“, he tenido que bajarme todas las canciones del karaoke libre llamado UltraStar, que hay en la WEB de ustar-es.
Como tenían varias formas de evitar que puedas descargar de forma automática todos estos ficheros, que a su vez están hosteados en MediaFire, he tenido que tirar de curl y parsear un montón para llegar a hacer la lista de descargas, aquí os dejo el script hecho en bash, también la lista para ejecutarlo y por último la app que he usado para descargar de MediaFire.
cookie=”./cookie” #Creamos una cookie para que podamos loguearnos en la WEB
useragent=’Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; es-ES; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2′ #Falseamos un UA y que no de mucho cante en los LOGs de la WEB
sid=`awk ‘/sid/ { print $7}’ $cookie` #Necesitamos un id que se crea con la cookie para seguir los enlaces a la descarga
canciones=”$1″ #Cogemos por parámetro la WEB de las canciones, en este caso será por letra y página
user=”usuario_de_la_web” #Tendremos que tener un usuario/contraseña válido para hacer login
passwd=”passwd_del_user”
echo “Haciendo Login…”
#Con esta línea, lo que hacemos con curl es loguearnos en la WEB, que en realidad corre un foro phpBB por debajo (si no me equivoco), para ellos curl creará una cookie y cogerá las variables que hemos declarado arriba para el UA, user y password. El redirect da igual, porque en realidad no lo hará, únicamente es para crear la cookie con el login correcto
curl http://ultrastar-es.org/foro/ucp.php?mode=login -d login=Identificarse -d password=$passwd -d redirect=..//canciones.php?letra=A -d username=$user -A “$useragent” -b ${cookie} -c ${cookie} –silent
echo “Pillando todas las caciones..”
#Con el primer bucle, saco los IDs de las canciones, para luego seguir el link y que me lleve al link final de MediaFire. Para ello, uso la cookie creada anteriormente y el UA. Parseo el código de la WEB para únicamente sacar el ID
for ncancion in `curl $canciones -b ${cookie} -c ${cookie} -A “$useragent” | awk ‘/amp;id/ { print }’ | awk ‘{ FS=”amp;id=”; RS=”\” title=”; print $2 }’ | grep -ve ^$`
do
#Por último, sacando los IDs de cada canción, lo que hago es seguir el link de la WEB y que me lleve a la página de descarga de MediaFire para poder parseala. Una vez parseada, saco únicamente el link y lo meto dentro de un fichero llamado listado.txt, con él ya podré descargar todos los ficheros.
`curl -L -A “$useragent” -b ${cookie} -c ${cookie} “http://ultrastar-es.org/canciones.php?op=descargar&id=$ncancion&sid=$sid” | awk ‘FS=”"” { print $2 };’ | grep -ve ^$ >> ./listado.txt `
done
Ahora ya tentemos un fichero de texto llamado listado.txt, que contendrá todos los links de descaga de MediaFire. Lo que haremos ahora será usar algún programa que automatice el proceso de descarga, ya que si no tendríamos que hacerlo a mano uno por uno y no valdría para nada este script.
Después de probar JDownloader y no poder hacer nada porque no funcionaba muy bien el tema del captcha, aunque es un bug conocido y están reparándolo, encontré Tucan, un proyecto español y muy alpha, que esta vez el error estaba a la hora de crear carpetas, que en las que incluía ‘/’ daba error y cerraba el programa (he creado una entrada en su bugtrack). Finalmente encontré plowshare, otro proyecto libre y español que lo hace todo desde la consola, así que finalmente me decanté por él.
Para instalarlo, tenéis que seguir la instrucciones de su WEB y con el listado ya creado, ejecutar:
plowdown listado.txt
Tardará lo suyo, porque MediaFire limita mucho el ancho de banda, así que paciencia
Si tenéis alguna duda, poneros en contacto conmigo
Tags: awk, bash, canciones, descargar, how-to, jdownloader, manual, mediafire, plowshare, script, sed, songs, tucan, ultrastar, ustar, ustar-es



Septiembre 2nd, 2009 a las 13:52
virgen del amor hermoso que cosa mas pa frikis!!!
ahí ahí, levantando españa xDDDDD
un abrazu quillo
Wi®
Septiembre 14th, 2009 a las 13:16
#xfw: debe de ser el script con más uso de los últimos que hice xDD
Octubre 11th, 2009 a las 14:54
Habrá que guardarles pal futuro ya que en la pre no dio tiempo.
Enero 18th, 2010 a las 19:38
Gracias a cosas como esta estuve a punto de cerrar la web. Sois mas majos que las pesetas…
Ya he puesto un sistema para bajarlas rapidamente con jdownloader. Asi que te agradeceria que eliminases esta entrada de tu blog que ha quedado obsoleta y lo unico que me ocasiona es carga extra en el servidor, que ya va muy justito. Si las descargas estan como estan es por algo, no por joder al usuario
Salu2