mirror of
https://github.com/iluvcapra/pycmx.git
synced 2025-12-31 17:00:53 +00:00
Tests now work for these new files
This commit is contained in:
@@ -58,27 +58,17 @@ def _parse_cmx3600_line(line: str, line_number: int) -> object:
|
|||||||
:param line: A single EDL line.
|
:param line: A single EDL line.
|
||||||
:param line_number: The index of this line in the file.
|
:param line_number: The index of this line in the file.
|
||||||
"""
|
"""
|
||||||
long_event_num_p = re.compile("^[0-9]{6} ")
|
event_num_p = re.compile(r"^(\d+) ")
|
||||||
short_event_num_p = re.compile("^[0-9]{3} ")
|
line_matcher = event_num_p.match(line)
|
||||||
x_event_form_p = re.compile("^([0-9]{4,5}) ")
|
|
||||||
|
|
||||||
if line.startswith("TITLE:"):
|
if line.startswith("TITLE:"):
|
||||||
return _parse_title(line, line_number)
|
return _parse_title(line, line_number)
|
||||||
elif line.startswith("FCM:"):
|
elif line.startswith("FCM:"):
|
||||||
return _parse_fcm(line, line_number)
|
return _parse_fcm(line, line_number)
|
||||||
elif long_event_num_p.match(line) is not None:
|
elif line_matcher is not None:
|
||||||
length_file_128 = sum(_edl_column_widths(6, 128))
|
event_field_len = len(line_matcher.group(1))
|
||||||
if len(line) < length_file_128:
|
source_field_len = len(line) - (event_field_len + 65)
|
||||||
return _parse_long_standard_form(line, 32, line_number)
|
return _parse_columns_for_standard_form(line, event_field_len, source_field_len, line_number)
|
||||||
else:
|
|
||||||
return _parse_long_standard_form(line, 128, line_number)
|
|
||||||
elif (m := x_event_form_p.match(line)) is not 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 short_event_num_p.match(line) is not None:
|
|
||||||
return _parse_standard_form(line, line_number)
|
|
||||||
elif line.startswith("AUD"):
|
elif line.startswith("AUD"):
|
||||||
return _parse_extended_audio_channels(line, line_number)
|
return _parse_extended_audio_channels(line, line_number)
|
||||||
elif line.startswith("*"):
|
elif line.startswith("*"):
|
||||||
@@ -108,26 +98,24 @@ def _parse_fcm(line, line_num) -> StmtFCM:
|
|||||||
return StmtFCM(drop=False, line_number=line_num)
|
return StmtFCM(drop=False, line_number=line_num)
|
||||||
|
|
||||||
|
|
||||||
def _parse_long_standard_form(line, source_field_length, line_number):
|
# def _parse_long_standard_form(line, event_field_length, source_field_length, line_number):
|
||||||
return _parse_columns_for_standard_form(line, 6, source_field_length,
|
# return _parse_columns_for_standard_form(line, , source_field_length,
|
||||||
line_number)
|
# line_number)
|
||||||
|
|
||||||
|
|
||||||
def _parse_standard_form(line, line_number):
|
# def _parse_standard_form(line, line_number):
|
||||||
return _parse_columns_for_standard_form(line, 3, 8, line_number)
|
# return _parse_columns_for_standard_form(line, 3, 8, line_number)
|
||||||
|
|
||||||
|
|
||||||
def _parse_extended_audio_channels(line, line_number):
|
def _parse_extended_audio_channels(line, line_number):
|
||||||
content = line.strip()
|
content = line.strip()
|
||||||
if content == "AUD 3":
|
audio3 = True if "3" in content else False
|
||||||
return StmtAudioExt(audio3=True, audio4=False, line_number=line_number)
|
audio4 = True if "4" in content else False
|
||||||
elif content == "AUD 4":
|
|
||||||
return StmtAudioExt(audio3=False, audio4=True, line_number=line_number)
|
|
||||||
elif content == "AUD 3 4":
|
|
||||||
return StmtAudioExt(audio3=True, audio4=True, line_number=line_number)
|
|
||||||
else:
|
|
||||||
return StmtUnrecognized(content=line, line_number=line_number)
|
|
||||||
|
|
||||||
|
if audio3 or audio4:
|
||||||
|
return StmtAudioExt(audio3, audio4, line_number)
|
||||||
|
else:
|
||||||
|
return StmtUnrecognized(line, line_number)
|
||||||
|
|
||||||
def _parse_remark(line, line_number) -> object:
|
def _parse_remark(line, line_number) -> object:
|
||||||
if line.startswith("FROM CLIP NAME:"):
|
if line.startswith("FROM CLIP NAME:"):
|
||||||
|
|||||||
@@ -39,8 +39,10 @@ class TestParse(TestCase):
|
|||||||
with open(path, 'r') as f:
|
with open(path, 'r') as f:
|
||||||
edl = pycmx.parse_cmx3600(f)
|
edl = pycmx.parse_cmx3600(f)
|
||||||
for index, event in enumerate(edl.events):
|
for index, event in enumerate(edl.events):
|
||||||
self.assertTrue(len(event.edits) > 0)
|
self.assertTrue(len(event.edits) > 0,
|
||||||
self.assertTrue(event.number == index + 1)
|
f"Failed for {path}")
|
||||||
|
self.assertEqual(event.number, index + 1,
|
||||||
|
f"Failed for {path}")
|
||||||
|
|
||||||
def test_events(self):
|
def test_events(self):
|
||||||
with open("tests/edls/TEST.edl", 'r') as f:
|
with open("tests/edls/TEST.edl", 'r') as f:
|
||||||
@@ -119,4 +121,5 @@ class TestParse(TestCase):
|
|||||||
encoding='ISO-8859-1') as f:
|
encoding='ISO-8859-1') as f:
|
||||||
edl = pycmx.parse_cmx3600(f)
|
edl = pycmx.parse_cmx3600(f)
|
||||||
events = list(edl.events)
|
events = list(edl.events)
|
||||||
|
|
||||||
self.assertEqual(len(events), 2839)
|
self.assertEqual(len(events), 2839)
|
||||||
|
|||||||
Reference in New Issue
Block a user