from src.tagger import Tagger import argparse tagger = Tagger() def tag_all(args): # type:ignore if args.mode == "overwrite": tagger.overwrite elif args.mode == "merge": tagger.merge if args.verbose: tagger.verbose = True tagger.tag() def tag_series(args): # type:ignore if args.id: tagger.tag_series(series_ids=args.id) elif args.name: names = [] name = " ".join(args.name) if ":" in name: names = name.split(":") else: names.append(name) tagger.tag_series(series_names=names) def main(): parser = argparse.ArgumentParser(description="KomTagger CLI") subparsers = parser.add_subparsers(dest="command", required=True) # tag subcommand tag_parser = subparsers.add_parser("tag", help="Run tag operation") tag_parser.add_argument( "mode", choices=["overwrite", "merge"], help="Set mode for tagging, merge will add the tags to the current tags, overwrite will replace the current tags", ) tag_parser.add_argument( "-v", "--verbose", action="store_true", help="Enable verbose output" ) tag_parser.set_defaults(func=tag_all) # tag-series subcommand series_parser = subparsers.add_parser("tag-series", help="Run tag-series operation") group = series_parser.add_mutually_exclusive_group(required=True) group.add_argument("--id", nargs="+", help="ID for tag series") group.add_argument( "--name", nargs="+", help="Name(s) for tag series (use ':' to separate multiple names)", ) series_parser.add_argument( "-v", "--verbose", action="store_true", help="Enable verbose output" ) series_parser.set_defaults(func=tag_series) args = parser.parse_args() args.func(args) if __name__ == "__main__": main()