siam_thetre_world
Описание
Siam Theatre World — информационная система для автоматического сбора, анализа и публикации новостей из области театрального искусства стран Юго-Восточной Азии в Telegram-канал. Система предназначена для ведения русскоязычного канала о театральной жизни региона.
Языки
- Python75,8%
- HTML16,8%
- CSS7,4%
🎭 Siam Theatre World — Агрегатор театральных новостей ЮВА
Информационная система для автоматического сбора, анализа и публикации новостей из области театрального искусства стран Юго-Восточной Азии в Telegram-канал.
Архитектура
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Web Sources │───▶│ Crawler │───▶│ Analyzer │
│ (15+ сайтов) │ │ (BeautifulSoup)│ │ (Keywords+AI)│
└──────────────┘ └──────────────┘ └──────┬───────┘
│
┌──────────────┐ ┌───────▼───────┐
│ Telegram │◀───│ Moderator UI │
│ Channel │ │ (FastAPI) │
└──────────────┘ └───────────────┘
Компоненты
| Файл | Назначение |
|---|---|
| Конфигурация: ключевые слова, источники, промпты |
| Модели БД (SQLAlchemy): источники, статьи, лог |
| Краулер: загрузка страниц, извлечение ссылок и текста |
| Двухуровневый анализ: ключевые слова + AI (OpenAI-совместимый) |
| Публикация в Telegram-канал |
| FastAPI: веб-интерфейс модерации |
| APScheduler: периодическое сканирование |
| Точка входа |
Быстрый старт
1. Установка зависимостей
2. Настройка
Отредактируйте , заполнив:
- TELEGRAM_BOT_TOKEN — токен бота (получить у @BotFather)
- TELEGRAM_CHANNEL_ID — ID или @username канала (бот должен быть администратором)
- AI_API_KEY — ключ AI-провайдера (OpenAI, Polza.ai, Together, OpenRouter и др.)
- AI_BASE_URL — URL API провайдера (по умолчанию
)https://api.polza.ai/v1 - AI_MODEL — модель для анализа и перевода (по умолчанию
)gpt-4o-mini - MODERATOR_PASSWORD — пароль для входа в панель модерации
3. Запуск
Приложение запустится на .
4. Использование
- Откройте
и войдите с паролем модератораhttp://localhost:8000 - На Дашборде — обзор статистики и ручной запуск сканирования
- Модерация — просмотр и обработка найденных новостей
- Источники — управление списком сайтов
- Ключевые слова — редактирование фильтров
Как работает анализ
Уровень 1: Быстрый фильтр (бесплатно)
Текст проверяется на наличие ключевых слов из списка (русские, английские, тайские). Статьи без совпадений автоматически отклоняются.
Уровень 2: AI-анализ (OpenAI-совместимый API)
Прошедшие фильтр статьи анализируются через настроенный AI-провайдер (Polza.ai, OpenAI, Together, OpenRouter, Ollama и др.):
- Определение релевантности с оценкой уверенности (0-100%)
- Классификация (премьера, фестиваль, рецензия, анонс и т.д.)
- Автоматический перевод и создание текста поста на русском
Принципы отнесения к театральной тематике
Помимо ключевых слов, AI учитывает:
- Контекст ЮВА (Таиланд, Вьетнам, Индонезия, Мьянма, Камбоджа и др.)
- Традиционные формы: кхон, лике, лакхон, нанг яй, хун крабок
- Смежные области: кабаре, перформанс, современный танец
- Театральные площадки и организации региона
Модерация
Каждая отобранная новость проходит ручную модерацию:
| Действие | Описание |
|---|---|
| ✅ Одобрить | Добавить в очередь публикации |
| 📤 Опубликовать сейчас | Немедленная отправка в Telegram |
| 📅 Запланировать | Публикация в указанное время |
| ❌ Отклонить | Отказать в публикации |
Модератор может отредактировать текст поста перед публикацией.
Конфигурация
Переменные окружения (.env)
| Переменная | По умолчанию | Описание |
|---|---|---|
| — | Токен Telegram-бота |
| | ID канала |
| — | Ключ AI-провайдера |
| | URL API (Polza.ai, OpenRouter и др.) |
| | Модель для анализа и перевода |
| | Макс. токенов в ответе |
| | Температура генерации |
| | Интервал сканирования (мин.) |
| | Свежесть новостей (дней) |
| | Пароль модератора |
| | Порт веб-интерфейса |
Развёртывание
Docker (рекомендуется)
systemd
API
| Endpoint | Метод | Описание |
|---|---|---|
| — | Статистика системы |
| auth | Ручной запуск сканирования |
| auth | Ручной запуск анализа |
| auth | Публикация одобренных |
Расширение
Добавление нового источника
Через веб-интерфейс (Источники → Добавить) или напрямую в БД.
Поддержка социальных сетей (Facebook, Instagram)
Для парсинга соцсетей рекомендуется:
- Использовать официальные API (Facebook Graph API)
- Или headless-браузер (Playwright) для публичных страниц
- Модуль
легко расширяется под эти нуждыcrawler.py
Добавление новых языков ЮВА
Добавьте ключевые слова на нужном языке в раздел в
или через веб-интерфейс (Ключевые слова).