Resultado de etiquetas “api”

Comienzan a aparecer tutoriales y clases en PHP para manejar cómodamente el API de Analytics.

También los hay ya para otros lenguajes:

Tenía pendiente crear un bloque de entradas más vistas (o visitadas) y aprovechando la apertura del API de Google Analytics y lo divertido de la documentación he creado un breve programita en PHP para acceder a esos datos.

Basta con definir GA_LOGIN y GA_PASS con nuestros datos de acceso a Analytics e indicar en GA_IDS el id del perfil a consultar. El último dato también se puede obtener con el API, como explican en el ejemplo de datos de cuenta, pero he preferido indicarlo directamente para simplificar. Para obtener este número basta con entrar en Analytics, editar el perfil que deseemos y copiar el Número de identificación del perfil que nos indica.

Este ejemplo obtiene las 10 páginas con más visitas de la última semana ordenados de forma decreciente por visitas.

<?php
  define
('GA_LOGIN',  'LOGIN');       # cambiar
  
define('GA_PASS',   'PASSWORD');    # cambiar
  
define('GA_IDS',    'ID');          # cambiar
  
define('GA_APP',    'www.mabarroso.com-ga-1.0');

  
# Login
    
$loginURL 'https://www.google.com/accounts/ClientLogin?accountType=GOOGLE&Email='.GA_LOGIN.'&Passwd='.GA_PASS.'&source='.GA_APP.'&service=analytics';
    
$loginData file_get_contents($loginURL);
    list(,
$Auth) = split('Auth='$loginData);

    if (!
$Auth) {
      exit(
'no logged in');
    }

  
# Fijamos user agent y Auth en la cabecera de las peticiones
    
ini_set('user_agent'GA_APP."\r\nAuthorization: GoogleLogin auth=$Auth");

  
# Rango de fechas
    
$dateEnd date('Y-m-d'time()-86400);  // ayer
    
$dateBegin   date('Y-m-d'time()-604800); // la semana pasada

  # Consulta
    
$data file_get_contents('https://www.google.com/analytics/feeds/data?ids=ga:'.GA_IDS.'&dimensions=ga:pagePath&metrics=ga:pageviews&sort=-ga:pageviews&start-index=1&max-results=10&start-date='.$dateBegin.'&end-date='.$dateEnd);
    
$data str_replace(array('dxp:dimension','dxp:metric'), array('dxpdimension','dxpmetric'), $data);
    
$xml simplexml_load_string($data);

  
# Datos
    
$i 0;
    foreach (
$xml->entry as $entry) {
      echo ++
$i.' '.$entry->dxpdimension['value'].' : '$entry->dxpmetric['value'] .'<br/>';
    }
?>

He tenido problemas al recuperar los valores dxp:dimensión y dxp:metric con SimpleXML. No es una solución elegante pero, para salvar el obstáculo, reemplazo esas cadenas de texto por otras que no dan problemas (les quito los dos puntos).

lo más visto

Actualizado 24/4/2009 8:45. He usado el código anterior como base para actualizar a diario el nuevo bloque Lo más visto en la barra de la derecha, según los datos de Google Analytics.

Con una tarea programada para ejecutarse una vez al día: se recuperan los datos, se construye el código HTML y se guarda en archivo. La consulta a Google no se hace en cada petición. Es innecesario. Por el momento son las entradas más vistas durante la última semana, como en el código de ejemplo. Con el paso del tiempo comprobaré si conviene acortar o alargar el periodo.

Ahora se me ocurre que también sería interesante hacer otro bloque que fuera La entrada más vista ayer. Valdría el mismo código, cambiando la fecha inicial por $dateBegin = date('Y-m-d', time()-172800); (fecha actual menos el número de segundos de dos días). Por optimizar, también se puede cambiar en la url de la consulta max-results=1 y así obtener un único resultado en vez de 10.

Curioseando la documentación del API de Google Analytics me ha sorprendido las múltiples referencias a Orgullo y prejuicio. No deja de ser simpático que el usuario Elizabeth Bennett use su cuenta de correo liz@gmail.com para identificarse. Es divertido que los perfiles a los que tiene acceso sean Darcy's Blog (el blog del orgulloso amigo del señor Bingley), Jane's Blog (el blog de su hermana), el Austen's Most-Adored Website y el The Jane Austen Bookstore. Es una lástima que mi preferido, el adoradamente odiable señor Collins, no tenga su propio blog para hablar de su benefactora Lady Catherine de Bourgh y de la magnífica Rosings Park. Por suerte Lydia tampoco parece tener blog. Preferirá bailar.

Me avergüenza reconocer que he tenido un primer impulso machista al pensar "esto lo ha escrito una mujer". En mi defensa sólo puedo decir que me encanta esta novela, que he visto la serie de la BBC en varias ocasiones (más de 4, que recuerde) y que enseguida reprimí ese impulso por dos razones: porque la documentación es buena (independientemente de quién la haya escrito) y, segundo, porque no hay que olvidar que esta novela es una de las obras más conocidas de la literatura inglesa.

Me estoy divirtiendo un montón. No he podido resistirme a postearlo. Estoy deseando seguir con la documentación para ver si siguen apareciendo más personajes. Después de todo una de mis frases preferidas es del señor Darcy. De paso, aprender a manejar el API.

1
www.flickr.com