Add duration to scanner data

This commit is contained in:
Thomas Adamcik 2010-10-27 00:15:26 +02:00
parent d6516915e5
commit 79887c1988
2 changed files with 12 additions and 0 deletions

View File

@ -71,6 +71,7 @@ class Scanner(object):
data = message.parse_tag()
data = dict([(k, data[k]) for k in data.keys()])
data['uri'] = self.uribin.get_property('uri')
data['duration'] = self.get_duration()
self.data_callback(data)
self.next_uri()
@ -81,6 +82,13 @@ class Scanner(object):
self.error_callback(uri, errors)
self.next_uri()
def get_duration(self):
try:
return self.pipe.query_duration(
gst.FORMAT_TIME, None)[0] // gst.MSECOND
except gst.QueryError:
return None
def next_uri(self):
if not self.uris:
return self.stop()

View File

@ -73,6 +73,10 @@ class ScannerTest(unittest.TestCase):
self.check('scanner/simple/song1.mp3', 'uri', 'file://'
+ data_folder('scanner/simple/song1.mp3'))
def test_duration_is_set(self):
self.scan('scanner/simple')
self.check('scanner/simple/song1.mp3', 'duration', 4680)
def test_artist_is_set(self):
self.scan('scanner/simple')
self.check('scanner/simple/song1.mp3', 'artist', 'name')