Скачать историю группы Телеграм

Я хочу скачать историю чата (все сообщения), опубликованные в публичной группе в Telegram. Как я могу сделать это с помощью Python?

Я нашел этот метод в API https://core.telegram.org/method/messages. getHistory, что, на мой взгляд, похоже на то, что я пытаюсь сделать. Но как я на самом деле это назову? Кажется, что для используемого протокола MTproto нет примеров Python.

Я также посмотрел на Bot API, но, похоже, у него нет метода загрузки сообщений.

siamii 10 Июн 2017 в 01:03
Bot api не имеет доступа к сообщениям. Для этого вам понадобится Telegram API.
11 Июн 2017 в 04:37

Вы также можете взглянуть на github.com/LonamiWebs/Telebackup, чтобы почерпнуть вдохновение ( у проекта все еще много недостатков), программа на Python, единственная цель которой — загрузить историю чата (следовательно, создать ее резервную копию).

15 Июн 2017 в 17:16

7 ответов

Теперь вы можете использовать TDesktop для экспорта чатов.

Вот запись в блоге об обновлении за август 2018 г.

Telegram MTProto сложно использовать новичкам, поэтому рекомендую telegram-cli.

Вы можете использовать сторонний скрипт tg-export, но все же Новичкам тоже непросто.

Sean 22 Янв 2020 в 11:09

Отличный способ использования Telegram API, не зависящий от языка, — это использование https://www.taas.ru/ .

Вам необходимо войти в систему и создать ключ API. Затем вы можете сделать следующий запрос, чтобы получить историю чата

GET https://www.t-a-a-s.ru/client
urmurmur 28 Ноя 2019 в 14:08

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

import telepot token = ‘your_token’ bot = telepot.Bot(token) tmp_history = bot.getUpdates() print(tmp_history[‘result’])

Но вы можете исчерпать лимит в 100 записей в истории, прочтите это об этом

Vadim 2 Дек 2018 в 10:40

С обновлением (август 2018 г.) приложение Telegram Desktop очень удобно поддерживает сохранение истории чата. Вы можете сохранить его в формате json или html.

Чтобы использовать эту функцию, убедитесь, что на вашем компьютере установлена ​​последняя версия Telegram Desktop, затем нажмите «Настройки»> «Экспорт данных Telegram».

newsha 2 Дек 2018 в 22:06
Это настоящая вещь.
14 Мар 2019 в 19:04

Да, но программно автоматизировать процесс может быть полезно. Представьте, что вам нужно сохранить 100 чатов, вы нажимаете вручную, чтобы экспортировать каждый из них, или вы делаете хороший скрипт, который можно запустить как задание cron? Я предпочитаю питон tbh;)

5 Апр 2019 в 15:12

принятый в настоящее время ответ предназначен для очень старых версий Telethon. В Telethon 1.0 код можно и нужно упростить до следующего:

Применение любого форматирования по-прежнему возможно, но hasattr больше не требуется. Например, if msg.media будет достаточно, чтобы проверить, есть ли в сообщении носитель.

Примечание: если вы используете Jupyter, вам нужно использовать async напрямую:

from telethon import TelegramClient client = TelegramClient(‘session_id’, api_id, api_hash) # Note `async with` and `async for` async with client: async for msg in client.iter_messages(chat, 10): print(msg.sender.first_name, ‘:’, msg.text)
Lonami 2 Ноя 2020 в 21:22
Переменная chat должна оцениваться с помощью chat = InputPeerChat(chat_id) ?
Foad S. Farimani
2 Апр 2020 в 20:09
Тогда что это за переменная chat ? это то же самое, что и chat_id ?
Foad S. Farimani

Еще по теме:  Метка для ссылки Телеграм бота

2 Апр 2020 в 20:16

chat — это просто пример, показывающий, что «все, что можно интерпретировать как чат», будет работать. Да, входные одноранговые узлы или идентификаторы чата работают нормально.

2 Ноя 2020 в 21:23
Как вместо этого получить историю сообщений из группового чата?
Aayush Neupane
18 Дек 2021 в 19:24

Вы можете использовать библиотеку Telethon. для этого вам необходимо зарегистрировать свое приложение и подключить к нему свой клиентский код (см. это). Затем, чтобы получить историю сообщений записи (например, канал, группа или чат):

from telethon.sync import TelegramClient from telethon.errors import SessionPasswordNeededError client = TelegramClient(username, api_id, api_hash, proxy=(«socks5», proxy_ip, proxy_port)) # if in your country telegram is banned, you can use the proxy, otherwise remove it. client.start() # for login if not client.is_user_authorized(): client.send_code_request(phone) try: client.sign_in(phone, input(‘Enter the code: ‘)) except SessionPasswordNeededError: client.sign_in(password=input(‘Password: ‘)) async for message in client.iter_messages(chat_id, wait_time=0): messages.append(Message(message)) # write your code
Muhammadreza Akhgari 21 Апр 2021 в 00:41

