import time, subprocess def the_line_after_metadata(lines: []) -> int: i = 0 while i < len(lines) and lines[i].strip(): i += 1 return i def parse_metadata(filepath: str) -> {}: result = {} with open(filepath, "r") as f: content = f.readlines() i = the_line_after_metadata(content) for line in content[:i]: delim = line.find(":") key, val = (line[:delim].strip(), line[delim+1:].strip()) if key == "Date": result["Date"] = time.gmtime(int(val)) elif key == "Tags": result["Tags"] = [v.strip() for v in val.split(",")] elif val: result[key] = val result["Last Edit"] = time.gmtime(int(subprocess.getoutput(r"stat -c %Y " + filepath))) return result