Skip to content

SeresHotes/telegram-chat-parser

Repository files navigation

Telegram Chat Parser

Парсер для анализа экспорта чатов Telegram с использованием OpenRouter API. Анализирует сообщения о пересечении границ и извлекает истории с ответами на вопросы о военной службе.

Установка

  1. Установите Poetry (если еще не установлен):
curl -sSL https://install.python-poetry.org | python3 -
  1. Установите зависимости:
poetry install
  1. Создайте файл .env с настройками API:
cp .env.template .env
# Отредактируйте .env и добавьте ваш реальный API ключ

Использование

Основной скрипт (последовательная обработка)

poetry run python telegram_parser.py

🚀 Быстрая параллельная обработка

poetry run python telegram_parser_async.py

Тестирование

poetry run python test_parser.py

Тестирование с образцом данных

# Последовательная обработка
poetry run python run_sample.py

# Параллельная обработка (быстрее!)
poetry run python run_sample_async.py

Активация виртуального окружения

poetry 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):

Основные вопросы:

  1. Имеет ли военник - есть ли у человека военный билет
  2. Вернулся в Россию - возвращался ли в Россию
  3. Уехал из России - покидал ли Россию
  4. Есть повестка - была ли повестка в любой момент истории
  5. Не смог пересечь границу - отказали в пересечении границы
  6. Вернулся в Россию, дали повестку, а надо уезжать из России - специфический сценарий

Демография:

  1. Возраст до 30 лет
  2. IT профессия
  3. Военная профессия/офицер
  4. Студент

Обстоятельства поездки:

  1. Путешествует один
  2. Путешествует с семьей
  3. Авиаперелет
  4. Железная дорога
  5. Автомобиль/автобус

География:

  1. Москва (аэропорты)
  2. Санкт-Петербург
  3. Сухопутная граница

Процедуры на границе:

  1. Задавали вопросы о службе
  2. Проверяли документы дополнительно
  3. Долгий опрос (более 30 минут)
  4. Успешно пересек границу
  5. Отказ в пересечении

Цель поездки:

  1. Деловая поездка
  2. Туризм/отдых
  3. Переезд на ПМЖ
  4. Есть обратный билет
  5. Билет в одну сторону

Выходные данные

Результат сохраняется в 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 - документация

Настройка OpenRouter

  1. Зарегистрируйтесь на https://openrouter.ai
  2. Получите API ключ
  3. Добавьте его в файл .env
  4. Используйте модель, поддерживающую structured outputs (по умолчанию: openai/gpt-4o-mini)

Особенности

  • 🚀 Параллельная обработка: Async версия обрабатывает несколько сообщений одновременно, значительно ускоряя анализ
  • Structured Outputs: Использует OpenRouter Structured Outputs для гарантированного получения валидного JSON
  • Без пре-фильтрации: Все сообщения обрабатываются ИИ (кроме очень коротких)
  • Интеллектуальное определение дат: ИИ сам определяет наиболее релевантную дату для каждой истории
  • Множественные истории: Сообщения могут содержать несколько историй, разделенных линиями (—————————)
  • Расширенная аналитика: 28 различных параметров для каждой истории
  • Гибкая настройка: Лимиты обработки и параметры API настраиваются в config.py
  • Управление нагрузкой: Настраиваемые лимиты concurrent requests и задержки для избежания ограничений API

Производительность

Последовательная обработка (telegram_parser.py):

  • ⏱️ ~3 секунды на сообщение (с учетом задержек API)
  • 📊 1 запрос в момент времени

Параллельная обработка (telegram_parser_async.py):

  • ⚡ Значительно быстрее при большом количестве сообщений
  • 📊 До 5 одновременных запросов (настраивается)
  • 🎯 Оптимально для обработки сотен сообщений

Рекомендация: Используйте telegram_parser_async.py для обработки более 10 сообщений.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages