add fwd title prefix
This commit is contained in:
+14
-8
@@ -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):
|
||||
|
||||
@@ -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__':
|
||||
|
||||
Reference in New Issue
Block a user