Ты работаешь в текущем проекте:
/home/work/skil-scrap/adt-markdownify-meta
Задача:
Реализовать только файл:
scripts/html_to_markdown.py
Важно:
- Не трогай другие файлы.
- Не меняй config_loader.py.
- Не меняй markdown_writer.py.
- Не меняй run_exporter.py.
- Сейчас нужна только логика конвертации HTML в Markdown.
Нужно реализовать:
1. Функцию clean_html(html: str) -> str
Логика:
- принимает HTML строкой;
- удаляет теги script;
- удаляет теги style;
- удаляет теги noscript;
- возвращает очищенный HTML.
2. Функцию extract_title(html: str, fallback: str = "META page") -> str
Логика:
- сначала пытается взять название из тега <title>;
- если <title> пустой или отсутствует, пытается взять первый <h1>;
- если <h1> пустой или отсутствует, возвращает fallback;
- убирает лишние пробелы.
3. Функцию normalize_blank_lines(text: str) -> str
Логика:
- убирает слишком большое количество пустых строк;
- максимум две пустые строки подряд;
- возвращает очищенный текст.
4. Функцию html_to_markdown(html: str) -> str
Логика:
- очищает HTML через clean_html;
- переводит HTML в Markdown через библиотеку html2text;
- настройки html2text:
- ignore_links = False
- ignore_images = True
- body_width = 0
- применяет normalize_blank_lines;
- возвращает Markdown.
5. Функцию build_meta_markdown(html: str, url: str) -> dict
Логика:
- получает title через extract_title;
- получает markdown через html_to_markdown;
- в начало markdown добавляет блок:
## Проверка разделов META
- Иерархия АС > ФП > Модуль > Подмодуль > ТК: Не проверено
- Точки взаимодействия + API: Не проверено
- Интеграционные взаимодействия + API: Не проверено
- Стенды: Не проверено
- Технические ресурсы: Не проверено
---
- возвращает словарь:
{
"title": title,
"markdown": markdown
}
Требования:
- Используй BeautifulSoup из bs4.
- Используй html2text.
- Код должен быть простым и понятным.
- Не используй API.
- Не используй requests/httpx/aiohttp/urllib.
- Не добавляй токены, cookie, login, password.
- Не придумывай структуру META.
- Если данные не найдены, не придумывай их.
После реализации покажи полный код файла scripts/html_to_markdown.py.