diff --git a/pycmx/parse_cmx_statements.py b/pycmx/parse_cmx_statements.py index ec1e8f8..5ae6b4b 100644 --- a/pycmx/parse_cmx_statements.py +++ b/pycmx/parse_cmx_statements.py @@ -6,10 +6,10 @@ from typing import TextIO, List from pycmx.cdl import AscSopComponents, Rgb -from .statements import (StmtCdlSat, StmtCdlSop, StmtFrmc, StmtRemark, +from .statements import (StmtCdlSat, StmtCdlSop, StmtCorruptRemark, StmtFrmc, StmtRemark, StmtTitle, StmtUnrecognized, StmtFCM, StmtAudioExt, StmtClipName, StmtEffectsName, StmtEvent, - StmtSourceFile, StmtSplitEdit, StmtMotionMemory) + StmtSourceFile, StmtSplitEdit) from .util import collimate @@ -68,7 +68,8 @@ def _parse_cmx3600_line(line: str, line_number: int) -> object: if line.startswith("SPLIT:"): return _parse_split(line, line_number) if line.startswith("M2"): - return _parse_motion_memory(line, line_number) + pass + # return _parse_motion_memory(line, line_number) return _parse_unrecognized(line, line_number) @@ -130,8 +131,8 @@ def _parse_remark(line, line_number) -> object: ), line_number=line_number) - except ValueError: - return StmtRemark(line, line_number) + except ValueError as e: + return StmtCorruptRemark('ASC_SOP', e, line_number) elif line.startswith("ASC_SAT"): value = re.findall(r'(-?\d+(\.\d+)?)', line) @@ -144,16 +145,15 @@ def _parse_remark(line, line_number) -> object: return StmtCdlSat(value=float(value[0][0]), line_number=line_number) - except ValueError: - return StmtRemark(line, line_number) + except ValueError as e: + return StmtCorruptRemark('ASC_SAT', e, line_number) elif line.startswith("FRMC"): - match = re.match( - r'^FRMC START:\s*(\d+)\s+FRMC END:\s*(\d+)' - r'\s+FRMC DURATION:\s*(\d+)', line, re.IGNORECASE) + match = re.match(r'^FRMC START:\s*(\d+)\s+FRMC END:\s*(\d+)' + r'\s+FRMC DURATION:\s*(\d+)', line, re.IGNORECASE) if match is None: - return StmtRemark(line, line_number) + return StmtCorruptRemark('FRMC', None, line_number) else: try: @@ -161,8 +161,8 @@ def _parse_remark(line, line_number) -> object: end=int(match.group(2)), duration=int(match.group(3)), line_number=line_number) - except ValueError: - return StmtRemark(line, line_number) + except ValueError as e: + return StmtCorruptRemark('FRMC', e, line_number) else: return StmtRemark(text=line, line_number=line_number) @@ -182,9 +182,9 @@ def _parse_split(line: str, line_number): line_number=line_number) -def _parse_motion_memory(line, line_number): - return StmtMotionMemory(source="", fps="") - +# def _parse_motion_memory(line, line_number): +# return StmtMotionMemory(source="", fps="") +# def _parse_unrecognized(line, line_number): return StmtUnrecognized(content=line, line_number=line_number) diff --git a/pycmx/statements.py b/pycmx/statements.py index f9036ce..cc0ca9c 100644 --- a/pycmx/statements.py +++ b/pycmx/statements.py @@ -3,7 +3,7 @@ from collections import namedtuple -from typing import NamedTuple +from typing import Any, NamedTuple from pycmx.cdl import AscSopComponents @@ -60,7 +60,7 @@ class StmtCdlSat(NamedTuple): class StmtFrmc(NamedTuple): - start: int + start: int end: int duration: int line_number: int @@ -93,5 +93,11 @@ class StmtUnrecognized(NamedTuple): line_number: int -StmtMotionMemory = namedtuple( - "MotionMemory", ["source", "fps"]) # FIXME needs more fields +class StmtCorruptRemark(NamedTuple): + selector: str + exception: Any + line_number: int + + +# StmtMotionMemory = namedtuple( +# "MotionMemory", ["source", "fps"]) # FIXME needs more fields