import argparse from decode import print_messages_by_user, print_messages_by_chat, get_decryption_key, dump_message_count_table from os.path import expanduser parser = argparse.ArgumentParser() subparsers = parser.add_subparsers() table = subparsers.add_parser('table') table.set_defaults(func=dump_message_count_table) table.add_argument('--filter_file', '-f') table.add_argument('--output', '-o', default='table.csv') table.add_argument('--password', '-p') user = subparsers.add_parser('user') user.add_argument('regex') user.set_defaults(func=print_messages_by_user) chat = subparsers.add_parser('chat') chat.add_argument('regex') chat.set_defaults(func=print_messages_by_chat) parser.add_argument('--db', default=expanduser('~/.config/Signal/sql/db.sqlite')) parser.add_argument('--config', default=expanduser('~/.config/Signal/config.json')) if __name__ == "__main__": args = parser.parse_args() args = vars(args) password = args.pop('password') key = get_decryption_key(args['config'], password) args.pop('config') func = args.pop('func') func(**args, key=key)