TechLife devBlog

Sumowanie statystyk Google Analytics

Kodowanie, Python, Techblog 20 listopada 2009 23:30

Zawsze mnie ciekawiło jaki jest ruch na naszym firmowym serwerze ale nie chciałem obciążać maszyny dodatkowym oprogramowaniem, które by to zliczało. Zwłaszcza że każda hostowana przez nas strona jest podpięta pod Google Analytics. Nie znalazłem jednak sposobu aby w panelu statystyk wyświetlić sumę odwiedzin z kilku kont. Na szczęście Analytics podobnie jak większość usług Googla ma swoje API. Wystarczyło więc zaprząc do pracy Pythona oraz bibliotekę gdata.

Użytkownikom ArchLinuksa polecam paczkę python-gdata-svn

yaourt -S python-gdata-svn

Skrypt jest dość prosty i działa w konsoli:

#!/usr/bin/python

import datetime import sys

import gdata.analytics import gdata.analytics.service

def main(argv):

GOOGLE_ANALYTICS_LOGIN = 'TWOJE@KONTO'
GOOGLE_ANALYTICS_PASSWORD = 'TAJNE_HASLO'

if len(argv) > 1:
    d = argv[1].split('-')
    data = datetime.date(int(d[0]), int(d[1]), int(d[2]))
else:
    data = datetime.datetime.now()

print "\ndata: %d-%d-%d" % (data.year, data.month, data.day)
print "\nodw\tods\tdomena"
print "--------------------------"

dc = gdata.analytics.service.AnalyticsDataService()
dc.ClientLogin(GOOGLE_ANALYTICS_LOGIN, GOOGLE_ANALYTICS_PASSWORD, account_type='GOOGLE')
a = dc.GetAccountList()

odwiedziny, odslony = [], []

for b in a.entry:
    tid = b.id.text.replace('http://www.google.com/analytics/feeds/accounts/','')
    query = dc.GetData(
        ids=tid, 
        start_date='%.4d-%.2d-%.2d' % (data.year, data.month, data.day), 
        end_date='%.4d-%.2d-%.2d' % (data.year, data.month, data.day), 
        metrics='ga:visitors,ga:pageviews',
        dimensions='ga:day'
    )
    odw = int(query.entry[0].visitors.value)
    ods = int(query.entry[0].pageviews.value)
    odwiedziny.append(odw)
    odslony.append(ods)
    print "\033[1;31m%d\t%d\033[0m\t\033[33m%s\033[0m" % (odw, ods, b.title.text)

print "--------------------------"
print "%d\t%d\tRazem" % (sum(odwiedziny),sum(odslony))

if name == "main": sys.exit(main(sys.argv))

Jeżeli wywoła się go bez parametrów wówczas pokaże statystyki dla dnia dzisiejszego. Można też podać mu jako parametr datę, np:

python stats.py 2012-12-21

Przykładowy wynik działania wygląda tak:
Przykład działania

Komentarze z jogger.pl

mlen 08 lutego 2010 / 21:30

dzieki, z checia uzyje. btw dzis myslalem o podobnym skrypcie :)



Komentarze