Spaces:
Sleeping
Sleeping
File size: 1,747 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 |
"""単一URLのスクレイピング→メタデータ生成処理"""
from pathlib import Path
from typing import Dict, Any, Optional
from src.processing.metadata_utils import extract_title, generate_file_name
from src.scraping import io
from src.scraping import pipeline as scraping_pipeline
class DocumentProcessor:
"""単一URLのスクレイピング→メタデータ生成処理"""
async def process_url(self, url: str, index: int, save_dir: Optional[Path] = None) -> Dict[str, Any]:
"""
URLから直接メタデータを生成
save_dirが指定されている場合はMarkdownファイルも保存
Args:
url: 処理対象のURL
index: URLのインデックス番号
save_dir: Markdownファイルの保存先ディレクトリ(Noneの場合は保存しない)
Returns:
LangChain形式のドキュメントメタデータ
"""
# スクレイピング処理(集中化されたパイプライン関数を利用)
md_content = await scraping_pipeline.to_markdown_from_url(url)
# save_dirが指定されている場合はファイル保存
if save_dir:
saved_path = io.save_markdown(md_content, save_dir, url)
file_name = saved_path.name
else:
file_name = generate_file_name(url, index)
# メタデータ生成(LangChain形式)
document = {
"metadata": {
"title": extract_title(md_content),
"file_name": file_name,
"source_url": url,
},
"page_content": md_content
}
return document
|