mirror of
https://github.com/iluvcapra/pycmx.git
synced 2025-12-31 08:50:54 +00:00
Implementing events
Statements separated into events
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
# pycmx init
|
||||
|
||||
from .parse_cmx import parse_cmx3600
|
||||
from .parse_cmx_events import parse_cmx3600
|
||||
|
||||
__version__ = '0.6'
|
||||
|
||||
@@ -1,8 +1,52 @@
|
||||
# pycmx
|
||||
# (c) 2018 Jamie Hardt
|
||||
|
||||
def events(statements=[]):
|
||||
if statements[0].
|
||||
from .parse_cmx_statements import (parse_cmx3600_statements,
|
||||
StmtEvent, StmtFCM, StmtTitle)
|
||||
|
||||
def parse_cmx3600(path):
|
||||
statements = parse_cmx3600_statements(path)
|
||||
return EditList(statements)
|
||||
|
||||
|
||||
class EditList:
|
||||
def __init__(self, statements):
|
||||
self.title_statement = statements[0]
|
||||
self.event_statements = statements[1:]
|
||||
|
||||
def title(self):
|
||||
'The title of the edit list'
|
||||
return self.title_statement.title
|
||||
|
||||
def events(self):
|
||||
'Each event in the edit list'
|
||||
def events_p(statements_rest, curr_event_num,
|
||||
statements_event, events, is_drop):
|
||||
|
||||
stmt = statements_rest[0]
|
||||
rem = statements_rest[1:]
|
||||
|
||||
|
||||
if type(stmt) is StmtEvent:
|
||||
if stmt.event == curr_event_num:
|
||||
return ( rem,curr_event_num,statements_event + [stmt],events,is_drop)
|
||||
else:
|
||||
new_event = Event(statements_event)
|
||||
return ( rem,stmt.event, [stmt], events + [new_event],is_drop )
|
||||
|
||||
elif type(stmt) is StmtFCM:
|
||||
return ( rem, curr_event_num, statements_event, events,stmt.drop)
|
||||
else:
|
||||
return ( rem, curr_event_num, statements_event + [stmt],events, is_drop)
|
||||
|
||||
|
||||
result = events_p(self.event_statements, None, [], [], False)
|
||||
while True:
|
||||
if len(result[0]) == 0:
|
||||
return result[3]
|
||||
else:
|
||||
result = events_p(*result)
|
||||
|
||||
|
||||
class Event:
|
||||
def __init__(self, statements):
|
||||
@@ -11,3 +55,5 @@ class Event:
|
||||
def number():
|
||||
return statements[0].event
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -11,24 +11,13 @@ class TestParse(TestCase):
|
||||
"TEST.edl"
|
||||
]
|
||||
|
||||
counts = [ 287, 250 , 376, 148 ]
|
||||
counts = [ 287, 250 , 376, 120 ]
|
||||
|
||||
|
||||
for fn, count in zip(files, counts):
|
||||
events = pycmx.parse_cmx3600(f"tests/edls/{fn}" )
|
||||
self.assertTrue( len(events) == count , f"expected {len(events)} but found {count}")
|
||||
edl = pycmx.parse_cmx3600(f"tests/edls/{fn}" )
|
||||
actual = len(edl.events())
|
||||
self.assertTrue( actual == count , f"expected {count} but found {actual}")
|
||||
|
||||
|
||||
def test_audio_channels(self):
|
||||
events = pycmx.parse_cmx3600(f"tests/edls/TEST.edl" )
|
||||
self.assertTrue(events[0].channels.a2)
|
||||
self.assertFalse(events[0].channels.a1)
|
||||
self.assertTrue(events[2].channels.get_audio_channel(7))
|
||||
self.assertFalse(events[2].channels.get_audio_channel(1))
|
||||
self.assertFalse(events[2].channels.get_audio_channel(2))
|
||||
self.assertFalse(events[2].channels.get_audio_channel(3))
|
||||
self.assertFalse(events[2].channels.get_audio_channel(4))
|
||||
self.assertFalse(events[2].channels.get_audio_channel(10))
|
||||
self.assertFalse(events[2].channels.get_audio_channel(11))
|
||||
self.assertFalse(events[2].channels.get_audio_channel(12))
|
||||
self.assertFalse(events[2].channels.get_audio_channel(13))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user