From 46a33d080ea8174f5db08fea403a85202662dc59 Mon Sep 17 00:00:00 2001 From: Philipp Falk Date: Tue, 6 Sep 2016 13:09:26 +0200 Subject: [PATCH] added bibtex to html converter script --- bibtex.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 bibtex.py diff --git a/bibtex.py b/bibtex.py new file mode 100644 index 0000000..09844cd --- /dev/null +++ b/bibtex.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 + +import os +import tempfile +import subprocess +import sys + +def split_bibtex(dirname, filename, categories): + for cat in categories: + cmd = ['bib2bib', '-q', '-c', '$type="{}"'.format(cat), '--warn-error', + '-ob', os.path.join(dirname, '{}.bib'.format(cat)), + filename] + try: + subprocess.check_call(cmd) + except subprocess.CalledProcessError as e: + if e.returncode != 2: + raise e + return tmpdir + +def get_publications_html(dirname, category, basename): + filename = '{}.bib'.format(category) + if not os.path.exists(filename): + return None + cmd = ['bibtex2html', '-q', '--no-doc', '--no-header', + filename] + subprocess.check_call(cmd) + with open('{}.html'.format(filename.rsplit('.', 1)[0]), 'r') as f: + html = f.read().split('
')[0].strip().replace('{}_bib.html'.format(category), '{}_bib.html'.format(basename)) + return html + +if __name__ == '__main__': + if len(sys.argv) != 2: + print('Usage: {} '.format(sys.argv[0]), file=sys.stderr) + sys.exit(1) + + filename = sys.argv[1] + basename = filename.rsplit('.', 1)[0] + categories = ['preprint', 'article', 'book', 'proceeding', 'thesis'] + catnames = ['Preprints', 'Zeitschriftenartikel', 'Bücher', 'Proceedings', 'Abschlussarbeiten'] + + out = [] + out.append('% use aam ueberschrift="Publikationen"') + with tempfile.TemporaryDirectory() as tmpdir: + split_bibtex(tmpdir, filename, categories) + cwd = os.getcwd() + os.chdir(tmpdir) + for (cat, name) in zip(categories, catnames): + html = get_publications_html(tmpdir, cat, basename) + if html is None: + continue + out.append('

{}

'.format(name)) + out.append(html) + os.chdir(cwd) + + subprocess.check_call(['bibtex2html', '-q', filename]) + with open('{}.html'.format(basename), 'w') as f: + f.write('\n'.join(out)) + + print('DONE! Now please copy {}.html and {}_bib.html to the webserver.'.format(basename, basename)) -- 2.11.0