From e1761972d5b98514a8099e9b43a6dfbce9935dd4 Mon Sep 17 00:00:00 2001 From: Nick Piggott Date: Tue, 3 May 2022 16:13:25 +0000 Subject: [PATCH] Added in scope handling Scope specified in PI files was previously not parsed or encoded, but it is now --- src/spi/binary/__init__.py | 8 ++++---- src/spi/xml/__init__.py | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/spi/binary/__init__.py b/src/spi/binary/__init__.py index ec757b5..ded88ce 100644 --- a/src/spi/binary/__init__.py +++ b/src/spi/binary/__init__.py @@ -728,10 +728,10 @@ def build_schedule(schedule): if schedule.originator is not None: schedule_element.attributes.append(Attribute(0x82, schedule.originator, encode_string)) - # schedule scope TODO - #scope = schedule.get_scope() - #if scope is not None: - # schedule_element.children.append(build_scope(scope)) + # schedule scope + scope = schedule.scope + if scope is not None and scope.start is not None and scope.end is not None: + schedule_element.children.append(build_scope(scope)) # programmes for programme in schedule.programmes: diff --git a/src/spi/xml/__init__.py b/src/spi/xml/__init__.py index 83b43b1..2df1a6b 100644 --- a/src/spi/xml/__init__.py +++ b/src/spi/xml/__init__.py @@ -645,6 +645,21 @@ def parse_schedule(scheduleElement, listener): if 'version' in scheduleElement.attrib: schedule.version = int(scheduleElement.attrib['version']) if 'originator' in scheduleElement.attrib: schedule.originator = scheduleElement.attrib['originator'] + scope = Scope() + scopeElement = scheduleElement.find('spi:scope', namespaces) + if scopeElement is not None: + if 'startTime' in scopeElement.attrib and 'endTime' in scopeElement.attrib: + scope.start = isodate.parse_datetime(scopeElement.attrib['startTime']) + scope.end = isodate.parse_datetime(scopeElement.attrib['endTime']) + else: + scope.start = None + scope.end = None + + for serviceScope in scopeElement.findall('spi:serviceScope'): + scope.bearers.append(serviceScope) + + schedule.scope = scope + for programmeElement in scheduleElement.findall('spi:programme', namespaces): schedule.programmes.append(parse_programme(programmeElement, listener)) return schedule