Mercurial > hg > auditok
changeset 266:c5d2d9988195
Refactor cmdline_util.py
author | Amine Sehili <amine.sehili@gmail.com> |
---|---|
date | Fri, 13 Sep 2019 20:57:16 +0100 |
parents | 73a01556cd5e |
children | d4995db23881 |
files | auditok/cmdline.py auditok/cmdline_util.py auditok/workers.py |
diffstat | 3 files changed, 48 insertions(+), 32 deletions(-) [+] |
line wrap: on
line diff
--- a/auditok/cmdline.py Thu Sep 12 21:08:33 2019 +0100 +++ b/auditok/cmdline.py Fri Sep 13 20:57:16 2019 +0100 @@ -87,8 +87,8 @@ ) group.add_argument( "-M", - "--max-time", - dest="max_time", + "--max-read", + dest="max_read", type=float, default=None, help="Maximum data (in seconds) to read from microphone or file " @@ -374,7 +374,7 @@ logger = make_logger(args.debug, args.debug_file) kwargs = make_kwargs(args) reader, observers = initialize_workers( - args, logger=logger, **kwargs.io + args, logger=logger, **kwargs.io, **kwargs.miscellaneous ) tokenizer_worker = workers.TokenizerWorker( reader, observers, logger=logger, **kwargs.split
--- a/auditok/cmdline_util.py Thu Sep 12 21:08:33 2019 +0100 +++ b/auditok/cmdline_util.py Fri Sep 13 20:57:16 2019 +0100 @@ -4,13 +4,12 @@ from auditok import workers from .util import AudioDataSource from .io import player_for +from .exceptions import TimeFormatError LOGGER_NAME = "AUDITOK_LOGGER" -KeywordArguments = namedtuple("KeywordArguments", ["io", "split"]) - - -class TimeFormatError(Exception): - pass +KeywordArguments = namedtuple( + "KeywordArguments", ["io", "split", "miscellaneous"] +) def make_kwargs(args_ns): @@ -24,14 +23,16 @@ use_channel = args_ns.use_channel io_kwargs = { + "input": args_ns.input, + "audio_format": args_ns.input_format, "max_read": args_ns.max_time, "block_dur": args_ns.analysis_window, "sampling_rate": args_ns.sampling_rate, "sample_width": args_ns.sample_width, "channels": args_ns.channels, "use_channel": use_channel, - "input_type": args_ns.input_format, - "output_type": args_ns.output_format, + "save_stream": args_ns.save_stream, + "export_format": args_ns.output_format, "large_file": args_ns.large_file, "frames_per_buffer": args_ns.frame_per_buffer, "input_device_index": args_ns.input_device_index, @@ -46,7 +47,16 @@ "strict_min_dur": args_ns.strict_min_duration, "energy_threshold": args_ns.energy_threshold, } - return KeywordArguments(io_kwargs, split_kwargs) + + miscellaneous = { + "echo": args_ns.echo, + "command": args_ns.command, + "quiet": args_ns.quiet, + "printf": args_ns.printf, + "time_format": args_ns.time_format, + "timestamp_format": args_ns.timestamp_format, + } + return KeywordArguments(io_kwargs, split_kwargs, miscellaneous) def make_duration_fromatter(fmt): @@ -64,9 +74,9 @@ return "{0}".format(int(seconds * 1000)) else: - fmt = fmt.replace("%h", "{hrs:d}") - fmt = fmt.replace("%m", "{mins:d}") - fmt = fmt.replace("%s", "{secs:d}") + fmt = fmt.replace("%h", "{hrs:02d}") + fmt = fmt.replace("%m", "{mins:02d}") + fmt = fmt.replace("%s", "{secs:02d}") fmt = fmt.replace("%i", "{millis:03d}") try: i = fmt.index("%") @@ -104,42 +114,48 @@ return logger -def initialize_workers(args, logger=None, **io_kwargs): +def initialize_workers(logger=None, **kwargs): observers = [] - reader = AudioDataSource(args.input, **io_kwargs) - if args.save_stream is not None: - reader = workers.StreamSaverWorker(reader, args.save_stream) + reader = AudioDataSource(source=kwargs["input"], **kwargs) + if kwargs["save_stream"] is not None: + reader = workers.StreamSaverWorker( + reader, + filename=kwargs["save_stream"], + export_format=kwargs["export_format"], + ) reader.start() - if args.save_detections_as is not None: + if kwargs["save_detections_as"] is not None: worker = workers.RegionSaverWorker( - args.save_detections_as, args.output_format, logger=logger + kwargs["save_detections_as"], + kwargs["export_format"], + logger=logger, ) observers.append(worker) - if args.echo: + if kwargs["echo"]: player = player_for(reader) - progress_bar = args.progress_bar worker = workers.PlayerWorker( - player, progress_bar=progress_bar, logger=logger + player, progress_bar=kwargs["progress_bar"], logger=logger ) observers.append(worker) - if args.command is not None: - worker = workers.CommandLineWorker(command=args.command, logger=logger) + if kwargs["command"] is not None: + worker = workers.CommandLineWorker( + command=kwargs["command"], logger=logger + ) observers.append(worker) - if not args.quiet: + if not kwargs["quiet"]: print_format = ( - args.printf.replace("\\n", "\n") + kwargs["printf"] + .replace("\\n", "\n") .replace("\\t", "\t") .replace("\\r", "\r") ) - time_format = args.time_format - timestamp_format = args.timestamp_format worker = workers.PrintWorker( - print_format, time_format, timestamp_format + print_format, kwargs["time_format"], kwargs["timestamp_format"] ) observers.append(worker)
--- a/auditok/workers.py Thu Sep 12 21:08:33 2019 +0100 +++ b/auditok/workers.py Fri Sep 13 20:57:16 2019 +0100 @@ -178,7 +178,7 @@ self, audio_data_source, filename, - format=None, + export_format=None, cache_size=16000, timeout=0.5, ): @@ -186,7 +186,7 @@ self._audio_data_source = audio_data_source self._cache_size = cache_size self._output_filename = filename - self._export_format = _guess_audio_format(format, filename) + self._export_format = _guess_audio_format(export_format, filename) if self._export_format != "raw": self._tmp_output_filename = self._output_filename + ".raw" else: