#!/usr/bin/env python3 import threading import loader from queue import Queue import subprocess import time import fourletterphat as flp #-- q = Queue() t = loader.bgload(3, .1) #-- def disp_string(string): for letter in range(0,3) if len(string) > 3 else range(0, len(string)): try: flp.set_digit(letter, string[letter].upper()) except IndexError: pass flp.show() def get_mountedlist(): return [item[item.find("/"):] for item in subprocess.check_output( ["/bin/bash", "-c", "lsblk"]).decode("utf-8").split("\n") if "/" in item] def get_mounted_devs(): cmd = ["/bin/bash", "-c", "lsblk"] output = subprocess.check_output(cmd).decode("utf-8").split("\n") res = set() for item in output: if item.startswith("sd"): # print(f"Found /dev/{item.split(' ')[0]}") res.add(f"/dev/{item.split(' ')[0]}") return res def flash(dev): loader.q.put(dev) try: flash_cmd = ["/bin/dd", "if=/home/pi/Downloads/2019-07-10-raspbian-buster-lite.img", f"of={dev}"] output = subprocess.check_output(flash_cmd).decode("utf-8") print(output) return True except BaseException as err: print(err) disp_string('ERR') finally: loader.q.get() if __name__=="__main__": disp_string("GO") done = set() while True: devs = get_mounted_devs() done = done.intersection(devs) for dev in devs: if dev not in done: print(f"Flashing {dev}") disp_string(dev.split("/")[2]) if flash(dev): print(f"Flashed {dev}") disp_string("GO") time.sleep(.5) done.add(dev) time.sleep(1)