mirror of
https://github.com/iluvcapra/wavinfo.git
synced 2025-12-31 08:50:41 +00:00
Red reduction
This commit is contained in:
@@ -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 )
|
||||
|
||||
Reference in New Issue
Block a user