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

2.8 KiB
Raw Blame History

Доработка 2

Задание

  1. необходимо доработать rss адаптер, получающий новости, и модуль отправки в жаббер

Улучшение 1

  1. если RSS item содержит поле description, то текст новости необходимо снабдить этой информацией
  2. в этом случае формат новости должен быть расширен:
title


description


link

т.е. между title и description - 2 перевода строки, и между description и link - тоже 2 перевода строки

  1. если 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()
  1. картинка должна размещаться ДО текста новости
  2. Fallback (msg['body']) при XHTML-сообщении — для клиентов без XEP-0071 в тексте писать просто текст без ссылок на картинку
  3. при наличии нескольких enclosure брать первый с подходящим type

Если новость имеет и enclosure-картинку, и description

— порядок в XHTML-теле: → title → description → link