Add Argparse Logik
parent
8e13bd8c75
commit
669295718c
@ -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.")
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue