diff --git a/scripts/extract_verses_by_meters.py b/scripts/extract_verses_by_meters.py new file mode 100644 index 0000000000000000000000000000000000000000..a87a267c5f7d9500a074b3ed1b0370b3b6a6a9e0 --- /dev/null +++ b/scripts/extract_verses_by_meters.py @@ -0,0 +1,41 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- + +import argparse +import json +import os + +import allzweckmesser as azm + + +def main(hypotactic_dir, top_out_dir, meters=['hexameter']): + corpus = azm.corpus.HypotacticCorpus.from_directory(hypotactic_dir) + for document in corpus.documents: + doc_out_dir = os.path.join(top_out_dir, document.title) + os.makedirs(doc_out_dir, exist_ok=True) + for meter in meters: + verses_for_meter = [ + azm.corpus.HypotacticLine(line).verse.to_dict() + for line in document.get_lines_with_meter([meter]) + ] + if verses_for_meter: + with open(os.path.join(doc_out_dir, '{}.json'.format(meter)), + 'w') as f: + json.dump(verses_for_meter, f) + + +def parse_args_and_main(): + d = 'Extract lines from a Hypotactic corpus' + parser = argparse.ArgumentParser(description=d) + parser.add_argument('--meters', '-m', nargs='+', + help='Meters of the lines to extract') + parser.add_argument('hypotactic_dir', + help='Top level directory of the Hypotactic corpus') + parser.add_argument('top_out_dir', + help='Top level directory of the created JSON files') + args = parser.parse_args() + main(**vars(args)) + + +if __name__ == '__main__': + parse_args_and_main()