from orgparse import loads blogDir: str = "./blogs" debug: bool = True def debugPrint(msg: str) -> None: if debug: print("(ORG HANDLER) PRINT: " + msg) def checkAndRetrieveMetadata(fileData: str, metadataName: str): line = fileData.readline() metadataFullName = "#+" + metadataName + ":" if metadataFullName in line: linetoarray = line.split() return " ".join(linetoarray[1:]) else: debugPrint("Could not find " + metadataFullName + " metadata field of document!") return False def getOrgTitle(blogID: int) -> str: try: fileData = open(blogDir + "/" + str(blogID) + "/" + str(blogID) + ".org", 'r') title = checkAndRetrieveMetadata(fileData, "TITLE") if title: return title except Exception as error: debugPrint("Error getting blog title! " + repr(error)) def getOrgDescription(blogID: str) -> str: try: fileData = open(blogDir + "/" + str(blogID) + "/" + str(blogID) + ".org", 'r') orgRoot = loads(fileData.read()) fileData.readline() shortDescription = checkAndRetrieveMetadata(fileData, "DESCRIPTION") if not shortDescription: debugPrint("No valid description found, will generate a placeholder from the text itself...") firstText = orgRoot[1].body shortDescription = (firstText[:60] + "...") if len(firstText) > 60 else firstText return shortDescription except Exception as error: debugPrint("Error getting org title! " + repr(error)) def orgToHTML(orgData: str) -> str: try: orgRoot = loads(orgData) parsedHTML = "" for node in orgRoot[1:]: if node.heading: headingLevel = str(node.level) parsedHTML += "" + node.heading + "" + "\n" if node.body: parsedHTML += node.body + "\n" return parsedHTML except Exception as error: debugPrint("Error parsing org! " + repr(error))