Publicidad:
Terra
La Coctelera

Mis Tags > api

Hay 6 artículos con el tag api.

Otros artículos en La Coctelera
clasificados con api

Taller sobre la API de 11870.com

Seguro que ya todos conocéis 11870 y que tienen una API fantástica y llena de posibilidades. La documentación lo pone todo MUY sencillito, pero seguro que te falta un empujón para ponerte a jugar.

La oportunidad de quitarte la pereza de encima viene en forma de taller en sus oficinas (Virgen de los Peligros 3, 3º izquierda). Será mañana jueves 24 de abril a las 19:30.

Tienes que confimarles asistencia :) Nos vemos allí!

Youtube, dame el flv!! (con ruby)

Actualización: Esta técnica ya no funciona, tal vez me anime a actualizarlo. Mientras tanto puedes destripar acts as unvlogable :)


Hola de nuevo! Vuelvo a la carga tras mi temporada de barbecho digital bloguero en la que he hecho en the cocktail cosas tan divertidas y bonitas como la web de mtv españa. Qué voy a decir yo que no haya dicho álvaro.

Ahora a divertirme. Jugando con la api de youtube vemos que podemos conseguir lo básico para poder tirar de su información con nuestra aplicación. Tenemos una gema que nos hace la vida más fácil.

Lo único que no nos devuelve la api de youtube directamente es la url del flv que va a cargar su player. No es que nos valga para muchas cosas, pero en casos concretos nos puede interesar (nah, nada de detalles).

Pongamos el caso de la url este video. La anatomía de la url (http://www.youtube.com/watch?v=0xaX7ZfX054) nos da la id del video, y incluso sin tirar de la gema sabremos que la url del player es http://www.youtube.com/v/0xaX7ZfX054.

La url directa al flv no es tan intuitiva de construir.

http://www.youtube.com/get_video.php?video_id=la sabemos&t=token de youtube a averiguar

Así que con un poquito de ruby (y definiendo un método string.to_hash):

Así con una simple llamada a get_flv('http://www.youtube.com/v/0xaX7ZfX054') nos devolverá la url al flv.

A disfrutar!

Creando mapas sobre Google Maps

Hoy me he dado cuenta que google maps ha incorporado la pestaña 'Mis mapas', y la verdad es que la aplicación está bastante bien (quién mejor que ellos).

Se parece bastante a lo que pretendía ser el always procrastinated smupf (hijos, ahora volveré a tratar de centrarme y reconducirlo).

Que google permita hacer mapas con la pedazo de api que tiene por detrás, y con las posibilidades que nos permite aplicando un poquito de imaginación, no sorprende (pronto saldrá el experimentos que hicimos para el taller de apis, vease imagen).

Lo que me sorprende es que usen 'tu' en cursiva :)

Taller de APIS en the cocktail

El próximo miércoles 28 de marzo a las 7 y media hay taller en el aula de la gran corporación.

Si te interesa el tema de las APIS, no puedes faltar. El taller hablaremos:

  • Carlos, de nvivo.es, que nos hablara de las apis de MusicBrainz, Last.fm/Audiscrobbler y MyStrands/OpenStrands.
  • María, mi gran compañera de mesa y maquetas, de limalimon.com.es y the-cocktail.com, que trabajará sobre la api de Flickr
  • Y yo mismo, the-cocktail.com proud member, que contaré cosas de la de GoogleMaps

El taller es abierto (aunque el aforo limitado, apuntate!!).

Más información e inscripciones por aquí .

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 desconector2
       
       begin
         bloglines = Bloglines::WebServices.new(:user => params[:username], :password => params[:password])    
         content = bloglines.listsubs
     
         @subscripciones = 0
         # parseamos el xml de subscripciones
         REXML::XPath.match(content, '//outline').each do |item|
           if item.has_attributes?
             @subscripciones = @subscripciones+1 if !item.attributes['xmlUrl'].nil?
           end
         end
     
         @maximo = @subscripciones*200
     
         @post_pendientes = bloglines.update
         desconexion = (@post_pendientes*100)/@maximo
         @resultado = "Estoy al #{desconexion.to_s}% de desconexion"
       rescue Exception => e
     
         @resultado =  e 
     
       end
         
     end
 

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 desconector3
   begin
   
     bloglines = Bloglines::WebServices.new(:user => params[:username])    
     
     @subscripciones = 0
     # parseamos el xml de subscripciones
 
     url= "http://www.bloglines.com/export?id=#{params[:screenname]}"
     xmldata = Net::HTTP.getresponse(URI.parse(url)).body
     doc = REXML::Document.new(xmldata)
     
     REXML::XPath.match(doc, '//outline').each do |item|
       if item.hasattributes?
         @subscripciones = @subscripciones+1 if !item.attributes['xmlUrl'].nil?
       end
     end
 
     @maximo = @subscripciones200
 
     @post_pendientes = bloglines.update
     desconexion = (@post_pendientes100)/@maximo
     @resultado = "Estoy al #{desconexion.to_s}% de desconexion"
   rescue Exception => e
 
     @resultado =  e 
 
   end
     
 end
 

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

Hoy es día de trastear con APIs, y he pensado que podía retomar una vieja idea de furilo(tm) y jugar un poco con la de bloglines.

Se trata de mostrar tu nivel de desconexión con la realidad en base a los posts que te quedan por leer en bloglines y aplicar un baremo. Ya que hemos empezado con el post de furilo, pues tomaremos la proporción que él planteaba: 787 items pendientes = 65% de desconexión, por lo que 1210 serían el 100%.

Podríamos hacerlo sin instalar absolutamente nada, simplemente deberíamos de tratar lo que devuelve el rpc, pero para facilitar el trabajo usaremos la gema Bloglines4R 0.1.0, que tiene poquitos métodos pero los suficientes para hacer lo que queremos. De hecho es una de las cosas más básicas que se pueden hacer.

  • Conseguimos los posts pendientes de leer
  • Operamos para obtener el porcentaje de desconexión
  • Et voilà
 class BloglinesController < ApplicationController
 
   require 'bloglines'
 
   def desconector
     
     maximo = 1210
     
     begin
       
       bloglines = Bloglines::WebServices.new(:user => params[:id])
       post_pendientes = bloglines.update
       desconexion = (post_pendientes*100)/maximo
       @resultado = "Estoy al #{desconexion.to_s}% de desconexion"
     
     rescue Exception => e
       
       @resultado =  e 
     
     end
   
   end
 
 end
 

El manejo de excepciones en este caso no es más que recoger si el usuario existe o no (ni lo traduzco en este caso)

Podéis probarlo aquí mismo entrando a http://mamuso.net/bloglines/desconector/tuemail@debloglines.com. Si funciona a la velocidad de la tortuga coja es porque dreamhost es lento hasta decir basta (pero barato, eso sí).

Un host en condiciones, unos test (que el personal se me echa encima si no), un formateo en javascript para poder incrustarlo en cualquier blog de forma fácil, y servicio hecho :)

Yo estoy varios días desatendiendo mi bloglines así que según el script Estoy al 218% de desconexion. Así que voy a ponerme al día ya!