Beispiel #1
0
    def test_customizer(self):
        def modify_usage(parser):
            parser.usage = (parser.usage or '') + 'hello'

        parser = ArgumentParser()
        assert parser.usage is None
        usage = Usage()
        usage.add_customizer(modify_usage)
        usage.apply(parser)
        assert parser.usage == 'hello'

        def modify_usage_2(parser):
            parser.usage = (parser.usage or '') + ' hi'

        usage_2 = Usage()
        usage_2.add_customizer(modify_usage_2)
        usage |= usage_2
        parser = ArgumentParser()
        usage.apply(parser)
        assert parser.usage == 'hello hi'
    :model str
        Noise model json file to write to
    
    :-b --bands str -
        A range/list of bands to listen for
''')


def add_subparsers(parser: ArgumentParser):
    sp = parser.add_subparsers(dest='action')
    sp.required = True
    detect_usage.apply(sp.add_parser('detect'))
    collect_usage.apply(sp.add_parser('collect'))


usage.add_customizer(add_subparsers)

sample_rate = 16000
stride = 400
width = 4
num_bands = 257
chunk_seconds = stride / sample_rate

DetectionData = namedtuple('DetectionData', 'volume bands')


def parse_bands(s, m):
    s = re.sub(r'\s', '', s)
    if ',' in s:
        return sum([parse_bands(i, m) for i in s.split(',')], [])
    if '-' in s: