2.8 KiB
2.8 KiB
Доработка 2
Задание
- необходимо доработать rss адаптер, получающий новости, и модуль отправки в жаббер
Улучшение 1
- если RSS item содержит поле description, то текст новости необходимо снабдить этой информацией
- в этом случае формат новости должен быть расширен:
title
description
link
т.е. между title и description - 2 перевода строки, и между description и link - тоже 2 перевода строки
- если description содержит HTML тэги, то выводить нужно голый текст, предварительно очистив от тэгов
Улучшение 2
- если RSS item содержит элемент enclosure с параметром type="image/*" (любой image, но у меня пример только для image/jpeg есть - возможно, бывают другие варианты, нужно отработать по маске)
- то нужно воспользоваться 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()
- картинка должна размещаться ДО текста новости
- Fallback (msg['body']) при XHTML-сообщении — для клиентов без XEP-0071 в тексте писать просто текст без ссылок на картинку
- при наличии нескольких enclosure брать первый с подходящим type
Если новость имеет и enclosure-картинку, и description
— порядок в XHTML-теле: → title → description → link