def add_feed(page_dict): author = '''<author> <name>Eli Dupree</name> <'''+'e'+'m'+'a'+'i'+'l'+'>'+exmxaxixl.axdxrxexsxs+'</'+'e'+'m'+'a'+'i'+'l'+'''> <uri>'''+utils.canonical_scheme_and_domain+'''/</uri> </author>''' entries = [] for post in reversed ([post for post in blog.current_blog_page if "username" not in post]): if "comic_id" not in post: link = blog.post_permalink(post) else: link = comics.page_url(post) title = post ["title"] (body, head) = blog.stream_entry (post) post_string = head + body metadata = blog.post_metadata(post) # make internal links work in the feed post_string = re.sub(r'( (?:href|src)=")/', lambda match: match.group(1)+utils.canonical_scheme_and_domain+'/', post_string) entries.append(''' <entry> <id>'''+utils.canonical_scheme_and_domain+link+'''</id> <title type="html">'''+cgi.escape(title)+'''</title> <published>'''+atom_time(metadata["date_posted"])+'''</published> <updated>'''+atom_time(metadata["date_modified"])+'''</updated> '''+author+''' <link rel="alternate" href="'''+utils.canonical_scheme_and_domain+link+'''" /> <content type="html">'''+cgi.escape(post_string)+'''</content> </entry> ''') utils.checked_insert(page_dict, '/atom.xml', '''<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <id>'''+utils.canonical_scheme_and_domain+'''/</id> <icon>'''+utils.canonical_scheme_and_domain +'''/site-logo.png</icon> <title>Eli Dupree's website</title> <updated>'''+atom_time(datetime.datetime.utcnow())+'''</updated> '''+author+''' <link rel="self" href="/atom.xml" /> '''+''.join(entries)+''' </feed>''' )
def page_html_and_head(page, prev_page, next_page): wide_screen_rules_list = [] navbar = comic_navbar(prev_page, next_page) metabar = comic_metabar(page) metadata = blog.post_metadata(page) (HTML, head) =blog.post_html(page["annotation"], None, page_url(page), None, False, metadata, allow_comments = True, Patreon_type = ("art" if page["comic_id"] == "studio_art" else "comic")) annotation_promoted = "annotation_promoted" in comics_metadata[page ["comic_id"]] return ( ''' <div class="comic_and_nav">''' +metabar+navbar+''' <main> <div id="content" class="comic_and_transcript"> <div class="comic_image"> '''+('<a tabindex="-1" href="'+page_url(next_page)+'">' if next_page else '')+''' <img class="comic_image" alt="A comic page; see below for a transcript" src="'''+comic_image_url(page)+'''" /> '''+('</a>' if next_page else '')+''' </div><!-- -->'''+('''<div class="comic_transcript_outer"> <div class="comic_transcript_inner"> '''+format_transcript(page, wide_screen_rules_list)+''' </div> </div>''' if "transcript" in page else '')+''' </div>''' + ("" if annotation_promoted else navbar+metabar)+''' <div class="comic_annotation_outer"> <div class="comic_annotation"> '''+ HTML +''' </div> </div> ''' + (navbar+metabar if annotation_promoted else "")+''' </main> </div>''', head +''' <style type="text/css"> @media screen and (min-width: '''+str(comics_metadata[page["comic_id"]]["transcript_at_side_width"])+'''px) { '''+'\n'.join(wide_screen_rules_list)+''' } </style>''')