Un Feed Reader para los Links de Viernes



El lunes pasado llegué de vacaciones y me puse a programar cual adolescente con ideas, si, esas ideas que seguro ya tuvieron todos antes que vos, pero lo que estaba buscando era, como siempre pasa cuando programo, una solución a un problema mío que, por extensión, seguramente iba a beneficiar a otros.

Aun existiendo ofertas por todos lados como Feedly para reemplazar Google Reader (próximo a cerrar) quería tener mi propia solución dentro del site de Links de Viernes porque es el lugar lógico donde la gente pueda intercambiar enlaces interesantes. La cuestión es sencilla, yo siempre puedo disponer de mi propio código y no tengo que depender de la decisión caprichosa de un tercero, a la vez, por razones obvias, quien use mi sistema se encontrará igualmente desprotegido que si usase el de google, pero bueno, no puedo con todo tampoco :P

En mi caso tal vez pueda liberar el código algún día, primero tengo que hacerlo funcionar bien. A continuación les cuento qué hice, qué funciona y qué queda por delante (mucho).



Primero que nada el diseño, la idea. No sólo reemplazar Google Reader para mi uso personal, si no sumarle una funcionalidad, que cada link que uno ve pueda enviarlo a los Links de Viernes y votarlo. Así los usuarios que usen este Feed Reader podrán "curar" contenido en un sistema que ya existe y sin mucho esfuerzo, simplemente un par de clicks y ya está.

Esta doble combinación me recordaba a una de las funciones originales de Google Reader, cuando podías ver los links que recomendaban otros usuarios, algo que cambiaron para forzarte a usar Google Plus pero que no encajaba del todo bien. Bueno, esa idea, te la replico en un sistema que ya existe y que venía funcionando (y genera contenido toda la semana)

La parte más complicada era tomar los feeds en los innumerables formatos que hay, solucionado por Simple Pie, reutilizando su código pude incorporarlo y es sencillo. Con eso tenía resuelto una parte, pero el sistema de cacheo que utiliza no me gusta.

Así que opté por armar algo propio donde guardo en la base de datos cada item de cada feed, de esta manera puedo distribuírlos a cada usuario que quiera verlos y no tener que tomarlos a cada rato. El proceso de descargar un feed, comprobar que sea válido, sacar su información y guardarla consume mucho tiempo de procesador.



Pero el sistema tenía que ser utilizable por varios usuarios al mismo tiempo así que si un usuario suma un feed que otro ya tiene, en vez de duplicar suscripciones e items, programé que los tome una vez y los reparta luego.

Para lograrlo cada media hora un script llamado por un cron va tomando los items de cada RSS suscripto, si es que tiene usuarios siguiéndolo, claro. En promedio se toma de 2 a 4 segundos para obtener y validar todo, por eso lo hago cada media hora solamente, de otra manera rompería todo en el servidor :P

Todo lo que involucre tomar un archivo desde otro servidor tiene que pasar por la red, depender del tiempo de conexión entre servidores, la respuesta, etc. Por eso el script se tiene que tomar su tiempo, lo armé en ese sentido, espero que no reviente con grandes cantidades pero como en promedio la mayoría de la gente lee los mismos feeds o un rango de estos, no debería joder hasta los 100 usuarios (como verán, no tengo pretenciones de miles o millones)

Hay muchos problemas con el tema de tomar feeds, primero que nada las urls no son todas iguales, me está pasando con uno, por ejemplo, que me entrega los items con una url de feedburner, otra de feedproxy y otra la original, WTF? triplicados, duplicados, etc. Cosas que tengo que resolver pero que se complica porque no es fácil replicar el problema, pero bueno ¡así se hace el software!



También tuve que lidiar bastante con JQuery, es que me olvido cómo se hacen las cosas muy pronto (la edad) y tengo que reaprender todo, como no soy un programador activo, tengo que recomenzar cada vez a refrescar mi memoria.

Pero la idea era que no sea tan primitivo con formularios tradicionales si no que sea más "fluído". Luego lo tuve que integrar al diseño del site, no es el más bonito ni cómodo para un feed reader y a futuro lo voy a cambiar (el header ya quedó demasiado grande e inútil, hay que mejorar el diseño) pero por el momento la idea era que "encaje".

Con esto resuelto le puse algunas limitaciones por ser una versión beta, primero que nada, una sola categoría, la parte organizativa del lector personal va en una segunda etapa, en los primeros cinco días de programación sólo quise sacar un feed reader funcional, luego empezamos con los detalles bonitos, pero lo que pueden ver hoy apenas tiene una semana con una dedicación de no más de dos horas diarias (no tengo tanto tiempo) y creo que no salió tan mal después de todo.

Tengo que mejorarle la impresión de velocidad, muchas veces el tiempo de reacción de JQuery y la llamada de HTML da la impresión de que se está tardando más de la cuenta, pero ya lo iré perfeccionando.

¿Qué tiene?
  • Alta de Feeds
  • Actualización de feeds
  • Lectura de feeds
  • Envío de feeds a LDV
  • Verificación de contenido
  • Verificación de urls válidas
  • Marcado de items leídos
  • Limpieza de urls con feedproxy
¿Qué falta?
  • Permitir agregar categorías
  • Organización de los feeds
  • Baja y/o edición de feed
  • Lectura automática al pasar sobre el feed (ayuden con esto, ni idea cómo hacerlo)
  • Que el visor permita un tamaño dinámico a la altura de la pantalla del usuario, no he podido hacerlo, mantiene un height fijo.
  • Performance
  • Seguridad
  • Importación de feeds desde Google Reader
  • Mejorar el CSS y el estilo general


Falta mucho, corregir bugs y esas cosas, si me preguntan ¿pero qué modelo de negocios tenés asociado? realmente ninguno todavía porque es más una funcionalidad de Links de Viernes que otra cosa, pero a futuro se pueden implementar muchas cosas porque el sentido de este sistema es la integración Lector de Feeds -Contenido Curado y ahí es donde tenemos la ventaja, poder filtrar lo mejor de la web y no depender de un algoritmo o de medios gigantes que nos digan qué leer.

El resultado obtenido es, por lo general, más interesante y jugoso que por otras vías, no quiero que Google o Facebook me digan qué es interesante, prefiero que ustedes me lo digan.

El sitio está alojado en El Server quienes han implementado muchos cambios en los servidores que van a beneficiar este sistemita, obviamente siempre puedo cometer algún fallo y bloquear todo el servidor, ya lo he hecho antes :D pero en términos generales tiene resto para probarlo un poco más.



Pero nada es perfecto, necesito de la ayuda de uds para dos cosas: ideas y bugs. El sistema va a fallar y mucho, sólo un programador y como mucho un par de horas para verificar las fallas, hasta ahora Tomás "Sectu" me estuvo ayudando con su primera impresión y corregí dos bugs importantes gracias a su feedback, es frustrante al comienzo encontrarse con fallas y no entenderlas, pero para aquellos que programamos, el resultado final lo amerita Guiño

