Implement URL-based title generation
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
Reference in New Issue
Block a user