From b135b27c822432e262ab05e8730433c23f265b8e Mon Sep 17 00:00:00 2001 From: ninya9k Date: Mon, 5 Jul 2021 04:35:26 +0000 Subject: [PATCH] remove unused segment cache code --- website/concatenate.py | 93 ------------------------------------------ 1 file changed, 93 deletions(-) diff --git a/website/concatenate.py b/website/concatenate.py index 14923e2..ff73ee7 100644 --- a/website/concatenate.py +++ b/website/concatenate.py @@ -7,99 +7,6 @@ SEGMENT = 'stream{number}.m4s' CORRUPTING_SEGMENT = 'corrupt.m4s' STREAM_TIMEOUT = HLS_TIME * 2 # consider the stream offline after this many seconds without a new segment -# TODO: uncommment this if it becomes useful -# -#CACHE_TIMEOUT = 360 # remove a segment from the cache if it is deleted and this many seconds have passed since it was first created -# -#class SegmentNotCached(Exception): -# pass -# -# -#class StreamRestarted(Exception): -# pass -# -# -#class SegmentsCache: -# def __init__(self, segments_dir, stream_start_path): -# self.segments_dir = segments_dir -# self.segments = {} -# self.lock = threading.Lock() -# self.stream_start_path = stream_start_path -# self.corrupting_segment = b'' -# self.stream_start = self.get_stream_start_time(warn=True) -# -# def get_stream_start_time(self, warn=False): -# try: -# start = open(self.stream_start_path).read() -# start = int(start) -# except (FileNotFoundError, ValueError): -# start = None -# else: -# self.corrupting_segment = self.corrupting_segment or open(os.path.join(self.segments_dir, CORRUPTING_SEGMENT), 'rb').read() -# if start == None and warn: -# print('WARNING: SegmentsCache couldn\'t find when the stream started; it uses this to clear the cache of segments when the stream restarts or ends. The noscript livestream will not work unless we have the stream start time. If you haven\'t started the stream yet, ignore this warning.') -# return start -# -# def _purge(self): -# for segment in set(self.segments): -# segment_path = os.path.join(self.segments_dir, segment) -# if not os.path.isfile(segment_path) and int(time.time()) - self.segments[segment]['mtime'] >= CACHE_TIMEOUT: -# segment_info = self.segments.pop(segment) -# #print(f'Removed segment {segment} from the cache for inactivity') -# -# def read(self, segment, read_size, instance_id): -# segment_path = os.path.join(self.segments_dir, segment) -# with self.lock: -# # ensure we don't cache segments from a previous stream -# stream_start = self.get_stream_start_time() -# if stream_start == None: -# #print('Stream has already ended, clearing cache...') -# self.stream_start = stream_start -# self.segments.clear() -# elif stream_start != self.stream_start: -# #print('Stream restarted, clearing cache...') -# self.stream_start = stream_start -# self.segments.clear() -# raise StreamRestarted # this is because the video gets corrupted anyway when the stream restarts and you append segments from the new stream to segments from the old stream -# # TODO: fall back to reading from disk if we can't find the stream start time -# if self.stream_start == None: -# raise SegmentNotCached -# -# # if the segment is not cached, cache it -# if segment not in self.segments: -# segment_mtime = os.path.getmtime(segment_path) -# with open(segment_path, 'rb') as fp: -# segment_data = fp.read() -# self.segments[segment] = {'mtime': int(os.path.getmtime(segment_path)), -# 'data': segment_data, -# 'interest': {instance_id: 0}} -# -# # remove all inactive segments -# self._purge() -# -# if segment not in self.segments: -# raise SegmentUnavailable -# -# # get the chunk that was requested -# read_offset = self.segments[segment]['interest'].get(instance_id, 0) -# chunk = self.segments[segment]['data'][read_offset:read_offset + read_size] -# self.segments[segment]['interest'][instance_id] = read_offset + len(chunk) -# -# # remove this instance if it no longer wants this segment -# if read_offset + len(chunk) >= len(self.segments[segment]['data']): -# self.segments[segment]['interest'].pop(instance_id) -# -# # remove this segment if it is unwanted -# if len(self.segments[segment]['interest']) == 0: -# self.segments.pop(segment) -# -## print(' SegmentsCache.segments') -## for segment in self.segments: -## print(f'{segment}=', {k: self.segments[segment][k] for k in self.segments[segment] if k != 'data'}) -# -# return chunk - - def resolve_segment_offset(segment_offset=1): ''' Returns the number of the segment at `segment_offset` (1 is most recent segment)