summaryrefslogtreecommitdiff
path: root/formats/mp3.py
blob: 0c91911789a0a67626d9822cb40a1e18ac6486b8 (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
40
41
42
43
44
45
46
47
48
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