Spaces:
Sleeping
Sleeping
| from pathlib import Path | |
| from src.scraping.convert import to_markdown | |
| from src.scraping.exceptions import ArticleNotFoundError, FetchError | |
| from src.scraping.extract import extract_main_html | |
| from src.scraping.fetch import fetch_html | |
| from src.scraping.io import save_markdown | |
| from src.scraping.textutil import compact_blank_lines | |
| async def run(url: str, out_dir: Path) -> Path: | |
| """ | |
| URLを取得→本文抽出→Markdown化→空行圧縮→保存 までを実行。 | |
| 戻り値は保存先パス。 | |
| Raises: | |
| ArticleNotFoundError: 記事が存在しない場合 | |
| FetchError: ネットワークエラーの場合 | |
| """ | |
| # HTMLを取得(例外が発生する可能性あり) | |
| html = await fetch_html(url, timeout_s=25.0) | |
| # 本文抽出→Markdown化→空行圧縮→保存 | |
| main_html = extract_main_html(html) | |
| md_out = to_markdown(main_html) | |
| md_out = compact_blank_lines(md_out) | |
| return save_markdown(md_out, out_dir, url) | |
| async def to_markdown_from_url(url: str, timeout_s: float = 25.0) -> str: | |
| """ | |
| URLを取得→本文抽出→Markdown化→空行圧縮 までを実行してMarkdown文字列を返す。 | |
| Args: | |
| url: 取得対象URL | |
| timeout_s: 取得タイムアウト(秒) | |
| Returns: | |
| Markdown化された本文文字列 | |
| Raises: | |
| ArticleNotFoundError: 記事が存在しない場合 | |
| FetchError: ネットワークエラーの場合 | |
| """ | |
| html = await fetch_html(url, timeout_s=timeout_s) | |
| main_html = extract_main_html(html) | |
| md_out = to_markdown(main_html) | |
| return compact_blank_lines(md_out) | |