import os import markdown from pathlib import Path # Базовый HTML-шаблон с подключенным KaTeX для формул TEMPLATE = """ {title} | ФМИ

Физико-математический институт

{content}
""" def build_page(md_path, html_path, title): with open(md_path, 'r', encoding='utf-8') as f: md_text = f.read() # Конвертируем Markdown в HTML + поддерживаем формулы html_content = markdown.markdown(md_text, extensions=['fenced_code', 'tables']) with open(html_path, 'w', encoding='utf-8') as f: f.write(TEMPLATE.format(title=title, content=html_content)) def main(): # Создаем папку для готового сайта Path('public').mkdir(exist_ok=True) # 1. Главная страница (список новостей) news_files = sorted(Path('content/news').glob('*.md'), reverse=True) news_links = "".join([f'
  • {f.stem}
  • ' for f in news_files]) build_page(Path('content/index.md'), 'public/index.html', 'Главная') # Создайте этот файл # 2. Страница всех новостей news_list_html = "

    Последние новости

    " with open('public/news.html', 'w', encoding='utf-8') as f: f.write(TEMPLATE.format(title="Новости", content=news_list_html)) # 3. Отдельные страницы новостей for md_file in news_files: out_path = Path(f'public/news/{md_file.stem}.html') out_path.parent.mkdir(exist_ok=True) build_page(md_file, out_path, md_file.stem.replace('-', ' ').title()) # 4. Страница сотрудников (аналогично) staff_files = sorted(Path('content/staff').glob('*.md')) staff_links = "".join([f'
  • {f.stem}
  • ' for f in staff_files]) staff_list_html = "

    Наши сотрудники

    " with open('public/staff.html', 'w', encoding='utf-8') as f: f.write(TEMPLATE.format(title="Сотрудники", content=staff_list_html)) for md_file in staff_files: out_path = Path(f'public/staff/{md_file.stem}.html') out_path.parent.mkdir(exist_ok=True) build_page(md_file, out_path, md_file.stem.replace('-', ' ').title()) print("✅ Сайт успешно собран!") if __name__ == '__main__': main()