diff --git a/sat/plugins/plugin_xep_0060.py b/sat/plugins/plugin_xep_0060.py index 09c580f4..8c3cc691 100644 --- a/sat/plugins/plugin_xep_0060.py +++ b/sat/plugins/plugin_xep_0060.py @@ -1181,7 +1181,10 @@ class XEP_0060(object): log.warning(f"Error while parsing item: {failure_.value}") d = defer.gatherResults([item_cb(item).addErrback(eb) for item in items]) - d.addCallback(lambda parsed_items: (parsed_items, metadata)) + d.addCallback(lambda parsed_items: ( + [i for i in parsed_items if i is not None], + metadata + )) return d def serDList(self, results, failure_result=None): diff --git a/sat/plugins/plugin_xep_0277.py b/sat/plugins/plugin_xep_0277.py index c89ce14e..8e0682e7 100644 --- a/sat/plugins/plugin_xep_0277.py +++ b/sat/plugins/plugin_xep_0277.py @@ -415,12 +415,19 @@ class XEP_0277(object): ) # author + publisher = item_elt.getAttribute("publisher") try: author_elt = next(entry_elt.elements(NS_ATOM, "author")) except StopIteration: log.debug("Can't find author element in item {}".format(id_)) + if publisher: + microblog_data["author_jid"] = publisher + microblog_data["author_jid_verified"] = True + else: + iq_elt = xml_tools.findAncestor(item_elt, "iq", C.NS_CLIENT) + microblog_data["author_jid"] = iq_elt["from"] + microblog_data["author_jid_verified"] = False else: - publisher = item_elt.getAttribute("publisher") # name try: name_elt = next(author_elt.elements(NS_ATOM, "name")) @@ -470,12 +477,12 @@ class XEP_0277(object): else: microblog_data["author_email"] = str(email_elt) - # categories - categories = [ - category_elt.getAttribute("term", "") - for category_elt in entry_elt.elements(NS_ATOM, "category") - ] - microblog_data["tags"] = categories + # categories + categories = [ + category_elt.getAttribute("term", "") + for category_elt in entry_elt.elements(NS_ATOM, "category") + ] + microblog_data["tags"] = categories ## the trigger ## # if other plugins have things to add or change