From e7f7520f79e80562ad9a5fc1f093231889fcaab7 Mon Sep 17 00:00:00 2001 From: vvzvlad Date: Sat, 1 Feb 2025 20:37:20 +0300 Subject: [PATCH] Simplify media group processing and message parsing logic --- telegram_client.py | 58 +++++++--------------------------------------- 1 file changed, 9 insertions(+), 49 deletions(-) diff --git a/telegram_client.py b/telegram_client.py index fcd1b16..89e0968 100644 --- a/telegram_client.py +++ b/telegram_client.py @@ -137,6 +137,7 @@ class TelegramClient: for r in message.reactions.reactions ) processed_text += reactions_text + raw_text += reactions_text # Add reactions to raw text # Add media previews to text if media: @@ -330,61 +331,20 @@ class TelegramClient: "details": f"Message {post_id} in {channel} does not exist" } - # Check for media group - media_group = [] - if message.media_group_id: - logger.debug(f"Processing media group {message.media_group_id} for message {post_id}") - current_id = post_id - # Collect previous messages in group - while True: - prev_msg = await self.client.get_messages( - chat_id=channel, - message_ids=current_id - 1 - ) - if prev_msg and prev_msg.media_group_id == message.media_group_id: - logger.debug(f"Found previous message in group: {prev_msg.id}") - media_group.insert(0, prev_msg) - current_id -= 1 - else: - break - - # Collect next messages in group - current_id = post_id - while True: - next_msg = await self.client.get_messages( - chat_id=channel, - message_ids=current_id + 1 - ) - if next_msg and next_msg.media_group_id == message.media_group_id: - logger.debug(f"Found next message in group: {next_msg.id}") - media_group.append(next_msg) - current_id += 1 - else: - break - - # Process all messages in group - all_messages = media_group + [message] - logger.debug(f"Combined {len(all_messages)} messages in media group") - parsed_messages = [await self._parse_message(msg) for msg in all_messages] + # Process the message + parsed_message = await self._parse_message(message) # Combine results combined = { "id": post_id, "date": message.date.isoformat(), "title": self._generate_title(message.text or message.caption or ""), - "html": "".join([m["html"] for m in parsed_messages if m["html"]]), - "text": "".join([m["text"] for m in parsed_messages if m["text"]]), - "raw_messages": [ - { - "id": msg.id, - "date": msg.date.isoformat(), - "media_group_id": msg.media_group_id, - "raw": self._parse_raw_message(msg) - } for msg in all_messages - ], - "views": max(m["views"] for m in parsed_messages), - "media_group_id": message.media_group_id, - "author": parsed_messages[0]["author"] if parsed_messages else "" + "html": parsed_message["html"], + "text": parsed_message["text"], + "raw": self._parse_raw_message(message), + "views": parsed_message["views"], + "media_group_id": parsed_message["media_group_id"], + "author": parsed_message["author"] } logger.debug(f"Combined result: {combined}")