glossary.py: двуязычный глоссарий из параллельных изданий цикла

This commit is contained in:
chesirecatt
2026-08-21 18:41:45 +03:00
parent 14c7fad763
commit 43d6cfc456
4 changed files with 271 additions and 4 deletions
+6 -3
View File
@@ -82,8 +82,11 @@ def build(src, out, meta):
CHAPTER % (NS, html.escape(title), chunk))
for img in used:
z.write(imgdir / img, "OEBPS/images/" + img)
if meta["cover"] and (imgdir / meta["cover"]).exists():
z.write(imgdir / meta["cover"], "OEBPS/images/" + meta["cover"])
# Обложка бывает и среди картинок текста — второй раз её класть нельзя,
# zip примет дубликат имени, а читалки на такой архив ругаются.
cover = meta["cover"] if meta["cover"] not in used else ""
if cover and (imgdir / cover).exists():
z.write(imgdir / cover, "OEBPS/images/" + cover)
items = ['<item id="css" href="style.css" media-type="text/css"/>',
'<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>']
@@ -94,7 +97,7 @@ def build(src, out, meta):
spine.append('<itemref idref="c%d"/>' % i)
mime = {".png": "image/png", ".jpg": "image/jpeg", ".jpeg": "image/jpeg",
".gif": "image/gif", ".svg": "image/svg+xml"}
for i, img in enumerate(used + ([meta["cover"]] if meta["cover"] else [])):
for i, img in enumerate(used + ([cover] if cover else [])):
items.append('<item id="i%d" href="images/%s" media-type="%s"%s/>'
% (i, img, mime.get(Path(img).suffix.lower(), "image/jpeg"),
' properties="cover-image"' if img == meta["cover"] else ""))