diff --git a/examples/html_generation_demo.py b/examples/html_generation_demo.py deleted file mode 100644 index 029ea40..0000000 --- a/examples/html_generation_demo.py +++ /dev/null @@ -1,216 +0,0 @@ -""" -Demonstration of HTML generation for dreader UI. - -This example shows how to: -1. Scan a book directory -2. Generate library view HTML -3. Load a book and generate reader view HTML -4. Generate overlay HTML for settings, TOC, and bookmarks - -The generated HTML strings can be passed to a HAL (Hardware Abstraction Layer) -for rendering on the target device. -""" - -from pathlib import Path -from dreader import create_ebook_reader -from dreader.html_generator import ( - generate_library_html, - generate_reader_html, - generate_settings_overlay, - generate_toc_overlay, - generate_bookmarks_overlay -) -from dreader.book_utils import ( - scan_book_directory, - get_chapter_list, - get_bookmark_list, - page_image_to_base64 -) - - -def demo_library_view(): - """Generate and save library view HTML.""" - print("Generating library view...") - - # Scan books directory - books_dir = Path('tests/data') - books = scan_book_directory(books_dir) - - print(f"Found {len(books)} books:") - for book in books: - print(f" - {book['title']} by {book['author']}") - - # Generate HTML - library_html = generate_library_html(books) - - # Save to file for inspection - output_path = Path('output/library.html') - output_path.parent.mkdir(exist_ok=True) - output_path.write_text(library_html) - - print(f"Library HTML saved to: {output_path}") - print(f"HTML length: {len(library_html)} characters\n") - - -def demo_reader_view(): - """Generate and save reader view HTML.""" - print("Generating reader view...") - - # Load a test book - book_path = Path('tests/data/test.epub') - if not book_path.exists(): - print(f"Test book not found at {book_path}") - return - - reader = create_ebook_reader(page_size=(800, 1000)) - reader.load_epub(str(book_path)) - - # Get current page - page_image = reader.get_current_page() - page_base64 = page_image_to_base64(page_image) - - # Generate HTML - reader_html = generate_reader_html( - book_title=reader.book_title or "Unknown Title", - book_author=reader.book_author or "Unknown Author", - page_image_data=page_base64 - ) - - # Save to file - output_path = Path('output/reader.html') - output_path.write_text(reader_html) - - print(f"Reader HTML saved to: {output_path}") - print(f"HTML length: {len(reader_html)} characters") - print(f"Book: {reader.book_title} by {reader.book_author}\n") - - -def demo_overlays(): - """Generate and save overlay HTML.""" - print("Generating overlay views...") - - # Load a test book - book_path = Path('tests/data/test.epub') - if not book_path.exists(): - print(f"Test book not found at {book_path}") - return - - reader = create_ebook_reader(page_size=(800, 1000)) - reader.load_epub(str(book_path)) - - # 1. Settings overlay - settings_html = generate_settings_overlay() - settings_path = Path('output/overlay_settings.html') - settings_path.write_text(settings_html) - print(f"Settings overlay saved to: {settings_path}") - - # 2. TOC overlay - chapters = get_chapter_list(reader) - print(f"Found {len(chapters)} chapters") - toc_html = generate_toc_overlay(chapters) - toc_path = Path('output/overlay_toc.html') - toc_path.write_text(toc_html) - print(f"TOC overlay saved to: {toc_path}") - - # 3. Bookmarks overlay (create some test bookmarks first) - reader.save_position('Chapter 1 Start') - reader.next_page() - reader.next_page() - reader.save_position('Page 3') - - bookmarks = get_bookmark_list(reader) - print(f"Found {len(bookmarks)} bookmarks") - bookmarks_html = generate_bookmarks_overlay(bookmarks) - bookmarks_path = Path('output/overlay_bookmarks.html') - bookmarks_path.write_text(bookmarks_html) - print(f"Bookmarks overlay saved to: {bookmarks_path}\n") - - -def demo_hal_usage(): - """ - Demonstrate how a HAL would use these functions. - - This simulates how your Hardware Abstraction Layer would - interact with the HTML generation functions. - """ - print("=" * 60) - print("HAL Integration Example") - print("=" * 60) - - # Step 1: Initialize with books directory - books_dir = Path('tests/data') - - # Step 2: Show library view - books = scan_book_directory(books_dir) - library_html = generate_library_html(books) - print(f"\n[HAL] Rendering library with {len(books)} books") - print(f"[HAL] HTML size: {len(library_html)} bytes") - - # Step 3: User selects a book (simulated) - if books: - selected_book = books[0] - print(f"\n[HAL] User selected: {selected_book['title']}") - - # Step 4: Load book and show reader view - reader = create_ebook_reader(page_size=(800, 1000)) - reader.load_epub(selected_book['path']) - - page_image = reader.get_current_page() - page_base64 = page_image_to_base64(page_image) - - reader_html = generate_reader_html( - book_title=reader.book_title, - book_author=reader.book_author, - page_image_data=page_base64 - ) - print(f"[HAL] Rendering reader view") - print(f"[HAL] HTML size: {len(reader_html)} bytes") - - # Step 5: User presses "Settings" button (simulated) - print(f"\n[HAL] User pressed 'Settings' button") - settings_html = generate_settings_overlay() - print(f"[HAL] Rendering settings overlay on top of page") - print(f"[HAL] HTML size: {len(settings_html)} bytes") - - # Step 6: User presses "Contents" button (simulated) - print(f"\n[HAL] User pressed 'Contents' button") - chapters = get_chapter_list(reader) - toc_html = generate_toc_overlay(chapters) - print(f"[HAL] Rendering TOC overlay with {len(chapters)} chapters") - print(f"[HAL] HTML size: {len(toc_html)} bytes") - - # Step 7: User navigates pages (simulated) - print(f"\n[HAL] User pressed 'Next' button") - reader.next_page() - page_image = reader.get_current_page() - page_base64 = page_image_to_base64(page_image) - reader_html = generate_reader_html( - book_title=reader.book_title, - book_author=reader.book_author, - page_image_data=page_base64 - ) - print(f"[HAL] Rendering next page") - print(f"[HAL] HTML size: {len(reader_html)} bytes") - - -if __name__ == '__main__': - print("dreader HTML Generation Demo") - print("=" * 60) - print() - - # Create output directory - Path('output').mkdir(exist_ok=True) - - # Run demos - demo_library_view() - demo_reader_view() - demo_overlays() - demo_hal_usage() - - print("\n" + "=" * 60) - print("Demo complete!") - print("=" * 60) - print("\nGenerated HTML files have been saved to the 'output/' directory.") - print("Open them in a browser to see how they look.") - print("\nIn a real application, these HTML strings would be passed") - print("to your HAL for rendering on the target display device.")