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