Парсер для анализа экспорта чатов Telegram с использованием OpenRouter API. Анализирует сообщения о пересечении границ и извлекает истории с ответами на вопросы о военной службе.
- Установите Poetry (если еще не установлен):
curl -sSL https://install.python-poetry.org | python3 -- Установите зависимости:
poetry install- Создайте файл
.envс настройками API:
cp .env.template .env
# Отредактируйте .env и добавьте ваш реальный API ключpoetry run python telegram_parser.pypoetry run python telegram_parser_async.pypoetry run python test_parser.py# Последовательная обработка
poetry run python run_sample.py
# Параллельная обработка (быстрее!)
poetry run python run_sample_async.pypoetry shellВ файле config.py можно настроить:
MAX_MESSAGES_TO_PROCESS- лимит обрабатываемых сообщений (по умолчанию 10,Noneдля всех)OPENROUTER_MODEL- модель для анализа (по умолчанию: openai/gpt-4o-mini)MAX_TOKENSиTEMPERATURE- параметры API
CONCURRENT_REQUESTS- количество одновременных запросов (по умолчанию: 5)REQUEST_DELAY- задержка между батчами запросов в секундах (по умолчанию: 0.2)
Можно также настроить через переменные окружения:
export CONCURRENT_REQUESTS=3
export REQUEST_DELAY=0.5Для каждой истории в сообщениях определяется (0 или 1):
- Имеет ли военник - есть ли у человека военный билет
- Вернулся в Россию - возвращался ли в Россию
- Уехал из России - покидал ли Россию
- Есть повестка - была ли повестка в любой момент истории
- Не смог пересечь границу - отказали в пересечении границы
- Вернулся в Россию, дали повестку, а надо уезжать из России - специфический сценарий
- Возраст до 30 лет
- IT профессия
- Военная профессия/офицер
- Студент
- Путешествует один
- Путешествует с семьей
- Авиаперелет
- Железная дорога
- Автомобиль/автобус
- Москва (аэропорты)
- Санкт-Петербург
- Сухопутная граница
- Задавали вопросы о службе
- Проверяли документы дополнительно
- Долгий опрос (более 30 минут)
- Успешно пересек границу
- Отказ в пересечении
- Деловая поездка
- Туризм/отдых
- Переезд на ПМЖ
- Есть обратный билет
- Билет в одну сторону
Результат сохраняется в Excel файл со следующими колонками:
- Message ID - ID сообщения
- Message Date - дата сообщения в Telegram
- Story Date - дата события (определяется ИИ из текста истории или берется дата сообщения)
- Story - краткое описание истории
- Колонки с ответами на каждый вопрос (0/1)
telegram_parser.py- основной скрипт парсера (последовательная обработка)telegram_parser_async.py- ⚡ быстрый парсер с параллельной обработкойconfig.py- конфигурация API, вопросов и системного промптаtest_parser.py- тестирование компонентовrun_sample.py- тестирование с ограниченным количеством сообщенийrun_sample_async.py- ⚡ тестирование с параллельной обработкойpyproject.toml- конфигурация Poetry.env.template- шаблон переменных окруженияREADME.md- документация
- Зарегистрируйтесь на https://openrouter.ai
- Получите API ключ
- Добавьте его в файл
.env - Используйте модель, поддерживающую structured outputs (по умолчанию: openai/gpt-4o-mini)
- 🚀 Параллельная обработка: Async версия обрабатывает несколько сообщений одновременно, значительно ускоряя анализ
- Structured Outputs: Использует OpenRouter Structured Outputs для гарантированного получения валидного JSON
- Без пре-фильтрации: Все сообщения обрабатываются ИИ (кроме очень коротких)
- Интеллектуальное определение дат: ИИ сам определяет наиболее релевантную дату для каждой истории
- Множественные истории: Сообщения могут содержать несколько историй, разделенных линиями (—————————)
- Расширенная аналитика: 28 различных параметров для каждой истории
- Гибкая настройка: Лимиты обработки и параметры API настраиваются в config.py
- Управление нагрузкой: Настраиваемые лимиты concurrent requests и задержки для избежания ограничений API
- ⏱️ ~3 секунды на сообщение (с учетом задержек API)
- 📊 1 запрос в момент времени
- ⚡ Значительно быстрее при большом количестве сообщений
- 📊 До 5 одновременных запросов (настраивается)
- 🎯 Оптимально для обработки сотен сообщений
Рекомендация: Используйте telegram_parser_async.py для обработки более 10 сообщений.