Пост

Извлекаем полезную информацию из Telegram на Python. Часть 1

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

Для удобства исходники выложены в репозиторий на gitverse.

📌 Задача

Выгрузить все изображения (документы, аудиофайловы) из открытого Telegram-канала в автоматическом режиме.

📌 Рабочая станция

Виртуальная машина с Debian 12 на борту.

📌 Подготовка

  • Для начала получим параметры для доступа к API Telegram

    • Идем в кабинет и авторизовываемся.

    • На странице API development tools создаем новое приложение и забираем App api_id и App api_hash.

  • Устанавливаем необходимые для работы пакеты

1
sudo apt install git python3 python3-pip python3-venv -y
  • Скачиваем демонстрационный проект с gitverse
1
git clone https://gitverse.ru/desoft/telethoner.git
  • Создаем виртуальное окружение и подгружаем зависимости
1
2
3
4
cd telethoner
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
  • В скрипте downloader.py прописываем полученные ранее App api_id и App api_hash в константы API_ID и API_HASH соответственно.

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

  • При первом запуске для получения доступа к API Telegram необходимо будет войти под своей учетной записью в интерактивном режиме (вводим номер телефона, получаем и заполняем код).
1
2
3
Please enter your phone (or bot token): +7...............
Please enter the code you received: 00000
Signed in successfully as <USER>; 

В корне создастся файл с расширением .session, который будет использоваться для автоматической аутентификации при последующих запусках.

  • В качестве примера добавлена обработка трех видов контента - документы, фото и музыка, что соответствует значениям document, photo, music параметра content_type.

  • Запускаем

1
2
# скачиваем 10 прикрепленных изображений к последним постам в Telegram-канале Хабра
python3 downloader.py --channel_url=https://t.me/habr_com --content_type=photo --path_data_folder=myfolder --limit=10
Больше полезной информации в Telegram-канале