diff --git a/pycmx/cmx_event.py b/pycmx/cmx_event.py index 5639875..a87faa7 100644 --- a/pycmx/cmx_event.py +++ b/pycmx/cmx_event.py @@ -20,8 +20,11 @@ class CmxEvent: self.aux_source = (source_name == 'AX') - def accept_statement(statement): - atement_type = type(statement).__name__ + def can_accept(self): + return {'AudioExt','Remark','SourceFile','ClipName','EffectsName'} + + def accept_statement(self, statement): + statement_type = type(statement).__name__ if statement_type == 'AudioExt': self.channels.appendExt(statement) elif statement_type == 'Remark': @@ -34,7 +37,7 @@ class CmxEvent: self.transition.name = statement.name def __repr__(self): - return f"""CmxEvent(title="{self.title}",number="{self.number}",\ + return f"""CmxEvent(title="{self.title}",number={self.number},\ clip_name="{self.clip_name}",source_name="{self.source_name}",\ channels={self.channels},transition={self.transition},\ source_start="{self.source_start}",source_finish="{self.source_finish}",\ diff --git a/pycmx/parse_cmx.py b/pycmx/parse_cmx.py index 591ca5d..bfd0a1a 100644 --- a/pycmx/parse_cmx.py +++ b/pycmx/parse_cmx.py @@ -141,36 +141,32 @@ def event_list(title, parser): state['fcm_drop'] = parser.current_token.drop elif parser.accept('Event'): if this_event != None: - event_t = CmxEvent(**this_event) - events_result.append(event_t) + events_result.append(this_event) raw_event = parser.current_token channels = CmxChannelMap(v=False, audio_channels=set([])) channels.appendEvent(raw_event.channels) - this_event = {'title': title, 'number': raw_event.event, 'clip_name': None , - 'source_name': raw_event.source, - 'channels': channels, - 'transition': CmxTransition(raw_event.trans, raw_event.trans_op), - 'source_start': raw_event.source_in, - 'source_finish': raw_event.source_out, - 'record_start': raw_event.record_in, - 'record_finish': raw_event.record_out, - 'fcm_drop': state['fcm_drop']} - elif parser.accept('AudioExt'): - this_event['channels'].appendExt(parser.current_token) - elif parser.accept('ClipName'): - this_event['clip_name'] = parser.current_token.name - elif parser.accept('SourceFile'): - this_event['source_name'] = parser.current_token.filename + this_event = CmxEvent(title=title,number=int(raw_event.event), clip_name=None , + source_name=raw_event.source, + channels=channels, + transition=CmxTransition(raw_event.trans, raw_event.trans_op), + source_start= raw_event.source_in, + source_finish= raw_event.source_out, + record_start= raw_event.record_in, + record_finish= raw_event.record_out, + fcm_drop= state['fcm_drop']) + elif parser.accept('AudioExt') or parser.accept('ClipName') or \ + parser.accept('SourceFile') or parser.accept('EffectsName') or \ + parser.accept('Remark'): + this_event.accept_statement(parser.current_token) elif parser.accept('Trailer'): break else: parser.next_token() if this_event != None: - event_t = CmxEvent(**this_event) - events_result.append(event_t) + events_result.append(this_event) return events_result