问题描述
我正在从具有200万条消息的频道下载所有消息,而最初的5K消息很快就被下载了,但随后我认为Telegram确实在某种程度上限制了他们的工作。有没有一种方法可以改善它,而无需花费很多时间?这是我写的,非常适合带有数千条消息的频道。
class TelegramMessages(TelegramSession):
def __init__(self):
super().__init__()
self.msg_json_path = os.path.join(
self.telegram_data_path,self.group + '_group_messages' + '.json')
def write_messages_to_file(self,msg_list):
with open(self.msg_json_path,'w') as file:
file.write(json.dumps(msg_list,indent=4,sort_keys=True,default=str,ensure_ascii=False))
async def get_msg_list(self):
self.logging.info(
'Downloading message list from Telegram channel ...' + self.group)
msg_list = []
async for message in self.client.iter_messages(self.group):
try:
msg_dict = message.to_dict()
msg_list.append(msg_dict)
self.write_messages_to_file(msg_list)
except AttributeError as a_error:
self.logging.warning(
str(a_error) + '<-- found missing data in message')
def trigger_message_loop(self):
if os.path.isfile(self.msg_json_path):
self.logging.info('JSON message file is already here,skipping')
pass
else:
self.client = TelegramClient(
self.full_session_path,self.api_id,self.api_hash)
self.client.start(self.phone_number)
loop = asyncio.get_event_loop()
loop.run_until_complete((self.get_msg_list()))
self.client._disconnect()
欢迎任何提示或改进!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)