From bc02eb10fc91d55549e872000a2a7f1acac81a79 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Wed, 26 Dec 2018 15:29:49 -0800 Subject: [PATCH] Edit line numbers Line numbers of edits are accessible --- pycmx/parse_cmx_events.py | 14 +++++++++++++- tests/test_parse.py | 8 ++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/pycmx/parse_cmx_events.py b/pycmx/parse_cmx_events.py index 0d50ab4..e1148a1 100644 --- a/pycmx/parse_cmx_events.py +++ b/pycmx/parse_cmx_events.py @@ -68,11 +68,23 @@ class EditList: class Edit: - def __init__(self, edit_statement, audio_ext_statement, clip_name_statement, source_file_statement): + def __init__(self, edit_statement, audio_ext_statement, clip_name_statement, source_file_statement, other_statements = []): self.edit_statement = edit_statement self.audio_ext = audio_ext_statement self.clip_name_statement = clip_name_statement self.source_file_statement = source_file_statement + self.other_statements = other_statements + + @property + def line_number(self): + """ + Get the line number for the "standard form" statement associated with + this edit. Line numbers a zero-indexed, such that the + "TITLE:" record is line zero. + """ + + return self.edit_statement.line_number + @property def channels(self): diff --git a/tests/test_parse.py b/tests/test_parse.py index 71f9427..35861c2 100644 --- a/tests/test_parse.py +++ b/tests/test_parse.py @@ -70,5 +70,13 @@ class TestParse(TestCase): self.assertEqual( events[42].edits[1].record_out , "01:08:56:11") self.assertTrue( events[42].edits[1].transition.kind == pycmx.Transition.Dissolve) + def test_line_numbers(self): + with open("tests/edls/ToD_R4_LOCK3.1_030618_Video.edl") as f: + edl = pycmx.parse_cmx3600(f) + + events = list( edl.events ) + self.assertEqual( events[0].edits[0].line_number, 2) + self.assertEqual( events[14].edits[0].line_number, 45) + self.assertEqual( events[180].edits[0].line_number, 544)