Вы можете использовать Telethon. Telegram API довольно сложен, и с телемарафоном вы можете начать использовать Telegram API за очень короткое время без каких-либо предварительных знаний об API.

pip install telethon

Затем зарегистрируйте свое приложение (взятое из телемарафона):

Затем, чтобы получить историю сообщений группы (при условии, что у вас есть идентификатор группы):

chat_id = YOUR_CHAT_ID api_id=YOUR_API_ID api_hash = ‘YOUR_API_HASH’ from telethon import TelegramClient from telethon.tl.types.input_peer_chat import InputPeerChat client = TelegramClient(‘session_id’, api_id=api_id, api_hash=api_hash) client.connect() chat = InputPeerChat(chat_id) total_count, messages, senders = client.get_message_history( chat, limit=10) for msg in reversed(messages): # Format the message content if getattr(msg, ‘media’, None): content = ‘> <>’.format( # The media may or may not have a caption msg.media.__class__.__name__, getattr(msg.media, ‘caption’, »)) elif hasattr(msg, ‘message’): content = msg.message elif hasattr(msg, ‘action’): content = str(msg.action) else: # Unknown message, simply print its class name content = msg.__class__.__name__ text = ‘[<>:<>] (ID=<>) <>: <> type: <>’.format( msg.date.hour, msg.date.minute, msg.id, «no name», content) print (text)

Пример взят и упрощен из примера телемарафона.

Foad S. Farimani 1 Апр 2020 в 19:23

Обратите внимание, если ваша группа является супергруппой, которую вам нужно рассматривать как канал, и используйте метод InputPeerChannel, который принимает как chat_id, так и access_hash группы.

11 Июн 2017 в 04:53

Также обратите внимание, что InteractiveTelegramClient перестанет поставляться с версией pip, поскольку она когда-либо предназначалась только для примера. Вместо этого используйте TelegramClient .

15 Июн 2017 в 17:14

Спасибо за совет. Обновлен ответ, чтобы использовать TelegramClient вместо InteractiveTelegramClient. Также спасибо за размещение примера использования TelegramClient на странице github. Это было действительно полезно!

Источник: question-it.com

Как архивировать контент Telegram для документации вторжения России в Украину

Telegram Icon

Мессенджер Telegram очень популярен в русскоязычном интернете. Сейчас, когда Facebook заблокирован, а Twitter «замедлен», это также одна из последних социальных сетей, полностью доступных российским интернет-пользователям.

В последние дни Telegram был крайне важным инструментом для документирования вторжения России в Украину – простые украинцы регулярно публикуют видео и фотографии, демонстрирующие масштабы разрушений, вызванных войной. Эти материалы позволили нам провести геолокацию множества ударов по мирным жителям и установить факты использования российскими военными кассетных боеприпасов.

Еще по теме:  Как включить камеру в Телеграмме при звонке

Однако онлайн-среда в России и Украине крайне нестабильна. Архивируя контент, снятый на местах, можно обеспечить его дальнейшее использование исследователями, даже если пользователь удалит пост, если будет удален весь канал или вся платформа станет недоступной. Для любого типа интернет-контента ссылки через некоторое время перестают работать (этот феномен известен как «гниение ссылок»). Архивация контента позволяет сохранить его на многие годы.

Example of a Telegram post from Mariupol, Ukraine which was removed by moderators

Однако у нас есть копия, поскольку мы заархивировали его, как только увидели, и вы можете сделать то же самое.

Дело в том, что Telegram – одна из наиболее доступных для архивации коммуникационных платформ, а также одна из последних, которые сохраняют метаданные изображений. Это представляет риск для неприкосновенности личных данных пользователей, но зачастую очень полезно для исследователей открытых источников. Форматы экспорта Telegram-чатов также облегчают перевод текстов целых каналов с помощью гугл-переводчика.

Контент Telegram может быть полезен и в других случаях. Например, ранее команда Bellingcat регулярно архивировала посты в Telegram для многих расследований, посвященных ультраправым группам и теории заговора QAnon.

Хотя приведенные ниже примеры относятся к группам, не имеющим отношения к упомянутым выше темам, описанные здесь принципы можно применить к любой группе или посту в Telegram.

Как заархивировать конкретный пост, изображение или видео

Самый простой способ архивировать контент — использовать приложение Telegram для рабочего стола, доступное для Windows, Mac и Linux. Там можно сохранять контент, просто нажав правой кнопкой на фото или видео и выбрав «Сохранить как…». Если изображение прикреплено как файл, в нем будут содержаться и все оригинальные метаданные.

