File size: 1,906 Bytes
fb05e78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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)