diff --git a/bin/mopidy-scan b/bin/mopidy-scan index b8b4fd3e..869aa662 100755 --- a/bin/mopidy-scan +++ b/bin/mopidy-scan @@ -4,10 +4,11 @@ import sys import logging from mopidy import settings -from mopidy.utils.log import setup_console_logging +from mopidy.utils.log import setup_console_logging, setup_root_logger from mopidy.scanner import Scanner, translator from mopidy.frontends.mpd.translator import tracks_to_tag_cache_format +setup_root_logger() setup_console_logging(2) tracks = [] diff --git a/mopidy/scanner.py b/mopidy/scanner.py index 17e8127d..b2e254da 100644 --- a/mopidy/scanner.py +++ b/mopidy/scanner.py @@ -77,10 +77,21 @@ class Scanner(object): pad.link(target_pad) def process_tags(self, bus, message): - data = message.parse_tag() - data = dict([(k, data[k]) for k in data.keys()]) - data['uri'] = unicode(self.uribin.get_property('uri')) - data[gst.TAG_DURATION] = self.get_duration() + taglist = message.parse_tag() + data = { + 'uri': unicode(self.uribin.get_property('uri')), + gst.TAG_DURATION: self.get_duration(), + } + + for key in taglist.keys(): + # XXX: For some crazy reason some wma files spit out lists here, + # not sure if this is due to better data in headers or wma being + # stupid. So ugly hack for now :/ + if type(taglist[key]) is list: + data[key] = taglist[key][0] + else: + data[key] = taglist[key] + try: self.data_callback(data) self.next_uri()