Spaces:
Running
Running
| """単一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 | |