in psaw/psaw.py [0:0]
def cli(search_type, query, subreddits, authors, limit, before, after,
output, output_template, format, filter_, prettify, dry_run,
no_output_template_check, proxy, verbose):
"""
retrieve comments or submissions from reddit which meet given criteria
"""
if output is None and output_template is None:
raise click.UsageError("must supply either --output or --output-template")
if output is not None and output_template is not None:
raise click.UsageError("can only supply --output or --output-template, not both")
verbose = verbose or dry_run
if output:
batch_mode = True
else:
batch_mode = False
api = PushshiftAPI(https_proxy=proxy)
search_args = dict()
query = ut.string_to_list(query)
filter_ = ut.string_to_list(filter_)
authors = ut.string_to_list(authors)
subreddits = ut.string_to_list(subreddits)
before = ut.string_to_epoch(before)
after = ut.string_to_epoch(after)
# use a dict to pass args to search function because certain parameters
# don't have defaults (eg, passing filter=None returns no fields)
search_args = ut.build_search_kwargs(
search_args,
q=query,
subreddit=subreddits,
author=authors,
limit=limit,
before=before,
after=after,
filter=filter_,
)
search_functions = {
'comments': api.search_comments,
'submissions': api.search_submissions,
}[search_type]
if verbose:
click.echo("calling api with following arguments:")
click.echo(pprint.pformat(search_args))
things = search_functions(**search_args)
thing, things = ut.peek_first_item(things)
if thing is None:
click.secho("no results found", err=True, bold=True)
return
fields, missing_fields = ut.validate_fields(thing, filter_)
if missing_fields:
missing_fields = sorted(missing_fields)
click.secho("server did not return following fields: {}".format(missing_fields),
bold=True, err=True)
writer_class = choose_writer_class(format, batch_mode)
writer = writer_class(fields=fields, prettify=prettify)
if batch_mode:
save_to_single_file(things, output, writer=writer,
count=limit, verbose=verbose, dry_run=dry_run)
else:
if not no_output_template_check:
validate_output_template(output_template)
save_to_multiple_files(things, output_template, writer=writer,
count=limit, verbose=verbose, dry_run=dry_run)