< APIs demedios sociales />   Víctor R. Ruiz <rvr@linotipo.es>  Tenerife, 18 de noviembre de 2011
Llamadas remotas
RSS: Sindicación    Sólo lectura
Blogger APILectura/Escritura (XML-RPC)    http://sourceforge.net/projects/blogalia/files/Blogatex/0.1/
APIs ReST         HTTP + XML/JSON• Transferencia de Estado Representado• Protocolo cliente/servidor sin estado.• HTTP.• Op...
APIs ReST           HTTP + XML/JSONGET http://web.api/usuario?id=20<usuario>  <id>20</id>  <nombre>Juan Pérez Fernández</n...
APIs ReST                HTTP + XML/JSONGET http://web.api/usuario?id=20{    “usuario” :    {      “id” : 20,      “nombre...
Un mundo de APIs    http://www.programmableweb.com/apis
Twitter API
Twitter API  https://dev.twitter.com/
Twitter API• Twitter API. • ReST, JSON.• Búsquedas. • Search API. • Streaming API.• Usuarios. • Lectura/escritura. • Auten...
Twitter API: Límites• Sin autentificar. • 150 llamadas/hora por IP.• Autentificadas (OAuth). • 350 llamadas/hora por token.
Twitter: Search APIGET http://search.twitter.com/search.json?q=El%20Hierro
Twitter: Search API         Anatomía de la respuesta{  "completed_in": 0.093,  "max_id": 137515427810131968,  "max_id_str"...
Twitter: Search API               Anatomía de un tweet{  "created_at": "Fri, 18 Nov 2011 13:00:07 +0000",  "from_user": "o...
Twitter: Search API        Parámetros de búsquedaq: Cadena de búsqueda. ?q=ULLlang: Filtro por idioma. ?lang=essince_id: R...
Twitter: Search API       Operadores de búsquedael OR hierro Resultados con cualquiera de lasdos palabras.“el hierro” Búsq...
Twitter + Python               Twython• Librería de acceso a Twitter en Python.• Licencia MIT (software libre).• Por Ryan ...
Twython                       Búsquedas# Cargar libreríafrom twython import Twython# Instanciar twythontwitter = Twython()...
TwythonBúsquedas: Diccionario de resultados# Cargar libreríafrom twython import Twython# Instanciar twythontwitter = Twyth...
Twython   Búsquedas: Resultados por página# Cargar libreríafrom twython import Twython# Instanciar twythontwitter = Twytho...
Twython         Búsquedas: Recorrer tuits# Cargar libreriafrom twython import Twython# Buscar en Twittertwitter = Twython(...
TwythonBúsquedas: Guardar resultados (CSV)  # Cargar librerías  import csv  from twython import Twython  # Crear archivo C...
Librerías para Twitter• Lista de librerías en dev.twitter.com• Flash, C++, Clojure, Erlang, Java,  JavaScript, .NET, Objec...
Facebook API
Facebook API  https://developers.facebook.com/
Facebook API• Graph API. • ReST, JSON. • Búsqueda y lectura/escritura.• Usuarios. • Lectura/escritura. • Autentificación O...
Graph API: Límites• Autentificadas (OAuth). • 600 llamadas cada 600 segundos.
Facebook: Graph APIGET http://graph.facebook.com/search?q=El+Hierro
Facebook: Graph API         Anatomía de la respuesta{  "data": [     …  ],  "paging": {     "previous": "http://graph.face...
Facebook: Graph API              Anatomía de los contenidos{   "id": "1436858786_250763664960096",   "from": {      "name"...
Facebook: Graph API        Parámetros de búsquedaq: Cadena de búsqueda. ?q=El+Hierrotype: Tipo de “objeto”. ?type=postfiel...
Facebook: Graph API           Tipos de objetos     Achievement, Album, Application,    Checkin, Comment, Domain, Event,Fri...
Facebook: Graph API                              Python# Cargar libreríasimport urllibimport urllib2import simplejson# Par...
Facebook: Graph API                              Python# Cargar libreríasimport urllibimport urllib2import simplejson# Par...
Facebook: Graph API                              Python# Cargar libreríasimport urllibimport urllib2import simplejson# Par...
Utilidades Graph API• Explorador de Graph API.• SDKs oficiales: JavaScript, PHP, iOS,  Android.• FacePy (Python).
Más información•   Programming Collective    Intelligence, Toby    Seagram (O’Reilly).•   Mining the Social Web,    Matthe...
¡Gracias por su  atención!
Cómo obtener  informaciónen redes sociales   Víctor R. Ruiz <rvr@linotipo.es>Tenerife, 14-18 de noviembre de 2011
Contacto            Víctor R. Ruiz  twitter.com/vrruiz · rvr.linotipo.es> Otras presentaciones disponibles en <          h...
Upcoming SlideShare
Loading in …5
×

APIs de medios sociales

1,901 views

Published on

Introducción a las APIs de medios sociales, con ejemplos de acceso a Twitter y Facebook. Leer en combinación con la presentación "Tecnologías web y Python" http://www.slideshare.net/rvr/tecnologas-web-python

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,901
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
18
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

APIs de medios sociales

  1. 1. < APIs demedios sociales /> Víctor R. Ruiz <rvr@linotipo.es> Tenerife, 18 de noviembre de 2011
  2. 2. Llamadas remotas
  3. 3. RSS: Sindicación Sólo lectura
  4. 4. Blogger APILectura/Escritura (XML-RPC) http://sourceforge.net/projects/blogalia/files/Blogatex/0.1/
  5. 5. APIs ReST HTTP + XML/JSON• Transferencia de Estado Representado• Protocolo cliente/servidor sin estado.• HTTP.• Operaciones definidas. • POST, GET, PUT y DELETE.• Respuestas: XML/JSON
  6. 6. APIs ReST HTTP + XML/JSONGET http://web.api/usuario?id=20<usuario> <id>20</id> <nombre>Juan Pérez Fernández</nombre> <web>http://fernandez.perez.juan/</web></usuario>
  7. 7. APIs ReST HTTP + XML/JSONGET http://web.api/usuario?id=20{ “usuario” : { “id” : 20, “nombre” : “Juan Pérez Fernández”, “web” : “http://fernandez.perez.juan/” }}
  8. 8. Un mundo de APIs http://www.programmableweb.com/apis
  9. 9. Twitter API
  10. 10. Twitter API https://dev.twitter.com/
  11. 11. Twitter API• Twitter API. • ReST, JSON.• Búsquedas. • Search API. • Streaming API.• Usuarios. • Lectura/escritura. • Autentificación OAuth.
  12. 12. Twitter API: Límites• Sin autentificar. • 150 llamadas/hora por IP.• Autentificadas (OAuth). • 350 llamadas/hora por token.
  13. 13. Twitter: Search APIGET http://search.twitter.com/search.json?q=El%20Hierro
  14. 14. Twitter: Search API Anatomía de la respuesta{ "completed_in": 0.093, "max_id": 137515427810131968, "max_id_str": "137515427810131968", "next_page": "?page=2&max_id=137515427810131968&q=El%20Hierro", "page": 1, "query": "El+Hierro", "refresh_url": "?since_id=137515427810131968&q=El%20Hierro", "results": [ ... ], "results_per_page": 15, "since_id": 0, "since_id_str": "0"}
  15. 15. Twitter: Search API Anatomía de un tweet{ "created_at": "Fri, 18 Nov 2011 13:00:07 +0000", "from_user": "oydaragua", "from_user_id": 287701318, "from_user_id_str": "287701318", "from_user_name": "LaOfertaylaDemandaA", "geo": null, "id": 137515427810131968, "id_str": "137515427810131968", "iso_language_code": "es", "metadata": { "result_type": "recent" }, "profile_image_url": "http://a1.twimg.com/profile_images/1332147157/Sin_t_tulo-1_normal.jpg", "source": "&lt;a href=&quot;http://autotuits.com&quot;rel=&quot;nofollow&quot;&gt;autotuits&lt;/a&gt;", "text": "Todo para el herrero puerta de metal fondeadas para doblecerradura desde 2500Bs,laminas,tubos de hierro,cabillas torneadas,angulos ymas", "to_user_id": null, "to_user_id_str": null}
  16. 16. Twitter: Search API Parámetros de búsquedaq: Cadena de búsqueda. ?q=ULLlang: Filtro por idioma. ?lang=essince_id: Resultados con el ID mayor que.rpp: Tweets por página de resultados. ?rpp=50 https://dev.twitter.com/docs/api/1/get/search
  17. 17. Twitter: Search API Operadores de búsquedael OR hierro Resultados con cualquiera de lasdos palabras.“el hierro” Búsqueda exacta.-el hierro Resultados con “hierro” pero sin“el”.from:usuario Escritos por el usuario.@usuario Menciones al usuario. https://dev.twitter.com/docs/using-search
  18. 18. Twitter + Python Twython• Librería de acceso a Twitter en Python.• Licencia MIT (software libre).• Por Ryan McGrath.• Disponible en github/ryanmcgrath/ twython.
  19. 19. Twython Búsquedas# Cargar libreríafrom twython import Twython# Instanciar twythontwitter = Twython()# Hacer búsquedaresultados = twitter.search(q=”El Hierro”)print resultados
  20. 20. TwythonBúsquedas: Diccionario de resultados# Cargar libreríafrom twython import Twython# Instanciar twythontwitter = Twython()# Hacer búsquedaresultados = twitter.search(q=”El Hierro”)# resultados es un diccionarioprint “Búsqueda: “, resultados[‘query’]print “Siguiente página: ”, resultados[‘next_page’]
  21. 21. Twython Búsquedas: Resultados por página# Cargar libreríafrom twython import Twython# Instanciar twythontwitter = Twython()# Hacer búsqueda, 100 resultados por páginaresultados = twitter.search(q=”El Hierro”, rpp=100)# Mostrar número de tweets obtenidos en la búsquedaprint len(resultados[‘results’])
  22. 22. Twython Búsquedas: Recorrer tuits# Cargar libreriafrom twython import Twython# Buscar en Twittertwitter = Twython()resultados = twitter.search (q="El Hierro")# Recorrer resultadosfor tweet in resultados[results]: print tweet[from_user], tweet[text]
  23. 23. TwythonBúsquedas: Guardar resultados (CSV) # Cargar librerías import csv from twython import Twython # Crear archivo CSV fichero = open(tweets.csv, wb) fichero_csv = csv.writer(fichero) # Buscar en Twitter twitter = Twython() resultados = twitter.search (q="El Hierro") # Recorrer resultados for tweet in resultados[results]:    # Crear lista    row = [tweet[from_user], tweet[created_at]]    # Escribir tweet en fichero csv    fichero_csv.writerow(row) fichero.close()
  24. 24. Librerías para Twitter• Lista de librerías en dev.twitter.com• Flash, C++, Clojure, Erlang, Java, JavaScript, .NET, Objective-C, Perl, PHP, Python, Ruby, Scala.
  25. 25. Facebook API
  26. 26. Facebook API https://developers.facebook.com/
  27. 27. Facebook API• Graph API. • ReST, JSON. • Búsqueda y lectura/escritura.• Usuarios. • Lectura/escritura. • Autentificación OAuth.
  28. 28. Graph API: Límites• Autentificadas (OAuth). • 600 llamadas cada 600 segundos.
  29. 29. Facebook: Graph APIGET http://graph.facebook.com/search?q=El+Hierro
  30. 30. Facebook: Graph API Anatomía de la respuesta{ "data": [ … ], "paging": { "previous": "http://graph.facebook.com/search?q=El+Hierro&limit=25&since=1321468704", "next": "http://graph.facebook.com/search?q=El+Hierro&limit=25&until=1318323720" }}
  31. 31. Facebook: Graph API Anatomía de los contenidos{ "id": "1436858786_250763664960096", "from": { "name": "Maria Danyi", "id": "1436858786" }, "story": "Maria Danyi shared a link.", "story_tags": { "0": [ { "id": 1436858786, "name": "Maria Danyi", "offset": 0, "length": 11 } ] }, "picture": "http://external.ak.fbcdn.net/safe_image.php?d=AQDSegal3g7PeP4k&w=90&h=90&url=httpu00253Au00252Fu00252Fwww.ecplanet.comu00252Fsitesu00252Fecplanet.comu00252Ffilesu00252Fu3u00252F02974_nuova_isola_canarie.jpg", "link": "http://www.ecplanet.com/node/2836", "name": "Emerge unisola delle Canarie vicino a El Hierro | www.ecplanet.com", "caption": "www.ecplanet.com", "description": "Unisola delle Canarie tutta nuova sta emergendo dal mare mentre un vulcanosotomarinpo sta eruttando verso la superficie.", "icon": "http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/aS8ecmYRys0.gif", "type": "link", "application": { "name": "Links", "id": "2309869772"},
  32. 32. Facebook: Graph API Parámetros de búsquedaq: Cadena de búsqueda. ?q=El+Hierrotype: Tipo de “objeto”. ?type=postfields: Campos a devolver. ?fields=name https://developers.facebook.com/docs/reference/api/
  33. 33. Facebook: Graph API Tipos de objetos Achievement, Album, Application, Checkin, Comment, Domain, Event,FriendList, Group, Insights, Link, Message, Note, Page, Photo, Post, Question, QuestionOption, Review, Status message, Subscription, Thread, User, Video.
  34. 34. Facebook: Graph API Python# Cargar libreríasimport urllibimport urllib2import simplejson# Parámetros de la búsquedaparametros = { q : El Hierro, type : posts }# Codificar parámetros para la URLget_params = urllib.urlencode(parametros)# Componer URLurl = http://graph.facebook.com/search?%s %(get_params)# Abrir URLhttp = urllib2.urlopen(url)pagina = http.read()# Convertir datos de JSON a diccionarioresultados = simplejson.loads(pagina)# Mostrar contenidoprint resultados
  35. 35. Facebook: Graph API Python# Cargar libreríasimport urllibimport urllib2import simplejson# Parámetros de la búsquedaparametros = { q : El Hierro, type : posts }# Codificar parámetros para la URLget_params = urllib.urlencode(parametros)# Componer URLurl = http://graph.facebook.com/search?%s %(get_params)# Abrir URLhttp = urllib2.urlopen(url)pagina = http.read()# Convertir datos de JSON a diccionarioresultados = simplejson.loads(pagina)# resultados es diccionarioprint len(resultados[data])print resultados[paging][next]
  36. 36. Facebook: Graph API Python# Cargar libreríasimport urllibimport urllib2import simplejson# Parámetros de la búsquedaparametros = { q : El Hierro, type : posts }# Codificar parámetros para la URLget_params = urllib.urlencode(parametros)# Componer URLurl = http://graph.facebook.com/search?%s %(get_params)# Abrir URLhttp = urllib2.urlopen(url)pagina = http.read()# Convertir datos de JSON a diccionarioresultados = simplejson.loads(pagina)# Recorrer resultadosfor objeto in resultados[‘data’]: print objeto[‘id’], objeto[‘from’][‘name’]
  37. 37. Utilidades Graph API• Explorador de Graph API.• SDKs oficiales: JavaScript, PHP, iOS, Android.• FacePy (Python).
  38. 38. Más información• Programming Collective Intelligence, Toby Seagram (O’Reilly).• Mining the Social Web, Matthew A. Russell (O’Reilly).• Data mining, Matthew Hurst.• infosthetics, blog.
  39. 39. ¡Gracias por su atención!
  40. 40. Cómo obtener informaciónen redes sociales Víctor R. Ruiz <rvr@linotipo.es>Tenerife, 14-18 de noviembre de 2011
  41. 41. Contacto Víctor R. Ruiz twitter.com/vrruiz · rvr.linotipo.es> Otras presentaciones disponibles en < http://linotipo.es/

×