Source code for larigira.audiogen

from __future__ import print_function
import sys
import argparse
from .entrypoints_utils import get_one_entrypoint
import json
from logging import getLogger

log = getLogger("audiogen")


[docs]def get_audiogenerator(kind): """Messes with entrypoints to return an audiogenerator function""" return get_one_entrypoint("larigira.audiogenerators", kind)
[docs]def get_parser(): parser = argparse.ArgumentParser(description="Generate audio and output paths") parser.add_argument( "audiospec", metavar="AUDIOSPEC", type=str, nargs=1, help="filename for audiospec, formatted in json", ) return parser
[docs]def read_spec(fname): try: if fname == "-": return json.load(sys.stdin) with open(fname) as buf: return json.load(buf) except ValueError: sys.stderr.write("Error: invalid JSON\n") sys.exit(1)
[docs]def check_spec(spec): if "kind" not in spec: yield "Missing field 'kind'"
[docs]def audiogenerate(spec): gen = get_audiogenerator(spec["kind"]) return tuple(gen(spec))
[docs]def main(): """Main function for the "larigira-audiogen" executable""" args = get_parser().parse_args() spec = read_spec(args.audiospec[0]) errors = tuple(check_spec(spec)) if errors: log.error("Errors in audiospec") for err in errors: sys.stderr.write("Error: {}\n".format(err)) sys.exit(1) for path in audiogenerate(spec): print(path)
if __name__ == "__main__": main()