El Etiquetador De Canciones

PFC y otras chorradas

Empezando 5 marzo 2009

Bueno, despues de investigar un poco ya voy teniendo algo que hacer :).

Aquí va la guía fundamental de las cosas que tengo que hacer:

1.- Crear la base de datos en MySQL,pero antes resolver algunas dudas respecto a ella (etiquetas temporales…). En ella se guardarán todas y cada una de las etiquetas que el servidor busque por peticiones de la aplicación. Habrá que diferenciar de algun modo las que sean revisadas por una persona y las que no, pues el algoritmo de búsqueda podrá fallar.

2.-Hacer una aplicación en PHP, que se comunique con la base de datos anterior, e implentar alguno de los algoritmos para buscar las etiquetas que no estén en la base de datos en internet.

3.-Hacer la aplicación en sí en Adobe AIR, que se encargará de recoger la información disponible de cada álbum/canción, comunicarse con el servidor que tendrá la aplicación en PHP y esperar a que éste le devuelva las etiquetas correctas, de forma que la aplicación las modificará y mostrará la información al usuario, además de permitirle reproducir las canciones.

Lo más difícil sin duda es el paso 2, los algoritmos de búsqueda, que es realmente lo que yo quiero que sea mi proyecto, pues de ellos depende que esto sea un éxito o un fracaso.

El mayor problema de las etiquetas es encontrar las de los recopilatorios, las de grupos y solistas seguramente se puedan obtener de MusicBrainz (http://musicbrainz.org/) o algún otro, pero los recopilatorios recientes no están recogidos allí. Así que investigando encontré que toda esa información de los recopilatorios se encuentra en páginas de intercambio de p2p. Hasta ahora he estado sacando conclusiones de Mininova.org, y parece que la mayoría de los recopilatorios incluyen la lista de canciones (tracklist), y que todos incluyen la misma información delimitada por separadores:

(pista <separador> artista <separador> titulo

Por ejemplo: la busqueda de VA-Superventas.2009 (así es el nombre de la carpeta en mi ordenador) nos dá como resultado esto: http://www.mininova.org/tor/2262086

Como vemos se separan incluso los cds, y cada canción mantiene el formato arriba especificado, incluyendo en este caso el tiempo (con sus correspondientes delimitadores []).

El algoritmo para esta página sería, pues, para cada línea, coger la información obviando los separadores, y guardar cada cosa en su sitio: el primer campo en una variable ‘pista’, el segundo en una variable ‘artista’ y el ultimo en una variable ‘titulo’. A parte hay que adaptar el algoritmo para que llegue a la zona de la página en donde está toda esta información, y que descarte todo lo que no nos sea de utilidad, como pueden ser comentarios u otras cosas irrelevantes para nuestro programa

Para comunicar FLEX con PHP creo que utilizaré Zend Framework, pues es lo que encontré que permite esto y lo desarrollan los propios desarrolladores de PHP. Habrá que instalar Apache y MySql también.

Un saludo!

Anuncios
 

Mi Proyecto 11 febrero 2009

Filed under: Proyecto Fin de Carrera — Christian Oliveira Alfonso @ 5:23 pm
Tags: , , , , ,

Bien, voy a explicar en que consiste mi proyecto.
Todo el mundo se baja música de internet, y al principio, cuando tienes poca, no pasa nada, pero cuando tu colección empieza a crecer te encuentras con todo desorganizado. Además, las canciones no suelen tener la información correctamente asignada, tanto nombres de archivo, de carpetas como las propias etiquetas.

Lo que yo pretendo hacer es una aplicación, cuyo objetivo fundamental sea organizar esa colección de música: asignar las etiquetas correctas, añadir carátulas, letras, etc. Además la aplicación será un reproductor multimedia, para que el usuario pueda usarlo como programa principal para escuchar música.

Para hacer esto, voy a tener que hacer:

1. La aplicación en sí, a la que se le agregarán las carpetas en las cuales el usuario tenga la música y ésta se encargará de recoger la información actual de cada uno de los archivos.

2. Una base de datos donde se vayan recogiendo las etiquetas e información correctas, de forma que el programa busque primero la información en esta base de datos, y, si no encuentra nada en ella, se vaya a internet a buscar; si en internet encuentra la información correcta, se usa para corregir los archivos correspondientes y, además, se sube a la base de datos para facilitar el trabajo del programa en el futuro.

3. Para buscar en internet, en un principio había pensado que fuera la propia aplicación la que lo hiciese, pero es una solución bastante mala, ya que la información en internet (salvo en alguna base de datos que existe ya como MusicBrainz: http://musicbrainz.org/) se encuentra en texto plano, por lo que para cada página se necesita un algoritmo de búsqueda distinto. Por lo tanto, creo que lo mejor es aplicar el patrón DAO, de forma que exista un servidor al que la aplicación se conecte, y sea éste el que realice la búsqueda. Así, si alguna página cambia su formato, su dirección en internet, o lo que sea, sólo se tendría que modificar el algoritmo correspondiente en dicho servidor, y el programa seguiría funcionando igualmente de forma trasnparente.

4. Otra cosa muy interesante, sería incluir un “reconocedor de canciones”, como el que trae el IPhone. Según me ha dicho mi tutor existe un proyecto libre que hace eso exactamente, así que incluirlo en mi proyecto podría facilitar enormemente la identificación  de las canciones de las que no tenemos ningún dato (Musica/Nueva Carpeta/01 – Unknown Artist – Track 01)

Eso es todo por ahora, a ver si me pongo manos a la obra con la base de datos y algún algoritmo de búsqueda para alguna página.

Saludos!