From 669295718cf47e0015b6c1371f40f2e1526fc61c Mon Sep 17 00:00:00 2001 From: dev_alex Date: Tue, 21 Nov 2023 16:16:23 +0100 Subject: [PATCH] Add Argparse Logik --- AudibleConverter.py | 48 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 AudibleConverter.py diff --git a/AudibleConverter.py b/AudibleConverter.py new file mode 100644 index 0000000..86c621d --- /dev/null +++ b/AudibleConverter.py @@ -0,0 +1,48 @@ +import argparse +import os +import sys +import logging +import yaml + +def path_to_aax(aax : str): + if not os.path.isfile(aax): + raise argparse.ArgumentTypeError(f"Pfad {aax} ist keine gültige Datei.") + + if not aax.endswith('.aax'): + raise argparse.ArgumentTypeError(f"Pfad {aax} ist keine gültige aax-Datei.") + + return aax + + +if __name__ == "__main__": + argparser = argparse.ArgumentParser(description="Dieses Script konvertiert verschlüsselte Audible Bücher zu unverschlüsselte m4b-Audiobooks.") + cmd_parser = argparser.add_subparsers(dest='cmd', title='Commands', description="Erlaubte Commands", required=True) + + decrypt_parser = cmd_parser.add_parser('decrypt', help="Extrahiert die User-spezifische ID zur Profil-Bildung von einer bestehenden aax-Datei.") + decrypt_parser.add_argument('aax', type=path_to_aax, help='Path zu einem zu entschlüsselnden aax file des neuen Profils') + decrypt_parser.add_argument('profile', type=str, help='Profil-Name, zu welchem die extrahierte ID gespeichert wird. (ID ist notwendig für Entschlüsselung der eigenen Hörbücher)') + + convert_parser = cmd_parser.add_parser('convert', help="Konvertiert ein aax-Audiobook in ein m4b-Audiobook.") + convert_parser.add_argument('aax', type=path_to_aax, help='Path zu einem zu entschlüsselnden aax file') + convert_parser.add_argument('profile', type=str, help="Zugehöriges Profile für entschlüsselung") + + args: argparse.Namespace = argparser.parse_args(args=None if sys.argv[1:] else ['--help']) + + logging.basicConfig(level=logging.INFO, format="%(asctime)s | %(levelname)s | %(message)s", datefnt="%d-%m-%Y %H:%M:%S") + + profiles = None + try: + with open('profiles.yml', 'r') as file: + profiles = yaml.safe_load(file) + except IOError: + with open('profiles.yml', 'w') as file: + profiles = yaml.safe_load('') + + if args.cmd == "decrypt": + pass + elif args.cmd == "convert": + if profiles.get(args.profile) is None: + logging.info(f"Profil {args.profile} existiert nicht. Bitte über decrypt anlegen lassen.") + + +