slider_telegramm

0
8 месяцев назад
8 месяцев назад
8 месяцев назад
8 месяцев назад
8 месяцев назад
8 месяцев назад
README.md

slider_telegramm

Telegram Channel News Parser

Описание

Утилита для парсинга новостей из Telegram каналов с сохранением в структурированном JSON-формате. Собирает сообщения, включая текстовые посты и медиа-контент (фото), с возможностью настройки лимита выборки.

Основные возможности

  • Авторизация в Telegram через официальный API
  • Парсинг сообщений из указанного канала
  • Обработка как групповых сообщений (альбомов), так и одиночных постов
  • Скачивание и сохранение медиа-файлов
  • Генерация структурированных данных в JSON-формате
  • Поддержка ротации и логирования

Требования

  • Go 1.16+
  • Аккаунт Telegram
  • API ID и API Hash (получаются на my.telegram.org)
  • Доступ к указанному Telegram каналу

Установка

  1. Клонируйте репозиторий:

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

  3. Создайте файл конфигурации

    .env
    :

  4. Заполните

    .env
    своими данными:

    TELEGRAM_API_ID=ваш_api_id TELEGRAM_API_HASH=ваш_api_hash CHANNEL=username_канала (без @) LIMIT=100

Создание файла сессии
conf/session.json

Для работы утилиты требуется файл сессии, который хранит данные авторизации в Telegram. Вот как его создать:

Автоматическое создание (рекомендуемый способ)

  1. Убедитесь, что существует директория

    conf
    :

  2. Запустите утилиту в первый раз:

  3. Следуйте инструкциям в терминале:

    • Введите номер телефона Telegram в формате
      +79998887766
    • Введите код подтверждения, который придет в Telegram
    • При необходимости введите пароль двухфакторной аутентификации
  4. После успешной авторизации файл

    session.json
    будет автоматически создан в папке
    conf

Ручное создание (для продвинутых пользователей)

  1. Создайте директорию и файл:

  2. Установите правильные права:

  3. Файл будет автоматически заполнен при первой авторизации

Важные замечания

  1. Файл

    session.json
    содержит:

    • Данные авторизации
    • Ключи сессии
    • Информацию о DC (Data Center)
  2. Безопасность:

    • Не делитесь этим файлом с другими
    • Храните его в защищенном месте
    • При компрометации файла - удалите его и создайте заново
  3. При проблемах с авторизацией:

    Затем запустите утилиту снова для создания нового файла сессии

Расположение файла

По умолчанию утилита ищет файл сессии по пути:

./conf/session.json

Вы можете изменить расположение, отредактировав параметр в коде:

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

Запуск вручную

Сборка и установка

Запуск через systemd

  1. Создайте сервисный файл:

  2. Добавьте конфигурацию:

  3. Включите и запустите сервис:

Запуск через cron

Добавьте в crontab (

crontab -e
):

Структура данных

После выполнения программа создает:

conf/ └── session.conf # сессия с телеграм news_data/ ├── news.json # Основной файл с новостями └── images/ # Директория с сохраненными изображениями

Формат новостного элемента:

Настройка логирования

Логи пишутся в:

  • /var/log/tg-news.log
    - основные логи приложения
  • Системный журнал (для сообщений через logger)

Для настройки собственного файла логов:

  1. Создайте конфиг rsyslog:

  2. Добавьте:

    if $programname == 'tg_news' then /var/log/tg-news.log & stop
  3. Перезапустите rsyslog:

Ошибки

Возможные ошибки при эксплуатации утилиты

1. Ошибки авторизации

Симптомы:

  • "авторизация не удалась: ..."
  • "ошибка при вводе кода подтверждения"
  • сессия не сохраняется

Причины и решения:

ОшибкаПричинаРешение
PHONE_NUMBER_INVALID
Неверный формат номераВводите номер в международном формате (+79998887766)
PHONE_CODE_INVALID
Неверный код подтвержденияЗапросите новый код, проверьте SMS/Telegram
SESSION_PASSWORD_NEEDED
Требуется 2FA парольВведите пароль двухфакторной аутентификации
AUTH_KEY_UNREGISTERED
Проблемы с сессиейУдалите
conf/session.json
и переавторизуйтесь

Фикс:

2. Ошибки доступа к каналу

Симптомы:

  • "канал приватный или у вас нет доступа"
  • "CHANNEL_INVALID"

Проверьте:

  1. Правильность username канала (без @)
  2. Ваш аккаунт имеет доступ к каналу
  3. Канал не был удален/заблокирован

3. Проблемы с файловой системой

Распространенные ошибки:

не удалось создать директорию: permission denied ошибка записи файла: no space left on device unexpected end of JSON input

Решение:

4. Ошибки API Telegram

Коды ошибок:

  • FLOOD_WAIT_X
    - лимит запросов (ждать X секунд)
  • INTERNAL_SERVER_ERROR
    - проблема на стороне Telegram
  • TIMEOUT
    - проблемы с сетью

Что делать:

  1. Подождите указанное время при FLOOD_WAIT
  2. Проверьте интернет-соединение
  3. Попробуйте позже при проблемах с серверами Telegram

5. Проблемы с медиафайлами

Ошибки:

нет доступных размеров фото ошибка загрузки файла: file reference expired

Решение:

  1. Удалите поврежденные файлы:
  1. Перезапустите утилиту для повторной загрузки

Ошибка "unexpected end of JSON input"

Эта ошибка возникает, когда утилита пытается прочитать пустой или невалидный JSON файл. Просто удалите файл и при следущем запуске он будет создан заново.

7. Критические ошибки

Если утилита падает с panic:

  1. Сообщите параметры запуска
  2. Приложите полный лог ошибки
  3. Проверьте версии зависимостей:

8. Частые вопросы

Q: Файл news.json постоянно перезаписывается A: Это нормальное поведение - файл обновляется при каждом запуске

Q: Не скачиваются новые сообщения A: Проверьте LIMIT в .env и наличие новых постов в канале

Q: Как очистить все данные?

Лицензия

MIT License. Смотрите файл LICENSE.