From a86ef7ed2e3d2e3961deb312490fe51810e5ff8a Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Sat, 4 Jan 2025 13:20:21 -0800 Subject: [PATCH] Added support for Adobe Premiere EDLs > 999 events --- pycmx/parse_cmx_statements.py | 8 +++++++- tests/test_parse.py | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/pycmx/parse_cmx_statements.py b/pycmx/parse_cmx_statements.py index 957c238..72e1a18 100644 --- a/pycmx/parse_cmx_statements.py +++ b/pycmx/parse_cmx_statements.py @@ -53,7 +53,8 @@ def _edl_m2_column_widths(): def _parse_cmx3600_line(line, line_number): long_event_num_p = re.compile("^[0-9]{6} ") short_event_num_p = re.compile("^[0-9]{3} ") - + x_event_form_p = re.compile("^([0-9]{4,5}) ") + if isinstance(line,str): if line.startswith("TITLE:"): return _parse_title(line,line_number) @@ -67,6 +68,11 @@ def _parse_cmx3600_line(line, line_number): return _parse_long_standard_form(line, 128, line_number) elif short_event_num_p.match(line) != None: return _parse_standard_form(line, line_number) + elif (m := x_event_form_p.match(line)) != None: + assert m is not None + event_field_length = len(m[1]) + return _parse_columns_for_standard_form(line, event_field_length, + 8, line_number) elif line.startswith("AUD"): return _parse_extended_audio_channels(line,line_number) elif line.startswith("*"): diff --git a/tests/test_parse.py b/tests/test_parse.py index 4ae89b5..1a6800c 100644 --- a/tests/test_parse.py +++ b/tests/test_parse.py @@ -108,6 +108,11 @@ class TestParse(TestCase): events = list(edl.events) self.assertEqual( events[4].edits[1].transition.name , "CROSS DISSOLVE" ) + def test_adobe_wide(self): + with open("tests/edls/adobe_dai109_test.txt", 'r', encoding='ISO-8859-1') as f: + edl = pycmx.parse_cmx3600(f) + events = list(edl.events) + self.assertEqual(len(events), 2839) # add test for edit_list.channels