Advertisement
Advertisement

More Related Content

Advertisement

APIs de medios sociales

  1. < APIs de medios 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 API Lectura/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/JSON GET 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/JSON GET 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 API GET 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 doble cerradura desde 2500Bs,laminas,tubos de hierro,cabillas torneadas,angulos y mas", "to_user_id": null, "to_user_id_str": null }
  16. Twitter: Search API Parámetros de búsqueda q: Cadena de búsqueda. ?q=ULL lang: Filtro por idioma. ?lang=es since_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úsqueda el OR hierro Resultados con cualquiera de las dos 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ía from twython import Twython # Instanciar twython twitter = Twython() # Hacer búsqueda resultados = twitter.search(q=”El Hierro”) print resultados
  20. Twython Búsquedas: Diccionario de resultados # Cargar librería from twython import Twython # Instanciar twython twitter = Twython() # Hacer búsqueda resultados = twitter.search(q=”El Hierro”) # resultados es un diccionario print “Búsqueda: “, resultados[‘query’] print “Siguiente página: ”, resultados[‘next_page’]
  21. Twython Búsquedas: Resultados por página # Cargar librería from twython import Twython # Instanciar twython twitter = Twython() # Hacer búsqueda, 100 resultados por página resultados = twitter.search(q=”El Hierro”, rpp=100) # Mostrar número de tweets obtenidos en la búsqueda print len(resultados[‘results’])
  22. Twython Búsquedas: Recorrer tuits # Cargar libreria from twython import Twython # Buscar en Twitter twitter = Twython() resultados = twitter.search (q="El Hierro") # Recorrer resultados for tweet in resultados['results']: print tweet['from_user'], tweet['text']
  23. Twython Bú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 API GET 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=http u00253Au00252Fu00252Fwww.ecplanet.comu00252Fsitesu00252Fecplanet.comu00252Ffiles u00252Fu3u00252F02974_nuova_isola_canarie.jpg", "link": "http://www.ecplanet.com/node/2836", "name": "Emerge un'isola delle Canarie vicino a El Hierro | www.ecplanet.com", "caption": "www.ecplanet.com", "description": "Un'isola delle Canarie tutta nuova sta emergendo dal mare mentre un vulcano sotomarinpo 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úsqueda q: Cadena de búsqueda. ?q=El+Hierro type: Tipo de “objeto”. ?type=post fields: 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ías import urllib import urllib2 import simplejson # Parámetros de la búsqueda parametros = { 'q' : 'El Hierro', 'type' : 'posts' } # Codificar parámetros para la URL get_params = urllib.urlencode(parametros) # Componer URL url = 'http://graph.facebook.com/search?%s' %(get_params) # Abrir URL http = urllib2.urlopen(url) pagina = http.read() # Convertir datos de JSON a diccionario resultados = simplejson.loads(pagina) # Mostrar contenido print resultados
  35. Facebook: Graph API Python # Cargar librerías import urllib import urllib2 import simplejson # Parámetros de la búsqueda parametros = { 'q' : 'El Hierro', 'type' : 'posts' } # Codificar parámetros para la URL get_params = urllib.urlencode(parametros) # Componer URL url = 'http://graph.facebook.com/search?%s' %(get_params) # Abrir URL http = urllib2.urlopen(url) pagina = http.read() # Convertir datos de JSON a diccionario resultados = simplejson.loads(pagina) # resultados es diccionario print len(resultados['data']) print resultados['paging']['next']
  36. Facebook: Graph API Python # Cargar librerías import urllib import urllib2 import simplejson # Parámetros de la búsqueda parametros = { 'q' : 'El Hierro', 'type' : 'posts' } # Codificar parámetros para la URL get_params = urllib.urlencode(parametros) # Componer URL url = 'http://graph.facebook.com/search?%s' %(get_params) # Abrir URL http = urllib2.urlopen(url) pagina = http.read() # Convertir datos de JSON a diccionario resultados = simplejson.loads(pagina) # Recorrer resultados for 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ón en 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/
Advertisement