2 # -*- coding: utf-8 -*-
11 syslog.openlog('pigebox')
15 if os.environ.get('PATH_INFO'):
16 # filename has to be of the following form: %Y%m%d-%Hh%M-%Hh%M.%ext
17 filename = os.path.basename(os.environ.get('PATH_INFO'))
19 start = '%s:%s' % (filename[9:11], filename[12:14])
20 end = '%s:%s' % (filename[15:17], filename[18:20])
23 start = datetime.datetime.strptime('%s %s' % (date, start),
25 end = datetime.datetime.strptime('%s %s' % (date, end),
28 end = '%s:%s' % (d.get('end_hour')[0], d.get('end_min')[0])
30 start = datetime.datetime.strptime('%s %s:%s' % (
31 d.get('date')[0], d.get('start_hour')[0], d.get('start_min')[0]),
33 end = datetime.datetime.strptime('%s %s:%s' % (
34 d.get('date')[0], d.get('end_hour')[0], d.get('end_min')[0]),
47 end = end + datetime.timedelta(1)
49 os.chdir('/home/alsa-record/')
52 path = start.strftime('%Y/%m-%b/%d-%a/')
53 filenames = [os.path.join(path, x) for x in os.listdir(path)]
55 path = end.strftime('%Y/%m-%b/%d-%a/')
56 if os.path.exists(path):
57 filenames.extend([os.path.join(path, x) for x in os.listdir(path)])
60 filenames = [x for x in filenames if
61 x >= start.strftime('%Y/%m-%b/%d-%a/%Hh%M') and
62 x < end.strftime('%Y/%m-%b/%d-%a/%Hh%M')]
66 filenames = get_filenames()
67 without_extension = [os.path.splitext(x)[0] for x in filenames]
68 for f in without_extension:
69 if without_extension.count(f) > 1:
70 # currently encoding, wait a moment and try again
71 print 'X-Currently-Encoding: please wait'
77 syslog.syslog(syslog.LOG_INFO, 'extraction (%s to %s)' % (
78 start.strftime('%Y-%m-%d %Hh%M'),
79 end.strftime('%Hh%M')))
82 print 'Content-Type: audio/x-wav'
84 print 'Content-Type: audio/ogg'
86 print 'Content-Disposition: attachment; filename=%s.%s\n' % \
87 (start.strftime('%Y-%m-%d-%Hh%M') + end.strftime('-%Hh%M'), ext)
92 command = ['sox'] + filenames + ['-t', 'ogg', '-C', '6', '-']
94 command = ['sox'] + filenames + ['-t', 'wav', '-']
95 os.system(' '.join(command))