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