git.fiddlerwoaroof.com
blog-gen/__main__.py
81fc3411
 from mako.template import Template
 from mako.lookup import TemplateLookup
4891fc67
 import distutils
81fc3411
 
 import argparse
4891fc67
 import urllib.parse
 import glob
 import os
 import os.path
 import lxml.html
 
 
81fc3411
 parser = argparse.ArgumentParser()
ba48666c
 parser.add_argument('indir')
81fc3411
 parser.add_argument('--base', '-b', default='base.html', nargs='?')
ba48666c
 parser.add_argument('--odir', '-o')
81fc3411
 args = parser.parse_args()
ba48666c
 if args.odir is None:
     args.odir = args.indir
81fc3411
 
 mylookup = TemplateLookup(directories='templates')
 template = mylookup.get_template('from-markdown.html')
 
ba48666c
 items = []
 
 counter = 0
 for file in glob.glob1(args.indir, '*.md'):
     oname = os.path.join(args.odir, '%s.html' % file.rpartition('.')[0])
 
     with open(os.path.join(args.indir, file)) as f:
       out = template.render(content=f.read(), base=args.base)
       with open(oname, 'wb') as of:
           of.write(out.encode('utf-8'))
         
     counter += 1
     items.append({})
     htmldoc = lxml.html.fromstring(out)
 
     desc_el = htmldoc.xpath('//div[contains(@class,"container") and contains(@class, "has_description")]/p[1]')
     print(desc_el)
     desc_el = '' if not desc_el else desc_el[0]
 
     title_el = htmldoc.xpath('//h1 | //h2 | //h3 | //h4 | //h4 | //h6')
     title_el = '' if not title_el else title_el[0]
 
     items[-1].update(
4891fc67
             link=urllib.parse.quote(os.path.relpath(oname, args.odir)),
ba48666c
             counter = counter,
             title = oname if title_el is '' else title_el.text_content().strip(),
             description = desc_el if desc_el is '' else lxml.etree.tostring(desc_el).decode('utf-8')
     )
 
 index_template = mylookup.get_template('index.html')
 index = index_template.render(items=items, base=args.base)
 with open(os.path.join(args.odir, 'index.html'), 'wb') as of:
     of.write(index.encode('utf-8'))