add fwd title prefix

This commit is contained in:
vvzvlad
2025-04-18 03:52:43 +03:00
parent 8282f84b4a
commit bb5931389a
2 changed files with 39 additions and 10 deletions
+14 -8
View File
@@ -214,11 +214,22 @@ class PostParser:
def _generate_title(self, message: Message) -> str: #Tests: tests/postparser_gen_title.py
"""Generate a title for a message, based on its content."""
title = None
# Check for service messages first
service_message_title = self._service_message_title(message)
if service_message_title: return service_message_title
title = self._service_message_title(message)
if title is None: title = self._generate_base_title(message)
if title is None: title = self._media_message_title(message)
if title is None: title = "❓ Unknown Post"
if message.forward_origin: title = f"FWD: {title}"
return title
def _generate_base_title(self, message: Message) -> str:
"""Generates the base title without the FWD prefix."""
# --- Text Processing --- (Phase 1: Process text if available)
text = message.text or message.caption or ''
text_stripped = text.strip()
@@ -271,12 +282,7 @@ class PostParser:
if text_has_urls: # If original text had any URL (and wasn't YouTube/Webpage with title)
return "🔗 Web link"
# Process media content (if no suitable text title)
media_title = self._media_message_title(message)
if media_title: return media_title
# If nothing matches
return "❓ Unknown Post"
def _format_forward_info(self, message: Message) -> Union[str, None]:
if forward_origin := getattr(message, "forward_origin", None):
+25 -2
View File
@@ -434,9 +434,32 @@ class TestPostParserGenerateTitle(unittest.TestCase):
def test_generate_title_forwarded_post(self):
"""Forwarded post should have title 'FWD: ...'"""
forward_origin_mock = MagicMock()
message = self._create_mock_message(text="Forwarded post", forward_origin=forward_origin_mock)
message = self._create_mock_message(text="Forwarded post text line 1.\nLine 2", forward_origin=forward_origin_mock)
title = self.parser._generate_title(message)
self.assertTrue(title.startswith("FWD:"), f"Title for forwarded post should start with 'FWD:', got: {title}")
self.assertEqual(title, "FWD: Forwarded post text line 1")
def test_generate_title_forwarded_photo(self):
"""Forwarded photo should have title 'FWD: ...'"""
forward_origin_mock = MagicMock()
message = self._create_mock_message(media=MessageMediaType.PHOTO, caption="Short cap", forward_origin=forward_origin_mock)
title = self.parser._generate_title(message)
# Media title is used because caption is short
self.assertEqual(title, "FWD: 📷 Photo")
def test_generate_title_forwarded_photo_long_caption(self):
"""Forwarded photo with long caption should use caption for title 'FWD: ...'"""
forward_origin_mock = MagicMock()
message = self._create_mock_message(media=MessageMediaType.PHOTO, caption="This is a long enough caption for photo", forward_origin=forward_origin_mock)
title = self.parser._generate_title(message)
self.assertEqual(title, "FWD: This is a long enough caption for photo")
def test_generate_title_forwarded_long_text(self):
"""Forwarded long text should use text for title 'FWD: ...'"""
forward_origin_mock = MagicMock()
message = self._create_mock_message(text="This is a long enough text to be forwarded, very long", forward_origin=forward_origin_mock)
title = self.parser._generate_title(message)
self.assertEqual(title, "FWD: This is a long enough text to be forwarded, very...")
if __name__ == '__main__':