Mi buen amigo Sergio me sugiere una revisión del post anterior complicando un poquito más el baremo.
El nivel de desconexión en este caso se mediría tomando como base no el número de posts, sino el funcionamiento de bloglines:
Bloglines guarda un máximo de 200 items por feed (esto no lo he podido confirmar, pero seguro que googleando un poquito sale). Por tanto 200 x número de feed a los que estás suscrito => 100%. Así que sólo tenemos que compararlo con los items que nos faltan por leer, y el resultado será nuestro nivel de desconexión.
Esto se complica un poquito (por no decir bastante), más que nada porque la api de bloglines no nos deja sacar así por las buenas el número de feeds al que estamos suscritos, nos los devuelve en un opml monísimo, pero poco práctico para lo que nos hace falta. Para hacer eso nos pide que además de nuestro email de suscripción le demos nuestra contraseña (pero bueno, todo sea por saber cuanto estamos de desconectados).
Así que variaciones las variaciones con respecto al script anterior son:
- Necesitamos el email y el password para poder pasar.
-
Tenemos que parsear el ompl que nos devuelva el listsubs.
De este modo nos quedaría una acción tal como esta:
def desconector2beginbloglines = Bloglines::WebServices.new(:user => params[:username], :password => params[:password])content = bloglines.listsubs@subscripciones = 0# parseamos el xml de subscripcionesREXML::XPath.match(content, '//outline').each do |item|if item.has_attributes?@subscripciones = @subscripciones+1 if !item.attributes['xmlUrl'].nil?endend@maximo = @subscripciones*200@post_pendientes = bloglines.updatedesconexion = (@post_pendientes*100)/@maximo@resultado = "Estoy al #{desconexion.to_s}% de desconexion"rescue Exception => e@resultado = eendend
Para que hagais vuestras pruebas correspondientes he metido en mi routes.rb
map.connect 'desconector/:username/:password', :controller => "bloglines", :action => 'desconector2'
Así que para probar podeis ir a http://mamuso.net/desconector/tuemail/tucontraseña.
Como se que no andan los tiempos como para ir dejando por ahí contraseñas en texto plano, debemos de buscar una alternativa. Otra forma de obtener el opml propio es a través de la página pública de blogroll. De esta manera los únicos datos que necesitaríamos serían nuestro email de suscripción y nuestro nombre de usuario para la página pública. Si no sabes cual es entra en la opción share de tu bloglines.
Por tanto unas leves modificaciones y… hecho:
def desconector3beginbloglines = Bloglines::WebServices.new(:user => params[:username])@subscripciones = 0# parseamos el xml de subscripcionesurl= "http://www.bloglines.com/export?id=#{params[:screenname]}"xmldata = Net::HTTP.getresponse(URI.parse(url)).bodydoc = REXML::Document.new(xmldata)REXML::XPath.match(doc, '//outline').each do |item|if item.hasattributes?@subscripciones = @subscripciones+1 if !item.attributes['xmlUrl'].nil?endend@maximo = @subscripciones200@post_pendientes = bloglines.updatedesconexion = (@post_pendientes100)/@maximo@resultado = "Estoy al #{desconexion.to_s}% de desconexion"rescue Exception => e@resultado = eendend
En el routes.rb:
map.connect 'desconectorb/:username/:screenname', :controller => "bloglines", :action => 'desconector3'
De manera que podéis probar con http://mamuso.net/desconectorb/tuemail/tunombredeusuario.
Este baremo tampoco es perfecto, porque yo tengo feeds que no actualizan nada desde junio, por tanto si tienes muchos blogs de este tipo, tu nivel de desconexión será ‘irrealmente bajo’, además si estás suscrito a muchísimos blogs raramente pasarás del 5-10% con más de 2000 items sin leer. A lo mejor podríamos combinarlo con el nivel de desconexión que tienen nuestros suministradores de feeds hacia nosotros (uuuuh, esto se complica brothers!).
Como veis el fin de semana ha sido largo y aburrido. ¿Pensabais que este post era interminable? Yo también :D














