微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Telethon:有没有办法从某个频道更快地下载消息?

如何解决Telethon:有没有办法从某个频道更快地下载消息?

我正在从具有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 举报,一经查实,本站将立刻删除。