示例#1
0
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()
示例#2
0
    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),))
示例#3
0
    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,))