示例#1
0
def handle_run_scraper(settings):
    if not utils.validate_settings(settings, False):
        click.echo(
            utils.highlight(
                "Run aborted. There are missing required settings."))
        time.sleep(3)
        return

    scraper = App(settings, show_progress=True)
    cleaner = utils.run_cleaner(settings)
    errors = []
    # run yields each source result, so we can clear the screen and start anew
    _, source_name = cleaner()
    for result in scraper.run():
        if not result:
            err = utils.highlight(
                f"There was en error processing {source_name}", "red")
            utils.pre_menu(settings, err)
            errors.append(err)
            time.sleep(2)
            continue

        _, source_name = cleaner()

    # TODO: Find a way to show this message
    out_folder = utils.highlight(os.path.abspath(settings.output_path))

    end_desc = "You can find you data in : {}\n{}".format(
        out_folder, "\n".join(errors))
    utils.pre_menu(settings, "All Done!", end_desc)

    if click.confirm(utils.fmt.format("Do you want to {exit:yellow}?"),
                     default=True):
        return handle_exit(settings, True)
    return False
示例#2
0
def handle_output_type(settings):
    utils.pre_menu(settings, "Change output Type", out_type_descr())

    mi = utils.get_menuitems_for_handlers(manager.get_all_writers())
    output_type_items = utils.get_menuitems_text(mi)

    output_menu = TerminalMenu(
        menu_entries=output_type_items,
        cursor_index=utils.get_choice_index(mi, settings.output_type),
        preview_command=utils.get_description_by_text(mi))

    choice = output_menu.show()
    try:
        settings.output_type = mi[choice].v
    except Exception:
        pass

    return False
示例#3
0
def handle_csv_dialect(settings):
    utils.pre_menu(settings, "Change CSV format", csv_dialect_desc())

    # Get all the registered dialects, either on the csv module or in our
    # manager, removing duplicates if necessary.
    # As the manager is working now (21/5/1) the manger's list should be
    # already included in the list from csv module, but this ensure consistency
    csv_format_items = tuple(
        sorted(
            dict.fromkeys(
                (*manager.get_dialects_list(), *csv.list_dialects()))))

    csv_menu = TerminalMenu(menu_entries=csv_format_items,
                            cursor_index=csv_format_items.index(
                                settings.csv_out_dialect))
    choice = csv_menu.show()

    try:
        settings.csv_out_dialect = csv_format_items[choice]
    except Exception:
        pass

    return False
示例#4
0
def handle_output_path(settings):
    utils.pre_menu(settings, "Set output Path", out_path_descr())

    path = click.prompt("Type your base path", default=settings.output_path)
    settings.output_path = path
    return False
示例#5
0
def handle_output_filename(settings):

    utils.pre_menu(settings, colored("Feature coming soon", "red"),
                   out_frmt_descr())
    time.sleep(1)
    return False
示例#6
0
def handle_exit(settings, print_msg=True, save_on_exit=True):
    save_on_exit and settings.to_file()
    print_msg and utils.pre_menu(settings, "Goodbye!")
    return True