diff --git a/reader3.py b/reader3.py index d0b9d3f..a9444f0 100644 --- a/reader3.py +++ b/reader3.py @@ -8,6 +8,7 @@ from dataclasses import dataclass, field from typing import List, Dict, Optional, Any from datetime import datetime +from pathlib import Path from urllib.parse import unquote import ebooklib @@ -292,6 +293,10 @@ def save_to_pickle(book: Book, output_dir: str): # --- CLI --- +def is_epub_file(path: Path): + return path.suffix == '.epub' + + if __name__ == "__main__": import sys @@ -299,15 +304,32 @@ def save_to_pickle(book: Book, output_dir: str): print("Usage: python reader3.py ") sys.exit(1) - epub_file = sys.argv[1] - assert os.path.exists(epub_file), "File not found." - out_dir = os.path.splitext(epub_file)[0] + "_data" - - book_obj = process_epub(epub_file, out_dir) - save_to_pickle(book_obj, out_dir) - print("\n--- Summary ---") - print(f"Title: {book_obj.metadata.title}") - print(f"Authors: {', '.join(book_obj.metadata.authors)}") - print(f"Physical Files (Spine): {len(book_obj.spine)}") - print(f"TOC Root Items: {len(book_obj.toc)}") - print(f"Images extracted: {len(book_obj.images)}") + files = [] + for arg in sys.argv[1:]: + path = Path(arg) + + if not path.exists(): + print(f"No book found at path: {path}") + continue + + if path.is_dir(): + for f in path.iterdir(): + if is_epub_file(f): + files.append(f) + elif is_epub_file(path): + files.append(path) + + + for epub_file in files: + out_dir = Path() / epub_file.stem + out_dir = str(out_dir) + "_data" + + book_obj = process_epub(epub_file, out_dir) + save_to_pickle(book_obj, out_dir) + print("\n--- Summary ---") + print(f"Title: {book_obj.metadata.title}") + print(f"Authors: {', '.join(book_obj.metadata.authors)}") + print(f"Physical Files (Spine): {len(book_obj.spine)}") + print(f"TOC Root Items: {len(book_obj.toc)}") + print(f"Images extracted: {len(book_obj.images)}") + print("==============================\n")