summaryrefslogtreecommitdiff
path: root/formats
diff options
context:
space:
mode:
authormikeos <mike.osipov@gmail.com>2013-09-30 02:21:16 +0400
committermikeos <mike.osipov@gmail.com>2013-09-30 02:21:16 +0400
commit10a50690b33ca7fefc7768d156eb2b75544082ea (patch)
treeddf4e7fc2e1bd93b288660522069d332fdc2faa8 /formats
parent0dae4f52d78d840451a8a841b30190e70aab5d7b (diff)
add ogg support
Diffstat (limited to 'formats')
-rw-r--r--formats/flac.py8
-rw-r--r--formats/mp3.py15
-rw-r--r--formats/ogg.py33
3 files changed, 37 insertions, 19 deletions
diff --git a/formats/flac.py b/formats/flac.py
index 258b122..35db1e4 100644
--- a/formats/flac.py
+++ b/formats/flac.py
@@ -20,7 +20,6 @@ class FlacHandler(BaseHandler):
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():
@@ -28,12 +27,7 @@ class FlacHandler(BaseHandler):
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
+ return proc.wait() is 0
def init():
return FlacHandler
diff --git a/formats/mp3.py b/formats/mp3.py
index c668b47..cbd912f 100644
--- a/formats/mp3.py
+++ b/formats/mp3.py
@@ -59,9 +59,9 @@ class ID3Tagger:
off = self.__offset.get(tag)
if off:
struct.pack_into("30s", self.v1, off, value)
- elif tag is "date":
+ elif tag == "date":
struct.pack_into("4s", self.v1, 93, value)
- elif tag is "tracknumber":
+ elif tag == "tracknumber":
number = int(value.partition(b"/")[0])
struct.pack_into("B", self.v1, 126, number)
@@ -99,7 +99,7 @@ class Mp3Handler(BaseHandler):
return self.build()
- def do_tag(self, path, tags):
+ def tag(self, path, tags):
tagger = ID3Tagger()
for k, v in tags.items():
@@ -112,14 +112,5 @@ class Mp3Handler(BaseHandler):
tagger.write(path)
return True
- def tag(self, path, tags):
- self.log("Tag [%s] : ", path)
- if self.do_tag(path, tags):
- self.log("OK\n")
- return True
-
- self.log("FAILED\n")
- return False
-
def init():
return Mp3Handler
diff --git a/formats/ogg.py b/formats/ogg.py
new file mode 100644
index 0000000..c7352c2
--- /dev/null
+++ b/formats/ogg.py
@@ -0,0 +1,33 @@
+from formats.__base__ import *
+from utils import to_bytes
+
+import subprocess
+
+class OggHandler(BaseHandler):
+ name = "ogg"
+ ext = "ogg"
+
+ def encode(self, opt, info):
+ self.add("cust ext=%s sox -" % self.ext)
+
+ 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 = ["vorbiscomment", "--raw", "--write", 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()
+
+ return proc.wait() is 0
+
+def init():
+ return OggHandler