mirror of
https://github.com/iluvcapra/wavinfo.git
synced 2025-12-31 17:00:41 +00:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4dfc1ab33c | ||
|
|
4770c781b2 | ||
|
|
45c2aae640 |
@@ -53,6 +53,10 @@ The length of the file in frames (interleaved samples) and bytes is available, a
|
|||||||
>>> (48000, 2, 6, 24)
|
>>> (48000, 2, 6, 24)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Other Resources
|
||||||
|
|
||||||
|
* For other file formats and ID3 decoding, look at [audio-metadata](https://github.com/thebigmunch/audio-metadata).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
setup.py
2
setup.py
@@ -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.',
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
@@ -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:
|
||||||
"""
|
"""
|
||||||
@@ -27,6 +31,26 @@ class WavIXMLFormat:
|
|||||||
if e is not None:
|
if e is not None:
|
||||||
return e.text
|
return e.text
|
||||||
|
|
||||||
|
@property
|
||||||
|
def raw_xml(self):
|
||||||
|
"""
|
||||||
|
The root entity of the iXML document.
|
||||||
|
"""
|
||||||
|
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):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user