domingo, 12 de febrero de 2012

Descargar mi Música de Google Music

Bueno, el primer script ya quedo listo, como les dije en el post anterior, este es para descargar la música propia por lotes o por como ustedes gusten, si no recuerdan, comente en un post pasado que Google Music al subir tu música ya no te deja opción de descargarla a menos que lo hagas mediante Android y te la guarda como 1.mp3, 2.mp3, etc, etc, hay otra opción, que es Music Plus, un complemento que se instala en Chrome, pero este tienes que dar click en la cancion y te agrega una opcion que dice Descargar esta canción o algo asi dice :P

Bueno, este codigo y metodo es para que selecciones y descargues todas las canciones que quieras y/o busques, les explico a continuacion! :D

Requisitos:

Teléfono con Android Rooteado
WAMP ó LAMP  (Windows/Linux Apache Mysql PHP)   (para rapido y facil http://www.appservnetwork.com/ v 2.5.10)
SQLite Browser  (http://sourceforge.net/projects/sqlitebrowser/)
Firefox (http://www.mozilla.org/en-US/firefox/new/)
Live HTTP Headers (Addon de Firefox - https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/)

La primera opcion es tener un telefono Android rooteado, con Google Music instalado y nuestra música sincronizada, de ahi ir a la siguiente ruta:

/data/data/com.google.android.music/databases/music.db

Esto es para que podamos tomar la base de datos que maneja Google Music dentro de nuestros telefonos, ahí tenemos los datos para que despues podamos extraer nuestra musica y la guardemos en la pc (por si algun dia quieren recuperarla y no tenerla mas en la nube :P)

Ok, una vez que tengamos ese archivo lo que tenemos que hacer es abrir un editor de SQLite, (si no tienen uno o no conocen uno, puedes descargarlo de aqui: http://sourceforge.net/projects/sqlitebrowser/  ) ya que lo instalamos, vamos a la parte de Browse Data y seleccionamos la tabla MUSIC, una vez que lo hayamos hecho, damos en file - export, y guardamos el archivo donde queramos en nuestra pc.

Una vez que se haya exportado el archivo .sql lo unico que vamos a necesitar son los datos de la tabla MUSIC, yo importe esa tabla a MySQL, (se me hace mucho mas facil y rapido de manejar)

Este es el primero sql que van a ejecutar:

CREATE TABLE `music` (
  `Id` int(11) NOT NULL auto_increment,
  `SourceAccount` int(11) NOT NULL,
  `SourceId` text NOT NULL,
  `SourcePath` text,
  `Size` int(11) NOT NULL,
  `FileType` int(11) NOT NULL,
  `FileDate` int(11) NOT NULL,
  `LocalCopyPath` text,
  `LocalCopyType` int(11) NOT NULL,
  `PlayCount` int(11) NOT NULL default '0',
  `LastPlayDate` int(11) NOT NULL default '0',
  `Title` text NOT NULL,
  `Album` text,
  `Artist` text,
  `AlbumArtist` text,
  `AlbumArtistOrigin` int(11) default NULL,
  `Composer` text,
  `Genre` text,
  `Year` int(11) default NULL,
  `Duration` int(11) default NULL,
  `TrackCount` int(11) default NULL,
  `TrackNumber` int(11) default NULL,
  `DiscCount` int(11) default NULL,
  `DiscNumber` int(11) default NULL,
  `Compilation` int(11) default NULL,
  `BitRate` int(11) default NULL,
  `AlbumArtLocation` text,
  `SongId` int(11) NOT NULL,
  `AlbumId` int(11) NOT NULL default '0',
  `AlbumArtistId` int(11) NOT NULL default '0',
  `GenreId` int(11) NOT NULL default '0',
  `CanonicalName` text NOT NULL,
  `CanonicalAlbum` text,
  `CanonicalAlbumArtist` text,
  `CanonicalGenre` text,
  `_sync_dirty` int(11) NOT NULL default '0',
  `_sync_version` text,
  `LocalCopySize` int(11) default '0',
  `TrackType` int(11) NOT NULL default '0',
  `LocalCopyBitrate` int(11) NOT NULL default '0',
  `ArtistOrigin` int(11) NOT NULL default '0',
  `ArtistId` int(11) NOT NULL default '0',
  `CanonicalArtist` text,
  `Rating` int(11) NOT NULL default '0',
  `StoreId` text,
  `StoreAlbumId` text,
  PRIMARY KEY  (`Id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;

Esto nos va a crear la tabla de MUSIC dentro de MySQL, ahora abrimos el archivos SQL que exportaron y seleccionan todo lo de INSERT INTO MUSIC, algo como lo siguiente:

INSERT INTO MUSIC VALUES(1,-xxxxxx,'xxxxxxxx-xxxx-xxxxxx-9f1f-cf424f808f58','https://android.clients.google.com/music/mplay?songid=xxxxxxx-0340-37b0-9f1f-cf424f808f58',xxxxx,x,xxxxxxxxxxx,NULL,0,0,0,'Now''s not the Time','Research','Seth Kauffman','Seth Kauffman',0,'','Rock',0,204000,0,2,1,1,0,0,'http://lh5.ggpht.com/xxxxxxxxxxxxxxpu-PCi3_-TKm1rVGk4rgb3eA7W4mA3o=s200-c',4xxxxxx061,200xxxxxx,xxxxxx29,6xxxxx8,'now''s not the time','research','seth kauffman','rock',0,13xxxxxx623080,0,2,0,0,xxxxx7129,'seth kauffman',0,NULL,NULL);

El total de registros ahí es el total de registros que tienen de canciones, osea, si tienen 10 canciones en google music, van a ser 10 inserts.

Una vez que hayamos ingresado los datos a MySQL, lo que hacemos ahora es configurar el archivo php que les dejo (click aqui para descargarlo), primero lo extraemos en www (c:\appserv\www si es el caso que instalaron appserv), en una carpeta que se llame gmusic (o como le quieran poner, es un archivo php y una carpeta llamada media), una vez que este ahi, lo abrimos y tenemos que cambiar varios parametros, veamos cuales:


en la linea 120 tenemos los datos para conectarse a MySQL, cambiamos ahí por nuestros datos:

$dbname = 'nombredetudb';
$dbusername = 'tuusuario';
$dbuserpass = 'tucontrasenia';

en la linea 253 tenemos el header que se envia para la coneccion a google music, este lo vamos a obtener por medio de Live HTTP Headers, abrimos firefox, entramos a music.google.com y nos logueamos con nuestra cuenta, una vez que estemos ahi, abrimos Live HTTP Headers y le damos click a cualquier cancion para que empiece a reproducir, nos captura los headers que enviamos, entre ellos va nuestra cookie, algo como lo que muestro en la imagen:


Damos en click derecho y copiar, de esta forma ya tenemos nuestros datos de acceso para google, y eso lo vamos a pegar en la linea 253 que dice:

'header'=>"aquivaloquecopiaste_lacookie",

borramos aquivaloquecopiaste_lacookie y pegamos lo recien seleccionado.

Si llevamos todos los pasos hasta aquí y no te has perdido, entonces lo siguiente que puedes hacer es abrir tu navegador preferido! (recomiendo chrome por la gestion de memoría que hace) y entrar a http://127.0.0.1/gmusic/descargar.php, una vez que estemos ahi vamos a ver una pantalla como esta:


Ahi lo que vamos a hacer es buscar lo que queramos descargar, escribimos el nombre de la canción, artista o album que queramos y le damos en enter, en caso de que quieran descargar todo su archivo de musica solo den click en enter y les dará una lista de todas las canciones que tienen en su Google Music (recuerden que si son muchas canciones la peticion al dar solamente enter va a tardar algo).

Una vez que lo hacemos, saldrá una pantalla como la siguiente:


Lo que podemos hacer ahí es seleccionar X numero de canciones para que las descargue ó presionar el enlace de Marcar todos para que nos seleccione todo lo que se haya encontrado en la lista y podamos descargarlo, en esta parte podemos organizar nuestra busqueda dando click en la parte de los titulos de las tablas, y asi ordenar por artista, album, cancion, duracion ó peso, si su busqueda es muy grande no lo recomiendo mucho, pues tardara un poco :P

Una vez que hayamos seleccionado lo que queremos, vamos a dar click en Guardar canciones seleccionadas y esperamos un poco, en ese momento nos empieza a guardar las canciones que hayamos seleccionado en sus respectivas carpetas dentro de c:\appserv\www\gmusic (o el nombre que hayamos puesto), por ejemplo, si tenemos el artista "Uno" el album "Albumsito" y la cancion "Buena Cancion" nos lo guardará de la siguiente forma:

c:\appserv\www\gmusic\Uno\Albumsito\Buena Cancion.mp3


Una vez que el script termina de guardar las canciones seleccionadas nos mostrará un aviso que termino de descargar, en ese momento podemos cerrar nuestro navegador y seguir haciendo lo que queramos :D (disfrutar de su musica local nuevamente podria ser :P)

Bueno, ese es el primer post, de como descargar SU música por lotes.

¿Enredado? ¿Largo? Es mas de lo que parece, una vez que lo hagan verán que no es complicado :P

Estoy trabajando en un script que extraiga los datos directo de music.google.com y de esta forma no necesitemos nuestro Android Rooteado, en caso de que lo termine les aviso por un post tambien.

Pronto tendremos la página de prueba para poder descargar las canciones mediante este servicio, lo que explico aqui :P pero que no sea de manera local, por mientras pueden ir dejando un listado de grupos favoritos? enviarlo por twitter (@komtec1) o por correo, o dejar comentario aqui en el blog, recuerden que esta parte puede tardar un poco mas, por que quiero tener una base de datos de al menos 100,000 canciones, osea 5 cuentas en su máxima capacidad :D asi que como repito, me vendría bien el apoyo para sugerencias musicales que esten en la db. :D :D :D

De todas formas sigan pendientes ^^ espero les haya gustado y les sirva este post, dejo las siguientes paralabras clave para que lleguen por medio de buscadores.

Descargar toda mi musica de google music
Cmo descargo mi musica de google music
Forma de descargar mi musica de google music


Y pongo el video de como funciona el script, le agregue jquery y datatables, por si se preguntan con que es lo que hago el sort de la tabla :D




Saludos! :D

Komtec1

1 comentario:

KiKou dijo...

Muy bueno komtecitoo

Ahora a esperar que no parcheen lo que 'no es un error' xD