debug_mode=ON

Buscar en

 
 

Descargando la música de GoEar.com

Escrito por Davemm hace 1 años bajo una licencia de Creative Commons Creative Commons License
7509 visitas. Etiquetas: simplexml, goear, musica, php

Image Alt Text

- ESTE ARTICULO ES CON FINES EDUCATIVOS -

GoEar es un sitio que alguno consideran *El YouTube de la Música*, pero cabe mencionar que no tiene nada que ver con YouTube. Esta comparación surge a que GoEar funciona al mismo estilo de YouTube; puedes buscar música, escucharla desde la web, puedes subir tus propias canciones; compartir los enlaces, incrustar un reproductor de alguna canción en tu web, etc.

Bueno, yo usualmente utilizaba el servicio de DownMusic para descargar la música de GoEar, pero, debido a algunos cambios que realizo GoEar, esta y muchas otras páginas y programas para descargar la música dejaron de funcionar. Así que, decidí mirar el código fuente de las páginas de GoEar, para ver si por ahí se miraba donde se alojan las canciones, y me encontré con lo siguiente:

Tomando como base la siguiente canción: http://www.goear.com/listen.php?v=254f84d

El Reproductor de GoEar

Image Alt Text

El reproductor de las canciones, ubicado en http://www.goear.com/ files/local.swf recibe como parámetro la variable file, cuyo valor es el ID de la canción que estamos escuchando.

El ActionScript

Seguido de esto, decidí descargarme el reproductor y mirar un poco; lo que me interesaba era el ActionScript, así que una búsqueda rápida en Google me llevo a un software llamado Flare, el cual extrae únicamente el ActionScript de cualquier archivo SWF. Mirando entre las 741 líneas del código del reproductor, me encontré con esto:

Image Alt Text

Archivos XML

Todo es tan sencillo, el reproductor lee un archivo XML de donde obtiene la información que necesita. El archivo XML en concreto para nuestra canción de ejemplo sería:

my_str = "254f84d";
mySubstring = "2";
data_xml.load('files/xmlfiles/2/secm254f84d.xml');

Y tenemos .... http://www.goear.com/files/xmlfiles/2/secm254f84d.xml

Al mirar el archivo XML, me di cuenta del "secreto" para descargar las canciones, y de la infinidad de formas en las que se podría hacer un script o programa al cual simplemente le dieras el enlace o el ID de la canción en GoEar y este te descargara la canción.

PHP + SimpleXML

Como yo soy "fan" de las aplicaciones web, decidí hacerme mi propio script en PHP usando SimpleXML para procesar el archivo XML:

<?php
    # listen.php

    if($_GET['v']) {
        $my_str = $_GET['v'];
        $mySubstring = substr($my_str, 0,1);
        $load = 'files/xmlfiles/'.$mySubstring.'/secm'.$my_str.'.xml';

        # Leer el XML
        $xml = @simplexml_load_file('http://www.goear.com/'.$load);

        if ($xml) {
            $path = $xml->song['path'];
            $artist = $xml->song['artist'];
            $title = $xml->song['title'];			
            $name = $artist.' - '.$title.'.mp3';

            # Descargar
            header('Content-type: audio/mpeg');
            header('Content-Disposition: attachment; filename="'.$name.'"');
            $file = fopen($path, 'r');
            fpassthru($file);

        } else {
            echo 'Error al leer el archivo XML';
        }
    }
?>

Para usar el script, reemplazaríamos www.goear.com en la URL, por el "lugar" donde lo hayamos alojado, en mi caso:

 http://www.goear.com/listen.php?v=254f84d 
por  http://localhost/listen.php?v=254f84d 

El resultado:

Image Alt Text

Estoy pensando que sería mejor llevar esto a una aplicación de escritorio, donde le puedas dar una lista de URLs de GoEar y te descargue todas las canciones ...ya veré si en estos días lo hago.

Saludos.

 

¡Votalo! 3 votos
¡Compártelo!

        

&nbps;

&nbps;

Davemm

Sobre Davemm

Blogger en Tecnolack: http://www.tecnolack.com

 
Regístrate o haz login para participar.
¿Todavía no conoces debugmodeon?
debugmodeon es la red social para profesionales de la informática
descubre debugmodeon
 

1 comentarios en "Descargando la música de GoEar.com"

danilat
danilat escribió
hace 7 meses

#1   

Como curiosidad, he hecho un port de tu código a un script con groovy, la única diferencia es que se ejecuta en consola y que se le pueden pasar N ids:

import groovy.util.XmlParser
args.each{ id ->
    def songs = new XmlParser().parse("http://www.goear.com/files/xmlfiles/${id[0]}/secm${id}.xml")
    def song = songs.song[0]
    def mp3 = song.'@path'
    def name = (song.'@artist'+"_"+song.'@title').replaceAll(" ","_")
    def file = new File("/path-a-un-directorio/${id}-${name}.mp3").newOutputStream()  
    file << new URL(mp3).openStream()  
    file.close()
    println "${name} has been downloaded"
}

 
 
 
 

© Copyright 2008-2009 debug_mode=ON | Aviso legal | Contacto | FAQ | ¿Quiénes somos? |