5 from django.conf import settings
6 from django.core.management.base import BaseCommand, CommandError
8 from panikdb.stats.models import SoundFile, DailyStat
10 class Command(BaseCommand):
11 def handle(self, verbosity, **kwargs):
12 self.verbose = (verbosity > 1)
14 piwik_api_href = settings.PIWIK_API_HREF
15 piwik_token_auth = settings.PIWIK_TOKEN_AUTH
16 piwik_site_id = settings.PIWIK_SITE_ID
17 url = '%(piwik_api_href)s?module=API&method=Events.getAction&'\
18 'secondaryDimension=eventName&idSite=%(piwik_site_id)s&'\
19 'period=day&date=last2&format=json&'\
20 'token_auth=%(piwik_token_auth)s&expanded=1' % locals()
21 request = urllib2.Request(url)
22 request.add_header('Accept', 'application/json')
24 print('calling piwik')
25 result = json.load(urllib2.urlopen(request))
27 print('collecting results')
29 day_datetime = datetime.datetime.strptime(day, '%Y-%m-%d')
30 for stat_segment in result.get(day):
31 if stat_segment.get('segment') != 'eventAction==Play':
33 for entry in stat_segment.get('subtable'):
34 sound_id = entry.get('label').split(':')[0]
36 soundfile = SoundFile.objects.get(id=sound_id)
37 except (SoundFile.DoesNotExist, ValueError):
39 print('failed to process', entry.get('label'))
42 stat = DailyStat.objects.get(soundfile=soundfile,
44 except DailyStat.DoesNotExist:
45 stat = DailyStat(soundfile=soundfile, day=day_datetime)
46 for attribute in ('nb_events', 'nb_visits'):
47 setattr(stat, attribute, entry.get(attribute))