def test_interval_to_utc(self): time_offset = timedelta(hours=5) time_interval = TimeInterval.from_string('2020-02-12 04:00:00', '2020-02-12 16:00:00', time_offset) expected_interval = TimeInterval.from_string('2020-02-11 23:00:00', '2020-02-12 11:00:00') actual_interval = time_interval.to_utc() self.assertEqual(expected_interval, actual_interval)
def test_interval_equality(self): start_time1 = '2020-02-12 17:05:21' end_time1 = '2020-02-13 17:05:21' start_time2 = '2021-02-12 17:05:21' end_time2 = '2021-02-13 17:05:21' interval2 = TimeInterval.from_string(start_time1, end_time1) interval1 = TimeInterval.from_string(start_time1, end_time1) interval3 = TimeInterval.from_string(start_time2, end_time2) self.assertEqual(interval1, interval2) self.assertNotEqual(interval1, interval3)
def test_time_interval(self): track = Track(self.default_track_text, self.default_local_time_offset) expected_time_interval = TimeInterval.from_string( '2019-11-11 04:24:06', '2019-11-11 04:24:15', self.default_local_time_offset) self.assertEqual(expected_time_interval, track.get_time_interval())
def __init__(self, text, local_time_offset): self._text = text self._base_url = '' self._name = '' self._size = 0 text = text.replace('?', '&') text_parts = text.split('&') start_time_text = '' end_time_text = '' for text_part in text_parts: if text_part.count('rtsp://') > 0: self._base_url = text_part elif text_part.count('=') > 0: param_parts = text_part.split('=') param_name = param_parts[0] param_value = param_parts[1] if param_name == 'starttime': start_time_text = self.decode_time(param_value) elif param_name == 'endtime': end_time_text = self.decode_time(param_value) elif param_name == 'name': self._name = param_value elif param_name == 'size': self._size = param_value self._time_interval = TimeInterval.from_string(start_time_text, end_time_text, local_time_offset)
def do_work(camera_ip, start_datetime_str, end_datetime_str, use_utc_time, content_type): logger = Logger.get_logger() try: logger.info('Processing cam {}: downloading {}'.format( camera_ip, content_type)) logger.info('{} time is used'.format( "UTC" if use_utc_time else "Camera's local")) auth_type = CameraSdk.get_auth_type(camera_ip, user_name, user_password) if auth_type == AuthType.UNAUTHORISED: raise RuntimeError('Unauthorised! Check login and password') auth_handler = CameraSdk.get_auth(auth_type, user_name, user_password) if use_utc_time: local_time_offset = timedelta() else: local_time_offset = CameraSdk.get_time_offset( auth_handler, camera_ip) utc_time_interval = TimeInterval.from_string( start_datetime_str, end_datetime_str, local_time_offset).to_utc() download_media(auth_handler, camera_ip, utc_time_interval, content_type) except requests.exceptions.ConnectionError as e: logger.error('Connection error: {}'.format(e)) except Exception as e: logger.exception(e)
def test_interval_to_filename_text(self): start_time_text = '2020-02-12 17:05:21' end_time_text = '2020-02-13 17:05:21' expected_filename = '2020-02-12/17_05_21' interval = TimeInterval.from_string(start_time_text, end_time_text) actual_filename = interval.to_filename_text() self.assertEqual(expected_filename, actual_filename)
def test_interval_to_common_text(self): expected_start_time_text = '2020-02-12 17:05:21' expected_end_time_text = '2020-02-13 17:05:21' interval = TimeInterval.from_string(expected_start_time_text, expected_end_time_text) (actual_start_time_text, actual_end_time_text) = interval.to_text() self.assertEqual(expected_start_time_text, actual_start_time_text) self.assertEqual(expected_end_time_text, actual_end_time_text)
def test_interval_to_tz_text(self): start_time_text = '2020-02-12 17:05:21' end_time_text = '2020-02-13 17:05:21' start_time = TestUtils.time_from_text(start_time_text) end_time = TestUtils.time_from_text(end_time_text) expected_start_time_tz_text = TestUtils.time_to_tz_text(start_time) expected_end_time_tz_text = TestUtils.time_to_tz_text(end_time) interval = TimeInterval.from_string(start_time_text, end_time_text) (actual_start_time_tz_text, actual_end_time_tz_text) = interval.to_tz_text() self.assertEqual(expected_start_time_tz_text, actual_start_time_tz_text) self.assertEqual(expected_end_time_tz_text, actual_end_time_tz_text)