From 1c190b69ac3bad33eec8b8ed26ef41a3241186cb Mon Sep 17 00:00:00 2001 From: vvzvlad Date: Sun, 2 Feb 2025 02:22:39 +0300 Subject: [PATCH] Refactor author information extraction in Telegram client --- telegram_client.py | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/telegram_client.py b/telegram_client.py index 64d1f15..0637add 100644 --- a/telegram_client.py +++ b/telegram_client.py @@ -164,20 +164,6 @@ class TelegramClient: # Convert newlines to HTML breaks AFTER adding reactions processed_text = processed_text.replace('\n', '
') - # Extract author information - #author_str = "" - #if message.sender_chat: - # title = getattr(message.sender_chat, "title", "").strip() - # username = getattr(message.sender_chat, "username", "").strip() - # author_str = f"{title} by @{username}" if username else title - #elif message.from_user: - # first = getattr(message.from_user, "first_name", "").strip() - # last = getattr(message.from_user, "last_name", "").strip() - # username = getattr(message.from_user, "username", "").strip() - # name = " ".join(filter(None, [first, last])) - # author_str = f"{name} by @{username}" if username else name - #else: - # author_str = "Unknown author" return { "text": re.sub('<[^<]+?>', '', raw_text).strip(), @@ -358,7 +344,6 @@ class TelegramClient: "html": "".join([m["html"] for m in parsed_messages if m["html"]]), "text": "".join([m["text"] for m in parsed_messages if m["text"]]), "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 "" } logger.debug(f"Combined result: {combined}") @@ -417,6 +402,23 @@ class TelegramClient: } def _get_author_info(self, message: Message) -> dict: + # Extract author information + author_str = "" + if message.sender_chat: + title = getattr(message.sender_chat, "title", "").strip() + username = getattr(message.sender_chat, "username", "").strip() + author_str = f"{title} by @{username}" if username else title + elif message.from_user: + first = getattr(message.from_user, "first_name", "").strip() + last = getattr(message.from_user, "last_name", "").strip() + username = getattr(message.from_user, "username", "").strip() + name = " ".join(filter(None, [first, last])) + author_str = f"{name} by @{username}" if username else name + else: + author_str = "Unknown author" + return author_str + + if message.sender_chat: return { "type": "channel",