Added iXML track list parsing

This commit is contained in:
Jamie Hardt
2019-08-19 11:39:13 -07:00
parent 4770c781b2
commit 4dfc1ab33c
4 changed files with 27 additions and 3 deletions

View File

@@ -4,7 +4,7 @@ with open("README.md", "r") as fh:
long_description = fh.read() long_description = fh.read()
setup(name='wavinfo', setup(name='wavinfo',
version='1.2', version='1.3',
author='Jamie Hardt', author='Jamie Hardt',
author_email='jamiehardt@me.com', author_email='jamiehardt@me.com',
description='Probe WAVE Files for iXML, Broadcast-WAVE and other metadata.', description='Probe WAVE Files for iXML, Broadcast-WAVE and other metadata.',

View File

@@ -87,3 +87,10 @@ class TestWaveInfo(TestCase):
self.assertEqual( e['take'], info.ixml.take ) self.assertEqual( e['take'], info.ixml.take )
self.assertEqual( e['tape'], info.ixml.tape ) self.assertEqual( e['tape'], info.ixml.tape )
self.assertEqual( e['family_uid'], info.ixml.family_uid ) self.assertEqual( e['family_uid'], info.ixml.family_uid )
for track in info.ixml.track_list:
self.assertIsNotNone(track.channel_index)
if basename == 'A101_4.WAV' and track.channel_index == '1':
self.assertTrue(track.name == 'MKH516 A')

View File

@@ -10,5 +10,5 @@
from .wave_reader import WavInfoReader from .wave_reader import WavInfoReader
__version__ = '1.1' __version__ = '1.3'
__author__ = 'Jamie Hardt' __author__ = 'Jamie Hardt'

View File

@@ -1,6 +1,10 @@
#import xml.etree.ElementTree as ET #import xml.etree.ElementTree as ET
from lxml import etree as ET from lxml import etree as ET
import io import io
from collections import namedtuple
IXMLTrack = namedtuple('IXMLTrack', ['channel_index', 'interleave_index', 'name', 'function'])
class WavIXMLFormat: class WavIXMLFormat:
""" """
@@ -34,6 +38,19 @@ class WavIXMLFormat:
""" """
return self.parsed return self.parsed
@property
def track_list(self):
"""
A description of each track.
:return: An Iterator
"""
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())'))
@property @property
def project(self): def project(self):
""" """