summaryrefslogtreecommitdiff
path: root/lib/audio.py
blob: 73030af233ca5844e5617cdcb2f84ef3e12b3beb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
'''
    Care about audio fileformat
'''
try:
    from mutagen.flac import FLAC
    from mutagen.apev2 import APEv2
    from mutagen.oggvorbis import OggVorbis
except:
    pass


import parser
import shutil


class MpegAudioStripper(parser.GenericParser):
    '''
        Represent mpeg audio file (mp3, ...)
    '''
    def _should_remove(self, field):
        if field.name in ("id3v1", "id3v2"):
            return True
        else:
            return False


class OggStripper(parser.GenericParser):
    '''
        Represent an ogg vorbis file
    '''
    def remove_all(self):
        if self.backup is True:
            shutil.copy2(self.filename, self.output)
            self.filename = self.output

        mfile = OggVorbis(self.filename)
        mfile.delete()
        mfile.save()

    def is_clean(self):
        '''
            Check if the "metadata" block is present in the file
        '''
        mfile = OggVorbis(self.filename)
        print mfile.tags
        if mfile.tags == []:
            return True
        else:
            return False

    def get_meta(self):
        '''
            Return the content of the metadata block if present
        '''
        metadata = {}
        mfile = OggVorbis(self.filename)
        for key, value in mfile.tags:
            metadata[key] = value
        return metadata

class Apev2Stripper(parser.GenericParser):
    '''
        Represent a Apev2 audio file
    '''
    def remove_all(self):
        '''
            Remove the "metadata" block from the file
        '''
        if self.backup is True:
            shutil.copy2(self.filename, self.output)
            self.filename = self.output

        mfile = APEv2(self.filename)
        mfile.delete()
        mfile.save()

    def is_clean(self):
        '''
            Check if the "metadata" block is present in the file
        '''
        mfile = APEv2(self.filename)
        if mfile.tags is None:
            return True
        else:
            return False

    def get_meta(self):
        '''
            Return the content of the metadata block if present
        '''
        metadata = {}
        mfile = APEv2(self.filename)
        if mfile.tags is None:
            return metadata
        for key, value in mfile.tags:
            metadata[key] = value
        return metadata


class FlacStripper(parser.GenericParser):
    '''
        Represent a Flac audio file
    '''
    def remove_all(self):
        '''
            Remove the "metadata" block from the file
        '''
        if self.backup is True:
            shutil.copy2(self.filename, self.output)
            self.filename = self.output

        mfile = FLAC(self.filename)
        mfile.delete()
        mfile.clear_pictures()
        mfile.save()

    def is_clean(self):
        '''
            Check if the "metadata" block is present in the file
        '''
        mfile = FLAC(self.filename)
        if mfile.tags is None and mfile.pictures == []:
            return True
        else:
            return False

    def get_meta(self):
        '''
            Return the content of the metadata block if present
        '''
        metadata = {}
        mfile = FLAC(self.filename)
        if mfile.tags is None:
            return metadata
        for key, value in mfile.tags:
            metadata[key] = value
        if mfile.pictures != []:
            metadata['picture :'] = 'yes'
        return metadata