Telegram screenshot

Это можно делать и с любыми сообщениями, которые вы просматриваете в приложении Telegram, даже если вы не являетесь членом группы. Если у вас есть ссылка на пост в формате https://t.me/euronews_tr/2011, нажав «просмотреть в канале», вы сможете открыть ее в приложении Telegram.

Telegram screenshot

Кроме того, стоит сделать скриншот оригинала поста, чтобы сохранить таймстамп, имя пользователя, а также запомнить, где вы нашли этот контент. Также можно сохранить полную копию содержания всего поста и его метаданных, переслав его в Show Json Bot и сохранив возвращенный JSON-контент в отдельный текстовый файл. JSON – это специфический формат файлов для информации, читаемой компьютером.

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

Telegram screenshot

Telegram screenshot

Как заархивировать целый канал или группу

Telegram превосходит другие чат-платформы по возможностям экспорта полной истории чатов в форматах, которые могут быть прочитаны как человеком, так и компьютером – в том числе файлов и других медиаформатов. Однако эта функция недоступна в Mac OS. Самый простой обходной путь (если вы используете Mac или Linux) – воспользоваться виртуальной машиной Windows. VMWare Fusion предоставляет бесплатные лицензии некоммерческим пользователям. Руководство по использованию этой программы доступно здесь.

Еще по теме:  Умные уведомления в Телеграм что это

Сначала откройте чат в приложении Telegram: выберите его из чатов или найдите с помощью поиска. Чатами в Telegram могут быть личная переписка, каналы (когда один пользователь транслирует что-то аудитории) или группы (где общаются много пользователей). Иногда публичными каналами делятся с помощью ссылок. Если у вас есть такая ссылка в формате https://t.me/s/[username], например, https://t.me/s/euronews_tr, то, нажав на название канала, вы сможете открыть его в приложении Telegram, если это приложение установлено на вашем компьютере. Такие превью-ссылки также позволяют открывать некоторые каналы, скрытые от поиска.

Если у вас открыта группа или канал (даже если у вас открыт предпросмотр, и вы на них не подписаны), нажмите кнопку меню в правом верхнем углу экрана и выберите «экспортировать историю чата».

Telegram screenshot

Вы можете выбирать из нескольких настроек экспорта. Поставив везде галочки, вы экспортируете все содержимое канала. Выставив максимальное ограничение размера, можно заархивировать как можно больше контента, однако стоит отметить, что это значительно увеличивает время экспорта.

Telegram screenshot

Экспортировать можно в двух форматах – HTML или JSON. Формат HTML приспособлен для чтения человеком. Его можно открыть в браузере, он наиболее удобен для изучения информации вручную. Формат JSON предназначен для чтения компьютером и наиболее полезен при экспорте данных для дальнейшего анализа.

Telegram screenshot

Кроме того, при скачивании можно установить временной диапазон, что может ускорить процесс, если вам нужен архив только части чата или канала. Наконец, нажав «Экспортировать», вы запустите процесс экспорта. В случае если вы имеете дело с длинными историями чатов, он может занять до нескольких часов.

Telegram screenshot

Чтобы просмотреть результаты экспорта, откройте в браузере файл messages.html.

Telegram screenshot

К сожалению, эта методика пока не позволяет экспортировать комментарии в каналах.

Как переводить сообщения в Telegram

Telegram недавно добавил в мобильное приложение опцию перевода. Чтобы активировать эту опцию, перейдите в Настройки > Язык > Показывать кнопку перевода Чтобы перевести сообщение, откройте контекстное меню, нажав на сообщение и удерживая его, а затем выберите опцию «Перевести».

Telegram screenshot

Однако эта опция позволяет переводить только одно сообщение за раз.

Можно перевести сразу весь контент канала, экспортировав историю чата в HTML (как описано выше) и открыв его в Google Chrome. Если Chrome не предлагает перевести страницу, можно нажать на нее правой кнопкой и выбрать «Перевести на английский» (или другой предпочитаемый вами язык).

Скрейпинг и API

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

Еще один метод скачивания сообщений из Telegram – использование скрапера, не связанного с API. Такой подход может дать результаты быстрее, чем функции экспорта, встроенные в Telegram, но он работает только для публичных каналов, а не для групповых чатов. Для этого хорошо подходит скрапер от JustAnotherArchivist, команда Bellingcat создала его копию (fork) для поддержки поиска информации о медиа и переадресации каналов.

Эта статья была опубликована на сайте Bellingcat. Печатается на сайте IJNet с разрешения.

Источник: ijnet.org

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