Your SlideShare is downloading. ×
APIs de medios sociales
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

APIs de medios sociales

1,193

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" …

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,193
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. < APIs demedios sociales /> Víctor R. Ruiz <rvr@linotipo.es> Tenerife, 18 de noviembre de 2011
  • 2. Llamadas remotas
  • 3. RSS: Sindicación Sólo lectura
  • 4. Blogger APILectura/Escritura (XML-RPC) http://sourceforge.net/projects/blogalia/files/Blogatex/0.1/
  • 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. 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. 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. Un mundo de APIs http://www.programmableweb.com/apis
  • 9. Twitter API
  • 10. Twitter API https://dev.twitter.com/
  • 11. Twitter API• Twitter API. • ReST, JSON.• Búsquedas. • Search API. • Streaming API.• Usuarios. • Lectura/escritura. • Autentificación OAuth.
  • 12. Twitter API: Límites• Sin autentificar. • 150 llamadas/hora por IP.• Autentificadas (OAuth). • 350 llamadas/hora por token.
  • 13. Twitter: Search APIGET http://search.twitter.com/search.json?q=El%20Hierro
  • 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. 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. 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. 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. Twitter + Python Twython• Librería de acceso a Twitter en Python.• Licencia MIT (software libre).• Por Ryan McGrath.• Disponible en github/ryanmcgrath/ twython.
  • 19. Twython Búsquedas# Cargar libreríafrom twython import Twython# Instanciar twythontwitter = Twython()# Hacer búsquedaresultados = twitter.search(q=”El Hierro”)print resultados
  • 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. 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. 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. 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. 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. Facebook API
  • 26. Facebook API https://developers.facebook.com/
  • 27. Facebook API• Graph API. • ReST, JSON. • Búsqueda y lectura/escritura.• Usuarios. • Lectura/escritura. • Autentificación OAuth.
  • 28. Graph API: Límites• Autentificadas (OAuth). • 600 llamadas cada 600 segundos.
  • 29. Facebook: Graph APIGET http://graph.facebook.com/search?q=El+Hierro
  • 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. 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. 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. 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. 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. 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. 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. Utilidades Graph API• Explorador de Graph API.• SDKs oficiales: JavaScript, PHP, iOS, Android.• FacePy (Python).
  • 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. ¡Gracias por su atención!
  • 40. Cómo obtener informaciónen redes sociales Víctor R. Ruiz <rvr@linotipo.es>Tenerife, 14-18 de noviembre de 2011
  • 41. Contacto Víctor R. Ruiz twitter.com/vrruiz · rvr.linotipo.es> Otras presentaciones disponibles en < http://linotipo.es/

×