Bueno, es fácil ingresar, si tienen usuario en LinksdeViernes.com (pronto cambiaré el dominio a uno más corto) se loguean y entran en el Reader lo activan y pueden sumar sus feeds, sólo con la URL alcanza (ej: http://www.fabio.com.ar/rss.php) y ya empiezan a jugar con el mismo.

Durante esta semana trataré de empezar la parte de organizar los feeds, desuscribirse y esas cosas. Se aceptan críticas constructivas, código para mejorar y esas cosas, lo que vean feo prefiero que me den una solución antes de cancherearme lo bien que podrían hacerlo, que ni soy diseñador gráfico ni un gran programador, todo código es bienvenido Guiño

Otros posts que podrían llegar a gustarte...

Comentarios

  • Sectu    

    Presente! :D Un gusto haber ayudado un poco de metido no más (antes de que pongas la URL) está quedando muy bien a pesar del dolor de cabeza que nos dio un feed. (Y nos sigue dando )
    Ahora que los de El Server se preparen porque todo el trafico de Google Reader cae acá eh :D

    • Responder
    • Citar
    • Comentado:
  • Para la lectura automática al pasar sobre cada post te puede servir este plugin http://imakewebthings.com/jquery-waypoints/ que te genera un evento al momento de scrollear al elemento en cuestión. Es cuestión nomás de enlazar a ese evento un post ajax.
    La verdad nunca probé ese plugin, pero en los papeles parece simple.

    • Responder
    • Citar
    • Comentado:
  • Leo Bazán dijo:

    Para la lectura automática al pasar sobre cada post te puede servir este plugin http://imakewebthings.com/jquery-waypoints/ que te genera un evento al momento de scrollear al elemento en cuestión. Es cuestión nomás de enlazar a ese evento un post ajax.
    La verdad nunca probé ese plugin, pero en los papeles parece simple.


    muy bueno, es justamente lo que falta para hacer el lector automático, pero espero que no choque con otro detalle.
    cuando un div lo llenás por ajax y, en este caso, el scroll estaba más abajo (onda estabas viendo el último de un feed y pasás a ver el siguiente feed) el scroll sigue abajo.

    tuve que aplicar otro jquery para que suba de golpe, ahora bien, si los waypoints estan en el camino, por ahi los activa todos "de vuelta" y no cuando estás leyendo. En alto bardo me metí :D

    • Responder
    • Citar
    • Comentado:
  • N3RI    

    Te felicito por el laburo Fabio. Lo estaré probando y si encuentro algo trataré de aydarte, o al menos pasarte el aviso de bug :P

    • Responder
    • Citar
    • Comentado:
  • Nunca en mi puta vida probé un lector RSS, soy mas de pasar blog por blog y leer. Claro que lo que leo habitualmente no son mas de 10 blogs y los recuerdo todos (bah... siempre estan en el historial de la barra de direcciones).
    no se... tal vez comienze probando esta cosa loca que programaste. :D

    • Responder
    • Citar
    • Comentado:
  • Emiliano    

    Gran idea eso de suplir vos mismo tu Reader, y mejor aun cuando la compartis con el resto.
    Por eso, gracias.

    Por otro lado, tenes algun link alternativo para probarlo? Ya te comente alguna vez las limitaciones de linkdeviernes.com en el websense del laburo y no puedo saltarlo.

    Paradojicamente cuando mas uso un reader es ahi, en el laburo =P

    Mi conocimientos de programacion son practicamente nulos, por lo que voy a intentar colaborar en encontrar bugs/recomendar o testear funcionalidades desde el lado del simple user.

    • Responder
    • Citar
    • Comentado:
  • Leandro    

    Esta es la primera vez que visito este blog, entre porque este post estaba en una lista de "links interesantes" de otro blog.
    A mi me gustaría que el Feed Reader sirva como medio para descubrir nuevos blogs y sitios para seguir. Esto se podría hacer de diferentes formas (en los perfiles de los usuarios, como un directorio, etc.) personalmente preferiría poder "ver" el Feed Reader de la misma forma en la que el usuario (el que comparte sus suscripciones) lee sus feeds.
    Nos vemos.

    • Responder
    • Citar
    • Comentado:
  • Sebastian    

    Fabio, te tiro mi idea de lector de noticias ideal, seguramente me voy al pasto, pero bue...

    Ademas del lector "normal", me gustaría que se comporte como Google News y me agrupe las noticias sobre el mismo tema, que es un garrón tener que leer las mismas noticias desde distintas fuentes. Tendría que mostrarme como "principal" la noticia que mis contactos mas compartieron/puntuaron.

    Otro punto sería un sistema de pago como flattr, así los usuarios pagan una suscripción fija y los productores de contenidos reciben un pago por lo que hacen y se animan a dar un feed de su sitio.

    Eso sería _todo_

    • Responder
    • Citar
    • Comentado:

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https
Para evitar bots, si se tardó mucho en leer la nota seguramente no sirva y tenga que intentar dos veces

Negrita Cursiva Imagen Enlace


comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador