diff --git a/convert.py b/convert.py new file mode 100755 index 0000000..742c020 --- /dev/null +++ b/convert.py @@ -0,0 +1,55 @@ +from queue import Empty +from typing import Dict +from durations import Duration +import os +import frontmatter +import csv + +directory = "games" +outputfile = "test.csv" +filtered = dict() +fields = { + "name": "Name", + "playtime": "Playtime", + "platform": "Platform", + "infinite": "Infinite", + "finished": "Finished", + "refunded": "Refunded", + "dropped": "Dropped", + "date-released": "DateReleased", + "date-purchased": "DatePurchased", + "date-started": "DateStarted", + "date-finished": "DateFinished", +} + +with open(outputfile, "w", newline="") as csvfile: + writer = csv.DictWriter(csvfile, fieldnames=fields.values()) + writer.writeheader() + for filename in os.listdir(directory): + f = os.path.join(directory, filename) + + if os.path.isfile(f): + article = frontmatter.load(f) + for field in fields: + if field not in article.metadata.keys(): + newvalue = "" + else: + newvalue = article.metadata[field] + if field == "playtime" and newvalue != 0 and newvalue is not None: + if type(newvalue) is dict: + totalvalue = 0 + for key in newvalue: + timevalue = Duration(newvalue[key]).to_hours() + totalvalue += timevalue + newvalue = totalvalue + else: + timevalue = Duration(newvalue) + newvalue = timevalue.to_hours() + if type(newvalue) is list: + print( + f"Field '{field}' for file '{filename}' is a list, joining with commas." + ) + newvalue = ",".join(newvalue) + filtered[fields[field]] = newvalue + + writer.writerow(filtered)