mirror of
https://github.com/iluvcapra/pycmx.git
synced 2025-12-31 17:00:53 +00:00
Some SourceUMID Impl
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
# pycmx
|
# pycmx
|
||||||
# (c) 2018 Jamie Hardt
|
# (c) 2018 Jamie Hardt
|
||||||
|
|
||||||
from .parse_cmx_statements import (StmtUnrecognized, StmtFCM, StmtEvent)
|
from .parse_cmx_statements import (StmtUnrecognized, StmtFCM, StmtEvent, StmtSourceUMID)
|
||||||
from .event import Event
|
from .event import Event
|
||||||
|
|
||||||
class EditList:
|
class EditList:
|
||||||
@@ -13,6 +13,28 @@ class EditList:
|
|||||||
self.title_statement = statements[0]
|
self.title_statement = statements[0]
|
||||||
self.event_statements = statements[1:]
|
self.event_statements = statements[1:]
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def format(self):
|
||||||
|
"""
|
||||||
|
The detected format of the EDL. Possible values are: `3600`,`File32`,
|
||||||
|
`File128`, and `unknown`
|
||||||
|
"""
|
||||||
|
first_event = next( (s for s in self.event_statements if type(s) is StmtEvent), None)
|
||||||
|
|
||||||
|
if first_event:
|
||||||
|
if first_event.format == 8:
|
||||||
|
return '3600'
|
||||||
|
elif first_event.format == 32:
|
||||||
|
return 'File32'
|
||||||
|
elif first_event.format == 128:
|
||||||
|
return 'File128'
|
||||||
|
else:
|
||||||
|
return 'unknown'
|
||||||
|
else:
|
||||||
|
return 'unknown'
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def title(self):
|
def title(self):
|
||||||
"""
|
"""
|
||||||
@@ -54,8 +76,21 @@ class EditList:
|
|||||||
else:
|
else:
|
||||||
event_statements.append(stmt)
|
event_statements.append(stmt)
|
||||||
|
|
||||||
|
elif type(stmt) is StmtSourceUMID:
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
event_statements.append(stmt)
|
event_statements.append(stmt)
|
||||||
|
|
||||||
yield Event(statements=event_statements)
|
yield Event(statements=event_statements)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def sources(self):
|
||||||
|
"""
|
||||||
|
A generator for all of the sources in the list
|
||||||
|
"""
|
||||||
|
|
||||||
|
for stmt in self.event_statements:
|
||||||
|
if type(stmt) is StmtSourceUMID:
|
||||||
|
yield stmt
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ from .util import collimate
|
|||||||
StmtTitle = namedtuple("Title",["title","line_number"])
|
StmtTitle = namedtuple("Title",["title","line_number"])
|
||||||
StmtFCM = namedtuple("FCM",["drop","line_number"])
|
StmtFCM = namedtuple("FCM",["drop","line_number"])
|
||||||
StmtEvent = namedtuple("Event",["event","source","channels","trans",\
|
StmtEvent = namedtuple("Event",["event","source","channels","trans",\
|
||||||
"trans_op","source_in","source_out","record_in","record_out","line_number"])
|
"trans_op","source_in","source_out","record_in","record_out","format","line_number"])
|
||||||
StmtAudioExt = namedtuple("AudioExt",["audio3","audio4","line_number"])
|
StmtAudioExt = namedtuple("AudioExt",["audio3","audio4","line_number"])
|
||||||
StmtClipName = namedtuple("ClipName",["name","affect","line_number"])
|
StmtClipName = namedtuple("ClipName",["name","affect","line_number"])
|
||||||
StmtSourceFile = namedtuple("SourceFile",["filename","line_number"])
|
StmtSourceFile = namedtuple("SourceFile",["filename","line_number"])
|
||||||
StmtRemark = namedtuple("Remark",["text","line_number"])
|
StmtRemark = namedtuple("Remark",["text","line_number"])
|
||||||
StmtEffectsName = namedtuple("EffectsName",["name","line_number"])
|
StmtEffectsName = namedtuple("EffectsName",["name","line_number"])
|
||||||
StmtTrailer = namedtuple("Trailer",["text","line_number"])
|
StmtSourceUMID = namedtuple("Source",["name","umid","line_number"])
|
||||||
StmtSplitEdit = namedtuple("SplitEdit",["video","magnitue", "line_number"])
|
StmtSplitEdit = namedtuple("SplitEdit",["video","magnitue", "line_number"])
|
||||||
StmtMotionMemory = namedtuple("MotionMemory",["source","fps"]) # FIXME needs more fields
|
StmtMotionMemory = namedtuple("MotionMemory",["source","fps"]) # FIXME needs more fields
|
||||||
StmtUnrecognized = namedtuple("Unrecognized",["content","line_number"])
|
StmtUnrecognized = namedtuple("Unrecognized",["content","line_number"])
|
||||||
@@ -69,8 +69,8 @@ def _parse_cmx3600_line(line, line_number):
|
|||||||
return _parse_extended_audio_channels(line,line_number)
|
return _parse_extended_audio_channels(line,line_number)
|
||||||
elif line.startswith("*"):
|
elif line.startswith("*"):
|
||||||
return _parse_remark( line[1:].strip(), line_number)
|
return _parse_remark( line[1:].strip(), line_number)
|
||||||
elif line.startswith(">>>"):
|
elif line.startswith(">>> SOURCE"):
|
||||||
return _parse_trailer_statement(line, line_number)
|
return _parse_source_umid_statement(line, line_number)
|
||||||
elif line.startswith("EFFECTS NAME IS"):
|
elif line.startswith("EFFECTS NAME IS"):
|
||||||
return _parse_effects_name(line, line_number)
|
return _parse_effects_name(line, line_number)
|
||||||
elif line.startswith("SPLIT:"):
|
elif line.startswith("SPLIT:"):
|
||||||
@@ -157,10 +157,11 @@ def _parse_columns_for_standard_form(line, event_field_length, source_field_leng
|
|||||||
source_out=column_strings[12].strip(),
|
source_out=column_strings[12].strip(),
|
||||||
record_in=column_strings[14].strip(),
|
record_in=column_strings[14].strip(),
|
||||||
record_out=column_strings[16].strip(),
|
record_out=column_strings[16].strip(),
|
||||||
line_number=line_number)
|
line_number=line_number,
|
||||||
|
format=source_field_length)
|
||||||
|
|
||||||
|
|
||||||
def _parse_trailer_statement(line, line_number):
|
def _parse_source_umid_statement(line, line_number):
|
||||||
trimmed = line[3:].strip()
|
trimmed = line[3:].strip()
|
||||||
return StmtTrailer(trimmed, line_number=line_number)
|
return StmtSourceUMID(name=None, umid=None, line_number=line_number)
|
||||||
|
|
||||||
|
|||||||
1
tests/__init__.py
Normal file
1
tests/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
from . import test_parse
|
||||||
Reference in New Issue
Block a user