first pass at checking for holes and repeats

pull/128/head
Christopher Usher 5 years ago
parent 66f5a06a5c
commit 722cbd20fa

@ -1,3 +1,4 @@
import datetime
import logging import logging
import os import os
import signal import signal
@ -59,12 +60,58 @@ class CoverageChecker(object):
except ValueError: except ValueError:
self.logger.warning('Skipping segment {} with invalid format'.format(path)) self.logger.warning('Skipping segment {} with invalid format'.format(path))
full_segments = [segment for segment in segments if segment.type == 'full'] full_segments = []
partial_segments = [segment for segment in segments if segment.type == 'partial'] partial_segments = []
useful_segments = []
for segment in segments:
if segment.type == 'full':
full_segments.append(segment)
useful_segments.append(segment)
elif segment.type == 'partial':
partial_segments.append(segment)
useful_segments.append(segment)
full_segments_duration = sum([segment.duration.seconds for segment in full_segments]) full_segments_duration = sum([segment.duration.seconds for segment in full_segments])
partial_segments_duration = sum([segment.duration.seconds for segment in partial_segments]) partial_segments_duration = sum([segment.duration.seconds for segment in partial_segments])
useful_segments_duration = sum([segment.duration.seconds for segment in useful_segments])
self.logger.info('{}/{}: {} full segments totalling {} s'.format(quality, hour, len(full_segments), full_segments_duration)) self.logger.info('{}/{}: {} full segments totalling {} s'.format(quality, hour, len(full_segments), full_segments_duration))
self.logger.info('{}/{}: {} partial segments totalling {} s'.format(quality, hour, len(partial_segments), partial_segments_duration)) self.logger.info('{}/{}: {} partial segments totalling {} s'.format(quality, hour, len(partial_segments), partial_segments_duration))
self.logger.info('{}/{}: {} useful segments totalling {} s'.format(quality, hour, len(useful_segments), useful_segments_duration))
holes = []
editiable_holes = []
overlaps = []
previous = full_segments[0]
coverage = previous.duration
editable_coverage = previous.duration
total_duration = previous.duration
for segment in full_segments[1:]:
total_duration += previous.duration
previous_end = previous.start + previous.duration
if segment.start < previous_end:
overlaps.append(segment)
coverage += segment.start - previous_end + segment.duration
if segment.start == previous_end:
coverage += segment.duration
editable_coverage += segment.duration
else:
holes.append((previous_end, segment.start))
coverage += segment.duration
editable_coverage += segment.duration
previous = segment
hole_duration = datetime.timedelta(hours=1) - coverage
overlap_duration = total_duration - coverage
self.logger.info('{}/{}: {} full segments totalling {} s'.format(quality, hour, len(full_segments), total_duration.seconds))
self.logger.info('{}/{}: covering {} s, {} s editable'.format(quality, hour, coverage.seconds, editable_coverage.seconds))
self.logger.info('{}/{}: {} holes totalling {} s '.format(quality, hour, len(holes), hole_duration.seconds))
self.logger.info('{}/{}: {} overlapping segments, {} s overlapping'.format(quality, hour, len(overlaps), overlap_duration.seconds))
self.stopping.wait(common.jitter(self.CHECK_INTERVAL)) self.stopping.wait(common.jitter(self.CHECK_INTERVAL))

Loading…
Cancel
Save