capitanquartz escribió:Puedes mirarte el proyecto Pyjamas, que consiste en crear Javascript de Python

creo que hay más proyectos parecidos... te recomiendo también mirar Django, que es un framework python para web.
Saludos.
Hoy he estado mirando Django y siguiendo los tutoriales de la página oficial, pero me parece que es un poco matar moscas a cañonazos, ya que en principio el reproductor sólo sería una página con tres listas en la parte superior (artista, album y género) y una en la parte inferior con las canciones a reproducir. He visto también que hay otros frameworks más sencillos, como webpy o Pylons, así que esta tarde los miraré a ver que tal. Tomo nota también de Pyjamas.
Ayer hice progresos con la parte del servidor, y por ahora el programa busca recursivamente los mp3 desde un directorio específico y los añade a una pequeña BD (sqlite3) almacenando el hash del fichero (para detectar duplicados), artista, album, genero, pista, numero de pista y el path hasta el fichero. Para tener algo me gustaría mostrar en una web lo más sencilla posible la lista de canciones almacenada en la BD, y que al seleccionarla se reprodujese (había pensado que una manera sencilla sería usando el tag <audio> de HTML5, aunque no todos los navegadores lo soporten con archivos mp3.
Sin embargo, tengo problemas tanto al guardar las ID3 (utilizo mutagen) ya que por lo que parece, cuando quiero acceder a un tag ID3 que está vacío en el fichero mp3 el programa da un error y termina. Ahora mismo estoy leyendo las etiquetas a pelo, sin comprobar nada, así que miraré si puedo comprobar antes si existe o no la etiqueta, que debe haber una forma pero yo ayer no la encontraba. Por otro lado, sigo teniendo problemas con la codificación de archivos, 'creo' que uso unicode para guardarlos en la BD. El problema es que cuando quiero obtener la URL de un archivo (importando urllib y usando la función urllib.pathname2url) me lanza un error cuando el path tiene caracteres no ASCII. Ahí estoy bastante perdido, así que cualquier consejo es bienvenido.