123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 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 read_version(fname='yt_dlp/version.py', varname='__version__'):
- """Get the version without importing the package"""
- items = {}
- exec(compile(read_file(fname), fname, 'exec'), items)
- return items[varname]
- 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)
|