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
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
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": "<a href="http://autotuits.com"
rel="nofollow">autotuits</a>",
"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
}
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
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
Twitter + Python
Twython
• Librería de acceso a Twitter en Python.
• Licencia MIT (software libre).
• Por Ryan McGrath.
• Disponible en github/ryanmcgrath/
twython.
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"
}
}
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"
},
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/
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.
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
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']
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’]
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,
Matthew A. Russell
(O’Reilly).
• Data mining, Matthew
Hurst.
• infosthetics, blog.