apis de medios sociales
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-pythonTRANSCRIPT
![Page 2: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/2.jpg)
Llamadas remotas
![Page 3: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/3.jpg)
RSS: SindicaciónSólo lectura
![Page 4: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/4.jpg)
Blogger APILectura/Escritura (XML-RPC)
http://sourceforge.net/projects/blogalia/files/Blogatex/0.1/
![Page 5: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/7.jpg)
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 8: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/8.jpg)
Un mundo de APIs
http://www.programmableweb.com/apis
![Page 9: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/9.jpg)
Twitter API
![Page 10: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/10.jpg)
Twitter API
https://dev.twitter.com/
![Page 11: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/11.jpg)
Twitter API• Twitter API.
• ReST, JSON.
• Búsquedas.
• Search API.
• Streaming API.
• Usuarios.
• Lectura/escritura.
• Autentificación OAuth.
![Page 12: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/12.jpg)
Twitter API: Límites
•Sin autentificar.
•150 llamadas/hora por IP.
•Autentificadas (OAuth).
•350 llamadas/hora por token.
![Page 13: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/13.jpg)
Twitter: Search APIGET http://search.twitter.com/search.json?q=El%20Hierro
![Page 14: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/15.jpg)
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": "<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}
![Page 16: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/25.jpg)
Facebook API
![Page 26: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/26.jpg)
Facebook API
https://developers.facebook.com/
![Page 27: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/27.jpg)
Facebook API
• Graph API.
• ReST, JSON.
• Búsqueda y lectura/escritura.
• Usuarios.
• Lectura/escritura.
• Autentificación OAuth.
![Page 28: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/28.jpg)
Graph API: Límites
•Autentificadas (OAuth).
•600 llamadas cada 600 segundos.
![Page 29: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/29.jpg)
Facebook: Graph APIGET http://graph.facebook.com/search?q=El+Hierro
![Page 30: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/36.jpg)
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 37: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/37.jpg)
Utilidades Graph API
•Explorador de Graph API.
• SDKs oficiales: JavaScript, PHP, iOS, Android.
•FacePy (Python).
![Page 38: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/38.jpg)
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.
![Page 39: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/39.jpg)
¡Gracias por su atención!
![Page 40: APIs de medios sociales](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/40.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052316/557d5498d8b42ae3298b5308/html5/thumbnails/41.jpg)
Contacto
Víctor R. Ruiztwitter.com/vrruiz · rvr.linotipo.es
> Otras presentaciones disponibles en <http://linotipo.es/