Los amigos de BlogsMedia acaban de lanzar YouAre.com, proyecto en el que he colaborado un poco, por lo que me hace mucha ilusión que ya salga a la luz.
YouAre es una publicación de contenidos por microblogging, pudiendo publicar textos, vídeos y fotos, permite networking, canales de ciudad, bookmarking, importación de contenidos (delicious, flickr y youtube) y muchas cosas más (y las que faltan por venir).
En YouAre puedes incluir tu curriculum profesional y tus estudios para así poder contactar con otros usuarios, para mucha gente es importante la trayectoria que llevas hasta ese momento.
Como dirían en YouAre: Twitter + Tumblr + Linkedin + Del.icio.us + Ingrediente secreto = YouAre
Mucha suerte para JL y Gabi disclamer: he participado en el desarrollo del proyecto [¡dios!, siempre he deseado poner un disclamer]
Pues dicho y hecho, tan sólo se necesitan dos scripts, uno para recuperar los datos y otro para mostrarlos. El primero habrá que ponerlo en el cron para que recupere los datos cada cierto tiempo (en mi ejemplo busco “google” cada 2 minutos).
Hay que tener cuidado porque Twitter da un máximo de 2000 actualizaciones nuevas, por lo que tendremos que ajustar los tiempos de consulta en Twitter.
El script que lee los datos es el siguiente:
<? php
function insertar($consulta, $ult) {
global $db;
$data = json_decode(file_get_contents('http://search.twitter.com/search?q='.urlencode($consulta).'&refresh=true&since_id='.$ult));
$n = isset($data->total) && $ult != $data->max_id? $data->total:0;
$db->queryExec('INSERT INTO estadisticas (fecha, n) values ('.time().', '.$n.')');
if (!$ult) $db->queryExec("INSERT INTO opciones (clave, valor) values ('ultimo', ".$data->max_id.")");
else $db->queryExec("UPDATE opciones SET valor = ".$data->max_id." where clave='ultimo' ");
}
$consulta = $_GET['q'];
// Limpio para poder usarlo en el nombre para la BD
$_consulta = preg_replace('/[^A-Z0-9]/i', '_', $consulta);
if ($db = new SQLiteDatabase($_consulta.'.db')) {
$q = @$db->query("SELECT valor FROM opciones Where clave='ultimo'");
if (!$q) {
$db->queryExec('CREATE TABLE estadisticas (fecha real, n real, PRIMARY KEY (fecha));');
$db->queryExec('CREATE TABLE opciones (clave text, valor text, PRIMARY KEY (clave));');
$q = $db->query("SELECT valor FROM opciones Where clave='ultimo'");
}
$r = $q->fetchAll(SQLITE_ASSOC);
$ult = 0;
if (!empty($r)) $ult = $r[0]['valor'];
insertar($consulta, $ult);
}
?>
Y el script que dibuja la gráfica es:
<? php
$desde = strtotime($_GET['desde']);
$hasta = strtotime($_GET['hasta']);
$consulta = $_GET['q'];
// Limpio para poder usarlo en el nombre para la BD
$_consulta = preg_replace('/[^A-Z0-9]/i', '_', $consulta);
if ($db = new SQLiteDatabase($_consulta.'.db')) {
$q = $db->query("SELECT fecha, n FROM estadisticas Where fecha>".$desde." and fecha<".$hasta);
$r = $q->fetchAll(SQLITE_ASSOC);
foreach($r as $item) {
$x[] = $item['n'];
$l[] = $item['fecha'];
}
}
header('Location: http://chart.apis.google.com/chart?chtt=Line+Chart&chts=000000,12&chs=1000x600&chf=bg,s,ffffff|c,s,ffffff&chxt=x,y&chxl=0:|'.implode('|', $l).'|1:|'.implode('|', $x).'&cht=lc&chd=t:75.00,16.66,0.00,8.33,100.00&chdl=Label+1&chco=0000ff&chls=1,1,0');
Actualización: Google Charts no deja meter muchos valores por lo que la gráfica de arriba sólo saca las 20 últimas actualizaciones
Para mí, uno de los mayores fracasos de Twitter es su API, una limitación de su uso increíble para algo que le podría dar mucho juego a la aplicación. Ahora mismo no sé en cuánto está el límite, pero la posibilidad de realizar una aplicación basada en Twitter es una pesadilla.
Para aquellos que no quieran sufrir lo que hemos sufrido con TwitterPoster (los espacios en blanco es porque la gente actualiza su imagen y no podemos recuperar la de todos los usuarios por el límite en el API de Twitter), les recomiendo usar Twitter mediante CURL.
Os paso un script sencillito que he realizado:
<?php
// Primer hacemos login
$url ="https://twitter.com/sessions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// Por si tienen limitación por navegador
curl_setopt($ch, curlOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)");
// Poned una ruta para las cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, '/temp/');
curl_setopt ($ch, CURLOPT_COOKIEFILE, '/temp/');
curl_setopt ($ch, CURLOPT_POSTFIELDS, "username_or_email=[usuario]&password=[contraseña]");
// Para que funcione el https
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, curlOPT_SSL_VERIFYHOST, 2);
curl_exec ($ch);
// Cargamos el home, porque Twitter añade dos campos ocultos para poder publicar por web
$url ="http://twitter.com/home";
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec ($ch);
// Recuperamos los campos ocultos
preg_match('//', $result, $match);
$authenticity_token = $match[1];
preg_match('//', $result, $match);
$siv = $match[1];
// Insertamos el texto
$res = $url ="http://twitter.com/status/update";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'siv='.$siv.'&authenticity_token='.$auth.'&status=[texto]');
curl_exec ($ch);
curl_close ($ch);
unset($ch);
?>
¿Qué fallo tiene este script? pues que si cambian el HTML (campos de formulario, …) o las URLs deja de funcionar, pero al menos no tenemos limitaciones. Eso sí, es más costoso para sus servidores y para los nuestros, porque en vez de hacer una llamada, hacemos 3, y en nuestro caso, a parte parseamos una página para obtener dos campos ocultos.
Si el otro día hablaba del lanzamiento de YouAre, que aún está en beta privada, hoy dispongo de 20 invitaciones para usar YouAre.
Aquellos que quieran una de esas 20 invitaciones solo tienen que mandar un email a use[arroba]youare[punto]com con el título Invitaciones Sentido Web para que conseguirla. Actualización: ya se han repartido todas las invitaciones.
A la hora de buscar imágenes que podamos usar en nuestros blogs, siempre se intenta que sean con licencia Creative Commons y un lugar dónde se suele buscar es en Flickr.
El problema es que cuando buscas en Flickr fotografÃas con licencia CC, te suele dar unas pocas, cuando tu intención suele ser buscar cuantas más mejor.
Alguien con un mismo problema ha creado FlickrCC, que permite buscar en Flickr fotografÃas con licencia CC. Su uso es muy sencillo, aparecen 36 fotografÃas en un panel a la izquierda, el buscador a la derecha, junto a la foto seleccionada y la información de esta. Las fotos están organizadas según las más interesantes, dato dado por el voto.
Si quieres editar la fotografÃa seleccionada, usando el pequeño editor online que ofrecen, tienes que seleccionar “FOR EDITING” para asegurarse que nos devuelva fotografÃas con “Attribution License”, “Attribution-NonCommercial License”, “Attribution-NonCommercial-ShareAlike License” y “Attribution-ShareAlike License”. FlickCC
VÃa / Intenta
Twitter ha lanzado hoy su base de datos de grafos (graph database) basada en MySQL, pensada para usarse en aplicaciones ajenas a Twitter, pero logicamente para almacenar las relaciones entre usuarios (following, followers).
Por ahora parece que es una versión básica, pero cuando esté correctamente me gustaría ver la relación con OQGraph
Si ya el rediseño de Techcrunch es vulgar, los cambios en la interfaz de Flickr, especialmente en la desaparición del gris como color de fondo en la navegación del header y el footer, solo hace abundar en la confusión. Tanto blanco se me hace aburrido. Incluso han eliminado el border de las fotos.
Austeridad al estilo Google en esta nueva fase bautizada como Gamma, pero se equivocan. En Flickr se navega interior y jerarquizadamente en el que referencias visuales, como pueden ser diferentes colores de fondo, son efectivas.
Entre las mejoras, ahà sà que han acertado:
Más protagonismo del buscador y los feeds (grupos incluidos).