Red reduction

This commit is contained in:
Jamie Hardt
2023-11-08 19:35:12 -08:00
parent 3817357fac
commit 8a58df2b87

View File

@@ -1,11 +1,17 @@
from lxml import etree as ET from lxml import etree as ET
import io import io
from collections import namedtuple # from collections import namedtuple
from typing import Optional from typing import Optional
from enum import IntEnum from enum import IntEnum
from typing import NamedTuple
IXMLTrack = namedtuple('IXMLTrack', ['channel_index', 'interleave_index', 'name', 'function']) # IXMLTrack = namedtuple('IXMLTrack', ['channel_index', 'interleave_index', 'name', 'function'])
class IXMLTrack(NamedTuple):
channel_index: int
interleave_index: int
name: str
function: str
class SteinbergMetadata: class SteinbergMetadata:
""" """
@@ -72,7 +78,8 @@ class SteinbergMetadata:
""" """
`AudioSpeakerArrangement` property `AudioSpeakerArrangement` property
""" """
val = self.parsed.find("./ATTR_LIST/ATTR[NAME = 'AudioSpeakerArrangement']/VALUE") val = self.parsed.find(
"./ATTR_LIST/ATTR[NAME = 'AudioSpeakerArrangement']/VALUE")
if val is not None: if val is not None:
return type(self).AudioSpeakerArrangement(int(val.text)) return type(self).AudioSpeakerArrangement(int(val.text))
@@ -81,7 +88,8 @@ class SteinbergMetadata:
""" """
AudioSampleFormatSize AudioSampleFormatSize
""" """
val = self.parsed.find("./ATTR_LIST/ATTR[NAME = 'AudioSampleFormatSize']/VALUE") val = self.parsed.find(
"./ATTR_LIST/ATTR[NAME = 'AudioSampleFormatSize']/VALUE")
if val is not None: if val is not None:
return int(val.text) return int(val.text)
@@ -90,7 +98,8 @@ class SteinbergMetadata:
""" """
MediaCompany MediaCompany
""" """
val = self.parsed.find("./ATTR_LIST/ATTR[NAME = 'MediaCompany']/VALUE") val = self.parsed.find(
"./ATTR_LIST/ATTR[NAME = 'MediaCompany']/VALUE")
if val is not None: if val is not None:
return val.text return val.text
@@ -99,7 +108,8 @@ class SteinbergMetadata:
""" """
MediaDropFrames MediaDropFrames
""" """
val = self.parsed.find("./ATTR_LIST/ATTR[NAME = 'MediaDropFrames']/VALUE") val = self.parsed.find(
"./ATTR_LIST/ATTR[NAME = 'MediaDropFrames']/VALUE")
if val is not None: if val is not None:
return val.text == "1" return val.text == "1"
@@ -108,7 +118,8 @@ class SteinbergMetadata:
""" """
MediaDuration MediaDuration
""" """
val = self.parsed.find("./ATTR_LIST/ATTR[NAME = 'MediaDuration']/VALUE") val = self.parsed.find(
"./ATTR_LIST/ATTR[NAME = 'MediaDuration']/VALUE")
if val is not None: if val is not None:
return float(val.text) return float(val.text)
@@ -181,10 +192,16 @@ class WavIXMLFormat:
""" """
for track in self.parsed.find("./TRACK_LIST").iter(): for track in self.parsed.find("./TRACK_LIST").iter():
if track.tag == 'TRACK': if track.tag == 'TRACK':
yield IXMLTrack(channel_index=track.xpath('string(CHANNEL_INDEX/text())'), yield IXMLTrack(
interleave_index=track.xpath('string(INTERLEAVE_INDEX/text())'), channel_index=
name=track.xpath('string(NAME/text())'), track.xpath('string(CHANNEL_INDEX/text())'),
function=track.xpath('string(FUNCTION/text())')) interleave_index=
track.xpath('string(INTERLEAVE_INDEX/text())'),
name=
track.xpath('string(NAME/text())'),
function=
track.xpath('string(FUNCTION/text())')
)
@property @property
def project(self) -> Optional[str]: def project(self) -> Optional[str]:
@@ -240,11 +257,8 @@ class WavIXMLFormat:
return None return None
def to_dict(self): def to_dict(self):
return dict(track_list=list(map(lambda x: x._asdict(), self.track_list)), return dict(
project=self.project, track_list=list(map(lambda x: x._asdict(), self.track_list)),
scene=self.scene, project=self.project, scene=self.scene, take=self.take,
take=self.take, tape=self.tape, family_uid=self.family_uid,
tape=self.tape, family_name=self.family_name )
family_uid=self.family_uid,
family_name=self.family_name
)