From 4068f47af9ba9b46b5c15eda4477bb4eac6b422c Mon Sep 17 00:00:00 2001 From: Adrian Heine Date: Tue, 17 Sep 2024 20:04:04 +0200 Subject: [PATCH 1/4] Mehrere Daten-Dateien, besserer Import --- main.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/main.py b/main.py index bfe6d88..607ea62 100644 --- a/main.py +++ b/main.py @@ -4,15 +4,18 @@ import pyamf import shutil import json import os +import glob import argparse import unicodedata import random import re import sys import readline +import datetime DATA_DIR = os.environ.get('XDG_DATA_HOME', os.environ['HOME'] + '/.local/share') + '/klette' -VOKABELN_FILE = DATA_DIR + '/vokabeln.json' +DEPRECATED_VOKABELN_FILE = DATA_DIR + '/vokabeln.json' +VOKABELN_DIR = DATA_DIR + '/vokabeln/' STATUS_FILE = DATA_DIR + '/status.json' AUDIO_BASE = DATA_DIR + '/audio/' @@ -49,9 +52,10 @@ def import_vokabeln(file_name, audio_base): 'unidad': unidad, 'paso': paso }) - shutil.copy2(audio_base + audio + '.bin', - AUDIO_BASE + audio + '.aac') - with open(VOKABELN_FILE, 'x') as writer: + if audio: + shutil.copy2(audio_base + audio + '.bin', + AUDIO_BASE + audio + '.aac') + with open(VOKABELN_DIR + '/import-' + datetime.datetime.now().isoformat() + '.json', 'x') as writer: writer.write(json.dumps(palabras)) def import_status(file_name): @@ -238,8 +242,16 @@ class Sesion: def abfrage(parser, quiero_unidad, otra_vez): random.seed() try: - with open(VOKABELN_FILE, 'r') as f: - palabras = json.load(f) + palabras = [] + os.makedirs(VOKABELN_DIR, exist_ok=True) + try: + os.rename(DEPRECATED_VOKABELN_FILE, os.path.join(VOKABELN_DIR, 'vokabeln.json')) + except FileNotFoundError: + pass + + for filename in glob.glob(os.path.join(VOKABELN_DIR, '*.json')): + with open(filename, 'r') as f: + palabras += json.load(f) with open(STATUS_FILE, 'r') as f: status = json.load(f) except FileNotFoundError: @@ -255,7 +267,6 @@ def abfrage(parser, quiero_unidad, otra_vez): print(f'{bcolors.OKGREEN}+{sesion.bien}{bcolors.ENDC} / {bcolors.FAIL}-{sesion.mal}{bcolors.ENDC}') parser = argparse.ArgumentParser() -default_data_file = os.environ['PWD'] + '/assets/amf/vokabelTrainer147.amf' parser.add_argument('--import-data', type=str, help="Path to assets", metavar="DIR") default_status_file = os.environ['HOME'] + '/klett/1266/vokabeltrainerData147' parser.add_argument('--import-status', type=str, help="Path to AMF File, defaults to " + default_status_file, metavar="FILE", nargs='?', const=default_status_file) @@ -264,7 +275,7 @@ parser.add_argument('--otra-vez', action='store_true') args = parser.parse_args() if args.import_data: - import_vokabeln(args.import_data + '/amf/vokabelTrainer147.amf', + import_vokabeln(glob.glob(os.path.join(args.import_data, 'amf/vokabelTrainer*.amf'))[0], args.import_data + '/amf/medium/') elif args.import_status: import_status(args.import_status) From 309286911797d32a939ec2c51884d8d8a4b618af Mon Sep 17 00:00:00 2001 From: Adrian Heine Date: Tue, 17 Sep 2024 20:10:52 +0200 Subject: [PATCH 2/4] 0.4 --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1e57dae..88bd1ca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +klette (0.4) UNRELEASED; urgency=low + + * Support multiple data files + + -- Adrian Heine Tue, 17 Sep 2024 20:10:00 +0200 + klette (0.3) UNRELEASED; urgency=low * Add --otra-vez From fcdb73f98315cbcbe028483c4294527d33edb317 Mon Sep 17 00:00:00 2001 From: Adrian Heine Date: Sat, 12 Oct 2024 20:40:30 +0200 Subject: [PATCH 3/4] Erst neue Vokabeln --- main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index 607ea62..98c7c2f 100644 --- a/main.py +++ b/main.py @@ -207,12 +207,12 @@ class Sesion: def hace_paso(self, unidad, paso, cur_palabras): c = [len(cur_palabras[x]) for x in cur_palabras] print(f"{bcolors.BOLD}{unidad}{bcolors.ENDC}: {paso} ({c[0] + c[6]}/{c[1]}/{c[2]}/{c[3]}/{c[4]}/{bcolors.OKGREEN}{c[5]}{bcolors.ENDC})") - for n in range(5): # 1..4, no 5 - if self.hace_palabras(cur_palabras[n], n) == Resultado.ADIOS: - return Resultado.ADIOS n = None if self.hace_palabras(cur_palabras[n], n) == Resultado.ADIOS: return Resultado.ADIOS + for n in range(5): # 1..4, no 5 + if self.hace_palabras(cur_palabras[n], n) == Resultado.ADIOS: + return Resultado.ADIOS def hace_palabras(self, palabras, status): random.shuffle(palabras) From 871ace3ba08c5cb11f86ba7e8ac33497a12fe693 Mon Sep 17 00:00:00 2001 From: Adrian Heine Date: Tue, 15 Oct 2024 07:32:00 +0200 Subject: [PATCH 4/4] Fehlende Status-Datei akzeptieren --- main.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/main.py b/main.py index 98c7c2f..f283392 100644 --- a/main.py +++ b/main.py @@ -241,20 +241,24 @@ class Sesion: def abfrage(parser, quiero_unidad, otra_vez): random.seed() + status = {} + palabras = [] + os.makedirs(VOKABELN_DIR, exist_ok=True) try: - palabras = [] - os.makedirs(VOKABELN_DIR, exist_ok=True) - try: - os.rename(DEPRECATED_VOKABELN_FILE, os.path.join(VOKABELN_DIR, 'vokabeln.json')) - except FileNotFoundError: - pass + os.rename(DEPRECATED_VOKABELN_FILE, os.path.join(VOKABELN_DIR, 'vokabeln.json')) + except FileNotFoundError: + pass - for filename in glob.glob(os.path.join(VOKABELN_DIR, '*.json')): - with open(filename, 'r') as f: - palabras += json.load(f) + for filename in glob.glob(os.path.join(VOKABELN_DIR, '*.json')): + with open(filename, 'r') as f: + palabras += json.load(f) + try: with open(STATUS_FILE, 'r') as f: status = json.load(f) except FileNotFoundError: + pass + + if len(palabras) == 0: print(f"{bcolors.FAIL}Daten können nicht geladen werden, hast du sie schon importiert?{bcolors.ENDC}") print() parser.print_help()