Files
liqiang b119135836
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
2026-08-20 13:12:50 +00:00

97 lines
3.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#! /usr/bin/env python3
"""Generate EPUB from the Hungarian introduction.md - simpler approach"""
import os
import re
from ebooklib import epub, ITEM_IMAGE
import markdown
book_dir = os.path.dirname(os.path.abspath(__file__))
# Read the markdown
md_path = os.path.join(book_dir, "introduction.md")
with open(md_path, "r", encoding="utf-8") as f:
md_content = f.read()
# Convert markdown to HTML
md_extras = ["extra", "codehilite", "tables", "fenced_code"]
html_body = markdown.markdown(md_content, extensions=md_extras)
# Create EPUB book
book = epub.EpubBook()
# Metadata
book.set_identifier("ai-agent-intro-hu-001")
book.set_title("AI Agent Bevezetés (magyar)")
book.set_language("hu")
book.add_author("Li Bojie")
book.add_metadata("DC", "description", "A Bevezetés fejezet magyar fordítása az 'AI Agent: Tervezési elvek és gyakorlat' című könyvből.")
# CSS
style = """
body { font-family: 'Liberation Serif', Georgia, serif; line-height: 1.6; margin: 1em; }
h1, h2, h3, h4 { font-family: 'Liberation Sans', Arial, sans-serif; }
h1 { font-size: 1.6em; margin-top: 1.5em; }
h2 { font-size: 1.3em; margin-top: 1.2em; }
h3 { font-size: 1.1em; margin-top: 1em; }
p { margin: 0.5em 0; text-align: justify; }
pre { background: #f4f4f4; padding: 0.8em; border-radius: 4px; font-size: 0.85em; overflow-x: auto; white-space: pre-wrap; }
code { background: #f4f4f4; padding: 0.1em 0.3em; border-radius: 3px; font-size: 0.9em; }
blockquote { border-left: 3px solid #ccc; margin-left: 0; padding-left: 1em; color: #555; }
img { max-width: 100%; height: auto; display: block; margin: 1em auto; }
ul, ol { margin: 0.5em 0; }
strong { font-weight: bold; }
em { font-style: italic; }
"""
css = epub.EpubItem(uid="style", file_name="style/default.css", media_type="text/css", content=style)
book.add_item(css)
# Add images as EPUB items
img_dir = os.path.join(book_dir, "images")
img_map = {}
for fname in sorted(os.listdir(img_dir)):
fpath = os.path.join(img_dir, fname)
if not os.path.isfile(fpath):
continue
ext = fname.rsplit(".", 1)[-1].lower()
mime = {"svg": "image/svg+xml", "png": "image/png", "jpg": "image/jpeg", "jpeg": "image/jpeg", "gif": "image/gif"}.get(ext, "application/octet-stream")
with open(fpath, "rb") as f:
img_data = f.read()
img_item = epub.EpubItem(uid=f"img_{fname}", file_name=f"images/{fname}", media_type=mime, content=img_data)
book.add_item(img_item)
img_map[fname] = f"images/{fname}"
# Fix image paths in HTML
for old_name, new_path in img_map.items():
html_body = html_body.replace(f'src="images/{old_name}"', f'src="{new_path}"')
# Create chapter
chapter = epub.EpubHtml(title="Bevezetés", file_name="introduction.xhtml", lang="hu")
chapter.set_content(f"""<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="hu">
<head><title>Bevezetés</title>
<link rel="stylesheet" type="text/css" href="style/default.css"/>
</head>
<body>
{html_body}
</body>
</html>""".encode('utf-8'))
book.add_item(chapter)
# Table of contents
book.toc = [epub.Link("introduction.xhtml", "Bevezetés", "intro")]
# Add navigation files
book.add_item(epub.EpubNcx())
book.add_item(epub.EpubNav())
# Define spine
book.spine = ["nav", chapter]
# Output
out_path = os.path.join(book_dir, "AI-Agent-Book_Bevezetes.epub")
epub.write_epub(out_path, book, {})
print(f"✅ EPUB created: {out_path}")
print(f" Size: {os.path.getsize(out_path):,} bytes")