13. Twitter API
¿Qué se puede hacer?
Respuesta corta: TODO
Respuesta larga: Tweet, mention, Rt , fav,
(un)follow, búsquedas...
14. Twitter API
¿Cómo?
2 APIs:
RESTfull API (básico + búsquedas)
STREAM API (en tiempo real)
15. Twitter API
RESTful API
Http
GET, POST, PUT & DELETE
Nombre = url
Stateless
16. Twitter API
APIs
Hay muchas api, para casi todos los lenguajes.
(ActionScript/Flash,C++, Clojure, ColdFusion,
Erlang, Java, JavaScript, .NET, Objective-C /
Cocoa, Perl, PHP, Python, Ruby, Scala)
Listado “oficial”
33. Twitter API
GET statuses/home_timeline
Veamos todos los posibles parámetros
(todos son optativos):
count, since_id, max_id, page, trim_user, include_rts,
include_entities, exclude_replies, contributor_details
34. Twitter API
Timelines:
Son colecciones de Tweet ordenados
cronológicamente (+ reciente 1º)
GET statuses/home_timeline
GET statuses/mentions
GET statuses/public_timeline
GET statuses/retweeted_by_me
GET statuses/retweeted_to_me
GET statuses/retweets_of_me
GET statuses/user_timeline
GET statuses/retweeted_to_user
GET statuses/retweeted_by_user
35. Twitter API
[
{
"coordinates": null,
"favorited": false,
"created_at": "Fri Jul 16 16:58:46 +0000 2010",
Timelines:
"truncated": false,
"entities": {
"urls": [],
"hashtags": [],
"user_mentions": [
{
"name": "Stephanie",
"id": 15473839,
"indices": [
27,
39
],
"screen_name": "craftybeans"
}
]
},
"text": "got a lovely surprise from @craftybeans. She sent me the best tshirt ever.
http://www.flickr.com/photos/cindyli/4799054041/ ::giggles::",
"annotations": null,
"contributors": null,
"id": 18700887835,
"geo": null,
"in_reply_to_user_id": null,
"place": null,
"in_reply_to_screen_name": null,
"user": {...},
"source": "web",
"in_reply_to_status_id": null
},...
]
37. Twitter API
Tweets:
Los tweets son construcciones atómincas de 140 caracteres más sus
meta-datos asociados
GET statuses/:id/retweeted_by
GET statuses/:id/retweeted_by/ids
GET statuses/retweets/:id
GET statuses/show/:id
POST statuses/destroy/:id
POST statuses/retweet/:id
POST statuses/update
POST
statuses/update_with_media
GET statuses/oembed new
38. Twitter API
Seach:
q Query : Se pueden usar oparadores ( AND OR NOT ...)
geocode
lang
locale
Page: número de la hoja
result_type
mixed: Ambos dos.
recent: devuelve los resultados más recientes
popular: devuelve los resultados más “populares”
Rpp: tweet x hoja
show_user: usuario en el campo text: “user1: Hola mundo!”
Until: fecha máxima
since_id: fecha mínima
include_entities: incluir metadatos de cada tweet.
39. Twitter API
Seach:
búsqueda de twitter conteniendo "búsqueda", "de" y "twitter".
"hora feliz" conteniendo la frase exacta "hora feliz".
odio OR amor conteniendo ya sea "odio" o "amor" (o las dos).
odio AND amor conteniendo tanto "odio" como "amor"
cerveza -raíz conteniendo "cerveza" pero no "raíz".
#haiku conteniendo la etiqueta "haiku".
@mashable haciendo referencia al usuario "mashable".
gracioso filter:links conteniendo "gracioso" y conteniendo enlaces URLs.
noticias source:twitterfeed conteniendo "noticias" y publicadas vía TwitterFeed
40. Twitter API
$twitteroauth->get('trends/woeid');
Yahoo Where On Earth ID
[
{
"created_at": "2010-07-15T22:31:11Z",
"trends": [
{
"name": "Premios Juventud",
"url": "http://search.twitter.com/search?q=Premios+Juventud",
"query": "Premios+Juventud"
},
{
"name": "#agoodrelationship",
"url": "http://search.twitter.com/search?q=%23agoodrelationship",
"query": "%23agoodrelationship"
},
...
42. Twitter API
RT:
$twitteroauth->post("statuses/retweet/".$id);
//hace un RT y devuelve el tweet con los metadatos
$twitteroauth->post("statuses/destroy/”.%id);
//borra el RT hecho anteriormente
$twitteroauth->post(" statuses/retweets/:id”.$id);
//muestra los 100 últimos RTs
43. Twitter API
Favorite:
$twitteroauth->post("favorites/create/".$id);
// “favoritea” dicho tweet
$twitteroauth->post("favorites/destroy/”.%id);
//borra el fav hecho anteriormente
$twitteroauth->post("favorites”);
//muestra los 20 últimos favs
49. Twitter API
Streaming:
Abre un socket permanente
Puede buscar terminos o usuarios
Hace falta implementar un sistema de colas
Límites:
400 palabras a trackear, 5,000 usuarios
TIEMPO REAL
51. Twitter API
Streaming:
statuses/filter:
URL: https://stream.twitter.com/1/statuses/filter.json
Metodos: POST
Parametros: count, delimited, follow, locations,
track, stall_warnings
Devuelve: stream de estados
52. Twitter API
Streaming:
Usaremos la librería OauthPhirehose
(No hay muchas más opciones en php)
Si quieres hacerlo a mano: documentación
53. Twitter API
Streaming:
Sobreescribimos el método:
public function enqueueStatus($status)
{
$data = json_decode($status, true);
if (is_array($data) && isset($data['user']['screen_name']))
{
$filePath = '/var/www/tweets/pila.tweet';
file_put_contents($filePath, $status);
}
}