From 5bf2ab8b2edb624cab3b1b08ca064b8955182da5 Mon Sep 17 00:00:00 2001 From: localhorst Date: Thu, 19 Jan 2023 19:54:34 +0100 Subject: [PATCH] cut SN at start --- layouter.py | 31 ++++++++++++++++++------------- output.png | Bin 5514 -> 5439 bytes 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/layouter.py b/layouter.py index 7759067..933ee1d 100644 --- a/layouter.py +++ b/layouter.py @@ -79,23 +79,28 @@ def human_readable_capacity_1000(size, decimal_places=0): def human_readable_power_on_hours(hours, decimal_places=2): return str(hours) + "h or " + str(int(hours/24)) + "d or " + str("{:.2f}".format(float(hours/24/365))) + "y" -def cut_string(max_lenght, data): +def cut_string(max_lenght, data, direction): if (len(data) > max_lenght): - return data[0:(max_lenght-4)] + " ..." + if (direction == "end"): + return data[0:(max_lenght-4)] + " ..." + elif (direction == "start"): + return "... " + data[(len(data)-max_lenght+4):] + else: + return cut_string(max_lenght, data, "end") else: return data def format_to_printable(drive): return DriveDataPrintable( - cut_string(20, re.sub(r"[^a-zA-Z0-9. ]", "", drive.modelfamiliy)),\ - cut_string(20, re.sub(r"[^a-zA-Z0-9. ]", "", drive.modelname)),\ - cut_string(20, human_readable_capacity_1000(drive.capacity)),\ - cut_string(16, re.sub(r"[^a-zA-Z0-9.-_]", "", drive.serialnumber)),\ - cut_string(30, human_readable_power_on_hours(drive.power_on_hours)),\ - cut_string(10, str(drive.power_cycle)),\ - cut_string(10, str(drive.smart_error_count)),\ - cut_string(30, datetime.datetime.utcfromtimestamp(drive.shred_timestamp).strftime('%Y-%m-%d %H:%M:%S')),\ - cut_string(30, str(datetime.timedelta(seconds = drive.shred_duration)))) + cut_string(20, re.sub(r"[^a-zA-Z0-9. ]", "", drive.modelfamiliy), "end"),\ + cut_string(20, re.sub(r"[^a-zA-Z0-9. ]", "", drive.modelname), "end"),\ + cut_string(20, human_readable_capacity_1000(drive.capacity), "end"),\ + cut_string(16, re.sub(r"[^a-zA-Z0-9.-_]", "", drive.serialnumber), "start"),\ + cut_string(30, human_readable_power_on_hours(drive.power_on_hours), "end"),\ + cut_string(10, str(drive.power_cycle), "end"),\ + cut_string(10, str(drive.smart_error_count), "end"),\ + cut_string(30, datetime.datetime.utcfromtimestamp(drive.shred_timestamp).strftime('%Y-%m-%d %H:%M:%S'), "end"),\ + cut_string(30, str(datetime.timedelta(seconds = drive.shred_duration)), "end")) def draw_text(drawable, printable_data, text_x_offset): try: @@ -171,7 +176,7 @@ def generate_image(drive, rehdd_info, output_file): print("unable to format data: " + str(ex)) return - #print(printable_data) + #print(printable_data.serialnumber) #create black and white (binary) image with white background output_image = Image.new('1', (output_width, output_height), "white") @@ -196,7 +201,7 @@ def main(): modelfamiliy="Toshiba 2.5\\ HDD MK..65GSSX",\ modelname="TOSHIBA MK3265GSDX",\ capacity=343597383680,\ - serialnumber="YG6742U56UDRL123",\ + serialnumber="YG6742U56UDRL123456789ABCDEFGJKL",\ power_on_hours=7074,\ power_cycle=4792,\ smart_error_count=1,\ diff --git a/output.png b/output.png index 96c9e1ac38160354bde6a56dfe4ae39363e06c2b..b30175a88829e98b5b6b56a67f02fdc1900a769b 100644 GIT binary patch literal 5439 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