Implement URL-based title generation

This commit is contained in:
vvzvlad
2025-04-08 18:38:13 +03:00
parent ee56ac41f2
commit 2a8326be06
2 changed files with 27 additions and 5 deletions
+7
View File
@@ -145,6 +145,13 @@ class PostParser:
# If there was a YouTube link
if re.search(r'(?:youtube\.com|youtu\.be)', text_stripped.lower()):
return "🎥 YouTube Link"
# Check if we have a web_page with title and text is basically just a URL
if message.web_page and message.web_page.title:
# Проверяем, что текст - это по сути только URL
url_match = re.match(r'^(https?://[^\s<>"\']+)$', text_stripped)
if url_match:
return f"🔗 {message.web_page.title}"
# Otherwise, it's a normal web link
return "🔗 Web link"
+20 -5
View File
@@ -133,11 +133,6 @@ class TestPostParserGenerateTitle(unittest.TestCase):
message = self._create_mock_message(text="<br> https://link.com \n ")
self.assertEqual(self.parser._generate_title(message), "🔗 Web link")
def test_generate_title_webpage_preview_only(self):
web_page_mock = MagicMock()
web_page_mock.title = "Web page title"
message = self._create_mock_message(web_page=web_page_mock, text=" ") # Text is whitespace only
self.assertEqual(self.parser._generate_title(message), "🔗 Web page title")
def test_generate_title_webpage_preview_ignored_with_media(self):
web_page_mock = MagicMock()
@@ -169,5 +164,25 @@ class TestPostParserGenerateTitle(unittest.TestCase):
message = self._create_mock_message(media=MessageMediaType.WEB_PAGE, text="Check this out")
self.assertEqual(self.parser._generate_title(message), "Check this out")
def test_generate_title_webpage_with_url_text(self):
"""Test case that reproduces real issue with VK video link."""
# Создаем мок для web_page
web_page_mock = MagicMock()
web_page_mock.title = "Web page title"
# Создаем сообщение с текстом URL и mock web_page
message = self._create_mock_message(
web_page=web_page_mock,
text="https://vkvideo.ru/video295754128_456239449"
)
self.assertEqual(self.parser._generate_title(message), "🔗 Web page title")
def test_generate_title_webpage_without_url_text(self):
web_page_mock = MagicMock()
web_page_mock.title = "Web page title"
message = self._create_mock_message(web_page=web_page_mock) # Text is whitespace only
self.assertEqual(self.parser._generate_title(message), "🔗 Web page title")
if __name__ == '__main__':
unittest.main()