def stop_live_recording(cls, db_session, recording): with cls._live_recordings_to_recording_thread_lock: try: cls._live_recordings_to_recording_thread[ recording.id].force_stop() del cls._live_recordings_to_recording_thread[recording.id] except KeyError: recording = DatabaseAccess.query_recording( db_session, recording.id) if recording is not None: if recording.status == RecordingStatus.LIVE.value: segment_row = DatabaseAccess.query_segments_count( db_session, recording.id) if segment_row is not None and segment_row.count > 0: recording.status = RecordingStatus.PERSISTED.value else: raise RecordingNotFoundError
def _initialize_recordings(cls, db_session): deleted_recordings_log_message = [] loaded_recordings_log_message = [] unformatted_message_to_log = 'Provider => {0}\n' \ 'Channel number => {1}\n' \ 'Channel name => {2}\n' \ 'Program title => {3}\n' \ 'Start date & time => {4}\n' \ 'End date & time => {5}\n' \ 'Status => {6}\n' for recording in DatabaseAccess.query_recordings(db_session): current_date_time_in_utc = datetime.now(pytz.utc) formatted_message_to_log = unformatted_message_to_log.format( recording.provider, recording.channel_number, recording.channel_name, recording.program_title, recording.start_date_time_in_utc.astimezone( tzlocal.get_localzone()).strftime('%Y-%m-%d %H:%M:%S%z'), recording.end_date_time_in_utc.astimezone( tzlocal.get_localzone()).strftime('%Y-%m-%d %H:%M:%S%z'), recording.status) if current_date_time_in_utc >= recording.end_date_time_in_utc: if recording.status == RecordingStatus.LIVE.value: segment_row = DatabaseAccess.query_segments_count( db_session, recording.id) if segment_row is not None and segment_row.count > 0: recording.status = RecordingStatus.PERSISTED.value loaded_recordings_log_message.append( formatted_message_to_log) else: DatabaseAccess.delete_recording( db_session, recording.id) deleted_recordings_log_message.append( formatted_message_to_log) elif recording.status == RecordingStatus.SCHEDULED.value: DatabaseAccess.delete_recording(db_session, recording.id) deleted_recordings_log_message.append( formatted_message_to_log) else: loaded_recordings_log_message.append(formatted_message_to_log) if deleted_recordings_log_message: deleted_recordings_log_message.insert( 0, 'Deleted expired recording{0}\n'.format( 's' if len(deleted_recordings_log_message) > 1 else '')) logger.debug('\n'.join(deleted_recordings_log_message).strip()) if loaded_recordings_log_message: loaded_recordings_log_message.insert( 0, 'Loaded recording{0}\n'.format( 's' if len(loaded_recordings_log_message) > 1 else '')) logger.debug('\n'.join(loaded_recordings_log_message).strip())