summaryrefslogtreecommitdiff
path: root/formats/flac.py
blob: 258b122265a28cd9edda2649b2d56afc4b50add9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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