Sumowanie statystyk Google Analytics
Internet 20th Nov 2009
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:
Komentarze z jogger.pl
dzieki, z checia uzyje. btw dzis myslalem o podobnym skrypcie :)