shorten qrcode data

This commit is contained in:
Hendrik Schutter 2025-06-22 13:32:56 +02:00
parent 880ff8c6e3
commit e06d10caee
2 changed files with 35 additions and 6 deletions

View File

@ -29,6 +29,7 @@ logging.basicConfig(
level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s" level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s"
) )
@dataclasses.dataclass @dataclasses.dataclass
class DriveData: class DriveData:
drive_index: int drive_index: int
@ -44,6 +45,20 @@ class DriveData:
shred_duration: int shred_duration: int
@dataclasses.dataclass
class DriveDataJson:
state: str
fam: str
name: str
cap: int
sn: str
poh: int
pc: int
err: int
time: int
dur: int
@dataclasses.dataclass @dataclasses.dataclass
class DriveDataPrintable: class DriveDataPrintable:
modelfamily: str modelfamily: str
@ -59,13 +74,13 @@ class DriveDataPrintable:
@dataclasses.dataclass @dataclasses.dataclass
class ReHddInfo: class ReHddInfo:
link: str ref: str
version: str ver: str
@dataclasses.dataclass @dataclasses.dataclass
class DriveDataJson: class QrDataJson:
drive: DriveData drive: DriveDataJson
rehdd: ReHddInfo rehdd: ReHddInfo
@ -288,7 +303,21 @@ def draw_outline(drawable, margin, width, output_width, output_height):
def generate_image(drive, rehdd_info, output_file): def generate_image(drive, rehdd_info, output_file):
"""Generates an image containing drive data and a QR code.""" """Generates an image containing drive data and a QR code."""
try: try:
qr_data = json.dumps(dataclasses.asdict(DriveDataJson(drive, rehdd_info)))
drive_json = DriveDataJson(
state=drive.drive_state,
fam=drive.modelfamily,
name=drive.modelname,
cap=drive.capacity,
sn=drive.serialnumber,
poh=drive.power_on_hours,
pc=drive.power_cycle,
err=drive.smart_error_count,
time=int(drive.shred_timestamp),
dur=drive.shred_duration,
)
qr_data = json.dumps(dataclasses.asdict(QrDataJson(drive_json, rehdd_info)))
printable_data = format_to_printable(drive) printable_data = format_to_printable(drive)
except Exception as e: except Exception as e:
logging.error(f"Error preparing data: {e}") logging.error(f"Error preparing data: {e}")
@ -301,7 +330,7 @@ def generate_image(drive, rehdd_info, output_file):
font_bold = ImageFont.truetype(find_font_path(DEFAULT_FONT_BOLD), 20) font_bold = ImageFont.truetype(find_font_path(DEFAULT_FONT_BOLD), 20)
font_bold_bigger = ImageFont.truetype(find_font_path(DEFAULT_FONT_BOLD), 42) font_bold_bigger = ImageFont.truetype(find_font_path(DEFAULT_FONT_BOLD), 42)
draw_outline(draw, 0, 3, OUTPUT_WIDTH+1, OUTPUT_HEIGHT+1) draw_outline(draw, 0, 3, OUTPUT_WIDTH + 1, OUTPUT_HEIGHT + 1)
draw_text(draw, printable_data, font_regular, font_bold, font_bold_bigger) draw_text(draw, printable_data, font_regular, font_bold, font_bold_bigger)
draw_qr_code(output_image, qr_data) draw_qr_code(output_image, qr_data)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB