2021-02-22 21:28:30 +13:00
|
|
|
#!/usr/bin/env python3
|
2020-06-02 00:05:02 +12:00
|
|
|
|
|
|
|
import logging
|
|
|
|
import sys
|
|
|
|
|
2021-03-11 14:20:59 +13:00
|
|
|
import click
|
|
|
|
|
2021-03-11 00:47:57 +13:00
|
|
|
from bulkredditdownloader.configuration import Configuration
|
2021-02-11 12:10:40 +13:00
|
|
|
from bulkredditdownloader.downloader import RedditDownloader
|
2021-03-05 16:32:24 +13:00
|
|
|
from bulkredditdownloader.exceptions import BulkDownloaderException
|
2021-02-11 12:10:40 +13:00
|
|
|
|
|
|
|
logger = logging.getLogger()
|
|
|
|
|
|
|
|
|
2021-03-11 14:20:59 +13:00
|
|
|
@click.group()
|
|
|
|
def cli():
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
@cli.command('download')
|
|
|
|
@click.argument('directory', type=str)
|
|
|
|
@click.option('-v', '--verbose', default=None, count=True)
|
|
|
|
@click.option('-l', '--link', multiple=True, default=None, type=str)
|
|
|
|
@click.option('-s', '--subreddit', multiple=True, default=None, type=str)
|
|
|
|
@click.option('-m', '--multireddit', multiple=True, default=None, type=str)
|
|
|
|
@click.option('-L', '--limit', default=None, type=int)
|
|
|
|
@click.option('--authenticate', is_flag=True, default=None)
|
|
|
|
@click.option('--submitted', is_flag=True, default=None)
|
|
|
|
@click.option('--upvoted', is_flag=True, default=None)
|
|
|
|
@click.option('--saved', is_flag=True, default=None)
|
|
|
|
@click.option('--search', default=None, type=str)
|
|
|
|
@click.option('-u', '--user', type=str, default=None)
|
|
|
|
@click.option('-t', '--time', type=click.Choice(('all', 'hour', 'day', 'week', 'month', 'year')), default=None)
|
|
|
|
@click.option('-S', '--sort', type=click.Choice(('hot', 'top', 'new',
|
|
|
|
'controversial', 'rising', 'relevance')), default=None)
|
|
|
|
@click.option('--skip', default=None, multiple=True)
|
|
|
|
@click.option('--skip-domain', default=None, multiple=True)
|
|
|
|
@click.option('--set-file-scheme', default=None, type=str)
|
|
|
|
@click.option('--set-folder-scheme', default=None, type=str)
|
|
|
|
@click.option('--no-dupes', is_flag=True, default=None)
|
|
|
|
@click.option('--config', type=str, default=None)
|
2021-03-11 17:18:48 +13:00
|
|
|
@click.option('--search-existing', is_flag=True, default=None)
|
2021-03-11 14:20:59 +13:00
|
|
|
@click.pass_context
|
|
|
|
def cli_download(context: click.Context, **_):
|
|
|
|
config = Configuration()
|
|
|
|
config.process_click_arguments(context)
|
|
|
|
_setup_logging(config.verbose)
|
2021-03-13 15:01:10 +13:00
|
|
|
reddit_downloader = RedditDownloader(config)
|
|
|
|
reddit_downloader.download()
|
|
|
|
logger.info('Program complete')
|
2021-02-11 12:10:40 +13:00
|
|
|
|
|
|
|
|
|
|
|
def _setup_logging(verbosity: int):
|
|
|
|
logger.setLevel(1)
|
|
|
|
stream = logging.StreamHandler(sys.stdout)
|
|
|
|
formatter = logging.Formatter('[%(asctime)s - %(name)s - %(levelname)s] - %(message)s')
|
|
|
|
stream.setFormatter(formatter)
|
|
|
|
logger.addHandler(stream)
|
2021-03-11 16:20:39 +13:00
|
|
|
if verbosity <= 0:
|
2021-02-11 12:10:40 +13:00
|
|
|
stream.setLevel(logging.INFO)
|
2021-03-11 16:20:39 +13:00
|
|
|
elif verbosity == 1:
|
2021-02-11 12:10:40 +13:00
|
|
|
stream.setLevel(logging.DEBUG)
|
2021-03-11 16:20:39 +13:00
|
|
|
else:
|
|
|
|
stream.setLevel(9)
|
2021-02-11 12:10:40 +13:00
|
|
|
logging.getLogger('praw').setLevel(logging.CRITICAL)
|
|
|
|
logging.getLogger('prawcore').setLevel(logging.CRITICAL)
|
|
|
|
logging.getLogger('urllib3').setLevel(logging.CRITICAL)
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2020-06-02 00:05:02 +12:00
|
|
|
|
2021-02-11 12:10:40 +13:00
|
|
|
if __name__ == '__main__':
|
2021-03-11 14:20:59 +13:00
|
|
|
cli()
|