slider_telegramm
slider_telegramm
Telegram Channel News Parser
Описание
Утилита для парсинга новостей из Telegram каналов с сохранением в структурированном JSON-формате. Собирает сообщения, включая текстовые посты и медиа-контент (фото), с возможностью настройки лимита выборки.
Основные возможности
- Авторизация в Telegram через официальный API
- Парсинг сообщений из указанного канала
- Обработка как групповых сообщений (альбомов), так и одиночных постов
- Скачивание и сохранение медиа-файлов
- Генерация структурированных данных в JSON-формате
- Поддержка ротации и логирования
Требования
- Go 1.16+
- Аккаунт Telegram
- API ID и API Hash (получаются на my.telegram.org)
- Доступ к указанному Telegram каналу
Установка
-
Клонируйте репозиторий:
-
Установите зависимости:
-
Создайте файл конфигурации
:.env -
Заполните
своими данными:.envTELEGRAM_API_ID=ваш_api_id TELEGRAM_API_HASH=ваш_api_hash CHANNEL=username_канала (без @) LIMIT=100
Создание файла сессии conf/session.json
Для работы утилиты требуется файл сессии, который хранит данные авторизации в Telegram. Вот как его создать:
Автоматическое создание (рекомендуемый способ)
-
Убедитесь, что существует директория
:conf -
Запустите утилиту в первый раз:
-
Следуйте инструкциям в терминале:
- Введите номер телефона Telegram в формате +79998887766
- Введите код подтверждения, который придет в Telegram
- При необходимости введите пароль двухфакторной аутентификации
- Введите номер телефона Telegram в формате
-
После успешной авторизации файл
будет автоматически создан в папкеsession.jsonconf
Ручное создание (для продвинутых пользователей)
-
Создайте директорию и файл:
-
Установите правильные права:
-
Файл будет автоматически заполнен при первой авторизации
Важные замечания
-
Файл
содержит:session.json- Данные авторизации
- Ключи сессии
- Информацию о DC (Data Center)
-
Безопасность:
- Не делитесь этим файлом с другими
- Храните его в защищенном месте
- При компрометации файла - удалите его и создайте заново
-
При проблемах с авторизацией:
Затем запустите утилиту снова для создания нового файла сессии
Расположение файла
По умолчанию утилита ищет файл сессии по пути:
./conf/session.json
Вы можете изменить расположение, отредактировав параметр в коде:
Использование
Запуск вручную
Сборка и установка
Запуск через systemd
-
Создайте сервисный файл:
-
Добавьте конфигурацию:
-
Включите и запустите сервис:
Запуск через cron
Добавьте в crontab ():
Структура данных
После выполнения программа создает:
conf/
└── session.conf # сессия с телеграм
news_data/
├── news.json # Основной файл с новостями
└── images/ # Директория с сохраненными изображениями
Формат новостного элемента:
Настройка логирования
Логи пишутся в:
- основные логи приложения/var/log/tg-news.log- Системный журнал (для сообщений через logger)
Для настройки собственного файла логов:
-
Создайте конфиг rsyslog:
-
Добавьте:
if $programname == 'tg_news' then /var/log/tg-news.log & stop -
Перезапустите rsyslog:
Ошибки
Возможные ошибки при эксплуатации утилиты
1. Ошибки авторизации
Симптомы:
- "авторизация не удалась: ..."
- "ошибка при вводе кода подтверждения"
- сессия не сохраняется
Причины и решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Неверный формат номера | Вводите номер в международном формате (+79998887766) |
| Неверный код подтверждения | Запросите новый код, проверьте SMS/Telegram |
| Требуется 2FA пароль | Введите пароль двухфакторной аутентификации |
| Проблемы с сессией | Удалите и переавторизуйтесь |
Фикс:
2. Ошибки доступа к каналу
Симптомы:
- "канал приватный или у вас нет доступа"
- "CHANNEL_INVALID"
Проверьте:
- Правильность username канала (без @)
- Ваш аккаунт имеет доступ к каналу
- Канал не был удален/заблокирован
3. Проблемы с файловой системой
Распространенные ошибки:
не удалось создать директорию: permission denied
ошибка записи файла: no space left on device
unexpected end of JSON input
Решение:
4. Ошибки API Telegram
Коды ошибок:
- лимит запросов (ждать X секунд)FLOOD_WAIT_X- проблема на стороне TelegramINTERNAL_SERVER_ERROR- проблемы с сетьюTIMEOUT
Что делать:
- Подождите указанное время при FLOOD_WAIT
- Проверьте интернет-соединение
- Попробуйте позже при проблемах с серверами Telegram
5. Проблемы с медиафайлами
Ошибки:
нет доступных размеров фото
ошибка загрузки файла: file reference expired
Решение:
- Удалите поврежденные файлы:
- Перезапустите утилиту для повторной загрузки
Ошибка "unexpected end of JSON input"
Эта ошибка возникает, когда утилита пытается прочитать пустой или невалидный JSON файл. Просто удалите файл и при следущем запуске он будет создан заново.
7. Критические ошибки
Если утилита падает с panic:
- Сообщите параметры запуска
- Приложите полный лог ошибки
- Проверьте версии зависимостей:
8. Частые вопросы
Q: Файл news.json постоянно перезаписывается A: Это нормальное поведение - файл обновляется при каждом запуске
Q: Не скачиваются новые сообщения A: Проверьте LIMIT в .env и наличие новых постов в канале
Q: Как очистить все данные?
Лицензия
MIT License. Смотрите файл LICENSE.