def update_recent_shows(): """Inserts or updates the number of unique stream listeners for a time slot into the PeriodSummary table.""" now = datetime.now() last_full_hour = datetime(now.year, now.month, now.day, now.hour) starttime = last_full_hour - timedelta(hours=12) endtime = last_full_hour file_names = load_correct_access_log_files(starttime, endtime) lines = load_and_merge_files(file_names) parsed_file = parse_access_log(lines) for t in range(12): _starttime = endtime - timedelta(hours=t+1) _endtime = endtime - timedelta(hours=t) (unique_listeners, listeners_in_interval) = get_listeners_in_interval(parsed_file, _starttime, _endtime) show_info = {"starttime": _starttime, "endtime": _endtime, "listeners": len(unique_listeners), "listener_info": unique_listeners, "name": get_show_in_period(_starttime, _endtime), } try: hour_summary = PeriodSummary.objects.get(starttime=_starttime, endtime=_endtime) hour_summary.listener_info = json.dumps(prepare_listener_info(show_info["listener_info"])) hour_summary.unique_listeners = show_info["listeners"] hour_summary.show_in_period = show_info["name"] except PeriodSummary.DoesNotExist: hour_summary = PeriodSummary(unique_listeners=show_info["listeners"], starttime=show_info["starttime"], endtime=show_info["endtime"], show_in_period=show_info["name"],) hour_summary.save()
def handle(self, *args, **kwargs): if len(args) != 2: raise CommandError(self.error) try: starttime = datetime.strptime(args[0], "%Y-%m-%dT%H:%M:%S") endtime = datetime.strptime(args[1], "%Y-%m-%dT%H:%M:%S") except ValueError: raise CommandError(self.error) files = load_correct_access_log_files(starttime, endtime) merged_lines = load_and_merge_files(files) parsed_file = parse_access_log(merged_lines) (unique_listeners, listeners_in_interval) = get_listeners_in_interval(parsed_file, starttime, endtime) self.stdout.write("Total time spent listening between %s and %s: %d" % (str(starttime), str(endtime), get_total_listening_time(listeners_in_interval),))
def handle(self, *args, **kwargs): if len(args) != 2: raise CommandError(self.error) try: starttime = datetime.strptime(args[0], "%Y-%m-%dT%H:%M:%S") endtime = datetime.strptime(args[1], "%Y-%m-%dT%H:%M:%S") except ValueError: raise CommandError(self.error) files = load_correct_access_log_files(starttime, endtime) merged_lines = load_and_merge_files(files) parsed_file = parse_access_log(merged_lines) (unique_listeners, listeners_in_interval) = get_listeners_in_interval(parsed_file, starttime, endtime) avg_time = get_average_listening_time(listeners_in_interval) self.stdout.write("Average time per IP spent listening between %s and %s: %d minutes, %d seconds" % (str(starttime), str(endtime), floor(avg_time/60.0), avg_time % 60,))