tgarc (Telegram)
Последний коммит в репозитории — 15 декабря 2023 года. tgarc построен на библиотеке Pyrogram, репозиторий которой архивирован (последний выпуск на PyPI — 2.0.106, апрель 2023 года). Пакета tgarc на PyPI нет. Для новых задач рассмотрите официальный экспорт Telegram Data Take-Out или tdl.
tgarc — небольшая утилита командной строки, которая выгружает сообщения из каналов и чатов Telegram в формате JSON Lines и скачивает приложенные медиафайлы. Работает от имени вашего пользовательского аккаунта через Telegram API (MTProto) с помощью Pyrogram.
- Репозиторий Ruarxive: github.com/ruarxive/tgarc — форк github.com/AduchiMergen/tgarc, код в обоих совпадает.
- Лицензия: CC0 1.0 · Язык: Python · Версия в
setup.py: 0.1.4.
Установка
Пакета на PyPI нет, устанавливайте из GitHub (как указано в README):
pipx install git+https://github.com/AduchiMergen/tgarc.git
# или
pip install git+https://github.com/AduchiMergen/tgarc.git
Зависимости: pyrogram, tgcrypto, click, pick. Минимальная версия Python в setup.py не указана.
Команды сверены с README и
--helpверсии 0.1.4 (октябрь 2026).
Настройка
- Создайте приложение на my.telegram.org/apps и получите
api_idиapi_hash. - Выполните
tgarc configureи введитеapi_idиapi_hashпо запросу. - Pyrogram запросит номер телефона и код подтверждения из Telegram.
Настройки и сессия хранятся в каталоге ~/.tgarc/: файл config (INI с ключами api_id, api_hash), файл сессии Pyrogram и файл update с номерами последних выгруженных сообщений. Завершить сессию можно командой tgarc logout.
Команды
| Команда | Что делает |
|---|---|
tgarc configure | Сохраняет api_id/api_hash и выполняет вход в аккаунт |
tgarc save [OPTIONS] [SRC]... | Выгружает каналы и чаты по имени, @username, идентификатору или ссылке |
tgarc logout | Завершает сессию текущего пользователя |
Опции save
| Опция | Описание |
|---|---|
-o, --output TEXT | Каталог для результатов; по умолчанию создаётся tgarc-<дата>_<время> в текущем каталоге |
--input FILENAME | Файл со списком каналов и чатов (по одному на строку) |
--update | Выгрузить только сообщения, появившиеся после предыдущего запуска |
--video / --no-video | Скачивать или нет видео (по умолчанию скачивает) |
--pictures / --no-pictures | Скачивать или нет фотографии |
--files / --no-files | Скачивать или нет остальные файлы (audio, document, sticker, animation, voice, video_note) |
--max-size INTEGER | Максимальный размер одного файла в МБ |
--private | Интерактивно выбрать диалоги из списка ваших чатов с включённой защитой содержимого |
--format [csv|json] | Формат сообщений; реализован только json (JSON Lines), csv вызывает ошибку |
Примеры
# Выгрузить два канала с медиа
tgarc save varlamov tv2tomsknews -o ./tg-archive
# Только тексты сообщений, без медиа
tgarc save varlamov --no-video --no-pictures --no-files -o ./tg-text
# Список каналов из файла
tgarc save --input channels.txt
# Догрузить новые сообщения после прошлого запуска (в новый каталог)
tgarc save --update --input channels.txt -o ./tg-update-2026-10-12
Формат результата
tg-archive/
├── varlamov/ # @username канала или его числовой ID
│ ├── messages.jsonl # сообщения, по одному JSON-объекту Pyrogram в строке
│ ├── <file_unique_id>/ # каталог с одним скачанным медиафайлом
│ └── ...
└── tv2tomsknews/
└── ...
Каждая строка messages.jsonl — сериализованный объект сообщения Pyrogram. Медиафайлы сохраняются в подкаталоги, названные по file_unique_id.