`--config-location -` to provide options interactively

This commit is contained in:
pukkandan 2022-05-24 17:30:28 +05:30
parent d2ff2c91bb
commit 6b9e832db7
No known key found for this signature in database
GPG Key ID: 7EEE9E1E817D0A39
4 changed files with 19 additions and 13 deletions

View File

@ -358,8 +358,9 @@ You can also fork the project on github and run your fork's [build workflow](.gi
defined in the current file
--config-locations PATH Location of the main configuration file;
either the path to the config or its
containing directory. Can be used multiple
times and inside other configuration files
containing directory ("-" for stdin). Can be
used multiple times and inside other
configuration files
--flat-playlist Do not extract the videos of a playlist,
only list them
--no-flat-playlist Extract the videos of a playlist

View File

@ -9,7 +9,7 @@ import os
import re
import sys
from .compat import compat_getpass, compat_os_name, compat_shlex_quote
from .compat import compat_getpass, compat_shlex_quote
from .cookies import SUPPORTED_BROWSERS, SUPPORTED_KEYRINGS
from .downloader import FileDownloader
from .extractor import GenericIE, list_extractor_classes
@ -42,6 +42,7 @@ from .utils import (
parse_duration,
preferredencoding,
read_batch_urls,
read_stdin,
render_table,
setproctitle,
std_headers,
@ -63,14 +64,9 @@ def get_urls(urls, batchfile, verbose):
batch_urls = []
if batchfile is not None:
try:
if batchfile == '-':
write_string('Reading URLs from stdin - EOF (%s) to end:\n' % (
'Ctrl+Z' if compat_os_name == 'nt' else 'Ctrl+D'))
batchfd = sys.stdin
else:
batchfd = open(
expand_path(batchfile), encoding='utf-8', errors='ignore')
batch_urls = read_batch_urls(batchfd)
batch_urls = read_batch_urls(
read_stdin('URLs') if batchfile == '-'
else open(expand_path(batchfile), encoding='utf-8', errors='ignore'))
if verbose:
write_string('[debug] Batch file urls: ' + repr(batch_urls) + '\n')
except OSError:

View File

@ -366,8 +366,8 @@ def create_parser():
'--config-locations',
dest='config_locations', metavar='PATH', action='append',
help=(
'Location of the main configuration file; either the path to the config or its containing directory. '
'Can be used multiple times and inside other configuration files'))
'Location of the main configuration file; either the path to the config or its containing directory '
'("-" for stdin). Can be used multiple times and inside other configuration files'))
general.add_option(
'--flat-playlist',
action='store_const', dest='extract_flat', const='in_playlist', default=False,

View File

@ -5163,6 +5163,12 @@ def parse_http_range(range):
return int(crg.group(1)), int_or_none(crg.group(2)), int_or_none(crg.group(3))
def read_stdin(what):
eof = 'Ctrl+Z' if compat_os_name == 'nt' else 'Ctrl+D'
write_string(f'Reading {what} from STDIN - EOF ({eof}) to end:\n')
return sys.stdin
class Config:
own_args = None
parsed_args = None
@ -5188,6 +5194,9 @@ class Config:
self.parsed_args, self.filename = args, filename
for location in opts.config_locations or []:
if location == '-':
self.append_config(shlex.split(read_stdin('options'), comments=True), label='stdin')
continue
location = os.path.join(directory, expand_path(location))
if os.path.isdir(location):
location = os.path.join(location, 'yt-dlp.conf')