Ir al contenido principal

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

Comentarios

KiKou ha dicho que…
Muy bueno komtecitoo

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

Entradas populares de este blog

Integrar API de Google Maps, archivos kml, kmz y otras fumarolas :D

Ya que andamos en eso de la posteada ahora les voy a dejar un pequeño manual sobre como integrar la API de maps (google) dentro de nuestro código, hay varia documentación en la página developers de google, pero realmente lo que uno busca cuando pone en google: "integrar api de maps" es ver un ejemplo claro y directo para que se pueda entender de mejor forma. Así que pues ya comentada la información de arriba les paso a dejar un ejemplo. Lo primero que tenemos que poner en nuestro código es la llamada a la API de maps: < script type = " text/javascript " src = " http://maps.googleapis.com/maps/api/js?sensor=false&language=es " > < / script > En este caso la variable sensor está en false, esto nos indica que no hay un dispositivo gps que pueda tomar la ubicación (se pone generalmente en true cuando es para aplicación movil, llámese celular o tableta) El lenguaje declaramos español, esto es para los menús que se van a most

Solución [fix] a hamachi Logging in .. failed, busy

Hola! Aquí con una pequeña entrada, pero que a más de uno le será útil. Tengo hamachi instalado en varias máquinas, pero en una precisamente al reiniciar, algunas veces me da este problema: usuarioserver@server:~$ sudo hamachi login [sudo] password for usuarioserver: Logging in .. failed, busy Lo busqué en internet y la "solución" que dan, es reinstalar hamachi, y para los que han instalado hamachi en ubuntu, saben que no es una opción, pues se tendrían que hacer estos pasos:  sudo apt-get remove logmein-hamachi sudo dpkg -i logmein-hamachixxx.deb sudo apt-get install -f Para lo cual (siempre) es molesto hacer esos pasos, y algunas veces la configuración se llega a perder.  Para solucionar ese problema, basta con hacer un:  sudo /etc/init.d/logmein-hamachi force-reload Esto forzará el reinicio de hamachi, y así después hacen:  sudo hamachi login Y listo, el problema de failed busy desaparece y los deja loguear bien en la red de hama

[Anotaciones] Importar DB MySQL con archivos frm/ibd

Primero, vamos a extraer las consultas para crear las tablas, lo podemos hacer con el siguiente comando> mysqlfrm --server=user:pass@localhost --port 3307 --diagnostic /ruta/de/los/archivos/data/nombredebase/*.frm Esto nos regresa todos los CREATE que tengamos para las tablas, guardar todo el resultado. Creamos la base de datos, con el mismo nombre que se tenía anteriormente. Ejecutamos la consulta que nos regresó el comando mysqlfrm, si nuestra versión de mysql es mayor a 5.6, es importante hacer este cambio:  ENGINE=InnoDB DEFAULT CHARSET=utf8; por  ENGINE=InnoDB ROW_FORMAT=compact CHARSET=utf8; Es decir, se remplaza DEFAULT por ROW_FORMAT=compact, realmente no se por qué, pero me llevó como una hora dar con el error, espero quien lea esto le sea más facil. Una vez que tengamos las tablas creadas, ejecutamos lo siguiente: ALTER TABLE nombredetabla1 DISCARD TABLESPACE; ALTER TABLE nombredetabla2 DISCARD TABLESPACE; ALTER TABLE nombredetabla3 DISCARD TABLESPAC