Как спарсить из телеграм-канала сообщения, опубликованные за последние 5 минут? (Python, Telethon)
Есть задача спарсить и загрузить в json-файл сообщения из определенного телеграм-канала с помощью Python (я использую библиотеку Telethon).
Но нужны не все посты, а только те, что были опубликованы за последнее время, например, 5 минут.
Для получения всех сообщений использовал такой код:
from telethon import TelegramClient
from telethon.errors import SessionPasswordNeededError
from telethon.tl.functions.messages import (GetHistoryRequest)
from telethon.tl.types import (
PeerChannel
)
# Setting configuration values
api_id = 57272
api_hash = '...'
phone = '...'
username = '...'
# Create the client and connect
client = TelegramClient(username, api_id, api_hash)
async def main(phone):
await client.start()
print("Client Created")
# Ensure you're authorized
if await client.is_user_authorized() == False:
await client.send_code_request(phone)
try:
await client.sign_in(phone, input('Enter the code: '))
except SessionPasswordNeededError:
await client.sign_in(password=input('Password: '))
me = await client.get_me()
user_input_channel = input('enter entity(telegram URL or entity id):')
if user_input_channel.isdigit():
entity = PeerChannel(int(user_input_channel))
else:
entity = user_input_channel
my_channel = await client.get_entity(entity)
offset_id = 0
limit = 100
all_messages = []
total_messages = 0
total_count_limit = 0
while True:
print("Current Offset ID is:", offset_id, "; Total Messages:", total_messages)
history = await client(GetHistoryRequest(
peer=my_channel,
offset_id=offset_id,
offset_date=None,
add_offset=0,
limit=limit,
max_id=0,
min_id=0,
hash=0
))
if not history.messages:
break
messages = history.messages
for message in messages:
all_messages.append(message.to_dict())
offset_id = messages[len(messages) - 1].id
total_messages = len(all_messages)
if total_count_limit != 0 and total_messages >= total_count_limit:
break
with client:
client.loop.run_until_complete(main(phone))
Как теперь заставить его парсить только последние сообщения?
Источник: Stack Overflow на русском