From: Armaan Bhojwani Date: Sat, 30 Jan 2021 23:28:43 +0000 (-0500) Subject: Add kvtml2html script X-Git-Tag: v0.1.0~17 X-Git-Url: https://git.armaanb.net/?p=lightcards.git;a=commitdiff_plain;h=e5c646553a131056d09e242e385e39b0b44440c8 Add kvtml2html script Add script to convert KWordQuiz files into HTML --- diff --git a/contrib/kvtml2html.py b/contrib/kvtml2html.py new file mode 100755 index 0000000..313a44b --- /dev/null +++ b/contrib/kvtml2html.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +# Converts .kvtml KWordQuiz files to HTML + +import argparse +from bs4 import BeautifulSoup + + +def parse_args(): + parser = argparse.ArgumentParser( + description="Convert KWordQuiz file into Markdown for Lightcards") + parser.add_argument("inp", metavar="input file", type=str, nargs=1) + parser.add_argument("outp", metavar="output file", type=str, nargs=1) + return parser.parse_args() + + +def main(): + args = parse_args() + with open(args.inp[0], "r", encoding="utf-8") as input_file: + soup = BeautifulSoup(input_file, "lxml") + + headers = [x.get_text().split("\n")[1] for x in soup.find_all("identifier")] + body = soup.find_all("entry") + col1 = [x.find("translation", {"id": "0"}) for x in body] + col2 = [x.find("translation", {"id": "1"}) for x in body] + + html = f"" + for i in range(len(col1)): + try: + html += f"
{headers[0]}{headers[1]}
" + html += f"" + except: + pass + + with open(args.outp[0], "w", encoding="utf-8") as output_file: + output_file.write(html) + +if __name__ == "__main__": + main()
{col1[i].get_text().rstrip()}{col2[i].get_text().rstrip()}