mirror of
https://github.com/iluvcapra/pycmx.git
synced 2026-01-02 09:50:55 +00:00
Implementing events
Statements separated into events
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# pycmx init
|
# pycmx init
|
||||||
|
|
||||||
from .parse_cmx import parse_cmx3600
|
from .parse_cmx_events import parse_cmx3600
|
||||||
|
|
||||||
__version__ = '0.6'
|
__version__ = '0.6'
|
||||||
|
|||||||
@@ -1,8 +1,52 @@
|
|||||||
# pycmx
|
# pycmx
|
||||||
# (c) 2018 Jamie Hardt
|
# (c) 2018 Jamie Hardt
|
||||||
|
|
||||||
def events(statements=[]):
|
from .parse_cmx_statements import (parse_cmx3600_statements,
|
||||||
if statements[0].
|
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:
|
class Event:
|
||||||
def __init__(self, statements):
|
def __init__(self, statements):
|
||||||
@@ -11,3 +55,5 @@ class Event:
|
|||||||
def number():
|
def number():
|
||||||
return statements[0].event
|
return statements[0].event
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,24 +11,13 @@ class TestParse(TestCase):
|
|||||||
"TEST.edl"
|
"TEST.edl"
|
||||||
]
|
]
|
||||||
|
|
||||||
counts = [ 287, 250 , 376, 148 ]
|
counts = [ 287, 250 , 376, 120 ]
|
||||||
|
|
||||||
|
|
||||||
for fn, count in zip(files, counts):
|
for fn, count in zip(files, counts):
|
||||||
events = pycmx.parse_cmx3600(f"tests/edls/{fn}" )
|
edl = pycmx.parse_cmx3600(f"tests/edls/{fn}" )
|
||||||
self.assertTrue( len(events) == count , f"expected {len(events)} but found {count}")
|
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