From 682e8ca2322306328df1be956597ed5316947f44 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Mon, 11 Aug 2025 18:00:14 +0200 Subject: [PATCH] refactored --- main.py | 55 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/main.py b/main.py index 622556f..28cf942 100644 --- a/main.py +++ b/main.py @@ -1,27 +1,20 @@ -# This is a sample Python script. import enum -# Press Umschalt+F10 to execute it or replace it with your code. -# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. - import os import re import struct from argparse import ArgumentParser -from io import BytesIO -from typing import BinaryIO import hashlib import json +import abc -from pygccxml.declarations import unsigned_int_t - - -class AImage(object): +class AImage(abc.ABC): def __init__(self, folder: str, output_dir: str = "out"): + self.folder = folder self.out_path = os.path.join(folder, output_dir) os.makedirs(self.out_path, exist_ok=True) def parse(self): - pass + return False def version(self): pass @@ -131,20 +124,23 @@ class WaldorfMicroWave2V00(AImage): def __init__(self, folder: str, out_dir="."): AImage.__init__(self, folder, out_dir) + self._is_valid = False + + def parse(self): filename_hi = None filename_lo = None - for filename in os.listdir(folder): - filepath = os.path.join(folder, filename) + for filename in os.listdir(self.folder): + filepath = os.path.join(self.folder, filename) if re.match('.*_H.bin', filename): filename_hi = filepath if re.match('.*_L.bin', filename): filename_lo = filepath if filename_hi is None: - return + return False if filename_lo is None: - return + return False data, data_hi, data_lo = self.combine(filename_hi, filename_lo) @@ -158,6 +154,7 @@ class WaldorfMicroWave2V00(AImage): wave_table = self.wave_table_extract(self.wave_tables_descr, data_hi, data_lo) self._json_save("wave_table.json", wave_table) + return self._is_valid @staticmethod def wave_extract(descr, data_hi, data_lo): @@ -170,7 +167,6 @@ class WaldorfMicroWave2V00(AImage): @staticmethod def wave_table_extract(descr, data_hi, data_lo): - data = [] table_count = 0 pos = 0 @@ -209,32 +205,43 @@ class PpgEvu2v00(AImage): class WaldorfMicrowaveXT(AImage): def __init__(self, folder: str, out_dir="."): AImage.__init__(self, folder, out_dir) + + def parse(self): filename_hi = None filename_lo = None - for filename in os.listdir(folder): - filepath = os.path.join(folder, filename) + for filename in os.listdir(self.folder): + filepath = os.path.join(self.folder, filename) if re.match('upper_.*.bin', filename): filename_hi = filepath if re.match('lower_.*.bin', filename): filename_lo = filepath if filename_hi is None: - return + return False if filename_lo is None: - return + return False data, data_hi, data_lo = self.combine(filename_lo, filename_hi) self._save("combined_be.bin", data) + return True def detect(args): - image = WaldorfMicroWave2V00(args.folder, args.output_dir) - image = WaldorfMicrowaveXT(args.folder, args.output_dir) - pass + wave_obj_list = [ + WaldorfMicroWave2V00(args.folder, args.output_dir), + WaldorfMicrowaveXT(args.folder, args.output_dir) + ] + + for wave_obj in wave_obj_list: + if wave_obj.parse(): + return wave_obj + + return None def main(args): - image_type = detect(args) + result = detect(args) + print(f"Detected parser: {result}") if __name__ == '__main__':