summaryrefslogtreecommitdiff
path: root/formats/mp3.py
diff options
context:
space:
mode:
Diffstat (limited to 'formats/mp3.py')
-rw-r--r--formats/mp3.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/formats/mp3.py b/formats/mp3.py
new file mode 100644
index 0000000..0c91911
--- /dev/null
+++ b/formats/mp3.py
@@ -0,0 +1,49 @@
+from formats.__base__ import *
+from utils import to_bytes
+
+import subprocess
+
+class Mp3Handler(BaseHandler):
+ name = "mp3"
+ ext = "mp3"
+
+ __tag_opts = {
+ "album": "-a",
+ "artist": "-A",
+ "date": "-y",
+ "title": "-t"
+ }
+
+ def encode(self, opt, info):
+ self.add("cust ext=%s sox -" % self.ext)
+
+ if opt.bitrate is not None:
+ self.add("-C %d" % opt.bitrate)
+
+ self.add_sox_args(opt, info)
+ self.add("%f")
+
+ return self.build()
+
+ def tag(self, path, tags):
+ self.add("id3v2", "--id3v1-only")
+
+ for k, v in tags.items():
+ if k in self.__tag_opts and v:
+ self.add(self.__tag_opts[k])
+ self.add(v)
+
+ self.add("-T", "%d/%d" % (tags["tracknumber"], tags["tracktotal"]))
+ self.add(path)
+
+ self.log("Tag [%s] : ", path)
+
+ if subprocess.call(self.build(False)):
+ self.log("FAILED\n")
+ return False
+
+ self.log("OK\n")
+ return True
+
+def init():
+ return Mp3Handler