Programar reproductor de música web

A ver si alguien me puede echar un cable.

Para el trabajo final de mi asignatura de redes le propuse al profesor implementar un reproductor de música sencillo que tuviese una parte servidor en el PC donde tengo mi biblioteca de música, y una parte cliente que me sirva para reproducirla, algo como esto:
http://web.psung.name/zeya/

Como el año pasado estudié Python y me gustó, pensaba implementar la parte del servidor (conexiones y creación de BD) en este lenguaje, y luego una interfaz web que no se si hacerla en HTML5 o AJAX. La idea sería dejar el servidor corriendo en mi PC y poder acceder a mi música desde cualquier SO mediante el navegador web. Se que existen programas que hacen lo que quiero, pero me gustaría implementar el mío propio, ya que creo que puedo reducir el procesamiento y la espera que tengo con otros programas como ORB, o usando protocolos DAAP.

Mi pregunta es básicamente si conocéis algún tutorial o curso de HTML5/AJAX para gente que no sepa nada de programación web. A unas malas podría hacer el cliente en Python+PyQT o con Tk, pero me gustaría aprender por el camino, y viendo cosas como la interfaz web de uTorrent o Transmission, creo que se puede quedar una cosa bastante curiosa. Aparte de esto, cualquier información u opinión sobre cómo empezar, qué usar o cómo proceder es bien recibida [+risas] .

Saludos.

PD: Si pensáis que el tema debe estar en general, por mí sin problemas. Lo he puesto aquí porque el código será libre y porque la mayoría de usuarios de este subforo tienen un perfil más "técnico" así que creo que sería más apropiado.
...
ni soy un experto diseñador, ni programador.

Pero ajax me suena mas como javascript mas dinamico cosa que claro esta esta dentro de los "estandares" de html5.

Puedes programar un programa servidor en python y que se interactue con el mediante una interfaz web.

Lo mas sencillo es que cojas y mires otros reproductores html5 existentes en la web aunque claro, aun la mayoria son flash.
Alojar el codigo en python es mas dificil, pero aun asi hay algun servidor de pago barato que dejan, tal vez alguno gratuito y si eso hay sitios donde desarrollar con python y alojar el codigo como las que proporciona Google para Google Apps y semejantes.
blackgem escribió:...
ni soy un experto diseñador, ni programador.

Pero ajax me suena mas como javascript mas dinamico cosa que claro esta esta dentro de los "estandares" de html5.

Puedes programar un programa servidor en python y que se interactue con el mediante una interfaz web.

Lo mas sencillo es que cojas y mires otros reproductores html5 existentes en la web aunque claro, aun la mayoria son flash.
Alojar el codigo en python es mas dificil, pero aun asi hay algun servidor de pago barato que dejan, tal vez alguno gratuito y si eso hay sitios donde desarrollar con python y alojar el codigo como las que proporciona Google para Google Apps y semejantes.


Por lo que he visto de AJAX, es una combinación de Javascript + XML que permiten básicamente hacer páginas con información que se actualice sin necesidad de actualizar toda la página. No sabía que formaba parte de estándar de HTML5. Mi idea es justo esa, programar el servidor en Python e interactuar con él mediante la web. Y en cuanto a alojar el código no hay problema en principio, ya que lo alojaría en un PC que tengo como HTPC, ya que una de las cosas que quiero es que el programa que cree me sirva para poder escuchar mi biblioteca de música de manera remota, así que en principio tanto el servidor como la web irían ahí, ya que necesitaría acceso directo a mis archivos de música.

El enlace del primer post que puse es básicamente lo que digo, un reproductor con interfaz de HTML5 con un servidor en Python por debajo, pero no acabo de entender el código, voy poco a poco (ya que del tema de programación web estoy muy pegado, y del tema de manejar audio, como que también). Estoy viendo librerías que me puedan servir (en principio con mp3 me basta, aunque en un futuro y si consigo algo decente miraría de ampliarlo también a ogg, wav y flac).
Puedes mirarte el proyecto Pyjamas, que consiste en crear Javascript de Python :P creo que hay más proyectos parecidos... te recomiendo también mirar Django, que es un framework python para web.

Saludos.
capitanquartz escribió:Puedes mirarte el proyecto Pyjamas, que consiste en crear Javascript de Python :P 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.
Para vuestro interes.
Reproductor html5 con opciones avanzadas offline.

http://www.omgubuntu.co.uk/2011/03/html ... ks-offline

Podrias tanto copiar el codigo como cooperar con ese proyecto, que por cierto, me pareceria superinteresante una extension para Chromium con ello.
blackgem escribió:Para vuestro interes.
Reproductor html5 con opciones avanzadas offline.

http://www.omgubuntu.co.uk/2011/03/html ... ks-offline

Podrias tanto copiar el codigo como cooperar con ese proyecto, que por cierto, me pareceria superinteresante una extension para Chromium con ello.


Pues es básicamente lo que quiero hacer, aunque con una parte de cliente-servidor añadida en python. Le echaré un ojo a ver si entiendo el código, gracias.

Por otro lado, una duda:
Aparte de los métodos GET y POST, hay alguna manera de poder llamar a una función del servidor desde el cliente (web) y recoger los datos que devuelva el servidor? Supongo que sí, pero por más que miro no encuentro (ahora mismo estoy con web.py, pero podría cambiar). Lo digo porque ya he conseguido que procese los mp3, los almacene en una BD del servidor y genere una web con la lista de canciones y reproduzca una de ellas aleatoriamente, pero no qué hacer para que pueda realizar funciones como buscar, seleccionar canciones, etc, que involucrarían una búsqueda en la BD por parte del servidor y el envío de la información necesaria (actualmente son tuplas de python con info de los metadatos ID3 y la ruta al archivo de audio).

Voy a ver si hoy puedo conseguir cambiar la canción del tag audio sin refrescar la página, lo cual sería un pequeño avance.
6 respuestas