from pathlib import Path from typing import List, Dict, Any, Optional from src.processing.batch_processor import BatchProcessor class ScrapeToMetadata: """スクレイピング→メタデータ生成を一気通貫で処理するファサードクラス""" def __init__(self, wait_time: float = 1.0): """ Args: wait_time: リクエスト間の待機時間(秒) """ self.batch_processor = BatchProcessor(wait_time) async def process_urls_batch( self, urls: List[str], start_id: int = 1, mode: str = "memory", show_progress: bool = True, save_dir: Optional[Path] = None, verbose: bool = False ) -> List[Dict[str, Any]]: """ 複数URLをバッチ処理してメタデータを生成 Args: urls: 処理するURLのリスト start_id: 開始ID mode: "memory" または "save" show_progress: プログレス表示の有無 save_dir: saveモード時のMarkdownファイル保存先ディレクトリ verbose: 詳細ログを表示するか Returns: 生成されたドキュメントメタデータのリスト """ return await self.batch_processor.process_urls_batch( urls=urls, start_id=start_id, mode=mode, show_progress=show_progress, save_dir=save_dir, verbose=verbose ) def save_metadata(self, documents: List[Dict[str, Any]], output_path: Path): """メタデータをJSON形式で保存 Args: documents: 保存するドキュメントメタデータのリスト output_path: 出力ファイルパス """ self.batch_processor.save_metadata(documents, output_path)