import markdown import pathlib import os current_dir = pathlib.Path(__file__).parent with (current_dir / "base_feed.xml").open("r") as f: base_feed = f.read() with (current_dir / "base_item.xml").open("r") as f: base_item = f.read() def convert_case(string: str): while string.find("_") != -1: string = string.replace("_" + string[string.index("_") + 1], string[string.index("_") +1].upper()) return string def article_to_xml(article_path: pathlib.Path): with (article_path / "article.md").open("r") as f: markdown_data = f.read() markdown_instance = markdown.Markdown(extensions=['meta', 'nl2br']) html = markdown_instance.convert(markdown_data) metadata = markdown_instance.Meta tags = [f"<{convert_case(key)}>{metadata[key][0]}" for key in metadata.keys()] tags.append(f"\n{html}\n") return base_item.format(tags="\n".join(tags)) def make_rss_feed(path, channel_name, channel_link, description): articles = "".join([article_to_xml(path) for path in (pathlib.Path.cwd() / path).glob("*")]) return base_feed \ .replace("{title}", channel_name) \ .replace("{link}", channel_link) \ .replace("{description}", description) \ .replace("{items}", articles)