summaryrefslogtreecommitdiff
path: root/lib/audio.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/audio.py')
-rw-r--r--lib/audio.py84
1 files changed, 83 insertions, 1 deletions
diff --git a/lib/audio.py b/lib/audio.py
index 55562cc..0c8859d 100644
--- a/lib/audio.py
+++ b/lib/audio.py
@@ -2,10 +2,15 @@
2 Care about audio fileformat 2 Care about audio fileformat
3''' 3'''
4from mutagen.flac import FLAC 4from mutagen.flac import FLAC
5from mutagen.apev2 import APEv2
6from mutagen.oggvorbis import OggVorbis
7
8
5 9
6import parser 10import parser
7import shutil 11import shutil
8 12
13
9class MpegAudioStripper(parser.GenericParser): 14class MpegAudioStripper(parser.GenericParser):
10 ''' 15 '''
11 Represent mpeg audio file (mp3, ...) 16 Represent mpeg audio file (mp3, ...)
@@ -16,6 +21,80 @@ class MpegAudioStripper(parser.GenericParser):
16 else: 21 else:
17 return False 22 return False
18 23
24
25class OggStripper(parser.GenericParser):
26 '''
27 Represent an ogg vorbis file
28 '''
29 def remove_all(self):
30 if self.backup is True:
31 shutil.copy2(self.filename, self.output)
32 self.filename = self.output
33
34 mfile = OggVorbis(self.filename)
35 mfile.delete()
36 mfile.save()
37
38 def is_clean(self):
39 '''
40 Check if the "metadata" block is present in the file
41 '''
42 mfile = OggVorbis(self.filename)
43 print mfile.tags
44 if mfile.tags == []:
45 return True
46 else:
47 return False
48
49 def get_meta(self):
50 '''
51 Return the content of the metadata block if present
52 '''
53 metadata = {}
54 mfile = OggVorbis(self.filename)
55 for key, value in mfile.tags:
56 metadata[key] = value
57 return metadata
58
59class Apev2Stripper(parser.GenericParser):
60 '''
61 Represent a Apev2 audio file
62 '''
63 def remove_all(self):
64 '''
65 Remove the "metadata" block from the file
66 '''
67 if self.backup is True:
68 shutil.copy2(self.filename, self.output)
69 self.filename = self.output
70
71 mfile = APEv2(self.filename)
72 mfile.delete()
73 mfile.save()
74
75 def is_clean(self):
76 '''
77 Check if the "metadata" block is present in the file
78 '''
79 mfile = APEv2(self.filename)
80 if mfile.tags is None:
81 return True
82 else:
83 return False
84
85 def get_meta(self):
86 '''
87 Return the content of the metadata block if present
88 '''
89 metadata = {}
90 mfile = APEv2(self.filename)
91 if mfile.tags is None:
92 return metadata
93 for key, value in mfile.tags:
94 metadata[key] = value
95 return metadata
96
97
19class FlacStripper(parser.GenericParser): 98class FlacStripper(parser.GenericParser):
20 ''' 99 '''
21 Represent a Flac audio file 100 Represent a Flac audio file
@@ -30,6 +109,7 @@ class FlacStripper(parser.GenericParser):
30 109
31 mfile = FLAC(self.filename) 110 mfile = FLAC(self.filename)
32 mfile.delete() 111 mfile.delete()
112 mfile.clear_pictures()
33 mfile.save() 113 mfile.save()
34 114
35 def is_clean(self): 115 def is_clean(self):
@@ -37,7 +117,7 @@ class FlacStripper(parser.GenericParser):
37 Check if the "metadata" block is present in the file 117 Check if the "metadata" block is present in the file
38 ''' 118 '''
39 mfile = FLAC(self.filename) 119 mfile = FLAC(self.filename)
40 if mfile.tags is None: 120 if mfile.tags is None and mfile.pictures == []:
41 return True 121 return True
42 else: 122 else:
43 return False 123 return False
@@ -52,4 +132,6 @@ class FlacStripper(parser.GenericParser):
52 return metadata 132 return metadata
53 for key, value in mfile.tags: 133 for key, value in mfile.tags:
54 metadata[key] = value 134 metadata[key] = value
135 if mfile.pictures != []:
136 metadata['picture :'] = 'yes'
55 return metadata 137 return metadata