import os import sys import logging import argparse logger = logging.getLogger(__name__) LOG_LEVEL = os.environ.get('HBD_LOGLEVEL', 'INFO').upper() logging.basicConfig( level=LOG_LEVEL, format='%(message)s', ) # Ignore unwanted logs from the requests lib when debuging logging.getLogger('urllib3.connectionpool').setLevel(logging.WARNING) def parse_args(args): if len(args) > 0 and args[0].lower() == 'download': args = args[1:] raise DeprecationWarning("`download` argument is no longer used") parser = argparse.ArgumentParser() cookie = parser.add_mutually_exclusive_group(required=True) cookie.add_argument( '-c', '--cookie-file', type=str, help="Location of the cookies file", ) cookie.add_argument( '-s', '--session-auth', type=str, help="Value of the cookie _simpleauth_sess. WRAP IN QUOTES", ) parser.add_argument( '-l', '--library-path', type=str, help="Folder to download all content to", required=True, ) parser.add_argument( '-t', '--trove', action='store_true', help="Only check and download Humble Trove content", ) parser.add_argument( '-u', '--update', action='store_true', help=("Check to see if products have been updated " "(still get new products)"), ) parser.add_argument( '-p', '--platform', type=str, nargs='*', help=("Only get content in a platform. Values can be seen in your " "humble bundle's library dropdown. Ex: -p ebook video"), ) parser.add_argument( '--progress', action='store_true', help="Display progress bar for downloads", ) filter_ext = parser.add_mutually_exclusive_group() filter_ext.add_argument( '-e', '--exclude', type=str, nargs='*', help=("File extensions to ignore when downloading files. " "Ex: -e pdf mobi"), ) filter_ext.add_argument( '-i', '--include', type=str, nargs='*', help="Only download files with these extensions. Ex: -i pdf mobi", ) parser.add_argument( '-k', '--keys', type=str, nargs='*', help=("The purchase download key. Find in the url on the " "products/bundle download page. Can set multiple"), ) return parser.parse_args(args) def cli(): cli_args = parse_args(sys.argv[1:]) from .download_library import DownloadLibrary DownloadLibrary( cli_args.library_path, cookie_path=cli_args.cookie_file, cookie_auth=cli_args.session_auth, progress_bar=cli_args.progress, ext_include=cli_args.include, ext_exclude=cli_args.exclude, platform_include=cli_args.platform, purchase_keys=cli_args.keys, trove=cli_args.trove, update=cli_args.update, ).start()