diff --git a/README.org b/README.org index 48c427a..ceaf623 100644 --- a/README.org +++ b/README.org @@ -5,3 +5,4 @@ - =randomline.py= – returns a random line from a file - =sponge.py= – fOrMaTs tExT LiKe tHiS - =workdown.py= – downloads something from AO3 based on ID +- =year-summary.py= – extracts lists of books read and films watched in a year from a filetree diff --git a/year-summary.py b/year-summary.py new file mode 100644 index 0000000..a3ea73a --- /dev/null +++ b/year-summary.py @@ -0,0 +1,73 @@ +import os +from pathlib import Path +from random import randint +from datetime import datetime + +thisyear = datetime.now().strftime("%Y") +home = str(Path.home()) +stats = [] + +def iterate(category,action,year=thisyear,date=False): + basedir = home + "/Documents/drive/org/journal/" + str(year) + count = 0 + print("* " + category) + print("** " + action) + month = 1 + while True: + if month < 13: + if month < 10: + monthname = basedir + "/0" + str(month) + else: + monthname = basedir + "/" + str(month) + if os.path.exists(monthname): + for file in sorted(os.listdir(monthname)): + filename = monthname + "/" + str(file) + if filename.endswith(".org"): + with open(filename, "r") as file: + lines = file.readlines() + for num, line in enumerate (lines, 0): + if str("** " + str(action)) in line: + num += 1 + if num + 1 < len(lines): + if "*** " in lines[num]: + while True: + if "*** " in lines[num]: + if date == True: + print(lines[num].strip() + " " + lines[0].strip()) + else: + print(lines[num].strip()) + count += 1 + else: + break + if num + 1 < len(lines): + num += 1 + else: + break + else: + break + else: + break + else: + if num < len(lines): + if "*** " in lines[num]: + if date == True: + print(lines[num].strip() + " " + lines[0].strip()) + else: + print(lines[num].strip()) + count += 1 + else: + break + else: + break + month += 1 + stats.append(count) + +def yeargrab(year=thisyear): + iterate("books","read",year) + iterate("films","watched",year) + print("* stats") + print("** books read: " + str(stats[0])) + print("** films watched: " + str(stats[1])) + +if __name__ == "__main__": + yeargrab()