Source code for spectrographic.cli

# -*- coding: utf-8 -*-
"""
This is a skeleton file that can serve as a starting point for a Python
console script. To run this script uncomment the following lines in the
[options.entry_points] section in setup.cfg:

    console_scripts =
         spectrographic = spectrographic.cli:run

Then run `python setup.py install` which will install the command `spectrographic`
inside your current environment.
"""

import argparse
import sys
from pathlib import Path

from spectrographic import __version__
from spectrographic.base import SpectroGraphic

__author__ = "Levi Borodenko"
__copyright__ = "Levi Borodenko"
__license__ = "mit"


[docs]def parse_args(args): """Parse command line parameters Args: args ([str]): command line parameters as list of strings Returns: :obj:`argparse.Namespace`: command line parameters namespace """ parser = argparse.ArgumentParser( description="Turn any image into sound.", epilog="By Levi B." ) parser.add_argument( "--version", action="version", version="spectrographic {ver}".format(ver=__version__), ) parser.add_argument( "-i", "--image", dest="path_to_image", help="Path of image that we want to embed in a spectrogram.", type=Path, action="store", required=True, ) parser.add_argument( "-d", "--duration", dest="duration", help="Duration of generated sound.", action="store", default=20, type=int, ) parser.add_argument( "-m", "--min_freq", dest="min_freq", help="Smallest frequency used for drawing the image.", action="store", default=500, type=int, ) parser.add_argument( "-M", "--max_freq", dest="max_freq", help="Largest frequency used for drawing the image.", action="store", default=7500, type=int, ) parser.add_argument( "-r", "--resolution", dest="resolution", help="Vertical resolution of the image in the spectrogram.", action="store", default=150, type=int, ) parser.add_argument( "-c", "--contrast", dest="contrast", help="Contrast of the image in the spectrogram.", action="store", default=3, type=int, ) parser.add_argument( "-p", "--play", action="store_true", dest="play", help="Directly play the resulting sound.", ) parser.add_argument( "-s", "--save", dest="save_file", help="Path to .wav file in which to save the resulting sound.", action="store", default="SoundGraphic.wav", type=str, ) return parser.parse_args(args)
[docs]def main(args): """Main entry point allowing external calls Args: args ([str]): command line parameter list """ args = parse_args(args) sg = SpectroGraphic( path=args.path_to_image, height=args.resolution, duration=args.duration, min_freq=args.min_freq, max_freq=args.max_freq, contrast=args.contrast, ) if args.play: sg.play() sg.save(wav_file=args.save_file)
[docs]def run(): """Entry point for console_scripts """ main(sys.argv[1:])
if __name__ == "__main__": run()