1
# Copyright 2006 Lukas Lalinsky
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License version 2 as
5
# published by the Free Software Foundation
7
# $Id: wma.py 4001 2007-04-15 18:44:40Z piman $
10
from formats._audio import AudioFile
18
if gst.registry_get_default().find_plugin("ffmpeg") is None:
21
class WMAFile(AudioFile):
22
multiple_values = False
23
format = "Windows Media Audio"
26
"WM/AlbumTitle": "album",
29
"WM/AlbumArtist": "albumartist",
30
"WM/Composer": "composer",
31
"WM/Writer": "lyricist",
32
"WM/Conductor": "conductor",
33
"WM/ModifiedBy": "remixer",
34
"WM/Producer": "producer",
35
"WM/ContentGroupDescription": "grouping",
36
"WM/SubTitle": "part",
37
"WM/TrackNumber": "tracknumber",
38
"WM/PartOfSet": "discnumber",
39
"WM/BeatsPerMinute": "bpm",
40
"WM/Copyright": "copyright",
43
"WM/EncodedBy": "encodedby",
44
"MusicBrainz/Track Id": "musicbrainz_trackid",
45
"MusicBrainz/Album Id": "musicbrainz_albumid",
46
"MusicBrainz/Artist Id": "musicbrainz_artistid",
47
"MusicBrainz/Album Artist Id": "musicbrainz_albumartistid",
48
"MusicBrainz/TRM Id": "musicbrainz_trmid",
49
"MusicIP/PUID": "musicip_puid",
52
__rtranslate = dict([(v, k) for k, v in __translate.iteritems()])
54
def __init__(self, filename, audio=None):
56
audio = mutagen.asf.ASF(filename)
57
self["~#length"] = int(audio.info.length)
58
self["~#bitrate"] = int(audio.info.bitrate)
59
for name, values in audio.tags.items():
60
try: name = self.__translate[name]
61
except KeyError: continue
62
self[name] = "\n".join(map(unicode, values))
63
self.sanitize(filename)
66
audio = mutagen.asf.ASF(self["~filename"])
67
for key in self.realkeys():
68
try: name = self.__rtranslate[key]
69
except KeyError: continue
70
audio.tags[name] = self.list(key)
74
def can_change(self, key=None):
75
OK = self.__rtranslate.keys()
76
if key is None: return super(WMAFile, self).can_change(key)
77
else: return super(WMAFile, self).can_change(key) and (key in OK)