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)
Beispiel #3
0
    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)