summaryrefslogtreecommitdiff
path: root/formats/flac.py
diff options
context:
space:
mode:
authormikeos <mike.osipov@gmail.com>2013-09-28 16:38:17 +0400
committermikeos <mike.osipov@gmail.com>2013-09-28 16:38:17 +0400
commit07aa2154f13a2c90ac3f98b676cddd4e2b1a82b8 (patch)
tree15e69b7874d1e95570a536bbfe69a5a78e85f058 /formats/flac.py
parent1bb90cf78b14c4cc228826e4d5443f4de047ed24 (diff)
support of different output encoding formats
Diffstat (limited to 'formats/flac.py')
-rw-r--r--formats/flac.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/formats/flac.py b/formats/flac.py
new file mode 100644
index 0000000..258b122
--- /dev/null
+++ b/formats/flac.py
@@ -0,0 +1,39 @@
+from formats.__base__ import *
+from utils import to_bytes
+
+import subprocess
+
+class FlacHandler(BaseHandler):
+ name = "flac"
+ ext = "flac"
+
+ def encode(self, opt, info):
+ self.add("flac sox -")
+
+ if opt.compression is not None:
+ self.add("-C %d" % opt.compression)
+
+ self.add_sox_args(opt, info)
+ self.add("%f")
+
+ return self.build()
+
+ def tag(self, path, tags):
+ args = ["metaflac", "--remove-all-tags", "--import-tags-from=-", path]
+ self.log("Tag [%s] : ", path)
+
+ proc = subprocess.Popen(args, stdin = subprocess.PIPE)
+ for k, v in tags.items():
+ if v is not "":
+ proc.stdin.write(to_bytes("%s=%s\n" % (k.upper(), v)))
+ proc.stdin.close()
+
+ if proc.wait():
+ self.log("FAILED\n")
+ return False
+
+ self.log("OK\n")
+ return True
+
+def init():
+ return FlacHandler