Skip to content

Commit

Permalink
populate body_html
Browse files Browse the repository at this point in the history
  • Loading branch information
devketanpro committed Dec 30, 2024
1 parent 44aeedc commit 883dbca
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 3 deletions.
36 changes: 35 additions & 1 deletion superdesk/io/feed_parsers/dpa_newsml.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
from superdesk.io.feed_parsers.newsml_2_0 import NewsMLTwoFeedParser
from superdesk.io.registry import register_feed_parser
from superdesk.etree import etree
from superdesk.utc import utcnow
from pytz import utc
import re


class DPAFeedParser(NewsMLTwoFeedParser):
Expand All @@ -39,5 +39,39 @@ def parse(self, xml, provider=None):
item["firstcreated"] = item["firstcreated"].astimezone(utc)
return items

def parse_content_set(self, tree, item):
super().parse_content_set(tree, item)

xhtml_ns = "http://www.w3.org/1999/xhtml"
section_class = "dpatextgenre-7"

content_set = tree.find(self.qname("contentSet"))
if content_set is None:
return

for content in content_set:
if content.tag != self.qname("inlineXML"):
continue

html_content = content.find(self.qname("html", xhtml_ns))
if html_content is None:
continue

body = html_content.find(self.qname("body", xhtml_ns))
if body is None:
continue

section = body.find(self.qname("section", xhtml_ns))
if section is None:
continue

body_html = etree.tostring(section, encoding="unicode", method="html")
body_html = re.sub(
r'<section[^>]*class="[^"]*{}[^"]*"[^>]*>'.format(re.escape(section_class)), "", body_html
)
body_html = body_html.replace("</section>", "")

item["body_html"] = body_html


register_feed_parser(DPAFeedParser.NAME, DPAFeedParser())
23 changes: 21 additions & 2 deletions tests/io/feed_parsers/dpanewsml_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,27 @@ def test_word_count(self):

def test_body_html(self):
with self.app.app_context():
self.assertIsInstance(self.item.get("body_html"), type(""))
self.assertEqual(self.item.get("body_html"), "<header> </header>")
self.assertIsInstance(self.item.get("body_html"), str)
expected_output = (
'<p><span class="dateline">London <span class="credit">(dpa)'
"</span> - </span>2019 gab es bittere Tränen in der Kurve"
", 2022 erst mächtig Wut auf englische Fans und eine Woche später ausgelassenen Jubel:"
" Für Eintracht Frankfurt ist London in den vergangenen Jahren zu einem Standard-Reiseziel"
" im europäischen Fußball-Wettbewerb geworden. Bevor es am Mittwochabend (21.00 Uhr/DAZN) "
"bei Tottenham Hotspur um wichtige Punkte in der Champions League geht, wird sich die Reisegruppe "
"um Torhüter Kevin Trapp und Routinier Makoto Hasebe bestimmt an die vergangenen London-Reisen erinnern."
"</p><p>Beim Topclub FC Chelsea wollte die damals von Adi Hütter trainierte Eintracht in der Saison 2018/19 "
"ihre Erfolgsserie fortsetzen und nach Inter Mailand und Schachtjor Donezk auch die «Blues» aus der Europa League werfen. "
"Nach zwei 1:1 ging es an der Stamford Bridge in die Verlängerung und ins Elfmeterschießen. Der inzwischen abgetretene"
" Martin Hinteregger vergab vom Punkt, vergoss nach dem bitteren Aus Tränen und wurde anschließend in der Fankurve getröstet."
"</p><p>Sportlich weckt der 2:1-Erfolg im Halbfinal-Hinspiel bei West Ham United Ende April positive Erinnerungen "
"- schließlich war er der Grundstein für den späteren Triumph in Sevilla. Doch eine Attacke von englischen Fans gegen "
"zwei Journalisten des Hessischen Rundfunks trübte das Bild. Die Rundfunk-Reporter bekamen nach eigenen Angaben «mehrfach Faustschläge an den Hinterkopf"
", in den Nacken, in den Rücken». West Ham United machte die Täter später ausfindig. Eine Woche später gewann die Eintracht"
" auch das Rückspiel und zog ins Endspiel ein.</p><p> </p>"
)

self.assertEqual(self.item.get("body_html").strip(), expected_output.strip())

def test_priority(self):
with self.app.app_context():
Expand Down

0 comments on commit 883dbca

Please sign in to comment.