defread_from_db() -> list: conn = sqlite3.connect(DB_PATH) c = conn.cursor() c.execute("SELECT name, username, oath_secret_key FROM accounts") res = c.fetchall() conn.close() return res
defread_from_errorfile() -> list: res = [] withopen("./error_list.txt", "r", encoding="utf-8") as file: for line in file: elements = line.strip().split() iflen(elements) == 3: res.append(tuple(elements)) return res
if __name__ == '__main__': # Change working directory to script directory os.chdir(sys.path[0]) # Parse arguments parser = argparse.ArgumentParser() parser.add_argument("-r", '--retry-error', action='store_true', help='retry from error list file.') args = parser.parse_args() # Read data data = read_from_errorfile() if args.retry_error else read_from_db() # Write data to canokey err_list = [] for row in data: print(f"Writing {row[0]}{row[1]}...") if write_to_canokey(row[0], row[1], row[2]): time.sleep(3) else: break # Write error list to file if err_list: withopen("error_list.txt", "w", encoding="utf-8") as f: f.write("\n".join([f"{x[0]}{x[1]}{x[2]}"for x in err_list])) print("\nError(maybe) list written to error_list.txt") # Done print("Done!")