56 lines
2 KiB
Python
56 lines
2 KiB
Python
import yaml
|
|
|
|
class Utilities:
|
|
def __init__(self):
|
|
pass
|
|
|
|
def read_yaml(self, yaml_file):
|
|
try:
|
|
with open(yaml_file, "r") as file:
|
|
data = yaml.safe_load(file)
|
|
return data
|
|
except (FileNotFoundError, PermissionError) as e:
|
|
print(f"Error loading settings file: {e}")
|
|
return
|
|
|
|
def write_yaml(self, yaml_file, data):
|
|
try:
|
|
with open(yaml_file, "w") as file:
|
|
yaml.dump(data, file)
|
|
except PermissionError as e:
|
|
print(f"Error saving setings: {e}")
|
|
|
|
def append_number_to_name(self, base_name: str, current_image: int, total_images: int, invert: bool):
|
|
""""Returns name, combination of base_name and ending number."""
|
|
total_digits = len(str(total_images))
|
|
if invert:
|
|
ending_number = total_images - (current_image - 1)
|
|
else:
|
|
ending_number = current_image
|
|
ending = f"{ending_number:0{total_digits}}"
|
|
return f"{base_name}_{ending}"
|
|
|
|
def yes_no(self, str):
|
|
"""Ask user y/n question"""
|
|
while True:
|
|
choice = input(f"{str} (y/n): ")
|
|
if choice == "y":
|
|
return True
|
|
elif choice == "n":
|
|
return False
|
|
else:
|
|
print("Not a valid option, try again.")
|
|
|
|
def progress_bar(self, current, total, barsize = 50):
|
|
if current > total:
|
|
print("\033[91mThis bar has exceeded its limits!\033[0m Maybe the current value needs some restraint?")
|
|
return
|
|
progress = int((barsize / total) * current)
|
|
rest = barsize - progress
|
|
if rest <= 2: rest = 0
|
|
# Determine the number of digits in total
|
|
total_digits = len(str(total))
|
|
# Format current with leading zeros
|
|
current_formatted = f"{current:0{total_digits}}"
|
|
print(f"{current_formatted}|{progress * '-'}>{rest * ' '}|{total}", end="\r")
|
|
if current == total: print("")
|