fix: QC-Ratings aus 7 älteren Artikeln entfernt (CHECK 10)
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Compile all Bibel der Opfer HTML chapters into a single EPUB."""
|
||||
import os, re
|
||||
from ebooklib import epub
|
||||
|
||||
WORKSPACE = "/home/hermes/workspace"
|
||||
|
||||
chapters = [
|
||||
("kapitel_01", "Die perfekte Opferkampagne"),
|
||||
("kapitel_02", "Der Schalter, der nie auf Mitte steht"),
|
||||
("kapitel_03", "Drei Kulturen, eine Verschiebung"),
|
||||
("kapitel_04", "Competitive Victimhood"),
|
||||
("kapitel_05", "DARVO"),
|
||||
("kapitel_06", "Virtuous Victim Signaling"),
|
||||
("kapitel_07", "Die Umkehrung"),
|
||||
("kapitel_08", "Gegenmittel"),
|
||||
]
|
||||
|
||||
book = epub.EpubBook()
|
||||
book.set_identifier("bibel-der-opfer-001")
|
||||
book.set_title("Die Bibel der Opfer")
|
||||
book.set_language("de")
|
||||
book.add_author("Daniel Krause")
|
||||
|
||||
# Extract common CSS from first chapter
|
||||
first_path = os.path.join(WORKSPACE, "bibel_der_opfer_kapitel_01.html")
|
||||
with open(first_path) as f:
|
||||
first_raw = f.read()
|
||||
css_match = re.search(r"<style>(.*?)</style>", first_raw, re.DOTALL)
|
||||
css = css_match.group(1) if css_match else "body { font-family: serif; }"
|
||||
|
||||
# Add CSS as a stylesheet
|
||||
style_item = epub.EpubItem(uid="style", file_name="style/default.css", media_type="text/css", content=css.encode("utf-8"))
|
||||
book.add_item(style_item)
|
||||
|
||||
epub_chapters = []
|
||||
for slug, title in chapters:
|
||||
path = os.path.join(WORKSPACE, f"bibel_der_opfer_{slug}.html")
|
||||
with open(path) as f:
|
||||
raw = f.read()
|
||||
body_match = re.search(r"<body>(.*?)</body>", raw, re.DOTALL)
|
||||
body_html = body_match.group(1) if body_match else raw
|
||||
|
||||
ch = epub.EpubHtml(title=title, file_name=f"{slug}.xhtml", lang="de")
|
||||
ch.content = f"""<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head><link rel="stylesheet" type="text/css" href="style/default.css"/></head>
|
||||
<body>{body_html}</body>
|
||||
</html>"""
|
||||
ch.add_item(style_item)
|
||||
book.add_item(ch)
|
||||
epub_chapters.append(ch)
|
||||
|
||||
# Build spine
|
||||
book.spine = ["nav"] + epub_chapters
|
||||
|
||||
# Build TOC
|
||||
book.toc = [epub.Link(f"{slug}.xhtml", title, slug) for slug, title in chapters]
|
||||
|
||||
# Navigation
|
||||
book.add_item(epub.EpubNcx())
|
||||
book.add_item(epub.EpubNav())
|
||||
|
||||
# Write
|
||||
outpath = os.path.join(WORKSPACE, "bibel_der_opfer.epub")
|
||||
epub.write_epub(outpath, book)
|
||||
fsize = os.path.getsize(outpath)
|
||||
print(f"EPUB: {outpath}")
|
||||
print(f"Size: {fsize:,} bytes")
|
||||
print("Done!")
|
||||
Reference in New Issue
Block a user