See the changelog. :)
[rox-ripper.git] / support.py
blobf3c3a73a760bb2922a88c83e78964722ebb16f36
1 import re
3 class generic:
4 def get_percent(self, line):
5 return -1
7 class cdda2wav:
8 def __init__(self):
9 self.re_progress = re.compile(".*([ 0-9][0-9])%")
10 self.percent = 0
12 def get_percent(self, line):
13 x = self.re_progress.match(line)
14 if x:
15 self.percent = int(x.group(1))
16 return self.percent
18 class cdparanoia:
19 def __init__(self):
20 self.start_sec = None
21 self.end_sec = None
22 self.re_start_sec = re.compile(".*from sector +([0-9]+)")
23 self.re_end_sec = re.compile(".*to sector +([0-9]+)")
24 self.re_progress = re.compile("##: -2 \[wrote\] @ ([0-9]+)")
25 self.percent = 0
27 def get_percent(self, line):
28 if self.start_sec is None:
29 x = self.re_start_sec.match(line)
30 if x:
31 self.start_sec = int(x.group(1))
32 if self.end_sec is None:
33 x = self.re_end_sec.match(line)
34 if x:
35 self.end_sec = int(x.group(1))
36 if self.start_sec is not None and self.end_sec is not None:
37 x = self.re_progress.match(line)
38 if x:
39 self.percent = 100 * (int(x.group(1))/1176-self.start_sec) / (self.end_sec-self.start_sec)
40 return self.percent
42 class lame:
43 def __init__(self):
44 self.re_progress = re.compile(r"^[\s]+([0-9]+)/([0-9]+)")
45 self.percent = 0
47 def get_percent(self, line):
48 x = self.re_progress.match(line)
49 if x:
50 self.percent = int(100 * (float(x.group(1)) / float(x.group(2))))
51 return self.percent
53 class oggenc:
54 def __init__(self):
55 self.re_progress = re.compile('^.*\[[\s]*([.0-9]+)%\]')
56 self.percent = 0
58 def get_percent(self, line):
59 x = self.re_progress.match(line)
60 if x:
61 self.percent = int(float(x.group(1)))
62 return self.percent
64 codecs = {
65 'cdda2wav': cdda2wav,
66 'cdparanoia': cdparanoia,
67 'lame': lame,
68 'oggenc': oggenc,
69 'generic': generic
72 def get_handler(text):
73 for codec in codecs:
74 if codec in text:
75 return codecs[codec]()
76 return codecs['generic']()