← ClaudeAtlas

aio-epub-exportlisted

Pack a translated EPUB into a downloadable file — bilingual (original + translation side-by-side) or translation-only output. Use when the user wants to export/xuất sách, đóng gói sách, generate an EPUB file, download a finished book, or send a translation to Kindle.
aiocean/claude-plugins · ★ 3 · AI & Automation · score 65
Install: claude install-skill aiocean/claude-plugins
# EPUB Export — Pack & Download Pack translated books back into EPUB format for reading or distribution. > **Trước khi xuất**: Chạy `aio-epub-quality` để kiểm tra chất lượng. Chapters chưa dịch xong? Dùng `aio-epub-translate`. ## API Setup ```python import json, urllib.request, os BASE = "https://read-api.aiocean.dev/ListBooks.v1.BookService" KEY = os.environ.get("AIO_EPUB_API_KEY", "duocnv") def api(method, body): data = json.dumps(body).encode('utf-8') req = urllib.request.Request(f"{BASE}/{method}", data=data, headers={ "Content-Type": "application/json", "X-License-Key": KEY }) with urllib.request.urlopen(req) as resp: return json.loads(resp.read()) ``` ## Workflow ### 1. Check Translation Status First ```python progress = api("GetTranslationProgress", {"bookId": BOOK_ID}) pct = progress["progress"]["translationPercentage"] print(f"Translation progress: {pct:.1f}%") if pct < 100: untranslated = [] for fp in progress["progress"].get("fileProgress", []): if fp["translationPercentage"] < 100: untranslated.append(f" {fp['filePath']}: {fp['translationPercentage']:.0f}%") print(f"\nWarning: {len(untranslated)} chapters incomplete:") print("\n".join(untranslated)) ``` ### 2. Pack EPUB ```python # Bilingual (original + translation side by side) result = api("PackEpub", { "bookId": BOOK_ID, "packMode": "BILINGUAL" }) print(f"EPUB URL: {result['epubUrl']}") print(f"Message: {result['mes