From 7339b27ec4c671ba352a906d850d428e9b0e6db0 Mon Sep 17 00:00:00 2001 From: gabriel becker Date: Tue, 15 Nov 2022 17:38:56 +1100 Subject: [PATCH] Start ankimaker. --- ankimaker/__main__.py | 9 ++++++++ ankimaker/commands/__init__.py | 7 ++++++ ankimaker/commands/from_csv.py | 38 +++++++++++++++++++++++++++++++++ ankimaker/commands/from_epub.py | 0 ankimaker/tasks/__init__.py | 1 + requirements.txt | 3 +++ 6 files changed, 58 insertions(+) create mode 100644 ankimaker/__main__.py create mode 100644 ankimaker/commands/__init__.py create mode 100644 ankimaker/commands/from_csv.py create mode 100644 ankimaker/commands/from_epub.py create mode 100644 ankimaker/tasks/__init__.py create mode 100644 requirements.txt diff --git a/ankimaker/__main__.py b/ankimaker/__main__.py new file mode 100644 index 0000000..c50f7e5 --- /dev/null +++ b/ankimaker/__main__.py @@ -0,0 +1,9 @@ +from ankimaker.commands import cli + + +def main(): + cli(prog_name='ankimaker') + + +if __name__ == '__main__': + main() diff --git a/ankimaker/commands/__init__.py b/ankimaker/commands/__init__.py new file mode 100644 index 0000000..10cefc4 --- /dev/null +++ b/ankimaker/commands/__init__.py @@ -0,0 +1,7 @@ +import click + +@click.group("cli") +def cli(): + pass + +from ankimaker.commands.from_csv import generate_anki diff --git a/ankimaker/commands/from_csv.py b/ankimaker/commands/from_csv.py new file mode 100644 index 0000000..22b3f9c --- /dev/null +++ b/ankimaker/commands/from_csv.py @@ -0,0 +1,38 @@ +import click +import re +from ankimaker.commands import cli +from ankimaker.tasks import basic_pandas_to_anki + + +@cli.command('csv') +@click.option('-i', '--input', 'input_file', type=click.Path(exists=True)) +@click.option('-o', '--output', 'output_file', type=click.Path(exists=False)) +@click.option('-c', '--conf', 'config_file', default=None, type=click.STRING) +@click.option('-n', '--name', 'name', default=None, type=click.STRING) +def generate_anki( + input_file, + output_file, + name, + config_file, +): + output_file = parse_output(output_file) + if name is None: + name = get_name_from_output(output_file) + basic_pandas_to_anki(input_file, output_file, name) + + +def parse_output(filename): + filetype = filename.split('.')[-1] if len(filename.split('.')) > 0 else None + if filetype is None: + return filename + '.apkg' + elif filetype != 'apkg': + filename.replace(filetype, 'apkg') + return filename+filetype + else: + return filename + + +def get_name_from_output(filename): + updated_file = filename.split('/')[-1] if len(filename.split('/')) > 0 else filename + updated_file = re.sub(r'(.apkg)', '', updated_file) + return updated_file diff --git a/ankimaker/commands/from_epub.py b/ankimaker/commands/from_epub.py new file mode 100644 index 0000000..e69de29 diff --git a/ankimaker/tasks/__init__.py b/ankimaker/tasks/__init__.py new file mode 100644 index 0000000..026693a --- /dev/null +++ b/ankimaker/tasks/__init__.py @@ -0,0 +1 @@ +from .basic_csv_to_anki import basic_pandas_to_anki diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a7792c2 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +click +genanki +pandas \ No newline at end of file