Как парсить Telegram канал при помощи php

Для таких целей придётся использовать клиентский API (Core API). Что это такое и базовое описание, можно прочитать на официальном сайте Telegram. А вот что касается документации, то, к сожалению, на оф.сайте она сильно устаревшая, благо нашлись добрые люди, которые создали и поддерживают актуальную неофициальную документацию.

Для работы с Core API есть готовые библиотеки, например, Telethon для Python 3. В Readme на гитхабе есть примеры с авторизацией и получением файла сессии, я же покажу пример, как прочитать самое свежее сообщение в канале:

Парсить можно при помощи апи и PHP, неплохой пример работы парсинга https://coderun.ru/telegram-populyarnye-obsuzhdeniya/

WEB-версия парсится на ура. После обновления t.me, не нужно искать ID последнего сообщения через API, все это уже можно глянуть через браузер.

Источник: husl.ru

Микросервисы на php и swoole для конвертации телеграм каналов в RSS

Микросервисы на php и swoole для конвертации телеграм каналов в RSS

Кращий парсер для #телеграм, бери та користуйся!

2019-03-12 в 12:37, admin , рубрики: madelineproto, php, rss, swoole, telegram, многопоточность, параллельное программирование, парсинг, Системы обмена сообщениями

Микросервисы на php и swoole для конвертации телеграм каналов в RSS - 1

В предыдущем посте я рассказал про то, как настроить и использовать php телеграм клиент madelineProto для парсинга постов. Но при использовании библиотеки я столкнулся с несколькими недостатками:

  • Долгая обработка запросов из-за авторизации телеграм клиента;
  • Неудобная настройка;
  • Проблемы с отдачей изображений из постов.

Поэтому решил создать два микросервиса на php для парсинга телеграм каналов, используя асинхронное расширение swoole. Теперь эти пакеты упрощают и ускоряют работу с telegram api (не путать с bot api) в нескольких моих проектах. Хочется поделится ими и услышать мнение других разработчиков.

Еще по теме:  А вдруг она шкура в Телеграм

Под катом расскажу об архитектуре, использовании разных областей видимости в swoole server и устранении последствий ошибок в сторонних библиотеках и внешних api. Ссылки на репозитории с исходным кодом и на тестовый сервер — в конце поста.

Общая архитектура

Изначально планировался один пакет, который выступал бы в качестве парсера telegram и генератора RSS потоков. Но в процессе разработки код становился все более и более неподдерживаемым. Стало ясно, что нужно строже следовать одному из базовых канонов разработки: метод или библиотека должны решать только одну задачу.

В результате декомпозиции появились два микросервиса: TelegramSwooleClient и TelegramRSS.

схема

ПАРСЕР YOUTUBE В ТЕЛЕГРАМ БОТЕ НА PHP

Общая схема сервиса по генерации RSS потоков из telegram каналов

TelegramRSS
тот микросервис отвечает за коммуникацию с пользователями и генерацию RSS потоков. Упрощенная схема его работы:

  1. Получаем запрос от клиента;
  2. Определяем, что запросили: главную страницу, favicon, rss, json или media файл;
  3. Если пользователь сделал некорректный запрос, или слишком часто обращается к api — добавляем ip в blacklist;
  4. Если пользователь в blacklist — выдаем ошибку;
  5. Запрашиваем сообщения из телеграм канала или конкретный медиафайл из поста через http запрос к TelegramSwooleClient;
  6. Если запросили media файл: даем команду TelegramSwooleClient скачать файл во временную папку и вернуть путь до этого файла. Отдаем файл и удаляем его;
  7. Если запросили RSS: парсим ответ TelegramSwooleClient и генерируем RSS;
  • Не нужен кеш для хранения черного списка ip адресов (или других данных). Все необходимое хранится в памяти, в экземпляре класса, доступном во всех запросах.
  • Проще конфигурация nginx: проксируем запросы на ip микросервиса и не беспокоимся о безопасности файлов: .env или *.session.madeline и любых других.
Еще по теме:  Как использовать стикеры из Телеграмма в ВК на ПК

TelegramSwooleClient

Эта библиотека / микросервис отвечает за коммуникацию с telegram api. По сути — это обертка над madelineProto, задача которой держать телеграм клиент в памяти и при получении http запроса вызывать соответствующий метод madelineProto.

Допустим, нам нужно получить 10 последних постов из канала. Пример кода из документации madelineProto:

if (!file_exists(‘madeline.php’)) < copy(‘https://phar.madelineproto.xyz/madeline.php’, ‘madeline.php’); >include ‘madeline.php’; $MadelineProto = new danogMadelineProtoAPI(‘session.madeline’); $MadelineProto->start(); $messages_Messages = $MadelineProto->messages->getHistory([ ‘peer’ =>’breakingmash’, ‘offset_id’ => 0, ‘offset_date’ => 0, ‘add_offset’ => 0, ‘limit’ => 10, ‘max_id’ => 0, ‘min_id’ => 0, ‘hash’ => 0, ]);

[Из песочницы] Парсинг telegram каналов для агрегатора контента на PHP

Несколько лет назад я начал разрабатывать свой агрегатор контента, что бы упростить свой серфинг в сети. Изначально я парсил только rss, vk и facebook, но в прошлом году решил сделать полный рефакторинг проекта: отказаться от парсинга на клиенте, сделать нормальный back-end, использовать базу данных для хранения данных и расширить список поддерживаемых ресурсов.

Помимо стандартного набора из rss, fb, vk, twitter, instagram, youtube я добавил поддержку произвольных открытых каналов из telegram.

image

Под катом пошаговая инструкция, как парсить любые каналы в telegram без регистрации и смс.
Читать дальше → https://habrahabr.ru/post/349942/

  • Запись понравилась
  • 0 Процитировали
  • 0 Сохранили
  • 0Добавить в цитатник
  • 0Сохранить в ссылки

Источник: www.liveinternet.ru

Рейтинг
( Пока оценок нет )
Загрузка ...