Hola a todos de nuevo.
Hace mucho tiempo que no escribo, lo siento, pero la verdad es que estaba esperando a hacer algún desarrollo curiosillo. Para que voy a contar cosas del día a día.
En esta ocasión en masquemedicos.com nos hemos planteado la posibilidad de ofrecer estadísticas de visitas de cada una de las fichas de nuestro portal. Sobra decir que usamos Google Analytics para mantener las estadísticas de acceso a todo nuestro portal, otras alternativas ni nos las hemos planteado.
Deacuerdo, pero para mostrar en tu portal las estadísticas de una url en concreto?
Siempre se suelen barajar alternativas como:
- Mantengo yo una tabla en bbdd donde voy anotando cada acceso: Mejor deja la base de datos para lo que tenga que hacer.
- Pues lo voy anotando en ficheros y luego hago un proceso de la muerte que agrupa todo, lo recalcula y la madre que pario: Mira, te esperan varios años de sufrimiento si haces eso, lo se por experiencia.
- Hay empresas que me ofrecen este servicio: Sí, pero yo lo que conozco es caro, y no está el horno pa bollos.
- Pongo en mis servidores algun cacharro que me mantenga las estadísticas y a lo mejor alguno tiene API: Pues sí, pero mantener estadisticas en tus servidores pues tambien tiene su mantenimiento, y su preocupación, está claro.
Total, que así para los pobres una buena alternativa puede ser obtener los datos de analytics. Y efectivamente parece que se puede hacer: http://code.google.com/intl/es-ES/apis/analytics/docs/gdata/gdataDeveloperGuide.html
Aunque no todo es tan bueno, esto está limitado en cuanto al numero de peticiones que puedes hacer:
- 10,000 requests per 24 hours (this limit applies to a single web property)
- 10 requests in any given 1-second period (this limit applies across all queries an application makes to the API)
- 4 pending requests at any given time (i.e. you must wait until your 1st request completes before making a 5th request) Be advised that this limit is new and is subject to change.
- A query is also limited to pagination limits of 10,000 entries per feed, with a default response of 1,000 entries
Por ahí verás algunos ejemplos en los que para ver los datos te pide login y password de tu cuenta analytics. Muy bien, pero eso no es lo que queremos. Queremos cojer los datos de nuestra cuenta sin pedirle login a nadie claro. Para eso lo suyo sería establcer la autenticación desde tu propio servidor.
Encuentro por ahí una clase php que te permite hacer esas cosas: http://www.swis.nl/ga/ pues mira que bien, trabajo hecho y no parece que haga nada raro nada más que establecer conexiones con CURL. Bueno, veo que algo raro sí hace que es cachear las peticiones en variables de sesión. Como nosotros usamos memcache, se me ocurre que igual los datos obtenidos los puedo cachear yo mismo en memcache y no usar la caché que plantea este hombre (al que estoy muy agradecido).
La clase es fácil de usar y el ejemplo que viene en su web es bastante claro y funciona. Lo único es saber que parametros indicar para obtener lo que quieres obtener:
print_r($oAnalytics->getData(
array( 'dimensions' => 'ga:keyword',
'metrics' => 'ga:visits',
'sort' => 'ga:keyword'
)
));
“metrics” es qué quieres obtener, por ejemplo visitas o páginas vistas.
“dimensions” es cómo vas a dividir la información (por palabra clave, por dias, por meses…)
Una buena forma de entrenarse con estos parámetros la tienes aquí: http://code.google.com/intl/es-ES/apis/analytics/docs/gdata/gdataExplorer.html
Por lo demás, una vez que ya puedes obtener los datos lo suyo es mostrarlos de una forma bonita (gráficos). Yo me he decido por el API de google http://code.google.com/intl/es-ES/apis/charttools/, que está bien explicada, pero hay otras alternativas igual de validas.
Lo de siempre, espero que a alguien le sirva… y si te sirve pon un comentario o algo anda!!!
Es un placer leer cosas tan útiles como esto. Deberías poner en el twitter cada vez que haces un post que si no no me entero
Un saludo Carlos.
Comentario por ivandebenito — junio 11, 2010 @ 4:35 pm
Yo lo hago con oauth, autorizo en un primer paso, guardo el token y después lo utilizo con una clase que hice que lanza el request y parsea la respuesta. Tengo pendiente subirlo a mi cuenta de github
Comentario por Jordi Rivero (@jrivero) — agosto 18, 2011 @ 7:01 pm