Spaces:
Running
Running
# Adopted from https://github.com/yt-dlp/yt-dlp/tree/master/devscripts | |
import argparse | |
import functools | |
import subprocess | |
def read_file(fname): | |
with open(fname, encoding='utf-8') as f: | |
return f.read() | |
def write_file(fname, content, mode='w'): | |
with open(fname, mode, encoding='utf-8') as f: | |
return f.write(content) | |
def get_filename_args(has_infile=False, default_outfile=None): | |
parser = argparse.ArgumentParser() | |
if has_infile: | |
parser.add_argument('infile', help='Input file') | |
kwargs = {'nargs': '?', 'default': default_outfile} if default_outfile else {} | |
parser.add_argument('outfile', **kwargs, help='Output file') | |
opts = parser.parse_args() | |
if has_infile: | |
return opts.infile, opts.outfile | |
return opts.outfile | |
def compose_functions(*functions): | |
return lambda x: functools.reduce(lambda y, f: f(y), functions, x) | |
def run_process(*args, **kwargs): | |
kwargs.setdefault('text', True) | |
kwargs.setdefault('check', True) | |
kwargs.setdefault('capture_output', True) | |
if kwargs['text']: | |
kwargs.setdefault('encoding', 'utf-8') | |
kwargs.setdefault('errors', 'replace') | |
return subprocess.run(args, **kwargs) | |