From 07aa2154f13a2c90ac3f98b676cddd4e2b1a82b8 Mon Sep 17 00:00:00 2001 From: mikeos Date: Sat, 28 Sep 2013 16:38:17 +0400 Subject: support of different output encoding formats --- formats/mp3.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 formats/mp3.py (limited to 'formats/mp3.py') 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 -- cgit v1.2.3-70-g09d2