6 from extract import extract
7 from datetime import datetime, timedelta
12 def __init__(self, job_id):
14 self.filename = os.path.join(JOBS_DIR, self.job_id)
15 line = file(self.filename).readline()
16 self.cmd = line.split(':', 1)[0].strip()
17 self.timestamp = os.stat(self.filename)[-3]
19 def add_info(self, info):
20 first_line = file(self.filename).readline()
21 if not first_line.endswith('\n'):
23 open(self.filename, 'w').write(first_line + info + '\n')
28 firstline = file(self.filename).readline()
29 open(self.filename, 'w').write('running\nEn cours de traitement ...\n')
30 first_word, date, start, end = firstline.strip().split()
32 year, month, day = date.split('-')
33 start_hour, start_minutes = [int(x) for x in start.split(':')]
34 end_hour, end_minutes = [int(x) for x in end.split(':')]
35 output_filename = 'extrait-%s%s%s-%02d%02d-%02d%02d.wav' % (
36 year, month, day, start_hour, start_minutes, end_hour, end_minutes)
37 start_time = datetime(int(year), int(month), int(day), int(start_hour), int(start_minutes))
38 end_time = datetime(int(year), int(month), int(day), int(end_hour), int(end_minutes))
39 if end_time < start_time:
40 end_time += timedelta(days=1)
41 extract(start_time, end_time, output_filename)
42 open(self.filename, 'w').write('done:%s\n' % output_filename)
46 if os.stat(self.filename)[-2]+300 > time.time():
48 os.unlink(self.filename)
53 return '<Job id=%s>' % self.job_id
56 jobs = [Job(x) for x in os.listdir(JOBS_DIR)]
57 jobs.sort(lambda x, y: cmp(x.timestamp, y.timestamp))
59 running_jobs = [x for x in jobs if x.cmd == 'running']
63 if job.cmd == 'start':
65 job.add_info('Encore %s jobs ...' % (len(running_jobs)+waiting))
68 running_jobs.append(job)
70 elif job.cmd == 'done':