#!/usr/bin/env python3
"Fixes FB2 files exported by Calibre."


import re
import sys


if len(sys.argv) != 2:
	exit("Expected one argument.")


try:
	with open(sys.argv[1], "rt") as fobj:
		text = fobj.read()

	# Remove manual indentation from paragraphs.
	text = re.sub("<p>\s+", "<p>", text)

	# Remove formatting of the section titles.
	text = re.sub(
		"(?<=<section>)\s*<title>\s*<p>(\s*<[^>]*>\s*)*(?P<tname>[^<]*)(\s*</[^>]*>\s*)*</p></title>",
		"\n\n<title>\n<p>\g<tname></p>\n</title>\n\n",
		text
	)

	with open(sys.argv[1], "wt") as fobj:
		fobj.write(text)

	print("[ OK ] {}".format(sys.argv[1]))


except Exception as e:
	exit("[FAIL] {}: {}".format(sys.argv[1], e))

