#!/usr/bin/env python3 import sys from functools import partial as p from ipo import ipo, write, starstarmap from page import blog_page_metadata BASE_URL = "https://www.braindeaddev.com/P5t7oFqPF7oEX" DOC_TEMPLATE = """ Midgard's blog {last_updated} Midgard {url}{0} """ ITEM_TEMPLATE = """ {title} {path} {published_rfc822} {url} {summary} """ # {category} def iso8601_to_rfc822(iso8601): # pylint: disable=invalid-name if not iso8601: return "" y, m, d = map(int, iso8601.split("-")) month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][m] return f"{d} {month} {y} 00:00:00 UTC" def main(): items = ( ipo(sys.argv[1:]) | p(map, blog_page_metadata) | p(sorted, key=lambda x: x["published"]) | p(map, lambda x: { **x, "published_rfc822": iso8601_to_rfc822(x["published"]), "url": f"{BASE_URL}/{x['path']}" }) | list ) last_date = items.data[-1]["published_rfc822"] ( items | p(starstarmap, ITEM_TEMPLATE.format) | "".join | p(DOC_TEMPLATE.format, url=BASE_URL, last_updated=last_date) | write ) if __name__ == '__main__': main()