apis de medios sociales

41
< APIs de medios sociales /> Víctor R. Ruiz <[email protected] > Tenerife, 18 de noviembre de 2011

Upload: victor-r-ruiz

Post on 14-Jun-2015

1.218 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: APIs de medios sociales

< APIs demedios sociales />

Víctor R. Ruiz <[email protected]>Tenerife, 18 de noviembre de 2011

Page 2: APIs de medios sociales

Llamadas remotas

Page 3: APIs de medios sociales

RSS: SindicaciónSólo lectura

Page 4: APIs de medios sociales

Blogger APILectura/Escritura (XML-RPC)

http://sourceforge.net/projects/blogalia/files/Blogatex/0.1/

Page 5: APIs de medios sociales

APIs ReSTHTTP + XML/JSON

•Transferencia de Estado Representado

•Protocolo cliente/servidor sin estado.

•HTTP.

•Operaciones definidas.

•POST, GET, PUT y DELETE.

•Respuestas: XML/JSON

Page 6: APIs de medios sociales

APIs ReSTHTTP + 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>

Page 7: APIs de medios sociales

APIs ReSTHTTP + XML/JSON

GET http://web.api/usuario?id=20

{ “usuario” : { “id” : 20, “nombre” : “Juan Pérez Fernández”, “web” : “http://fernandez.perez.juan/” }}

Page 9: APIs de medios sociales

Twitter API

Page 12: APIs de medios sociales

Twitter API: Límites

•Sin autentificar.

•150 llamadas/hora por IP.

•Autentificadas (OAuth).

•350 llamadas/hora por token.

Page 14: APIs de medios sociales

Twitter: Search APIAnatomí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"}

Page 15: APIs de medios sociales

Twitter: Search APIAnatomí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}

Page 16: APIs de medios sociales

Twitter: Search APIPará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

Page 17: APIs de medios sociales

Twitter: Search APIOperadores 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

Page 18: APIs de medios sociales

Twitter + PythonTwython

•Librería de acceso a Twitter en Python.

•Licencia MIT (software libre).

•Por Ryan McGrath.

•Disponible en github/ryanmcgrath/twython.

Page 19: APIs de medios sociales

TwythonBúsquedas

# Cargar libreríafrom twython import Twython

# Instanciar twythontwitter = Twython()

# Hacer búsquedaresultados = twitter.search(q=”El Hierro”)print resultados

Page 20: APIs de medios sociales

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’]

Page 21: APIs de medios sociales

TwythonBú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’])

Page 22: APIs de medios sociales

TwythonBú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']

Page 23: APIs de medios sociales

TwythonBúsquedas: Guardar resultados (CSV)

# Cargar libreríasimport csvfrom twython import Twython

# Crear archivo CSVfichero = open('tweets.csv', 'wb')fichero_csv = csv.writer(fichero)

# Buscar en Twittertwitter = Twython()resultados = twitter.search (q="El Hierro")

# Recorrer resultadosfor tweet in resultados['results']:    # Crear lista    row = [tweet['from_user'], tweet['created_at']]    # Escribir tweet en fichero csv    fichero_csv.writerow(row)

fichero.close()

Page 24: APIs de medios sociales

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.

Page 25: APIs de medios sociales

Facebook API

Page 27: APIs de medios sociales

Facebook API

• Graph API.

• ReST, JSON.

• Búsqueda y lectura/escritura.

• Usuarios.

• Lectura/escritura.

• Autentificación OAuth.

Page 28: APIs de medios sociales

Graph API: Límites

•Autentificadas (OAuth).

•600 llamadas cada 600 segundos.

Page 30: APIs de medios sociales

Facebook: Graph APIAnatomí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" }}

Page 31: APIs de medios sociales

Facebook: Graph APIAnatomí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\u00253A\u00252F\u00252Fwww.ecplanet.com\u00252Fsites\u00252Fecplanet.com\u00252Ffiles\u00252Fu3\u00252F02974_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"},

Page 32: APIs de medios sociales

Facebook: Graph APIPará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/

Page 33: APIs de medios sociales

Facebook: Graph APITipos 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.

Page 34: APIs de medios sociales

Facebook: Graph APIPython

# 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

Page 35: APIs de medios sociales

Facebook: Graph APIPython

# 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']

Page 36: APIs de medios sociales

Facebook: Graph APIPython

# 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’]

Page 39: APIs de medios sociales

¡Gracias por su atención!

Page 40: APIs de medios sociales

Cómo obtener información

en redes socialesVíctor R. Ruiz <[email protected]>

Tenerife, 14-18 de noviembre de 2011

Page 41: APIs de medios sociales

Contacto

Víctor R. Ruiztwitter.com/vrruiz · rvr.linotipo.es

> Otras presentaciones disponibles en <http://linotipo.es/