Skip to content

daniilak/TelegramNetwork

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📊 Анализ похожих Telegram-каналов

Инструмент для сбора и визуализации похожих каналов через Telegram API. Позволяет построить граф связей между каналами на основе рекомендаций Telegram.

🚀 Возможности

  • Сбор данных: Получение похожих каналов через Telegram API
  • Многоуровневый анализ: Поддержка до 3 поколений каналов (канал → похожие → похожие похожих)
  • Автосохранение: Автоматическое сохранение прогресса с возможностью продолжения
  • Интерактивная визуализация: Граф связей с фильтрами и статистикой
  • Веб-интерфейс: Удобный Streamlit интерфейс для просмотра результатов

📋 Требования

  • Python 3.8+
  • Telegram API credentials (API ID и API Hash)

🔧 Установка

  1. Клонируйте репозиторий или скачайте файлы

  2. Установите зависимости:

pip install -r requirements.txt
  1. Получите API credentials:

  2. Создайте файл 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 = отключено)

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

1. Сбор данных

Запустите скрипт для сбора похожих каналов:

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

2. Визуализация графа

После сбора данных запустите 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 (создается автоматически)

⚙️ Настройки

Параметры в config.py

  • API_ID и API_HASH - обязательные, получаются на https://my.telegram.org/apps
  • START_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": []
}

🛠️ Решение проблем

Ошибка "Channel is private or inaccessible"

Канал приватный или недоступен. Такие каналы пропускаются и записываются в errors.

Flood Wait

Telegram ограничивает частоту запросов. Скрипт автоматически ждет указанное время и повторяет запрос.

Большой объем данных

Для больших каналов с множеством рекомендаций процесс может занять время. Используйте автосохранение для возможности продолжения.

📝 Лицензия

Проект для личного использования.

🙏 Благодарности

  • Telethon - библиотека для работы с Telegram API
  • Streamlit - фреймворк для веб-приложений
  • NetworkX - библиотека для работы с графами
  • Pyvis - визуализация графов

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages