Enhance title generation

This commit is contained in:
vvzvlad
2025-04-09 02:48:02 +03:00
parent 2a8326be06
commit c78d8c93f6
2 changed files with 19 additions and 4 deletions
+10 -2
View File
@@ -172,8 +172,16 @@ class PostParser:
# Process long strings
cut_at = 37
if len(first_line) > cut_at: return f"{first_line[:cut_at]}..."
max_extra_chars = 15
if len(first_line) > cut_at:
# Find the next space after cut_at, but not more than 15 chars forward
extended_cut = cut_at
for i in range(cut_at, min(cut_at + max_extra_chars, len(first_line))):
extended_cut = i
if first_line[i] == ' ':
break
return f"{first_line[:extended_cut]}..."
return first_line
# Process media content
+9 -2
View File
@@ -116,13 +116,20 @@ class TestPostParserGenerateTitle(unittest.TestCase):
def test_generate_title_long_text_trimming(self):
long_text = "This is a very long line of text that definitely exceeds the maximum length allowed for a title, so it should be trimmed intelligently at the last space before the limit."
message = self._create_mock_message(text=long_text)
expected_title = "This is a very long line of text that..." #cut at 30 symbols
expected_title = "This is a very long line of text that..." #cut at 37
self.assertEqual(self.parser._generate_title(message), expected_title)
def test_generate_title_break_word_after_limit(self):
# Test with a specific text example from the user's query
text = "На прошлой неделе предложил своим подписчикам рассказать, как бы они хотели улучшить функциональность государственного сервиса"
message = self._create_mock_message(text=text)
expected_title = "На прошлой неделе предложил своим подписчикам..."
self.assertEqual(self.parser._generate_title(message), expected_title)
def test_generate_title_long_text_no_space_trimming(self):
long_text = "Thisisaverylonglineoftextthatdefinitelyexceedsthemaximumlengthallowedforatitlesoitshouldbetrimmedatthelimitbecausehasnospaces."
message = self._create_mock_message(text=long_text)
expected_title = "Thisisaverylonglineoftextthatdefinite..." #cut at 30 symbols
expected_title = "Thisisaverylonglineoftextthatdefinitelyexceedsthema..." #cut at 30+15 symbols without space
self.assertEqual(self.parser._generate_title(message), expected_title)
def test_generate_title_text_with_only_html_and_urls(self):