Qué es PyWebDj (versión corta y oficial)
Es un programa sin ánimo de lucro que permite extraer el audio de ficheros alojados en internet por terceros.
Qué es PyWebDj (versión larga también conocida como: qué fumas?)
No lea el siguiente párrafo a no ser que esté muy aburrido (o trabajando)
Es la confirmación de que puedo ser un vago, lo que a su vez demuestra que puedo llegar a ser informático, sí, uno más de esos.
Después de este comienzo tan poco gracioso me explico: aproximadamente hace un mes me preguntaron si podía encontrar (vía eDonkey2000, ares, bittorrent…ponga aquí su protocolo p2p favorito) una canción. Nada, no la encontraba, era algo fuera de lo común y no lo encontraba, pero al preguntar dónde habían escuchado esa canción me dijeron que en un vídeo de YouTube. Así que me puse el mono de trabajo, bajé el vídeo, tiré de ffmpeg y saqué un mp3 con la canción en cuestión, una versión rock del canon de Pachelbel.
Hace unos días me volvieron a pedir algo parecido, así que antes de que esto se convirtiese en el Raúl puedes pasarte a formatear mi ordenador 2.0, decidí que tenía que hacer un programita chorra como regalo de reyes para todo el mundo y además me ahorrase el trabajo. En un principio iba a ser algo en plan: meto la URL, que baje el vídeo a cañón y que le saque el audio. Eso era feo y además lo tendría que seguir haciendo yo, sino podría pasar la de… Consola? Qué Consola? Yo sólo tengo una Play2, me vale esa? (Era un chiste geek, si no te ha hecho gracia, no hace falta que lo entiendas). Así que la siguiente idea fue Java + SWT, pero bueno ya se sabe, lo bonito de Java es que puedes odiarlo. Así que tras tener prácticamente todo lo necesario para bajar y extraer el audio, me puse a pegarme con SWT durante un buen rato (3 minutos), no está hecho para programarlo (sí, SWT se programa, no se diseña :D) a las tantas de la mañana o la tarde de un domingo.
Por qué no usar…dotNet, que te preparas una interfaz en 5 minutos con WinForms? Porque quería que fuese multiplataforma*. De ahí la idea de la aplicación para línea de comandos, y luego Java + SWT.
Entonces…? Python (webpy), SQLite, ffmpeg, XML, Flash, HTML, x cervezas, 500gr de pistachos, dos tardes de ayer salí y una noche un poco larga. Y como resultado una aplicación web con buscador de canciones, gestor de descargas y gestor de biblioteca musical. Probablemente no sea la mejor solución, pero era la más cómoda para mi, y al final la aplicación cumple con su función: bajar música.
*Habrá versión para Mac OS X y Linux es unos días (espero).
Licencia
Aunque todavía no he publicado el código, lo haré espero que pronto, de momento le he colocado una licencia Apache Version 2.0. Si alguien quiere hacer alguna sugerencia sobre la licencia más oportuna para esta aplicación, por favor, como siempre a través de los comentarios.
Sí, no todo es maravilloso
La aplicación es bastante mejorable, muy mejorable. Sé que tiene problemas (y fallos) pero no quería alargarme, más que nada porque durante los próximos días prefiero no dedicarle más tiempo a esto. Pero ya se sabe aquello de Release early, release often, yo de momento voy a cumplir la primera parte.
Por ejemplo, la calidad del audio está condicionada por los archivos de vídeo, así que no esperéis calidades altas. Todavía sólo he preparado la versión para Microsoft Windows. Seguramente en Internet Explorer no funcione (algún día lo hará).
No prometo NADA
Viene un mes un tanto duro para mi, así que no prometo mejoras, ni corregir errores hasta que al menos llegue el 15 de febrero, más o menos.
Sugerencias, quejas y dudas
Como siempre a través de los comentarios. Se bonificarán ;-).
Sobre lo legal, lo ilegal y lo alegal
Yo sólo pongo la cama, y creo que es cómoda. Nada más que decir.
Download PyWebDj for Windows
v0.100, Apache License, Version 2.0.
P.D.:
Podría haberme extendido más, pero estoy con el portátil en la cama y me estoy quedando sin batería. Así que perdonadme las faltas y que no haya hablado de cositas como Adobe AIR (entre otras). Y si probáis la aplicación se agradecería un comentario.
Ayer finalizó mi curso 2006/2007, deja para septiembre lo que no estudies en junio. Como el curso no ha ido mal del todo, ha llegado el momento de matricular el PFC. Y ahora… qué? Dudas.
- Me ciño a la propuesta de un profesor? De una empresa? Propongo mi propio proyecto?
- Aplicación de escritorio? RIA?
- Java? Python? PHP?
- Oracle? [Postgre|My]SQL?
- Software libre? Código abierto? Software privativo?
- Posible público potencial? Cubrir expediente?
Mientras algunas de esas dudas simplemente son dudas porque me apetece que lo sean, y no porque realmente dude entre, por ejemplo, una aplicación de escritorio o una aplicación web. Otras ya no son dudas, sino problemas. Alguno de los puntos está estrechamente ligado con otros, la elección de uno condiciona la elección de otros.
Lo ideal sería proponer mi propia aplicación web escrita en Python, usando MySQL, bajo licencia libre y además que no se trate de algo para, simplemente, cubrir expediente. Sí, debo estar soñando.
Agradecería que alguien con experiencia previa plasme, a través de los comentarios, cómo fue su Proyecto Fin de Carrera. Si además alguno de los pocos que me leen tiene una idea sobre la que poder basar mi PFC, podría invitarle a un par de cervezas si la deja en los comentarios o me escribe un correo.
El fin de semana pasado Adal me preguntaba si conocía algún método sencillo de poner un planet en marcha, y la verdad, me pilló un poco fuera de juego. Existe Planet que es usado por muchos proyectos de Software Libre, el problema es que está escrito en Python. La mejor solución era algo escrito en PHP.
Existen varias soluciones, incluso un plugin para WordPress, en la mayoría de los casos hace falta usar Cron para actualizar las entradas y Adal quería evitar el uso de Cron. Además la mayoría de los sistemas de planet no son sencillos de poner en marcha, generalmente porque son añadidos a otras aplicaciones. He despachado todo este rollo para anunciar mi propio sistema de planet: Simple PHP Planet.
Simple PHP Planet hace uso de MagpieRSS, una estupendo parser de RSS para PHP que me ha evitado muchos dolores de cabeza, ya que facilita un sistema de caché que evita tener que leer remotamente todos los archivos RSS cada vez.
La puesta en marcha es bastante sencilla, basta con añadir unas líneas a un archivo de configuración con las URLs de los feeds RSS, y opcionalmente se puede subir una imagen representativa.
La licencia: he decidido publicar Simple PHP Planet bajo la Affero General Public License. Qué quiere decir esto? A groso modo, puedes hacer lo que te venga en gana con el código. Pero en caso de realices cambios, aunque no vayas a distribuir la aplicación y sólo la vayas a usar en tu servidor, estás obligado a publicar los cambios que hayas realizado.
Puedes visitar el planet de demostración donde podrás bajar el zip con todo lo necesario para tener tu propio planet. Escucho problemas y sugerencias en los comentarios de esta entrada y en mi dirección de correo.
Este pequeño y humilde hack se lo dedico a Adal.
About Raúl
Raúl Ochoa, a spaniard working for Tuenti in Madrid, Spain. More about me.
Subscribe to the feed
If you want to receive a notification when I update the website, you only have to add the feed to your reader, or submit your email address and I'll let you know.
Raúl's Twitter: Los coches de exhibición 8000vueltas, ¡adivinadlos! http://t.co/q8aFSU5K via @8000vueltas 2 hrs ago