def start(): if len(sys.argv) == 2 and sys.argv[1] == '-h': print(f'pytrancoder (ver {__version__})') print('usage: pytrancoder [OPTIONS]') print(' or pytrancoder [OPTIONS] --from-file <filename>') print(' or pytrancoder [OPTIONS] file ...') print(' or pytrancoder -c <cluster> file... [--host <name>] -c <cluster> file...') print('No parameters indicates to process the default queue files using profile matching rules.') print( 'The --from-file filename is a file containing a list of full paths to files for transcoding. ') print('OPTIONS:') print(' --host <name> Name of a specific host in your cluster configuration to target, otherwise load-balanced') print(' -s Process files sequentially even if configured for multiple concurrent jobs') print(' --dry-run Run without actually transcoding or modifying anything, useful to test rules and profiles') print(' -v Verbose output, helpful in debugging profiles and rules') print( ' -k Keep source files after transcoding. If used, the transcoded file will have the same ' 'name and .tmp extension') print(' -y <file> Full path to configuration file. Default is ~/.transcode.yml') print(' -p profile to use. If used with --from-file, applies to all listed media in <filename>') print(' -m Add mixins to profile. Separate multiples with a comma') print('\n** PyPi Repo: https://pypi.org/project/pytranscoder-ffmpeg/') print('** Read the docs at https://pytranscoder.readthedocs.io/en/latest/') sys.exit(0) install_sigint_handler() files = list() profile = None mixins = None queue_path = None cluster = None configfile: Optional[ConfigFile] = None host_override = None if len(sys.argv) > 1: files = [] arg = 1 while arg < len(sys.argv): if sys.argv[arg] == '--from-file': # load filenames to encode from given file queue_path = sys.argv[arg + 1] arg += 1 tmpfiles = files_from_file(queue_path) if cluster is None: files.extend([(f, profile) for f in tmpfiles]) else: files.extend([(f, cluster) for f in tmpfiles]) elif sys.argv[arg] == '-p': # specific profile profile = sys.argv[arg + 1] arg += 1 elif sys.argv[arg] == '-y': # specify yaml config file arg += 1 configfile = ConfigFile(sys.argv[arg]) elif sys.argv[arg] == '-k': # keep original pytranscoder.keep_source = True elif sys.argv[arg] == '--dry-run': pytranscoder.dry_run = True elif sys.argv[arg] == '--host': # run all cluster encodes on specific host host_override = sys.argv[arg + 1] arg += 1 elif sys.argv[arg] == '-v': # verbose pytranscoder.verbose = True elif sys.argv[arg] == '-c': # cluster cluster = sys.argv[arg + 1] arg += 1 elif sys.argv[arg] == '-m': # mixins mixins = sys.argv[arg + 1].split(',') arg += 1 else: if os.name == "nt": expanded_files: List = glob.glob(sys.argv[arg]) # handle wildcards in Windows else: expanded_files = [sys.argv[arg]] for f in expanded_files: if cluster is None: files.append((f, profile, mixins)) else: files.append((f, cluster, profile, mixins)) arg += 1 if configfile is None: configfile = ConfigFile(DEFAULT_CONFIG) if not configfile.colorize: crayons.disable() else: crayons.enable() if len(files) == 0 and queue_path is None and configfile.default_queue_file is not None: # # load from list of files # tmpfiles = files_from_file(configfile.default_queue_file) queue_path = configfile.default_queue_file if cluster is None: files.extend([(f, profile, mixins) for f in tmpfiles]) else: files.extend([(f, cluster, profile) for f in tmpfiles]) if len(files) == 0: print(crayons.yellow(f'Nothing to do')) sys.exit(0) if cluster is not None: if host_override is not None: # disable all other hosts in-memory only - to force encodes to the designated host cluster_config = configfile.settings['clusters'] for cluster in cluster_config.values(): for name, this_config in cluster.items(): if name != host_override: this_config['status'] = 'disabled' completed: List = manage_clusters(files, configfile) if len(completed) > 0: qpath = queue_path if queue_path is not None else configfile.default_queue_file pathlist = [p for p, _ in completed] cleanup_queuefile(qpath, set(pathlist)) dump_stats(completed) sys.exit(0) host = LocalHost(configfile) host.enqueue_files(files) # # start all threads and wait for work to complete # host.start() if len(host.complete) > 0: completed_paths = [p for p, _ in host.complete] cleanup_queuefile(queue_path, set(completed_paths)) dump_stats(host.complete) os.system("stty sane")
"""Simple test of just running the README example. Better tests to come.""" from __future__ import print_function import crayons from crayons import * # NOQA print(crayons.red('red string')) print('{} white {}'.format(crayons.red('red'), crayons.blue('blue'))) crayons.disable() print('{} white {}'.format(crayons.red('red'), crayons.blue('blue'))) crayons.enable() print('{} white {}'.format(crayons.red('red'), crayons.blue('blue'))) print(crayons.red('red string', bold=True)) print(crayons.yellow('yellow string', bold=True)) print(crayons.magenta('magenta string', bold=True)) print(crayons.white('white string', bold=True)) print(crayons.random('random color')) print(crayons.random('random and bold', bold=True)) print(crayons.red('red')) print(crayons.green('green')) print(crayons.yellow('yellow')) print(crayons.blue('blue')) print(crayons.black('black', bold=True)) print(crayons.magenta('magenta')) print(crayons.cyan('cyan')) print(crayons.white('white')) print(crayons.normal('normal')) print( crayons.clean('{} clean {}'.format(crayons.red('red'), crayons.blue('blue'))))