~ubuntu-branches/debian/wheezy/quodlibet/wheezy

« back to all changes in this revision

Viewing changes to formats/wma.py

  • Committer: Bazaar Package Importer
  • Author(s): Luca Falavigna
  • Date: 2009-01-30 23:55:34 UTC
  • mto: (18.1.1 squeeze) (2.1.9 sid)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: james.westby@ubuntu.com-20090130235534-45857nfsgobw4apc
Tags: upstream-2.0
ImportĀ upstreamĀ versionĀ 2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright 2006 Lukas Lalinsky
2
 
#
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
6
 
#
7
 
# $Id: wma.py 4001 2007-04-15 18:44:40Z piman $
8
 
 
9
 
import gst
10
 
from formats._audio import AudioFile
11
 
 
12
 
extensions = [".wma"]
13
 
try:
14
 
    import mutagen.asf
15
 
except ImportError:
16
 
    extensions = []
17
 
else:
18
 
    if gst.registry_get_default().find_plugin("ffmpeg") is None:
19
 
        extensions = []
20
 
 
21
 
class WMAFile(AudioFile):
22
 
    multiple_values = False
23
 
    format = "Windows Media Audio"
24
 
 
25
 
    __translate = {
26
 
        "WM/AlbumTitle": "album",
27
 
        "Title": "title",
28
 
        "Author": "artist",
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",
41
 
        "WM/ISRC": "isrc",
42
 
        "WM/Mood": "mood",
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",
50
 
        "WM/Year": "date",
51
 
    }
52
 
    __rtranslate = dict([(v, k) for k, v in __translate.iteritems()])
53
 
 
54
 
    def __init__(self, filename, audio=None):
55
 
        if audio is 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)
64
 
 
65
 
    def write(self):
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)
71
 
        audio.save()
72
 
        self.sanitize()
73
 
 
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)
78
 
 
79
 
info = WMAFile