mirror of
https://github.com/iluvcapra/pycmx.git
synced 2025-12-31 08:50:54 +00:00
Read transition names
This commit is contained in:
@@ -3,18 +3,19 @@
|
|||||||
|
|
||||||
from .transition import Transition
|
from .transition import Transition
|
||||||
from .channel_map import ChannelMap
|
from .channel_map import ChannelMap
|
||||||
|
from .parse_cmx_statements import StmtEffectsName
|
||||||
|
|
||||||
class Edit:
|
class Edit:
|
||||||
"""
|
"""
|
||||||
An individual source-to-record operation, with a source roll, source and
|
An individual source-to-record operation, with a source roll, source and
|
||||||
recorder timecode in and out, a transition and channels.
|
recorder timecode in and out, a transition and channels.
|
||||||
"""
|
"""
|
||||||
def __init__(self, edit_statement, audio_ext_statement, clip_name_statement, source_file_statement, other_statements = []):
|
def __init__(self, edit_statement, audio_ext_statement, clip_name_statement, source_file_statement, trans_name_statement = None):
|
||||||
self.edit_statement = edit_statement
|
self.edit_statement = edit_statement
|
||||||
self.audio_ext = audio_ext_statement
|
self.audio_ext = audio_ext_statement
|
||||||
self.clip_name_statement = clip_name_statement
|
self.clip_name_statement = clip_name_statement
|
||||||
self.source_file_statement = source_file_statement
|
self.source_file_statement = source_file_statement
|
||||||
self.other_statements = other_statements
|
self.trans_name_statement = trans_name_statement
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def line_number(self):
|
def line_number(self):
|
||||||
@@ -41,8 +42,11 @@ class Edit:
|
|||||||
"""
|
"""
|
||||||
Get the :obj:`Transition` object associated with this edit.
|
Get the :obj:`Transition` object associated with this edit.
|
||||||
"""
|
"""
|
||||||
return Transition(self.edit_statement.trans, self.edit_statement.trans_op)
|
if self.trans_name_statement:
|
||||||
|
return Transition(self.edit_statement.trans, self.edit_statement.trans_op, self.trans_name_statement.name)
|
||||||
|
else:
|
||||||
|
return Transition(self.edit_statement.trans, self.edit_statement.trans_op, None)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def source_in(self):
|
def source_in(self):
|
||||||
"""
|
"""
|
||||||
@@ -107,7 +111,6 @@ class Edit:
|
|||||||
else:
|
else:
|
||||||
return self.source_file_statement.filename
|
return self.source_file_statement.filename
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def clip_name(self):
|
def clip_name(self):
|
||||||
"""
|
"""
|
||||||
@@ -119,3 +122,5 @@ class Edit:
|
|||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
return self.clip_name_statement.name
|
return self.clip_name_statement.name
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# pycmx
|
# pycmx
|
||||||
# (c) 2018 Jamie Hardt
|
# (c) 2018 Jamie Hardt
|
||||||
|
|
||||||
from .parse_cmx_statements import (StmtEvent, StmtClipName, StmtSourceFile, StmtAudioExt, StmtUnrecognized)
|
from .parse_cmx_statements import (StmtEvent, StmtClipName, StmtSourceFile, StmtAudioExt, StmtUnrecognized, StmtEffectsName)
|
||||||
from .edit import Edit
|
from .edit import Edit
|
||||||
|
|
||||||
class Event:
|
class Event:
|
||||||
@@ -29,7 +29,7 @@ class Event:
|
|||||||
edits_audio = list( self._statements_with_audio_ext() )
|
edits_audio = list( self._statements_with_audio_ext() )
|
||||||
clip_names = self._clip_name_statements()
|
clip_names = self._clip_name_statements()
|
||||||
source_files= self._source_file_statements()
|
source_files= self._source_file_statements()
|
||||||
|
|
||||||
the_zip = [edits_audio]
|
the_zip = [edits_audio]
|
||||||
|
|
||||||
if len(edits_audio) == 2:
|
if len(edits_audio) == 2:
|
||||||
@@ -41,7 +41,6 @@ class Event:
|
|||||||
cn[1] = clip_name
|
cn[1] = clip_name
|
||||||
|
|
||||||
the_zip.append(cn)
|
the_zip.append(cn)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if len(edits_audio) == len(clip_names):
|
if len(edits_audio) == len(clip_names):
|
||||||
the_zip.append(clip_names)
|
the_zip.append(clip_names)
|
||||||
@@ -54,9 +53,18 @@ class Event:
|
|||||||
the_zip.append( source_files * len(edits_audio) )
|
the_zip.append( source_files * len(edits_audio) )
|
||||||
else:
|
else:
|
||||||
the_zip.append([None] * len(edits_audio) )
|
the_zip.append([None] * len(edits_audio) )
|
||||||
|
|
||||||
|
# attach trans name to last event
|
||||||
|
try:
|
||||||
|
trans_statement = self._trans_name_statements()[0]
|
||||||
|
trans_names = [None] * (len(edits_audio) - 1)
|
||||||
|
trans_names.append(trans_statement)
|
||||||
|
the_zip.append(trans_names)
|
||||||
|
except IndexError:
|
||||||
|
the_zip.append([None] * len(edits_audio) )
|
||||||
|
|
||||||
|
|
||||||
return [ Edit(e1[0],e1[1],n1,s1) for (e1,n1,s1) in zip(*the_zip) ]
|
return [ Edit(e1[0],e1[1],n1,s1,u1) for (e1,n1,s1,u1) in zip(*the_zip) ]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def unrecognized_statements(self):
|
def unrecognized_statements(self):
|
||||||
@@ -65,7 +73,10 @@ class Event:
|
|||||||
"""
|
"""
|
||||||
for s in self.statements:
|
for s in self.statements:
|
||||||
if type(s) is StmtUnrecognized:
|
if type(s) is StmtUnrecognized:
|
||||||
yield s
|
yield s
|
||||||
|
|
||||||
|
def _trans_name_statements(self):
|
||||||
|
return [s for s in self.statements if type(s) is StmtEffectsName]
|
||||||
|
|
||||||
def _edit_statements(self):
|
def _edit_statements(self):
|
||||||
return [s for s in self.statements if type(s) is StmtEvent]
|
return [s for s in self.statements if type(s) is StmtEvent]
|
||||||
|
|||||||
@@ -13,9 +13,10 @@ class Transition:
|
|||||||
Key = "K"
|
Key = "K"
|
||||||
KeyOut = "KO"
|
KeyOut = "KO"
|
||||||
|
|
||||||
def __init__(self, transition, operand):
|
def __init__(self, transition, operand, name=None):
|
||||||
self.transition = transition
|
self.transition = transition
|
||||||
self.operand = operand
|
self.operand = operand
|
||||||
|
self.name = name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def kind(self):
|
def kind(self):
|
||||||
|
|||||||
@@ -98,3 +98,8 @@ class TestParse(TestCase):
|
|||||||
self.assertEqual( events[14].edits[0].line_number, 45)
|
self.assertEqual( events[14].edits[0].line_number, 45)
|
||||||
self.assertEqual( events[180].edits[0].line_number, 544)
|
self.assertEqual( events[180].edits[0].line_number, 544)
|
||||||
|
|
||||||
|
def test_transition_name(self):
|
||||||
|
with open("tests/edls/test_25.edl","r") as f:
|
||||||
|
edl = pycmx.parse_cmx3600(f)
|
||||||
|
events = list(edl.events)
|
||||||
|
self.assertEqual( events[4].edits[1].transition.name , "CROSS DISSOLVE" )
|
||||||
|
|||||||
Reference in New Issue
Block a user