Инструмент для сбора и визуализации похожих каналов через Telegram API. Позволяет построить граф связей между каналами на основе рекомендаций Telegram.
- Сбор данных: Получение похожих каналов через Telegram API
- Многоуровневый анализ: Поддержка до 3 поколений каналов (канал → похожие → похожие похожих)
- Автосохранение: Автоматическое сохранение прогресса с возможностью продолжения
- Интерактивная визуализация: Граф связей с фильтрами и статистикой
- Веб-интерфейс: Удобный Streamlit интерфейс для просмотра результатов
- Python 3.8+
- Telegram API credentials (API ID и API Hash)
-
Клонируйте репозиторий или скачайте файлы
-
Установите зависимости:
pip install -r requirements.txt-
Получите API credentials:
- Перейдите на https://my.telegram.org/apps
- Создайте приложение и получите
API_IDиAPI_HASH
-
Создайте файл
config.py:
API_ID = 12345678 # Ваш API ID
API_HASH = 'your_api_hash_here' # Ваш API Hash
SESSION_NAME = 'session' # Имя файла сессии
# Начальный канал для анализа
START_CHANNEL = 'your_link' # или 'https://t.me/your_link'
# Количество поколений похожих каналов (2 по умолчанию, можно изменить на 3)
MAX_GENERATIONS = 2
# Опционально: настройки checkpoint
CHECKPOINT_FILE = 'checkpoint.json' # Файл для сохранения прогресса
AUTO_SAVE_INTERVAL = 5 # Автосохранение каждые N каналов (0 = отключено)Запустите скрипт для сбора похожих каналов:
python get_recommendations.pyЧто происходит:
- Скрипт запрашивает похожие каналы для указанного в
config.pyканала - Для каждого найденного канала получает его похожие каналы (2 поколение)
- При необходимости может обработать и 3 поколение
- Результаты сохраняются в
channel_recommendations.json
Особенности:
- Автосохранение: Прогресс сохраняется каждые N каналов (настраивается в
config.py) - Продолжение работы: При повторном запуске скрипт предложит продолжить с последнего сохраненного места
- Обработка ошибок: Автоматическая обработка flood wait и других ошибок API
Пример вывода:
🚀 Начинаем сбор похожих каналов для: daniilak
📊 Максимальное количество поколений: 2
💾 Автосохранение каждые 5 каналов
------------------------------------------------------------
📺 daniilak (поколение 0)
📺 mlball_days (поколение 1)
...
💾 Автосохранение checkpoint (обработано 5 каналов)
...
✅ Обработано каналов: 649
⚠️ Ошибок: 0
💾 Результаты сохранены в: channel_recommendations.json
После сбора данных запустите Streamlit приложение:
streamlit run visualize_graph.pyОткройте браузер по адресу, который покажет Streamlit (обычно http://localhost:8501)
Возможности визуализации:
- 📈 Интерактивный граф: Перетаскивайте узлы, масштабируйте колесиком мыши
- 🎨 Цветовая кодировка: Разные цвета для разных поколений каналов
- 🔍 Фильтры: По поколению и количеству участников
- 📊 Статистика: Распределение по поколениям, топ каналов
- 🔎 Поиск: Выделение конкретного канала для детального анализа
Интерфейс включает:
- Граф связей между каналами
- Статистику по поколениям
- Топ каналов по центральности и количеству участников
- Детальный анализ выбранного канала
getChannelRecommendations/
├── get_recommendations.py # Скрипт для сбора данных
├── visualize_graph.py # Streamlit приложение для визуализации
├── config.py # Конфигурация (создайте сами)
├── requirements.txt # Зависимости
├── channel_recommendations.json # Результаты сбора (создается автоматически)
├── checkpoint.json # Сохраненный прогресс (создается автоматически)
└── session.session # Сессия Telegram (создается автоматически)
API_IDиAPI_HASH- обязательные, получаются на https://my.telegram.org/appsSTART_CHANNEL- начальный канал для анализа (username без @)MAX_GENERATIONS- количество поколений (0 = только начальный канал, 1 = + похожие, 2 = + похожие похожих)CHECKPOINT_FILE- имя файла для сохранения прогрессаAUTO_SAVE_INTERVAL- интервал автосохранения (0 = отключено)
Если скрипт был прерван (Ctrl+C), при следующем запуске вы увидите:
============================================================
📋 НАЙДЕН СОХРАНЕННЫЙ ПРОГРЕСС
============================================================
Канал: your_link
Время последнего сохранения: 2024-01-15T10:30:00
Обработано каналов: 150
============================================================
Что вы хотите сделать?
1. Продолжить с этого момента
2. Начать новую выгрузку (старый checkpoint будет удален)
3. Выход
Результаты сохраняются в channel_recommendations.json:
{
"summary": {
"total_channels_processed": 649,
"total_errors": 0,
"max_generations": 2
},
"results": {
"daniilak": {
"generation": 0,
"recommendations": [
{
"username": "your_link",
"title": "Название канала",
"id": 123456,
"participants_count": 123
}
]
}
},
"errors": []
}Канал приватный или недоступен. Такие каналы пропускаются и записываются в errors.
Telegram ограничивает частоту запросов. Скрипт автоматически ждет указанное время и повторяет запрос.
Для больших каналов с множеством рекомендаций процесс может занять время. Используйте автосохранение для возможности продолжения.
Проект для личного использования.