diff --git a/telegram_client.py b/telegram_client.py index daa0b8f..704c55d 100644 --- a/telegram_client.py +++ b/telegram_client.py @@ -157,7 +157,7 @@ class TelegramClient: f"" ) if previews: - previews_container = f"
{''.join(previews)}
" + previews_container = f"
{''.join(previews)}
" processed_text = previews_container + processed_text # Convert newlines to HTML breaks AFTER adding reactions @@ -286,6 +286,15 @@ class TelegramClient: "thumbnail": thumbnail } + def _generate_title(self, raw_text: str) -> str: + if not raw_text: + return "" + # Берем первую непустую строку + first_line = next((line.strip() for line in raw_text.split('\n') if line.strip()), "") + # Обрезаем до 50 символов и убираем HTML-теги + clean_line = re.sub('<[^<]+?>', '', first_line) + return clean_line[:50].strip() + async def get_post(self, channel: str, post_id: int) -> dict: try: message = await self.client.get_messages( @@ -336,9 +345,14 @@ class TelegramClient: parsed_messages = [await self._parse_message(msg) for msg in all_messages] # Combine results + # Берем исходный текст из первого сообщения до обработки + raw_text = message.text or message.caption or "" + title = self._generate_title(raw_text) + combined = { "id": post_id, "date": message.date.isoformat(), + "title": title, "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