<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>igayoso's life &#187; sed</title>
	<atom:link href="http://blog.igayoso.net/tag/sed/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.igayoso.net</link>
	<description>Mi vida plasmada en un blog</description>
	<lastBuildDate>Fri, 25 Sep 2009 15:08:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Script para bajar todas las canciones de ultrastar-es.org</title>
		<link>http://blog.igayoso.net/script-para-bajar-todas-las-canciones-de-ultrastar-es-org/</link>
		<comments>http://blog.igayoso.net/script-para-bajar-todas-las-canciones-de-ultrastar-es-org/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 09:33:29 +0000</pubDate>
		<dc:creator>igayoso</dc:creator>
				<category><![CDATA[Técnico]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[canciones]]></category>
		<category><![CDATA[descargar]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[jdownloader]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[mediafire]]></category>
		<category><![CDATA[plowshare]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[songs]]></category>
		<category><![CDATA[tucan]]></category>
		<category><![CDATA[ultrastar]]></category>
		<category><![CDATA[ustar]]></category>
		<category><![CDATA[ustar-es]]></category>

		<guid isPermaLink="false">http://blog.igayoso.net/?p=154</guid>
		<description><![CDATA[Debido a la aventura que me ha sido encomendada para la despedida de Coto a.k.a. &#8220;Despedida Legendaria&#8220;, 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 [...]]]></description>
			<content:encoded><![CDATA[<p>Debido a la <strong>aventura</strong> que me ha sido encomendada para la <strong>despedida de Coto </strong>a.k.a. &#8220;<a title="Post legendario" href="http://blog.igayoso.net/legendario/" target="_self">Despedida Legendaria</a>&#8220;, he tenido que <strong>bajarme</strong> todas las <strong>canciones</strong> del <strong>karaoke</strong> libre llamado <a title="WEB de UltraStar" href="http://sourceforge.net/projects/ultrastar/" target="_blank">UltraStar</a>, que hay en la <strong>WEB</strong> de <a title="WEB de UltraStar en Español" href="http://ultrastar-es.org" target="_blank">ustar-es</a>.</p>
<p>Como tenían varias formas de <strong>evitar</strong> que puedas descargar de <strong>forma automática</strong> todos estos ficheros, que a su vez están <em>hosteados</em> en <a title="WEB de MediaFire" href="http://mediafire.com" target="_blank">MediaFire</a>, he tenido que tirar de<em> curl</em> y <em>parsear</em> un montón para llegar a hacer la <strong>lista de descargas</strong>, aquí os dejo el <em>script</em> hecho en <em>bash</em>, también la lista para ejecutarlo y por último la <em>app</em> que he usado para <strong>descargar</strong> de <em>MediaFire</em>.</p>
<p>cookie=&#8221;./cookie&#8221; #Creamos una cookie para que podamos loguearnos en la WEB<br />
useragent=&#8217;Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; es-ES; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2&#8242; #Falseamos un UA y que no de mucho cante en los LOGs de la WEB<br />
sid=`awk &#8216;/sid/ { print $7}&#8217; $cookie` #Necesitamos un id que se crea con la cookie para seguir los enlaces a la descarga<br />
canciones=&#8221;$1&#8243; #Cogemos por parámetro la WEB de las canciones, en este caso será por letra y página<br />
user=&#8221;usuario_de_la_web&#8221; #Tendremos que tener un usuario/contraseña válido para hacer login<br />
passwd=&#8221;passwd_del_user&#8221;</p>
<p>echo &#8220;Haciendo Login&#8230;&#8221;<br />
#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<br />
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 &#8220;$useragent&#8221; -b ${cookie} -c ${cookie} &#8211;silent</p>
<p>echo &#8220;Pillando todas las caciones..&#8221;<br />
#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<br />
for ncancion in `curl $canciones -b ${cookie} -c ${cookie} -A &#8220;$useragent&#8221; | awk &#8216;/amp;id/ { print }&#8217; | awk &#8216;{ FS=&#8221;amp;id=&#8221;; RS=&#8221;\&#8221; title=&#8221;;  print $2 }&#8217; | grep -ve ^$`<br />
do<br />
#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.<br />
`curl -L -A &#8220;$useragent&#8221; -b ${cookie} -c ${cookie} &#8220;http://ultrastar-es.org/canciones.php?op=descargar&amp;id=$ncancion&amp;sid=$sid&#8221; | awk &#8216;FS=&#8221;&amp;quot;&#8221; { print $2 };&#8217; | grep -ve ^$  &gt;&gt; ./listado.txt `<br />
done</p>
<p>Ahora ya tentemos un <strong>fichero</strong> de texto llamado <em>listado.txt</em>, que contendrá todos los <em>links</em> de <strong>descaga</strong> de <em>MediaFire</em>. Lo que haremos ahora será usar algún <strong>programa</strong> que <strong>automatice</strong> el proceso de <strong>descarga</strong>, ya que si no tendríamos que hacerlo a mano<strong> uno por uno</strong> y no valdría para nada este <em>script</em>.</p>
<p>Después de <strong>probar</strong> <strong><a title="WEB de JDownloader" href="http://jdownloader.org/" target="_blank">JDownloader</a></strong> y no poder hacer nada porque no funcionaba muy bien el tema del <em>captcha</em>, aunque es un <em>bug</em> conocido y están reparándolo, encontré <strong><a title="WEB de Tucan" href="http://tucaneando.com/" target="_blank">Tucan</a></strong>, un proyecto español y muy <em>alpha</em>, que esta vez el error estaba a la hora de crear carpetas, que en las que incluía <em>&#8216;/&#8217;</em> daba error y cerraba el programa (he creado <a title="WEB del Bug de Tucan" href="http://urlcorta.es/60z" target="_blank">una entrada</a> en su bugtrack). Finalmente encontré <strong><a title="WEB de plowshare" href="http://code.google.com/p/plowshare/" target="_blank">plowshare</a></strong>, otro proyecto libre y español que lo hace todo desde la <strong>consola</strong>, así que finalmente me decanté por él.</p>
<p>Para <strong>instalarlo</strong>, tenéis que seguir la <a title="WEB de instalación y uso de Tucan" href="http://doc.tucaneando.com/readme.html#instalaci-n-y-uso" target="_blank">instrucciones</a> de su <strong>WEB</strong> y con el listado ya creado, ejecutar:</p>
<p>plowdown listado.txt</p>
<p>Tardará lo suyo, porque <em>MediaFire</em> limita mucho el<strong> ancho de banda</strong>, así que paciencia <img src='http://blog.igayoso.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Si tenéis alguna duda, poneros en <a title="Contacta conmigo" href="http://blog.igayoso.net/contacto/" target="_self">contacto</a> conmigo <img src='http://blog.igayoso.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="crp_related"><h3>Post relacionados:</h3><ul><li><a href="http://blog.igayoso.net/bebe-que-twittea-antes-de-nacer-kickbee/" rel="bookmark">Bebe que twittea antes de nacer - kickbee</a></li><li><a href="http://blog.igayoso.net/legendario/" rel="bookmark">Legendario</a></li><li><a href="http://blog.igayoso.net/screencast-1-iniciacion-wordpress/" rel="bookmark">Screencast #1: Iniciación Wordpress</a></li><li><a href="http://blog.igayoso.net/un-water-twitteador/" rel="bookmark">Un water twitteador</a></li><li><a href="http://blog.igayoso.net/servicio-alsa-wifi-en-supra/" rel="bookmark">Servicio Alsa WiFi en Supra</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://blog.igayoso.net/script-para-bajar-todas-las-canciones-de-ultrastar-es-org/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
