jabnews/docs/update-2.md
2026-03-23 00:59:47 +03:00

64 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Доработка 2
## Задание
1. необходимо доработать rss адаптер, получающий новости, и модуль отправки в жаббер
### Улучшение 1
1. если RSS item содержит поле description, то текст новости необходимо снабдить этой информацией
2. в этом случае формат новости должен быть расширен:
```
title
description
link
```
т.е. между title и description - 2 перевода строки, и между description и link - тоже 2 перевода строки
3. если description содержит HTML тэги, то выводить нужно голый текст, предварительно очистив от тэгов
### Улучшение 2
1. если RSS item содержит элемент enclosure с параметром type="image/*" (любой image, но у меня пример только для image/jpeg есть - возможно, бывают другие варианты, нужно отработать по маске)
2. то нужно воспользоваться XEP-0071 и отправить картинку вместе с текстом новости - шаблонный пример использования
```
import slixmpp
from slixmpp.stanza import Message
from slixmpp.plugins.xep_0071 import XHTML_IM
class XHTMLBot(slixmpp.ClientXMPP):
async def send_xhtml(self, jid_to):
msg = self.make_message(mto=jid_to)
# Устанавливаем обычный текст (обязательно для fallback)
msg['body'] = 'Посмотри картинку: https://example.com/image.jpg'
# Формируем XHTML-содержимое
# Обратите внимание: тег <img> должен быть внутри <body> в пространстве имен XHTML
xhtml_body = '<body xmlns="http://www.w3.org/1999/xhtml">' + \
' <p>Смотри: <img src="https://example.com/image.jpg" /></p>' + \
'</body>'
# Включаем XHTML-IM плагин
msg['html']['body'] = xhtml_body
msg.send()
```
3. картинка должна размещаться ДО текста новости
4. Fallback (msg['body']) при XHTML-сообщении — для клиентов без XEP-0071 в тексте писать просто текст без ссылок на картинку
5. при наличии нескольких enclosure брать первый с подходящим type
### Если новость имеет и enclosure-картинку, и description
— порядок в XHTML-теле: <img> → title → description → link